#include <avr/interrupt.h>
#include "lcd.h"
#include "serial.h"
+#include "delay.h"
#define DATA_OUT PORTD2
#define CLOCK PIND3
uint8_t bits = 0;
uint8_t n_bits = 8;
uint8_t offset = 0;
+ uint8_t i;
- DDRD = 0x06; // 00000110
- PIND = 0xC0; // 11000000
- DDRB = 0x20; // 00100000
- PINB = 0x1F; // 00011111
+ DDRD = 0x06; // 00000110
+ PORTD = 0xC0; // 11000000
+ DDRB = 0x20; // 00100000
+ PORTB = 0x1F; // 00011111
serial_init(9600);
- serial_set_callback(receive);
lcd_init();
- lcd_on();
- lcd_clear();
sei();
+ lcd_clear();
+ for(i=0; i<20; ++i)
+ lcd_write('0');
+
while(1)
{
uint8_t d_pins;
input[j/2] = (input[j/2]&~(0xF<<shift)) | (bits<<shift);
latch[j/2] = input[j/2];
}
- }
- lcd_gotoxy(0, 0);
- for(i=10; i--;)
- {
- lcd_write(hexdigit(input[i]>>4));
- lcd_write(hexdigit(input[i]));
+ lcd_gotoxy(19-offset-nibbles, 0);
+ for(i=0; i<=nibbles; ++i)
+ lcd_write(rx_buf[3+i]);
+ log_pos |= 0x80;
}
}
rx_fill = 0xFF;
++log_pos;
if(log_pos>=60)
log_pos = 0;
- lcd_gotoxy(log_pos%20, 1+log_pos/20);
+ if(log_pos%20==0)
+ lcd_gotoxy(log_pos%20, 1+log_pos/20);
lcd_write(255);
}
+SERIAL_SET_CALLBACK(receive)
+
uint8_t hexdigit(uint8_t n)
{
n &= 0xF;