#define LOAD PIND4
#define RESET PIND5
+#define LCD_DISABLE PINB4
+
#define BIT(n) (1<<(n))
void receive(uint8_t);
volatile uint8_t rx_fill = 0xFF;
volatile uint8_t input[128] = { 0 };
volatile uint8_t latch[128] = { 0 };
+volatile uint8_t lcd_enabled = 0;
uint8_t log_row = 0;
uint8_t log_col = 0;
sei();
- lcd_clear();
- for(i=0; i<20; ++i)
- lcd_write('0');
-
while(1)
{
- uint8_t d_pins;
+ uint8_t b_pins, d_pins;
+ b_pins = PINB;
d_pins = PIND;
if(d_pins&BIT(CLOCK))
for(i=0; i<128; ++i)
latch[i] = input[i];
}
+
+ if(b_pins&BIT(LCD_DISABLE))
+ {
+ if(lcd_enabled)
+ {
+ lcd_enabled = 0;
+
+ lcd_clear();
+ }
+ }
+ else if(!lcd_enabled)
+ {
+ lcd_enabled = 1;
+ log_row = 0;
+ log_col = 0;
+
+ lcd_clear();
+ for(i=0; i<20; ++i)
+ lcd_write(hexdigit(input[9-i/2]>>(4-i%2*4)));
+ lcd_gotoxy(0, 1);
+ lcd_write(255);
+ }
}
}
latch[j/2] = input[j/2];
}
- lcd_gotoxy(19-offset-nibbles, 0);
- for(i=0; i<=nibbles; ++i)
- lcd_write(rx_buf[3+i]);
+ if(lcd_enabled)
+ {
+ lcd_gotoxy(19-offset-nibbles, 0);
+ for(i=0; i<=nibbles; ++i)
+ lcd_write(rx_buf[3+i]);
+ }
}
}
rx_fill = 0xFF;
rx_fill = 0xFF;
}
- lcd_gotoxy(log_col, 1+log_row);
- lcd_write(c);
- ++log_col;
- if(log_col>=20)
+ if(lcd_enabled)
{
- log_col = 0;
- ++log_row;
- if(log_row>=3)
- log_row = 0;
lcd_gotoxy(log_col, 1+log_row);
+ lcd_write(c);
+ ++log_col;
+ if(log_col>=20)
+ {
+ log_col = 0;
+ ++log_row;
+ if(log_row>=3)
+ log_row = 0;
+ lcd_gotoxy(log_col, 1+log_row);
+ }
+ lcd_write(255);
}
- lcd_write(255);
}
SERIAL_SET_CALLBACK(receive)