From 2d6fd863b36f72ea7e036e37100f60edfbdc237e Mon Sep 17 00:00:00 2001 From: "K.Ohta" Date: Wed, 12 Jun 2013 22:00:15 +0900 Subject: [PATCH] [General] Add _LCD_DEBUG flag, without initialize AKC695x. --- akc6955.h | 2 ++ main.c | 95 ++++++++++++++++++++++++++++++++++++++++++++++----------------- 2 files changed, 72 insertions(+), 25 deletions(-) diff --git a/akc6955.h b/akc6955.h index 6b587e7..5ab2436 100644 --- a/akc6955.h +++ b/akc6955.h @@ -127,6 +127,8 @@ extern "C" { #define _AKC6955_WAIT_62_5MS() delay1ktcy(500) // Wait 12.5ms #define _AKC6955_WAIT_12_5MS() delay1ktcy(100) +// Wait 125.0ms +#define _AKC6955_WAIT_125_0MS() delay10ktcy(100) // Wait 50us #define _AKC6955_WAIT_12_5uS() delay10tcy(40) diff --git a/main.c b/main.c index d66754f..072b018 100644 --- a/main.c +++ b/main.c @@ -68,6 +68,7 @@ #pragma config EBTR0=OFF,EBTR1=OFF,EBTR2=OFF,EBTR3=OFF,EBTRB=OFF #endif +#define _LCD_DEBUG 1 SIGHANDLER(TMR0_handler) { @@ -106,6 +107,8 @@ unsigned char am_userbandnum; unsigned char fm_userbandnum; int recv_signal; +int backlight_counter; +unsigned char backlight_level; typedef struct { unsigned char start; @@ -116,7 +119,26 @@ _userband_t am_usrbands[4]; _userband_t fm_usrbands[4]; -static void update_display(void) +void toggle_amfm(void) +{ + if(fm != 0){ + fm = 0; +#ifndef _LCD_DEBUG + akc6955_chg_fm(fm); + akc6955_set_amband(amband); + akc6955_set_freq(amfreq); +#endif + } else { + fm = 0xff; +#ifndef _LCD_DEBUG + akc6955_chg_fm(fm); + akc6955_set_fmband(fmband); + akc6955_set_freq(fmfreq); +#endif + } +} + +void update_display(void) { if(fm != 0){ // FM _LOCATE(0,0); @@ -169,8 +191,9 @@ static void update_display(void) } -static void setfreq_updown(unsigned char ctlword) +void setfreq_updown(unsigned char ctlword) { +#ifndef _LCD_DEBUG switch(ctlword){ case charcode_8: // Change band if(fm != 0){ @@ -178,7 +201,7 @@ static void setfreq_updown(unsigned char ctlword) if(amband > 18) amband = 0; // amfreq = akc6955_setfreq(amfreq) akc6955_set_amband(amband); - delay1ktcy(500); // 62.5ms + _AKC6955_WAIT_62_5MS(); // 62.5ms amband = akc6955_get_amband(); amfreq = akc6955_get_freq(); } else { @@ -186,7 +209,7 @@ static void setfreq_updown(unsigned char ctlword) if(fmband > 7) fmband = 0; // amfreq = akc6955_setfreq(amfreq) akc6955_set_fmband(fmband); - delay1ktcy(500); // 62.5ms + _AKC6955_WAIT_62_5MS(); // 62.5ms fmband = akc6955_get_fmband(); fmfreq = akc6955_get_freq(); } @@ -198,7 +221,7 @@ static void setfreq_updown(unsigned char ctlword) if(amband >= 18) amband = 18; // amfreq = akc6955_setfreq(amfreq) akc6955_set_amband(amband); - delay1ktcy(500); // 62.5ms + _AKC6955_WAIT_62_5MS(); // 62.5ms amband = akc6955_get_amband(); amfreq = akc6955_get_freq(); } else { @@ -207,7 +230,7 @@ static void setfreq_updown(unsigned char ctlword) if(fmband >= 7) fmband = 7; // amfreq = akc6955_setfreq(amfreq) akc6955_set_fmband(fmband); - delay1ktcy(500); // 62.5ms + _AKC6955_WAIT_62_5MS(); // 62.5ms fmband = akc6955_get_fmband(); fmfreq = akc6955_get_freq(); } @@ -267,6 +290,7 @@ static void setfreq_updown(unsigned char ctlword) default: break; } +#endif } /* * @@ -276,18 +300,25 @@ int main(void) char readchar; unsigned char input_flag; char i; - +#ifdef _LCD_DEBUG + unsigned char power_flag; +#endif keyin_init(); keyin_ioinit(); idle_init(); i2c1_init(); - delay1ktcy(1000); // Wait 125ms - + _AKC6955_WAIT_125_0MS(); // Wait 125ms +#ifdef _LCD_DEBUG + power_flag = 0xff; +#endif + backlight_counter = 128; + backlight_level = 255; acm1602_init(0xa0, 1); //Init LCD - - delay1ktcy(1000); // Wait 125ms +// _AKC6955_WAIT_125_0MS(); // Wait 125ms + _LOCATE(0,0); + printstr("Hello;-)"); // Init AKC6955 @@ -311,12 +342,19 @@ int main(void) /* Check EEPROM */ /* Push default parameters to AKC6955*/ - + +#ifndef _LCD_DEBUG akc6955_chg_fm(fm); // Set to AM akc6955_set_amband(amband); akc6955_set_freq(amfreq); // Dummy, TBS (954KHz) akc6955_set_power(0xff); // Power ON +#endif + +#ifdef _LCD_DEBUG + idle(0xf000); +#else idle(0xff00); +#endif do { /* Main routine*/ input_flag = readkey_compare(); @@ -326,20 +364,11 @@ int main(void) // Top of input-tree. case charcode_s0: // Change FM/AM - if(fm != 0){ - fm = 0; - akc6955_chg_fm(fm); - akc6955_set_amband(amband); - akc6955_set_freq(amfreq); - } else { - fm = 0xff; - akc6955_chg_fm(fm); - akc6955_set_fmband(fmband); - akc6955_set_freq(fmfreq); - } + toggle_amfm(); break; case charcode_s1: - // + // + backlight_counter = 128; break; case charcode_s2: // ENTER @@ -355,18 +384,34 @@ int main(void) break; } } +#ifndef _LCD_DEBUG recv_signal = akc6955_read_level(); if(fm != 0){ fmfreq = akc6955_get_freq(); } else { amfreq = akc6955_get_freq(); } +#endif // Check battery (include idle?) // Read AKJC6955's status // Putstring to LCD. + update_display(); + if(backlight_counter > 0) { + backlight_counter--; + set_backlight(0xff, backlight_level); // Turn ON + } else { + set_backlight(0x00, 0); // Turn OFF + } +#ifdef _LCD_DEBUG + if(power_flag != 0x00) { + power_flag = 0x00; + } else { + power_flag = 0xff; + } + setsignal_tune(power_flag); +#endif idle(0xf800); } while(1); - } -- 2.11.0