_hd44780_clear_screen(
hd44780_t *b)
{
- memset(b->vram, ' ', 80);
+ memset(b->vram, ' ', 0x80);
hd44780_set_flag(b, HD44780_FLAG_DIRTY, 1);
avr_raise_irq(b->irq + IRQ_HD44780_ADDR, b->cursor);
}
hd44780_t *b)
{
if (hd44780_get_flag(b, HD44780_FLAG_I_D)) {
- if (b->cursor < 79)
+ if (b->cursor < 0x80-1)
b->cursor++;
- else if (b->cursor < 80+64-1)
+ else if (b->cursor < 0x80+0x40-1)
b->cursor++;
} else {
- if (b->cursor < 80 && b->cursor)
+ if (b->cursor < 0x80 && b->cursor)
b->cursor--;
- else if (b->cursor > 80)
+ else if (b->cursor > 0x80)
b->cursor--;
hd44780_set_flag(b, HD44780_FLAG_DIRTY, 1);
avr_raise_irq(b->irq + IRQ_HD44780_ADDR, b->cursor);
break;
// Set CGRAM address
case 6: // 0 1 ADD ADD ADD ADD ADD ADD ADD
- b->cursor = 64 + (b->datapins & 0x3f);
+ b->cursor = 0x80 + (b->datapins & 0x3f);
break;
// Function set
case 5: { // 0 0 1 DL N F x x
delay = 0; // no raising busy when reading busy !
// low bits are the current cursor
- b->readpins = b->cursor < 80 ? b->cursor : b->cursor-64;
+ b->readpins = b->cursor < 0x80 ? b->cursor : b->cursor-0x80;
int busy = hd44780_get_flag(b, HD44780_FLAG_BUSY);
b->readpins |= busy ? 0x80 : 0;
printf("LCD: %duS is %d cycles for your AVR\n",
1, (int)avr_usec_to_cycles(avr, 1));
}
-
int w, h; // width and height of the LCD
uint16_t cursor; // offset in vram
- uint8_t vram[80 + 64];
+ uint8_t vram[0x80 + 0x40];
uint16_t pinstate; // 'actual' LCd data pins (IRQ bit field)
// uint16_t oldstate; /// previous pins
return (b->flags & (1 << bit)) != 0;
}
-#endif
+#endif