#pragma config EBTR0=OFF,EBTR1=OFF,EBTR2=OFF,EBTR3=OFF,EBTRB=OFF
#endif
+#define _LCD_DEBUG 1
SIGHANDLER(TMR0_handler)
{
unsigned char fm_userbandnum;
int recv_signal;
+int backlight_counter;
+unsigned char backlight_level;
typedef struct {
unsigned char start;
_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);
}
-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){
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 {
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();
}
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 {
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();
}
default:
break;
}
+#endif
}
/*
*
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
/* 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();
// 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
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);
-
}