D6 = (cmd >> 2) & 1; D7 = (cmd >> 3) & 1;
EN = 1; __delay_us(5); EN = 0;
__delay_ms(2);
}
void lcd_char(unsigned char data) {
RS = 1;
D4 = (data >> 4) & 1; D5 = (data >> 5) & 1;
D6 = (data >> 6) & 1; D7 = (data >> 7) & 1;
EN = 1; __delay_us(5); EN = 0;
D4 = data & 1; D5 = (data >> 1) & 1;
D6 = (data >> 2) & 1; D7 = (data >> 3) & 1;
EN = 1; __delay_us(5); EN = 0;
__delay_ms(2);
}
void lcd_string(const char *s) {
while (*s) lcd_char(*s++);
}
void lcd_init(void) {
__delay_ms(20);
lcd_cmd(0x02);
lcd_cmd(0x28);
lcd_cmd(0x0C);
lcd_cmd(0x06);
lcd_cmd(0x01);
}
// ---------- ADC ----------
unsigned int adc_read(void) {