#include <stdlib.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <util/delay.h>
#include "lcd.h"
int main(void){
int y = 0;
static const unsigned char customChar[8][8] = {
{
0x0F,
0x10,
0x0A,
0x0F,
0x0A,
0x08,
0x10,
0x0F
},
{
0x18,
0x17,
0x0D,
0x11,
0x11,
0x0D,
0x17,
0x18
},
{
0x07,
0x08,
0x12,
0x0E,
0x0E,
0x12,
0x08,
0x07
},
{
0x18,
0x17,
0x0D,
0x11,
0x11,
0x0D,
0x17,
0x18
},
{
0x06,
0x09,
0x12,
0x09,
0x09,
0x12,
0x09,
0x06
},
{
0x19,
0x16,
0x0D,
0x16,
0x16,
0x0D,
0x16,
0x19
},
{
0x0C,
0x0C,
0x0F,
0x18,
0x18,
0x08,
0x0C,
0x13
},
{
0x13,
0x13,
0x10,
0x07,
0x07,
0x17,
0x16,
0x0C
}
};
lcd_init(LCD_DISP_ON);
lcd_clrscr();
lcd_command(_BV(LCD_CGRAM)); /* set CG RAM start address 0 */
for(int i = 0; i < 8; i++){
for(int j = 0; j < 8; j++){
lcd_data(customChar[i][j]);
}
}
for(;;){
for(int i = 0; i < 8; i++){
lcd_gotoxy(i, y);
lcd_putc(i);
_delay_ms(500);
}
lcd_clrscr();
}
}
I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8YXZyL2lvLmg+CiNpbmNsdWRlIDxhdnIvcGdtc3BhY2UuaD4KI2luY2x1ZGUgPHV0aWwvZGVsYXkuaD4KI2luY2x1ZGUgImxjZC5oIgoKaW50IG1haW4odm9pZCl7CiAgIGludCB5ID0gMDsKICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgY3VzdG9tQ2hhcls4XVs4XSA9IHsKICAgICAgewogICAgICAgICAweDBGLAogICAJICAgMHgxMCwKICAgCSAgIDB4MEEsCiAgIAkgICAweDBGLAogICAJICAgMHgwQSwKICAgCSAgIDB4MDgsCiAgIAkgICAweDEwLAogICAJICAgMHgwRgogICAgICB9LAogICAgICB7CiAgICAgICAgIDB4MTgsCiAgICAgIAkweDE3LAogICAgICAJMHgwRCwKICAgICAgCTB4MTEsCiAgICAgIAkweDExLAogICAgICAJMHgwRCwKICAgICAgCTB4MTcsCiAgICAgIAkweDE4CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAgMHgwNywKICAgICAgICAgMHgwOCwKICAgICAgICAgMHgxMiwKICAgICAgICAgMHgwRSwKICAgICAgICAgMHgwRSwKICAgICAgICAgMHgxMiwKICAgICAgICAgMHgwOCwKICAgICAgICAgMHgwNwogICAgICB9LAogICAgICB7CiAgICAgICAgIDB4MTgsCgkgICAgICAweDE3LAoJICAgICAgMHgwRCwKCSAgICAgIDB4MTEsCgkgICAgICAweDExLAoJICAgICAgMHgwRCwKCSAgICAgIDB4MTcsCgkgICAgICAweDE4CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAgMHgwNiwKICAgICAgCTB4MDksCiAgICAgIAkweDEyLAogICAgICAJMHgwOSwKICAgICAgCTB4MDksCiAgICAgIAkweDEyLAogICAgICAJMHgwOSwKICAgICAgCTB4MDYKICAgICAgfSwKICAgICAgewogICAgICAgICAweDE5LAogICAgICAJMHgxNiwKICAgICAgCTB4MEQsCiAgICAgIAkweDE2LAogICAgICAJMHgxNiwKICAgICAgCTB4MEQsCiAgICAgIAkweDE2LAogICAgICAJMHgxOQogICAgICB9LAogICAgICB7CiAgICAgICAgIDB4MEMsCiAgICAgICAgIDB4MEMsCiAgICAgICAgIDB4MEYsCiAgICAgICAgIDB4MTgsCiAgICAgICAgIDB4MTgsCiAgICAgICAgIDB4MDgsCiAgICAgICAgIDB4MEMsCiAgICAgICAgIDB4MTMKICAgICAgfSwKICAgICAgewogICAgICAgICAweDEzLAogICAgICAgICAweDEzLAogICAgICAgICAweDEwLAogICAgICAgICAweDA3LAogICAgICAgICAweDA3LAogICAgICAgICAweDE3LAogICAgICAgICAweDE2LAogICAgICAgICAweDBDCiAgICAgIH0KICAgfTsKCiAgIGxjZF9pbml0KExDRF9ESVNQX09OKTsKICAgbGNkX2NscnNjcigpOwoKICAgbGNkX2NvbW1hbmQoX0JWKExDRF9DR1JBTSkpOyAgLyogc2V0IENHIFJBTSBzdGFydCBhZGRyZXNzIDAgKi8KICAgZm9yKGludCBpID0gMDsgaSA8IDg7IGkrKyl7CiAgICAgIGZvcihpbnQgaiA9IDA7IGogPCA4OyBqKyspewogICAgICAgICBsY2RfZGF0YShjdXN0b21DaGFyW2ldW2pdKTsKICAgICAgfQogICB9CgogICBmb3IoOzspewogICAgICBmb3IoaW50IGkgPSAwOyBpIDwgODsgaSsrKXsKICAgICAgICAgbGNkX2dvdG94eShpLCB5KTsKICAgICAgICAgbGNkX3B1dGMoaSk7CiAgICAgICAgIF9kZWxheV9tcyg1MDApOwogICAgICB9CiAgICAgIGxjZF9jbHJzY3IoKTsKICAgfQp9