X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=ui.c;h=07dcc0a8222a89dbd553ac707edf79ef09ff1314;hb=refs%2Fheads%2Fmaster;hp=1e42ec560b5f3e2ca1e8555f48e3b1e2698ccb96;hpb=6e0da7a93fbdd8dd6ed656949faafbe284e5ff67;p=openi2cradio%2FOpenI2CRadio.git diff --git a/ui.c b/ui.c index 1e42ec5..07dcc0a 100644 --- a/ui.c +++ b/ui.c @@ -63,6 +63,58 @@ char keyin_counter; unsigned char cold; +// LCD Routines +void _PUTCHAR(unsigned char c) +{ + acm1602_putchar(LCD_I2CADDR , c); +} + +void _LOCATE(unsigned char x, unsigned char y) +{ + acm1602_locate_16x2(LCD_I2CADDR , x, y); +} + +void _LOCATE_0_0(void) +{ + acm1602_locate_16x2(LCD_I2CADDR , 0, 0); +} + +void _LOCATE_0_1(void) +{ + acm1602_locate_16x2(LCD_I2CADDR , 0, 1); +} + +void _CLS(void) +{ + acm1602_cls(LCD_I2CADDR); +} +void _HOME(void) +{ + acm1602_home(LCD_I2CADDR); +} + +void _CURSOR_ON(void) +{ + acm1602_dispcursor(LCD_I2CADDR, 0xff); +} + + +void _CURSOR_OFF(void) +{ + acm1602_dispcursor(LCD_I2CADDR, 0x00); +} + +void _CURSOR_LEFT(void) +{ + acm1602_cursordir(LCD_I2CADDR , 0x00); +} + +void _CURSOR_RIGHT(void) +{ + acm1602_cursordir(LCD_I2CADDR , 0xff); +} + + void keyin_init(void) { char i; @@ -93,7 +145,7 @@ void push_keyinfifo(char b) keyin_fifo[keyin_nowp] = b; keyin_nowp++; keyin_counter++; - if((keyin_nowp > 31) || (keyin_nowp < 0)) keyin_nowp = 0; + if(keyin_nowp > 31) keyin_nowp = 0; } /* @@ -113,20 +165,20 @@ char pop_keyinfifo(void) c = keyin_fifo[keyin_readp]; keyin_readp++; keyin_counter--; - if((keyin_readp > 31) || (keyin_readp < 0)) keyin_readp = 0; + if(keyin_readp > 31) keyin_readp = 0; return c; } -void printstr(char *s) +void printstr(const char *s) { int p = 0; - _CURSOR_RIGHT(); +// _CURSOR_RIGHT(); if(s == NULL) return; do { if(s[p] == '\0') break; _PUTCHAR(s[p]); p++; - } while(p < 255); + } while(p < 32); } @@ -148,7 +200,6 @@ void print_numeric_nosupress(unsigned long data, unsigned char digit) unsigned char i; unsigned char bcd[11]; - if(digit == 0) return; if(digit > 10) digit = 10; uint2bcd(data, bcd); @@ -310,6 +361,7 @@ unsigned char pollkey_single(void) unsigned char pollkey_numeric(unsigned char init) { unsigned char c; + _PUTCHAR('0' + init); c = pollkey_single(); if(c == charcode_0) { return 0; @@ -320,10 +372,10 @@ unsigned char pollkey_numeric(unsigned char init) } } -unsigned char pollkey_single_timeout(unsigned int limit, unsigned char repeat) +unsigned char pollkey_single_timeout(unsigned char limit, unsigned char repeat) { unsigned char c; - unsigned int ticks = 0; + unsigned char ticks = 0; unsigned char penalty = 0; unsigned char count = 0; @@ -363,7 +415,7 @@ unsigned char pollkey_single_timeout(unsigned int limit, unsigned char repeat) /* * Set Deadzone. */ - if(limit == 0) { + if(limit != 0) { while(ticks <= limit) { idle_time_ms(5 + 18); ticks++; @@ -386,4 +438,4 @@ unsigned char pollkey_single_timeout(unsigned int limit, unsigned char repeat) * In application handler: * c = pop_keyinfifo(); * if(c != 0) do(c); - */ \ No newline at end of file + */