From 7346cfaad4d969db060f3c7ae242ea93f4fff5c0 Mon Sep 17 00:00:00 2001 From: VG Date: Wed, 26 Aug 2015 18:45:01 +0200 Subject: first commit --- softserial.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 softserial.c (limited to 'softserial.c') diff --git a/softserial.c b/softserial.c new file mode 100644 index 0000000..cbec672 --- /dev/null +++ b/softserial.c @@ -0,0 +1,33 @@ + +#define baud 9600 +#define serial_bit_delay 1000000/baud +#define SERIAL_LOW() PORTB &= ~_BV(PB4) +#define SERIAL_HIGH() PORTB |= _BV(PB4) + +// write out a byte as software emulated Uart +void serial_putchar(uint8_t byte) +{ + uint8_t mask; + SERIAL_LOW(); // signal start bit + _delay_us(serial_bit_delay); + for (mask = 0x01; mask; mask <<= 1) { + if (byte & mask) { // choose bit + SERIAL_HIGH(); // send 1 + } else { + SERIAL_LOW(); // send 0 + } + _delay_us(serial_bit_delay); + } + SERIAL_HIGH(); //signal end bit + _delay_us(serial_bit_delay); +} + +void serial_puts(const char* str) +{ + while (*str) { + serial_putchar((uint8_t)*str); + ++str; + } + serial_putchar('\r'); + serial_putchar('\n'); +} -- cgit v1.2.3