diff options
Diffstat (limited to 'PIC/test_uart.c')
| -rw-r--r-- | PIC/test_uart.c | 67 |
1 files changed, 0 insertions, 67 deletions
diff --git a/PIC/test_uart.c b/PIC/test_uart.c deleted file mode 100644 index 2656371..0000000 --- a/PIC/test_uart.c +++ /dev/null @@ -1,67 +0,0 @@ -#include <pic16f84a.h> - -typedef unsigned char uint8_t; - -__sfr __at(0x70) UART_TX; -__sfr __at(0x71) UART_RX; -__sfr __at(0x72) UART_STATUS; - -static volatile uint8_t _d0, _d1, _d2; -static uint8_t counter; - -static void delay(void) { - _d0 = 0; - do { - _d1 = 0; - do { - _d2 = 0; - do { _d2++; } while (_d2 != 0); - } while (++_d1 != 30); - _d0++; - } while (_d0 != 116); -} - -static void uart_send(uint8_t byte) { - while (UART_STATUS & 0x01); - UART_TX = byte; -} - -// Keep this ONLY for literal strings (ROM) -static void uart_puts_rom(const char *s) { - while (*s) { - uart_send((uint8_t)*s); - s++; - } -} - -void main(void) { - counter = 0; - uart_puts_rom("Hello\r\n"); - - while (1) { - uint8_t v = counter; - uint8_t started = 0; - - uart_send('C'); - uart_send(':'); - - // Hundreds - if (v >= 200) { uart_send('2'); v -= 200; started = 1; } - else if (v >= 100) { uart_send('1'); v -= 100; started = 1; } - - // Tens - { - uint8_t tens = '0'; - while (v >= 10) { v -= 10; tens++; } - if (started || tens != '0') { uart_send(tens); } - } - - // Units (always) - uart_send(v + '0'); - - uart_puts_rom("\r\n"); - - counter++; - delay(); - } -} |
