OSDN Git Service

[IDLE] Maybe correct time.
authorK.Ohta <whatisthis.sowhat@gmail.com>
Wed, 24 Jul 2013 14:29:59 +0000 (23:29 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Wed, 24 Jul 2013 14:29:59 +0000 (23:29 +0900)
[UI] Fix incorrect power-button(maybe)...
[UI] Fix scan screen problem.

20 files changed:
adc_int.c
akc6955.c
akc6955.h
eeprom.c
eeprom.h
eepromutil.c
idle.c
ioports.c
lcd_acm1602.c
lcd_acm1602.h
main.c
menu.c
menu.h
nbproject/Makefile-default.mk
nbproject/Makefile-genesis.properties
nbproject/configurations.xml
power.c
power.h
ui.c
ui_updown.c

index fd7b880..223031e 100644 (file)
--- a/adc_int.c
+++ b/adc_int.c
@@ -102,7 +102,7 @@ unsigned int polladc2(void)
     do {
         delay10tcy(8); // 10uS
         a = ((ADRESH << 8)  + ADRESL) & 0x03ff;
-    } while(ADCON0bits.DONE == 1);
+    } while(ADCON0bits.DONE);
     return a;
 }
 
@@ -118,7 +118,7 @@ void stopadc(void)
 unsigned int polladc(void)
 {
     unsigned int a;
-    if(ADCON0bits.DONE == 1){ // converting or not enable.
+    if(ADCON0bits.DONE){ // converting or not enable.
         PIE1bits.ADIE = 1;
         PIR1bits.ADIF = 0;
         return 0xffff;
index 33534df..170027b 100644 (file)
--- a/akc6955.c
+++ b/akc6955.c
@@ -39,6 +39,7 @@
 #include "idle.h"
 #include "power.h"
 #include "commondef.h"
+#include "menu.h"
 
 void akc6955_writecmd(unsigned char reg, unsigned char data)
 {
@@ -239,7 +240,7 @@ void akc6955_set_tune(unsigned char mode_3k, unsigned int ch)
     } while(comp == 0x00);
     f.byte = akc6955_readcmd(AKC6955_POWER);
     band = 0;
-    if(f.b6 == 0){
+    if(!f.b6){
         akc6955_get_amband(band);
     }
 
@@ -365,7 +366,7 @@ void akc6955_set_freq(unsigned int freq)
             stop = fmbands[band].end;
         }
         ch = freq - 3000;
-        ch = (ch * 4) / 10;
+        ch = (ch << 2) / 10;
     } else {
         akc6955_get_amband(band);
 //        if(band >= AKC6955_BAND_AMEND) band = AKC6955_BAND_AMEND - 1;
@@ -560,9 +561,9 @@ void akc6955_setphase(unsigned char flag)
     __bitops_t c;
     c.byte = akc6955_readcmd(AKC6955_VOLUME);
 
-    c.b0 = 0;
-    if(flag != 0) {
-        c.b0 = 1; //
+    c.b0 = 1;
+    if(flag == 0) {
+        c.b0 = 0; //
     }
     akc6955_writecmd(AKC6955_VOLUME, c.byte);
 }
@@ -571,9 +572,9 @@ void akc6955_setline(unsigned char flag)
 {
     __bitops_t c;
     c.byte = akc6955_readcmd(AKC6955_VOLUME);
-    c.b1 = 0;
-    if(flag != 0) {
-        c.b1 = 1;
+    c.b1 = 1;
+    if(flag == 0) {
+        c.b1 = 0;
     }
     akc6955_writecmd(AKC6955_VOLUME, c.byte);
 }
@@ -582,9 +583,9 @@ void akc6955_set_lowboost(unsigned char flag)
 {
     __bitops_t c;
     c.byte = akc6955_readcmd(AKC6955_STEREO);
-    c.b3 = 0;
-    if(flag != 0) {
-        c.b3 = 1;
+    c.b3 = 1;
+    if(flag == 0) {
+        c.b3 = 0;
     }
     akc6955_writecmd(AKC6955_STEREO, c.byte);
 }
@@ -619,3 +620,41 @@ unsigned int akc6955_get_battery(void)
     return batt;
 }
 
+void akc6955_set_thresh_fmstereo(unsigned char a)
+{
+    unsigned char b;
+    a = a & 0x03;
+    threshold_fmstereo = a;
+    b = akc6955_readcmd(AKC6955_THRESH) & 0xfc;
+    akc6955_writecmd(AKC6955_THRESH, a | b);
+}
+
+void akc6955_set_thresh_width(unsigned char a)
+{
+    unsigned char b;
+    a = a & 0x03;
+    threshold_width = a;
+    a = a << 2; // << 2
+    b = akc6955_readcmd(AKC6955_THRESH) & 0xf3;;
+    akc6955_writecmd(AKC6955_THRESH, a | b);
+}
+
+void akc6955_set_thresh_amcnr(unsigned char a)
+{
+    unsigned char b;
+    a = a & 0x03;
+    threshold_amcnr = a;
+    a = a << 4; // << 4
+    b = akc6955_readcmd(AKC6955_THRESH) & 0xcf;
+    akc6955_writecmd(AKC6955_THRESH, a | b);
+}
+
+void akc6955_set_thresh_fmcnr(unsigned char a)
+{
+    unsigned char b;
+    a = a & 0x03;
+    threshold_fmcnr = a;
+    a = a << 6; // << 4
+    b = akc6955_readcmd(AKC6955_THRESH) & 0x3f;
+    akc6955_writecmd(AKC6955_THRESH, a | b);
+}
index 8184d89..16403c3 100644 (file)
--- a/akc6955.h
+++ b/akc6955.h
@@ -206,6 +206,10 @@ extern unsigned char akc6955_get_stereo(void);
 extern void akc6955_set_scanrate_fm(unsigned char rate);
 extern unsigned int akc6955_get_battery(void);
 extern void akc6955_set_lowboost(unsigned char flag);
+extern void akc6955_set_thresh_fmstereo(unsigned char a);
+extern void akc6955_set_thresh_fmcnr(unsigned char a);
+extern void akc6955_set_thresh_amcnr(unsigned char a);
+extern void akc6955_set_thresh_width(unsigned char a);
 
 #define akc6955_set_fmbandwidth(bw) { \
     unsigned char c = akc6955_readcmd(AKC6955_STEREO); \
index 8d1e46f..50304a7 100644 (file)
--- a/eeprom.c
+++ b/eeprom.c
@@ -93,19 +93,20 @@ unsigned char eeprom_writebyte(unsigned int offset, unsigned char data)
     return 0xff;
 }
 
-unsigned char readbyte_eeprom(unsigned int p, unsigned int *sum)
+unsigned char readbyte_eeprom(unsigned int *p, unsigned int *sum)
 {
     unsigned char b;
 
     ClrWdt();
 
-    b = eeprom_readbyte(p);
+    b = eeprom_readbyte(*p);
     *sum = calcsum_byte(*sum, b);
+    *p = *p + 1;
 
     return b;
 }
 
-unsigned int readword_eeprom(unsigned int p, unsigned int *sum)
+unsigned int readword_eeprom(unsigned int *p, unsigned int *sum)
 {
     unsigned char h,l;
     unsigned int s;
@@ -113,7 +114,7 @@ unsigned int readword_eeprom(unsigned int p, unsigned int *sum)
 //    ClrWdt();
 
     h = readbyte_eeprom(p, sum);
-    l = readbyte_eeprom(p + 1, sum);
+    l = readbyte_eeprom(p, sum);
 
     s = (h << 8) | l;
     return s;
@@ -144,19 +145,20 @@ unsigned char checksum_eeprom(unsigned int seed, unsigned int offset, unsigned i
     return 0xff;
 }
 
-unsigned int writebyte_eeprom(unsigned int p, unsigned int *sum, unsigned char b)
+unsigned int writebyte_eeprom(unsigned int *p, unsigned int *sum, unsigned char b)
 {
     ClrWdt();
-    if(eeprom_writebyte(p, b) == 0) return p; // Error
+    if(eeprom_writebyte(*p, b) == 0) return *p; // Error
     *sum = calcsum_byte(*sum, b);
+    *p = *p + 1;
     return 0xffff;
 }
 
-unsigned int writeword_eeprom(unsigned int p, unsigned int *sum, unsigned int word)
+unsigned int writeword_eeprom(unsigned int *p, unsigned int *sum, unsigned int word)
 {
 //    ClrWdt();
-    if(writebyte_eeprom(p, sum, word >> 8) == 0) return p; // Error
-    if(writebyte_eeprom(p + 1, sum, word & 0xff) == 0) return p + 1; // Error
+    if(writebyte_eeprom(p, sum, word >> 8) == 0) return *p; // Error
+    if(writebyte_eeprom(p, sum, word & 0xff) == 0) return *p; // Error
     return 0xffff;
 }
 
index c302fea..2e968eb 100644 (file)
--- a/eeprom.h
+++ b/eeprom.h
@@ -49,10 +49,10 @@ extern unsigned int format_eeprom(unsigned int start, unsigned int bytes);
 /*
  * Read/Write with checksum.
  */
-extern unsigned int readword_eeprom(unsigned int p, unsigned int *sum);
-extern unsigned char readbyte_eeprom(unsigned int p, unsigned int *sum);
-extern unsigned int writeword_eeprom(unsigned int p, unsigned int *sum, unsigned int word);
-extern unsigned int writebyte_eeprom(unsigned int p, unsigned int *sum, unsigned char b);
+extern unsigned int readword_eeprom(unsigned int *p, unsigned int *sum);
+extern unsigned char readbyte_eeprom(unsigned int *p, unsigned int *sum);
+extern unsigned int writeword_eeprom(unsigned int *p, unsigned int *sum, unsigned int word);
+extern unsigned int writebyte_eeprom(unsigned int *p, unsigned int *sum, unsigned char b);
 
 
 #ifdef __cplusplus
index c833d5d..c5cb6e1 100644 (file)
 
 void save_eeprom(void)
 {
-    unsigned int p = 0;
+    unsigned int p[1];
     unsigned int sum = 0x0000;
     unsigned char i;
     unsigned char j;
     unsigned char *q;
 
+    *p = 0;
     // Magic word
     writeword_eeprom(p, &sum, 0x1298);
-    p+= 2;
     // amfreq
     writeword_eeprom(p, &sum, amfreq);
-    p+= 2;
     // amfreq
     writeword_eeprom(p, &sum, fmfreq);
-    p+= 2;
 
     writebyte_eeprom(p, &sum, amband);
-    p++;
     writebyte_eeprom(p, &sum, fmband);
-    p++;
     writebyte_eeprom(p, &sum, fm);
-    p++;
     writebyte_eeprom(p, &sum, am_mode3k);
-    p++;
     writebyte_eeprom(p, &sum, am_userbandnum);
-    p++;
     writebyte_eeprom(p, &sum, fm_userbandnum);
-    p++;
 
-#if 0
-    for(i = 0 ; i < USER_BAND_NUM; i++){
-        writebyte_eeprom(p, &sum, am_usrbands[i].mode3k);
-        writebyte_eeprom(p + 1, &sum, am_usrbands[i].start);
-        writebyte_eeprom(p + 2, &sum, am_usrbands[i].stop);
-        writeword_eeprom(p + 3, &sum, am_usrbands[i].freq);
-        p += 5;
-    }
-    for(i = 0 ; i < USER_BAND_NUM; i++){
-        writebyte_eeprom(p, &sum, fm_usrbands[i].mode3k);
-        writebyte_eeprom(p + 1, &sum, fm_usrbands[i].start);
-        writebyte_eeprom(p + 2, &sum, fm_usrbands[i].stop);
-        writeword_eeprom(p + 3, &sum, fm_usrbands[i].freq);
-        p += 5;
-    }
-#else
     for(j = 0; j < USER_BAND_NUM; j++){
         q = (unsigned char *)&am_usrbands[j];
         for(i = 0; i < sizeof(_userband_t); i++){
             writebyte_eeprom(p, &sum, *q);
-            p++;
             q++;
         }
     }
@@ -111,107 +86,66 @@ void save_eeprom(void)
         q = (unsigned char *)&fm_usrbands[j];
         for(i = 0; i < sizeof(_userband_t); i++){
             writebyte_eeprom(p, &sum, *q);
-            p++;
             q++;
         }
     }
-#endif
     amfreq_bank[amband] = amfreq;
     fmfreq_bank[fmband] = fmfreq;
 
     for(i = 0; i < 19; i++){
         writeword_eeprom(p    , &sum, amfreq_bank[i]);
-        p += 2;
     }
     for(i = 0; i < 8; i++){
         writeword_eeprom(p    , &sum, fmfreq_bank[i]);
-        p += 2;
     }
 
     writebyte_eeprom(p, &sum, threshold_amcnr);
-    p++;
     writebyte_eeprom(p, &sum, threshold_fmcnr);
-    p++;
     writebyte_eeprom(p, &sum, threshold_width);
-    p++;
     writebyte_eeprom(p, &sum, threshold_fmstereo);
-    p++;
     writebyte_eeprom(p, &sum, lowboost);
-    p++;
     writebyte_eeprom(p, &sum, stereo);
-    p++;
 
     writebyte_eeprom(p, &sum, volume);
-    p++;
     writebyte_eeprom(p, &sum, prevolume);
-    p++;
     writebyte_eeprom(p, &sum, fmbandwidth);
-    p++;
     writeword_eeprom(p, &sum, backlight_long);
-    p += 2;
     writeword_eeprom(p, &sum, ui_idlecount);
-    p += 2;
     writebyte_eeprom(p, &sum, backlight_level);
-    p += 1;
 
     // Write checksum
-    eeprom_writebyte(p, sum >> 8);
-    eeprom_writebyte(p + 1, sum & 0xff);
+    eeprom_writebyte(*p, sum >> 8);
+    eeprom_writebyte(*p + 1, sum & 0xff);
 }
 
 unsigned char load_eeprom(void)
 {
-    unsigned int p = 0;
-    unsigned int sum = 0x0000;
+    unsigned int p[1];
+    unsigned int sum[1];
     unsigned char i;
     unsigned char *q;
     unsigned char j;
     unsigned int magic;
 
+    p[0] = 0;
+    sum[0] = 0;
     // Magic word
-    magic = readword_eeprom(p, &sum);
+    magic = readword_eeprom(p, sum);
     if(magic != 0x1298) return 0x01; // NO MAGICWORD
-    p+= 2;
     // amfreq
-    amfreq = readword_eeprom(p, &sum);
-    p+= 2;
+    amfreq = readword_eeprom(p, sum);
     // fmfreq
-    fmfreq = readword_eeprom(p, &sum);
-    p+= 2;
-
-    amband = readbyte_eeprom(p, &sum);
-    p++;
-    fmband = readbyte_eeprom(p, &sum);
-    p++;
-    fm = readbyte_eeprom(p, &sum);
-    p++;
-    am_mode3k = readbyte_eeprom(p, &sum);
-    p++;
-    am_userbandnum = readbyte_eeprom(p, &sum);
-    p++;
-    fm_userbandnum = readbyte_eeprom(p, &sum);
-    p++;
-#if 0
-    for(i = 0 ; i < USER_BAND_NUM; i++){
-        am_usrbands[i].mode3k = readbyte_eeprom(p, &sum);
-        am_usrbands[i].start  = readbyte_eeprom(p + 1, &sum);
-        am_usrbands[i].stop   = readbyte_eeprom(p + 2, &sum);
-        am_usrbands[i].freq   = readword_eeprom(p + 3, &sum);
-        p += 5;
-    }
-    for(i = 0 ; i < USER_BAND_NUM; i++){
-        fm_usrbands[i].mode3k = readbyte_eeprom(p, &sum);
-        fm_usrbands[i].start  = readbyte_eeprom(p + 1, &sum);
-        fm_usrbands[i].stop   = readbyte_eeprom(p + 2, &sum);
-        fm_usrbands[i].freq   = readword_eeprom(p + 3, &sum);
-        p += 5;
-    }
-#else
+    fmfreq = readword_eeprom(p, sum);
+    amband = readbyte_eeprom(p, sum);
+    fmband = readbyte_eeprom(p, sum);
+    fm = readbyte_eeprom(p, sum);
+    am_mode3k = readbyte_eeprom(p, sum);
+    am_userbandnum = readbyte_eeprom(p, sum);
+    fm_userbandnum = readbyte_eeprom(p, sum);
     for(j = 0; j < USER_BAND_NUM; j++){
         q = (unsigned char *)&am_usrbands[j];
         for(i = 0; i < sizeof(_userband_t); i++){
-            *q = readbyte_eeprom(p, &sum);
-            p++;
+            *q = readbyte_eeprom(p, sum);
             q++;
         }
         if(am_usrbands[j].mode3k != 0){
@@ -225,52 +159,36 @@ unsigned char load_eeprom(void)
     for(j = 0; j < USER_BAND_NUM; j++){
         q = (unsigned char *)&fm_usrbands[j];
         for(i = 0; i < sizeof(_userband_t); i++){
-            *q = readbyte_eeprom(p, &sum);
-            p++;
+            *q = readbyte_eeprom(p, sum);
             q++;
         }
         fm_userband_freq[j].start = fm_usrbands[j].start * 80 + 3000;
         fm_userband_freq[j].end   = fm_usrbands[j].stop * 80 + 3000;
     }
-#endif
     amfreq = amfreq_bank[amband];
     fmfreq = fmfreq_bank[fmband];
     for(i = 0; i < 19; i++){
-        amfreq_bank[i] = readword_eeprom(p    , &sum);
-        p += 2;
+        amfreq_bank[i] = readword_eeprom(p    , sum);
     }
     for(i = 0; i < 8; i++){
-        fmfreq_bank[i] = readword_eeprom(p    , &sum);
-        p += 2;
+        fmfreq_bank[i] = readword_eeprom(p    , sum);
     }
-    threshold_amcnr = readbyte_eeprom(p, &sum);
-    p++;
-    threshold_fmcnr = readbyte_eeprom(p, &sum);
-    p++;
-    threshold_width = readbyte_eeprom(p, &sum);
-    p++;
-    threshold_fmstereo = readbyte_eeprom(p, &sum);
-    p++;
-    lowboost = readbyte_eeprom(p    , &sum);
-    p++;
-    stereo = readbyte_eeprom(p    , &sum);
-    p++;
-    volume = readbyte_eeprom(p, &sum);
-    p++;
-    prevolume = readbyte_eeprom(p, &sum);
-    p++;
-    fmbandwidth = readbyte_eeprom(p, &sum);
-    p++;
-    backlight_long = readword_eeprom(p, &sum);
-    p += 2;
-    ui_idlecount = readword_eeprom(p, &sum);
-    p += 2;
-    backlight_level = readbyte_eeprom(p, &sum);
-    p += 1;
+    threshold_amcnr = readbyte_eeprom(p, sum);
+    threshold_fmcnr = readbyte_eeprom(p, sum);
+    threshold_width = readbyte_eeprom(p, sum);
+    threshold_fmstereo = readbyte_eeprom(p, sum);
+    lowboost = readbyte_eeprom(p    , sum);
+    stereo = readbyte_eeprom(p    , sum);
+    volume = readbyte_eeprom(p, sum);
+    prevolume = readbyte_eeprom(p, sum);
+    fmbandwidth = readbyte_eeprom(p, sum);
+    backlight_long = readword_eeprom(p, sum);
+    ui_idlecount = readword_eeprom(p, sum);
+    backlight_level = readbyte_eeprom(p, sum);
      // Write checksum
-    magic = (eeprom_readbyte(p) << 8) + eeprom_readbyte(p+1);
+    magic = (eeprom_readbyte(p[0]) << 8) + eeprom_readbyte(p[0] + 1);
 
-    if(sum != magic) return 0x00;
+    if(sum[0] != magic) return 0x00;
     return 0xff;
 }
 
diff --git a/idle.c b/idle.c
index 0d91d50..289e99c 100644 (file)
--- a/idle.c
+++ b/idle.c
@@ -60,10 +60,6 @@ void stop_idle(void)
 
 void idle(unsigned int initial)
 {
-//   unsigned char osccon;
-   unsigned char  contword;
-   unsigned int i;
-
 
    WDTCONbits.SWDTEN = 0; // Lame WDT OFF.
    /* Enable IDLE */
@@ -71,17 +67,10 @@ void idle(unsigned int initial)
    INTCONbits.TMR0IF = 0;
    INTCONbits.TMR0IE = 1; // Enable tmr0 as interrupt and clear interrupt flags.
    /* Set TMR0 for interrupt*/
-   /* Pre-scaler: 1/16, PSA=0(ON), TOSE=0, T0CS=0(INTERNAL), T08BIT=0(16bit), TMR0ON=1(START) */
-   T0CONbits.T0PS0 = 1;
-   T0CONbits.T0PS1 = 1;
-   T0CONbits.T0PS2 = 1;
-#if defined(__SDCC)
-//   contword = _T0PS0 | _T0PS1 | _T0PS2 | _TMR0ON; // Prescaler = 1:256.
-#else
-   contword = _T0CON_T0PS0_MASK | _T0CON_T0PS1_MASK | _T0CON_T0PS2_MASK | _T0CON_TMR0ON_MASK; // Prescaler = 1:256.
-#endif   //contword =  _T0PS2 | _TMR0ON; // Pre-scakler is 1:32.
-   //TMR0H = initial >> 8;
-   i = initial;
+   /* Pre-scaler: 1/2, PSA=1(ON), TOSE=0, T0CS=0(INTERNAL), T08BIT=0(16bit), TMR0ON=1(START) */
+   /* 1Tick = 1/1000 ms*/
+   T0CON = 0b00001000; // 1/2
+//   TMR0H = initial >> 8; // Write order : L->H
    TMR0L = initial & 0xff;
    TMR0H = initial >> 8; // Write order : L->H
    T0CONbits.TMR0ON = 1; // Start
@@ -96,15 +85,16 @@ void idle(unsigned int initial)
 void idle_time_ms(unsigned int ms)
 {
     unsigned int tim;
-    unsigned char upper;
+    unsigned int upper;
 
     if(ms == 0) return;
-    upper = (ms & 0xe000) >> 13;
-//    unsigned int upper;
-    tim = ms << 3 - ms >> 4 - ms >>3;
-    tim = 65535 - tim + 1; // tim = 65536 - tim;
+    upper = (ms & 0xffc0) >> 10;
+//    tim = ms * 8 - ms / 16 - ms / 8;
+    tim = (ms   & 0x3f) * 1000; //
+    tim = (65535 - tim) + 1; // tim = 65536 - tim;
     while(upper > 0) {
-        idle(0x0000); // Upper is 65536 tick.
+        idle(65535 - 64000 + 1); // Upper is 512ms
+        upper--;
     }
     idle(tim);
 }
@@ -114,11 +104,12 @@ void idle_time_62_5ms(void)
     // Tim = 1ms * 64 - 1ms - 0.5ms
     // Tim = 0.128ms * (488 + 2.2)
     //     =
-    idle(65535 - 488 + 4);
+    idle_time_ms(62); // 62ms
+    idle(500); // 500us
 }
 
 void idle_time_35ms(void)
 {
     // Tim = 35 / 0.128 = 273.44
-    idle(65535 - 274 + 1);
+    idle_time_ms(35);
 }
index 2fde4a2..77a9eab 100644 (file)
--- a/ioports.c
+++ b/ioports.c
@@ -46,11 +46,10 @@ void set_examp_mute(unsigned char f)
 {
     if(f == 0x00) {
         _PORT_MUTE = 1; // 20130709 Not Mute
-        idle_time_ms(200);
     } else {
         _PORT_MUTE = 0;
-        idle_time_ms(200);
     }
+    idle_time_ms(200);
 }
 
 void set_radiopower(unsigned char f)
@@ -195,7 +194,7 @@ void keyin_ioinit(void)
     LATC = 0x00;
     ANSELC = AN_C_VAL;
     TRISC = TRIS_C_VAL_O;
-    lcd_backlightinit();
//   lcd_backlightinit();
     io_intcountinit();
 }
 #endif
@@ -221,7 +220,7 @@ void keyin_ioinit(void)
     PORTC = 0x00;
     LATC = 0x00;
     TRISC = TRIS_C_VAL_O;
-    lcd_backlightinit();
+//    lcd_backlightinit();
     io_intcountinit();
 }
 #endif
@@ -265,7 +264,7 @@ void keyin_ioinit(void)
     INTCON3bits.INT1IE = 0;
     INTCON3bits.INT2IE = 0;
 
-    lcd_backlightinit();
+//    lcd_backlightinit();
     io_intcountinit();
 }
 #else
@@ -285,7 +284,7 @@ void keyin_ioinit(void)
     PORTC = 0x00;
     LATC = 0x00;
     TRISC = TRIS_C_VAL_O;
-    lcd_backlightinit();
+//    lcd_backlightinit();
     io_intcountinit();
 }
 #endif
index 2334af1..bebcd19 100644 (file)
@@ -404,99 +404,6 @@ void acm1602_putchar(unsigned char addr, unsigned char c)
 #endif
 }
 
-#if 0
-unsigned char acm1602_getchar(unsigned char addr)
-{
-    unsigned char b, d;
-#ifdef _LCD_IF_4BIT
-    unsigned char h, l;
-
-    lcd_waitbusy(addr, 0);
-    d = _LCDPORT_TRIS_CONT;
-    d |= _LCDPORT_READMASK; // Set mask for Tristate, direction = read.
-    _LCDPORT_TRIS_CONT = d;
-
-    // Recv high nibble
-    b = _LCDPORT_CONT_LATCH;
-    b &= ~(0xf0 | _LCDPORT_CONT_EN); // DATA=blank
-    b |= (_LCDPORT_CONT_RS | _LCDPORT_CONT_RW); // RS='1", RW='1'
-    _LCDPORT_CONT_LATCH = b;
-    _ACM1602_TC_WAIT(); // Wait 2.5?us
-
-    b |= _LCDPORT_CONT_EN;
-    _LCDPORT_CONT_LATCH = b;
-    _ACM1602_TC_WAIT(); // Wait 2.5?us
-
-    h = _LCDPORT_DATA & 0xf0;
-    _ACM1602_TC_WAIT(); // Wait 2.5?us
-
-    b &= ~_LCDPORT_CONT_EN; // Disable EN
-    _LCDPORT_CONT_LATCH = b;
-    _ACM1602_TC_WAIT();
-
-    lcd_waitbusy(addr, 0);
-    // Recv Low nibble.
-    d = _LCDPORT_TRIS_CONT;
-    d |= _LCDPORT_READMASK; // Set mask for Tristate, direction = read.
-    _LCDPORT_TRIS_CONT = d;
-
-    b = _LCDPORT_CONT_LATCH;
-    b &= ~(0xf0 | _LCDPORT_CONT_EN); // DATA=blank
-    b |= (_LCDPORT_CONT_RS | _LCDPORT_CONT_RW); // RS='1", RW='1'
-    _LCDPORT_CONT_LATCH = b;
-    _ACM1602_TC_WAIT(); // Wait 2.5?us
-
-    b |= _LCDPORT_CONT_EN;
-    _LCDPORT_CONT_LATCH = b;
-    _ACM1602_TC_WAIT(); // Wait 2.5?us
-
-    l = _LCDPORT_DATA & 0xf0;
-    _ACM1602_TC_WAIT(); // Wait 2.5?us
-
-    b &= ~_LCDPORT_CONT_EN; // Disable EN
-    _LCDPORT_CONT_LATCH = b;
-    _ACM1602_TC_WAIT(); // Wait 2.5?us
-
-    d = _LCDPORT_TRIS_CONT;
-    d &= ~_LCDPORT_READMASK; // Set mask for Tristate, direction = write.
-    _LCDPORT_TRIS_CONT = d;
-
-    _ACM1602_SHORT_WAIT();
-
-    d = h | (l >> 4);
-    return d;
-#else
-    unsigned char e;
-    lcd_waitbusy(addr, 0);
-    d = _LCDPORT_TRIS_DATA;
-    d |= _LCDPORT_READMASK; // Set mask for Tristate, direction = read.
-    _LCDPORT_TRIS_DATA = d;
-
-    b = _LCDPORT_CONT_LATCH;
-    b |= (_LCDPORT_CONT_RS | _LCDPORT_CONT_RW); // RW=1, RS=1
-    b &= ~_LCDPORT_CONT_EN; // Clear Enable
-    _LCDPORT_CONT_LATCH = b;
-    _ACM1602_TC_WAIT();
-
-    b |= _LCDPORT_CONT_EN; // Send character
-    _LCDPORT_CONT_LATCH = b;
-    _ACM1602_TC_WAIT(); // Wait 2.5?us
-
-    e = _LCDPORT_DATA; // Read BYTE
-    _ACM1602_TC_WAIT();
-
-    b &= ~_LCDPORT_CONT_EN; // Disable EN
-    _LCDPORT_CONT_LATCH = b;
-
-    d = _LCDPORT_TRIS_DATA;
-    d &= ~_LCDPORT_READMASK; // Clear mask for Tristate, direction = read.
-    _LCDPORT_TRIS_DATA = d;
-
-    _ACM1602_SHORT_WAIT(); // Wait 0.1ms
-    return e;
-#endif
-}
-#endif
 #endif
 
 void acm1602_cls(unsigned char addr)
index e84379a..1ace3bf 100644 (file)
@@ -58,8 +58,9 @@ extern "C" {
 #define _ACM1602_SHORT_WAIT()     delay100tcy(4)
 // Wait 5ms
 #define _ACM1602_LONG_WAIT()     delay10ktcy(40)
-// Wait 125ms
-#define _ACM1602_LONG_LONG_WAIT()     delay1mtcy(1)
+// Wait 200ms
+#define _ACM1602_LONG_LONG_WAIT()     delay100ktcy(10)
+//#define _ACM1602_LONG_LONG_WAIT()     idle_time_ms(125)
 // Wait 5.5ms
 #define _ACM1602_I2C_WAIT()     delay1ktcy(44)
 #else
diff --git a/main.c b/main.c
index 85c0d00..af5cd39 100644 (file)
--- a/main.c
+++ b/main.c
@@ -73,7 +73,7 @@
 
 #pragma stack 0x200 256
 #pragma config FOSC=HS,FCMEN=ON,PWRT=ON,BOREN=NOSLP,BORV=27, \
-               WDTEN=ON,WDTPS=32768,PBADEN=OFF,HFOFST=ON,LPT1OSC=OFF, \
+               WDTEN=ON,WDTPS=32768,PBADEN=OFF,HFOFST=OFF,LPT1OSC=OFF, \
                MCLRE=ON,STVREN=ON,DEBUG=ON, \
                XINST=OFF
 //#pragma config CP0=OFF,CP1=OFF,CP2=OFF,CP3=OFF
@@ -254,6 +254,7 @@ int main(void)
     
 #ifdef __SDCC
     OSCCON =  (0x80 & 0b11111100) | 0b00111000;
+//    OSCCON =  (0x80 & 0b11111100) | 0b00110010; // 8MHz 
 #else
     OSCCON = (_OSCCON_IDLEN_MASK & 0b11111100 ) | 0b00111000;
 #endif
@@ -276,11 +277,11 @@ int main(void)
             power_off(0); // Save and halt on BOR.
             break;
         case RESET_SOFTWARE: //
-            do {
-                pbutton = chk_powerbutton();
-                ClrWdt();
-                if(pbutton == 0) power_off(0); // Button not pressed.
-            } while(pbutton == 0);
+//            do {
+//                pbutton = chk_powerbutton();
+//                ClrWdt();
//               if(pbutton == 0) power_off(0); // Button not pressed.
+//            } while(pbutton == 0);
             break;
         default:
             break;
@@ -318,12 +319,12 @@ int main(void)
 //    printstr("OK");
    lcd_setbacklight(0xff, 255);
     do {
-//            if(battlevel <= 408) { // 4.80*0.85
- //               lowbatt();
- //            }
+//        set_powerlamp(0);
+            if(battlevel <= 340) { // 3.4V
+               lowbatt();
+            }
         /* Main routine*/
-#if 1
-       c = pollkeys(pollkeybuf, 60, 1);
+       c = pollkeys(pollkeybuf, 10, 1); // 23*10=230ms
        p = 0;
        while(c > 0) {
            ClrWdt();
@@ -331,10 +332,7 @@ int main(void)
            c--;
            p++;
        }
-#else
-       c = pollkey_single();
-       setfreq_updown(c);
-#endif
+//       set_powerlamp(1);
 //       idle_time_ms(ui_idlecount);
         // Putstring to LCD.
         _LOCATE(0,0);
@@ -348,7 +346,7 @@ int main(void)
             lcd_setbacklight(0x00, 0); // Turn OFF
        }
         update_status();
-        ClrWdt();
+//        ClrWdt();
         update_display();
         ClrWdt();
     } while(1);
diff --git a/menu.c b/menu.c
index 5517fe2..aeb3211 100644 (file)
--- a/menu.c
+++ b/menu.c
@@ -51,44 +51,6 @@ void toggle_amfm(void)
 }
 
 
-void set_thresh_fmstereo(unsigned char a)
-{
-    unsigned char b;
-    a = a & 0x03;
-    threshold_fmstereo = a;
-    b = akc6955_readcmd(AKC6955_THRESH) & 0xfc;
-    akc6955_writecmd(AKC6955_THRESH, a | b);
-}
-
-void set_thresh_width(unsigned char a)
-{
-    unsigned char b;
-    a = a & 0x03;
-    threshold_width = a;
-    a = a << 2; // << 2
-    b = akc6955_readcmd(AKC6955_THRESH) & 0xf3;;
-    akc6955_writecmd(AKC6955_THRESH, a | b);
-}
-
-void set_thresh_amcnr(unsigned char a)
-{
-    unsigned char b;
-    a = a & 0x03;
-    threshold_amcnr = a;
-    a = a << 4; // << 4
-    b = akc6955_readcmd(AKC6955_THRESH) & 0xcf;
-    akc6955_writecmd(AKC6955_THRESH, a | b);
-}
-
-void set_thresh_fmcnr(unsigned char a)
-{
-    unsigned char b;
-    a = a & 0x03;
-    threshold_fmcnr = a;
-    a = a << 6; // << 4
-    b = akc6955_readcmd(AKC6955_THRESH) & 0x3f;
-    akc6955_writecmd(AKC6955_THRESH, a | b);
-}
 
 void set_stereomode(void)
 {
@@ -200,35 +162,35 @@ void scan_start(void)
 {
     unsigned char c;
     _CLS();
-    _LOCATE(0,0);
-    printstr("Scan F/A/4/6");
+    _PUTCHAR(' ');
     do {
-        update_status();
-        print_freq(1);
-        c = pollkey_single();
-       // New Scan
-       if(c == charcode_6){
+        do {
+            update_status();
+            _HOME();
+//            _LOCATE(0,0);
+            printstr("Scan F/A/4/6");
+            print_freq(1);
+            c = pollkeys(pollkeybuf, 20, 0); // 23*20 = 460ms
+//            idle_time_ms(2000);
+        } while(c == 0);
+      // New Scan
+       if(pollkeybuf[0] == charcode_6){
            scanflag = 0xff;
            akc6955_do_scan(0xff);
-       } else if(c == charcode_4){
+       } else if(pollkeybuf[0] == charcode_4){
            scanflag = 0xff;
            akc6955_do_scan(0);
-       } else if(c == charcode_a){
+       } else if(pollkeybuf[0] == charcode_a){
            scanflag = 0;
            akc6955_abort_scan();
            break;
-       } else if(c == charcode_f){
+       } else if(pollkeybuf[0] == charcode_f){
            break;
-       } else {
-           if((scanflag != 0) && (akc6955_chk_donescan() != 0)) {
-                scanflag = 0;
-                _HOME();
-                printstr("Scan F/A/4/6");
-                update_status();
-                print_freq(1);
-           }
-       }
-    _HOME();
+       }// else {
+//           if((scanflag != 0) && (akc6955_chk_donescan() != 0)) {
+//                scanflag = 0;
+ //          }
+//       }
     } while(1);
     _CLS();
 }
@@ -521,10 +483,10 @@ void setup_akc6955(void)
     }// Dummy, TBS (954KHz)
     akc6955_set_power(0xff); // Power ON
     akc6955_setvolume(36); // Temporally
-    set_thresh_fmcnr(threshold_fmcnr);
-    set_thresh_amcnr(threshold_amcnr);
-    set_thresh_width(threshold_width);
-    set_thresh_fmstereo(threshold_fmstereo);
+    akc6955_set_thresh_fmcnr(threshold_fmcnr);
+    akc6955_set_thresh_amcnr(threshold_amcnr);
+    akc6955_set_thresh_width(threshold_width);
+    akc6955_set_thresh_fmstereo(threshold_fmstereo);
     akc6955_setvolumemode(0);
     akc6955_set_lowboost(lowboost);
     set_stereomode();
@@ -595,7 +557,7 @@ void setup_menu(void)
             printstr("FM-CNR threshold:");
             val = threshold_fmcnr;
             val = read_numeric(val, 1, 0, 1);
-            set_thresh_fmcnr((unsigned char)val);
+            akc6955_set_thresh_fmcnr((unsigned char)val);
             break;
         case charcode_8:
             _CLS();
@@ -603,7 +565,7 @@ void setup_menu(void)
             printstr("AM-CNR threshold:");
             val = threshold_amcnr;
             val = read_numeric(val, 1, 0, 1);
-            set_thresh_amcnr((unsigned char)val);
+            akc6955_set_thresh_amcnr((unsigned char)val);
             break;
         case charcode_9:
             _CLS();
@@ -611,10 +573,7 @@ void setup_menu(void)
             printstr("Stereo threshold:");
             val = threshold_fmstereo;
             val = read_numeric(val, 1, 0, 1);
-            set_thresh_fmstereo((unsigned char)val);
-            break;
-        case charcode_f:
-            setup_help();
+            akc6955_set_thresh_fmstereo((unsigned char)val);
             break;
         case charcode_0:
             menu_poweroff();
@@ -636,6 +595,9 @@ void setup_menu(void)
             if(val > 999) val = 999;
             backlight_long = val;
             break;
+        case charcode_f:
+            setup_help();
+            break;
         default:
             break;
     }
@@ -686,7 +648,7 @@ void main_menu(void)
             printstr("Sig width:");
             val = threshold_width;
             val = read_numeric(val, 1, 0, 1);
-            set_thresh_width((unsigned char)val);
+            akc6955_set_thresh_width((unsigned char)val);
             // Set NF
         } else if(c == charcode_0){
             // Setup Menu
diff --git a/menu.h b/menu.h
index 53a2d88..f2bb699 100644 (file)
--- a/menu.h
+++ b/menu.h
@@ -124,10 +124,6 @@ extern "C" {
     extern void setband_direct(void);
     extern void setfreq_direct(void);
     extern void set_stereo(void);
-    extern void set_thresh_fmstereo(unsigned char a);
-    extern void set_thresh_fmcnr(unsigned char a);
-    extern void set_thresh_amcnr(unsigned char a);
-    extern void set_thresh_width(unsigned char a);
 
     extern void scan_start(void);
     extern void set_volume(void);
index 5183a9b..fa9896c 100644 (file)
@@ -80,173 +80,173 @@ ifeq ($(TYPE_IMAGE), DEBUG_RUN)
 ${OBJECTDIR}/ui.o: ui.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/ui.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 ui.c  -o${OBJECTDIR}/ui.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 ui.c  -o${OBJECTDIR}/ui.o
        
 ${OBJECTDIR}/i2c_io.o: i2c_io.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/i2c_io.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 i2c_io.c  -o${OBJECTDIR}/i2c_io.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 i2c_io.c  -o${OBJECTDIR}/i2c_io.o
        
 ${OBJECTDIR}/main.o: main.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/main.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 main.c  -o${OBJECTDIR}/main.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 main.c  -o${OBJECTDIR}/main.o
        
 ${OBJECTDIR}/idle.o: idle.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/idle.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 idle.c  -o${OBJECTDIR}/idle.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 idle.c  -o${OBJECTDIR}/idle.o
        
 ${OBJECTDIR}/lcd_acm1602.o: lcd_acm1602.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/lcd_acm1602.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 lcd_acm1602.c  -o${OBJECTDIR}/lcd_acm1602.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 lcd_acm1602.c  -o${OBJECTDIR}/lcd_acm1602.o
        
 ${OBJECTDIR}/akc6955.o: akc6955.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/akc6955.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 akc6955.c  -o${OBJECTDIR}/akc6955.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 akc6955.c  -o${OBJECTDIR}/akc6955.o
        
 ${OBJECTDIR}/eeprom.o: eeprom.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/eeprom.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 eeprom.c  -o${OBJECTDIR}/eeprom.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 eeprom.c  -o${OBJECTDIR}/eeprom.o
        
 ${OBJECTDIR}/ioports.o: ioports.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/ioports.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 ioports.c  -o${OBJECTDIR}/ioports.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 ioports.c  -o${OBJECTDIR}/ioports.o
        
 ${OBJECTDIR}/menu.o: menu.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/menu.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 menu.c  -o${OBJECTDIR}/menu.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 menu.c  -o${OBJECTDIR}/menu.o
        
 ${OBJECTDIR}/power.o: power.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/power.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 power.c  -o${OBJECTDIR}/power.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 power.c  -o${OBJECTDIR}/power.o
        
 ${OBJECTDIR}/adc_int.o: adc_int.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/adc_int.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 adc_int.c  -o${OBJECTDIR}/adc_int.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 adc_int.c  -o${OBJECTDIR}/adc_int.o
        
 ${OBJECTDIR}/menu_defs.o: menu_defs.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/menu_defs.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 menu_defs.c  -o${OBJECTDIR}/menu_defs.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 menu_defs.c  -o${OBJECTDIR}/menu_defs.o
        
 ${OBJECTDIR}/eepromutil.o: eepromutil.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/eepromutil.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 eepromutil.c  -o${OBJECTDIR}/eepromutil.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 eepromutil.c  -o${OBJECTDIR}/eepromutil.o
        
 ${OBJECTDIR}/ui_updown.o: ui_updown.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/ui_updown.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 ui_updown.c  -o${OBJECTDIR}/ui_updown.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 ui_updown.c  -o${OBJECTDIR}/ui_updown.o
        
 ${OBJECTDIR}/ui_display.o: ui_display.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/ui_display.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 ui_display.c  -o${OBJECTDIR}/ui_display.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 ui_display.c  -o${OBJECTDIR}/ui_display.o
        
 ${OBJECTDIR}/radio_getstat.o: radio_getstat.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/radio_getstat.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 radio_getstat.c  -o${OBJECTDIR}/radio_getstat.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 radio_getstat.c  -o${OBJECTDIR}/radio_getstat.o
        
 ${OBJECTDIR}/helps.o: helps.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/helps.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 helps.c  -o${OBJECTDIR}/helps.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 helps.c  -o${OBJECTDIR}/helps.o
        
 else
 ${OBJECTDIR}/ui.o: ui.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/ui.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 ui.c  -o${OBJECTDIR}/ui.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 ui.c  -o${OBJECTDIR}/ui.o
        
 ${OBJECTDIR}/i2c_io.o: i2c_io.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/i2c_io.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 i2c_io.c  -o${OBJECTDIR}/i2c_io.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 i2c_io.c  -o${OBJECTDIR}/i2c_io.o
        
 ${OBJECTDIR}/main.o: main.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/main.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 main.c  -o${OBJECTDIR}/main.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 main.c  -o${OBJECTDIR}/main.o
        
 ${OBJECTDIR}/idle.o: idle.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/idle.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 idle.c  -o${OBJECTDIR}/idle.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 idle.c  -o${OBJECTDIR}/idle.o
        
 ${OBJECTDIR}/lcd_acm1602.o: lcd_acm1602.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/lcd_acm1602.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 lcd_acm1602.c  -o${OBJECTDIR}/lcd_acm1602.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 lcd_acm1602.c  -o${OBJECTDIR}/lcd_acm1602.o
        
 ${OBJECTDIR}/akc6955.o: akc6955.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/akc6955.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 akc6955.c  -o${OBJECTDIR}/akc6955.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 akc6955.c  -o${OBJECTDIR}/akc6955.o
        
 ${OBJECTDIR}/eeprom.o: eeprom.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/eeprom.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 eeprom.c  -o${OBJECTDIR}/eeprom.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 eeprom.c  -o${OBJECTDIR}/eeprom.o
        
 ${OBJECTDIR}/ioports.o: ioports.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/ioports.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 ioports.c  -o${OBJECTDIR}/ioports.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 ioports.c  -o${OBJECTDIR}/ioports.o
        
 ${OBJECTDIR}/menu.o: menu.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/menu.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 menu.c  -o${OBJECTDIR}/menu.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 menu.c  -o${OBJECTDIR}/menu.o
        
 ${OBJECTDIR}/power.o: power.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/power.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 power.c  -o${OBJECTDIR}/power.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 power.c  -o${OBJECTDIR}/power.o
        
 ${OBJECTDIR}/adc_int.o: adc_int.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/adc_int.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 adc_int.c  -o${OBJECTDIR}/adc_int.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 adc_int.c  -o${OBJECTDIR}/adc_int.o
        
 ${OBJECTDIR}/menu_defs.o: menu_defs.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/menu_defs.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 menu_defs.c  -o${OBJECTDIR}/menu_defs.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 menu_defs.c  -o${OBJECTDIR}/menu_defs.o
        
 ${OBJECTDIR}/eepromutil.o: eepromutil.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/eepromutil.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 eepromutil.c  -o${OBJECTDIR}/eepromutil.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 eepromutil.c  -o${OBJECTDIR}/eepromutil.o
        
 ${OBJECTDIR}/ui_updown.o: ui_updown.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/ui_updown.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 ui_updown.c  -o${OBJECTDIR}/ui_updown.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 ui_updown.c  -o${OBJECTDIR}/ui_updown.o
        
 ${OBJECTDIR}/ui_display.o: ui_display.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/ui_display.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 ui_display.c  -o${OBJECTDIR}/ui_display.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 ui_display.c  -o${OBJECTDIR}/ui_display.o
        
 ${OBJECTDIR}/radio_getstat.o: radio_getstat.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/radio_getstat.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 radio_getstat.c  -o${OBJECTDIR}/radio_getstat.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 radio_getstat.c  -o${OBJECTDIR}/radio_getstat.o
        
 ${OBJECTDIR}/helps.o: helps.c  nbproject/Makefile-${CND_CONF}.mk
        ${MKDIR} ${OBJECTDIR} 
        ${RM} ${OBJECTDIR}/helps.o 
-       ${MP_CC} --debug-ralloc --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 helps.c  -o${OBJECTDIR}/helps.o
+       ${MP_CC} --debug-ralloc --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -c -mpic16 -p18f45k20 helps.c  -o${OBJECTDIR}/helps.o
        
 endif
 
@@ -255,11 +255,11 @@ endif
 ifeq ($(TYPE_IMAGE), DEBUG_RUN)
 dist/${CND_CONF}/${IMAGE_TYPE}/OPENI2CRADIO_6955.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES}  nbproject/Makefile-${CND_CONF}.mk    
        ${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} 
-       ${MP_CC}  --debug-ralloc -Wl-c -Wl-m --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -mpic16 -p18f45k20 ${OBJECTFILES}  -odist/${CND_CONF}/${IMAGE_TYPE}/OPENI2CRADIO_6955.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} 
+       ${MP_CC}  --debug-ralloc -Wl-c -Wl-m --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -mpic16 -p18f45k20 ${OBJECTFILES}  -odist/${CND_CONF}/${IMAGE_TYPE}/OPENI2CRADIO_6955.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX} 
 else
 dist/${CND_CONF}/${IMAGE_TYPE}/OPENI2CRADIO_6955.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES}  nbproject/Makefile-${CND_CONF}.mk   
        ${MKDIR} dist/${CND_CONF}/${IMAGE_TYPE} 
-       ${MP_CC}  --debug-ralloc -Wl-c -Wl-m --use-non-free --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df libio18f45k20.lib libc18f.lib -mpic16 -p18f45k20 ${OBJECTFILES}  -odist/${CND_CONF}/${IMAGE_TYPE}/OPENI2CRADIO_6955.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} 
+       ${MP_CC}  --debug-ralloc -Wl-c -Wl-m --use-non-free --verbose -V --pstack-model=small --obanksel=2 --optimize-cmp --optimize-df --opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib -mpic16 -p18f45k20 ${OBJECTFILES}  -odist/${CND_CONF}/${IMAGE_TYPE}/OPENI2CRADIO_6955.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} 
        @echo Normalizing hex file
        @"/opt/microchip/mplabx/mplab_ide/mplab_ide/modules/../../bin/hexmate" --edf="/opt/microchip/mplabx/mplab_ide/mplab_ide/modules/../../dat/en_msgs.txt" dist/${CND_CONF}/${IMAGE_TYPE}/OPENI2CRADIO_6955.X.${IMAGE_TYPE}.hex -odist/${CND_CONF}/${IMAGE_TYPE}/OPENI2CRADIO_6955.X.${IMAGE_TYPE}.hex
 
index 6d9d0ad..df58989 100644 (file)
@@ -1,5 +1,5 @@
 #
-#Wed Jul 24 18:41:03 JST 2013
+#Wed Jul 24 21:47:50 JST 2013
 default.languagetoolchain.dir=/usr/local/bin
 default.br-unifei-rmaalmeida-toolchainSDCC-SDCCtoolchain.md5=b67cce1ad75b450308d7806e430931b3
 com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=1c49f19f6a43b876c317e0d8d41c0854
index 94770ef..acc3d48 100644 (file)
@@ -59,6 +59,8 @@
   </logicalFolder>
   <sourceRootList>
     <Elem>/usr/local/share/sdcc/lib/src/pic16/libc</Elem>
+    <Elem>/usr/local/share/sdcc/non-free/lib/src/pic16</Elem>
+    <Elem>/usr/local/share/sdcc/lib/src/pic16/startup</Elem>
   </sourceRootList>
   <projectmakefile>Makefile</projectmakefile>
   <confs>
         <property key="programoptions.preserveprogramrange.end" value="0x7fff"/>
         <property key="programoptions.preserveprogramrange.start" value="0x0"/>
         <property key="programoptions.preserveuserid" value="false"/>
+        <property key="programoptions.testmodeentrymethod" value="VPPFirst"/>
         <property key="programoptions.usehighvoltageonmclr" value="false"/>
         <property key="programoptions.uselvpprogramming" value="false"/>
         <property key="voltagevalue" value="3.25"/>
       </PICkit3PlatformTool>
+      <SDCCToolchain>
+      </SDCCToolchain>
       <sdcc>
-        <property key="V-show-commands-compiler" value="false"/>
+        <property key="V-show-commands-compiler" value="true"/>
         <property key="Werror" value="false"/>
         <property key="debug-xtra14" value="false"/>
         <property key="debug-xtra16" value="false"/>
         <property key="pno-banksel" value="false"/>
         <property key="pstack-model" value="small"/>
         <property key="use-non-free" value="true"/>
-        <property key="verbose" value="false"/>
-        <appendMe value="libio18f45k20.lib libc18f.lib"/>
+        <property key="verbose" value="true"/>
+        <appendMe value="--opt-code-size --mplab-comp  libio18f45k20.lib libc18f.lib"/>
       </sdcc>
     </conf>
   </confs>
diff --git a/power.c b/power.c
index 98f1a57..01ef53d 100644 (file)
--- a/power.c
+++ b/power.c
@@ -29,6 +29,7 @@
 #include "commondef.h"
 #include "lcd_acm1602.h"
 #include "power.h"
+#include "menu.h"
 
 /*
  * Detect reset condition.
@@ -66,8 +67,8 @@ unsigned char chk_reset(void)
     if(rcon.b.RI == 0) return RESET_SOFTWARE;
     if(rcon.b.TO == 0) return RESET_WDT;
     if(rcon.b.PD == 0) return RESET_POWERDOWN;
-    if(stkptr.b.STKOVF == 1) return RESET_STACK_FULL;
-    if(stkptr.b.STKUNF == 1) return RESET_STACK_UNDER;
+    if(stkptr.b.STKOVF) return RESET_STACK_FULL;
+    if(stkptr.b.STKUNF) return RESET_STACK_UNDER;
     return RESET_MCLR;
 }
 
@@ -127,12 +128,12 @@ unsigned char chk_powerbutton(void)
 {
     unsigned char count = 0;
     char i;
-    for(i = 0; i < 24; i++) {  // 10*32=320ms.
-        if(PORTBbits.RB4 == 0) count++;
+    for(i = 0; i < 24; i++) {  // 10*24=240ms.
+        if(PORTBbits.RB4) count++;
         _POWER_DELAY();
         ClrWdt();
     }
-    if(count > 15) {
+    if(count <= 12) { // 120ms
         return 0xff; // Pressed
     }
     return 0; // Not pressed
@@ -158,10 +159,10 @@ void power_off(unsigned char save)
     unsigned char sts;
     if(save != 0) save_eeprom();
     WDTCONbits.SWDTEN = 0; // Lame WDT OFF.
-
+    sts = 0;
     do {
         IOCB = 0x00;
-        IOCB |= 0x10; // IOCB4 ONLY.
+        IOCBbits.IOCB4 = 1; // IOCB4 ONLY.
         OSCCONbits.IDLEN = 0; // Not Idle.
         INTCON2bits.RBIP = 1; // Priority = HIGH;
         INTCONbits.RBIF = 0;
@@ -171,12 +172,11 @@ void power_off(unsigned char save)
         power_on(0);
         Sleep();
         // Wake up
-        if(INTCONbits.RBIF == 1) {
-            sts = chk_powerbutton();
-        } else {
-            sts = 0;
+        if(INTCONbits.RBIF) {
+                sts = chk_powerbutton();
         }
     } while(sts == 0);
+    
     INTCONbits.RBIF = 0;
     INTCONbits.RBIE = 0;
 
diff --git a/power.h b/power.h
index e8a87ed..3859e3e 100644 (file)
--- a/power.h
+++ b/power.h
@@ -47,7 +47,7 @@
 #include "ui.h"
 #include "eeprom.h"
 #include "ioports.h"
-#include "menu.h"
+//#include "menu.h"
 
 #ifndef POWER_H
 #define        POWER_H
diff --git a/ui.c b/ui.c
index 9a47a4a..a77283b 100644 (file)
--- a/ui.c
+++ b/ui.c
@@ -134,8 +134,6 @@ void printstr(char *s)
 void print_numeric_nosupress(unsigned int data, unsigned char digit)
 {
     unsigned int i;
-    int ref = 10;
-    int div = 1;
 
     if(digit == 0) return;
     if(digit >= 5) digit = 5;
@@ -305,7 +303,7 @@ unsigned char readkey(void)
  * Max = 32bytes;
  * 0 = Timeout
  * 1~32 = Received.
- * if((limit * 19.6ms) elapsed), break;
+ * if((limit * 23ms) elapsed), break;
  */
 unsigned char pollkeys(unsigned char *p, unsigned int limit, unsigned char repeat)
 {
@@ -315,7 +313,7 @@ unsigned char pollkeys(unsigned char *p, unsigned int limit, unsigned char repea
     unsigned char c;
 
     do {
-        idle_time_ms(10); // 0.78*20 = 15.6ms.
+        idle_time_ms(5); // 5ms.
         c = readkey(); //
         ClrWdt();
         if(c != charcode_null) {
@@ -334,7 +332,7 @@ unsigned char pollkeys(unsigned char *p, unsigned int limit, unsigned char repea
             penalty = 0;
         } else {
             penalty++;
-            if((limit > 3) && (penalty > limit / 4)){
+            if((limit > 3) && (penalty > (limit >> 2))){
                 penalty = 0;
                 cold = charcode_null;
             }
@@ -348,14 +346,13 @@ unsigned char pollkeys(unsigned char *p, unsigned int limit, unsigned char repea
 
 unsigned char pollkey_single(void)
 {
-    unsigned int count = 0;
-    unsigned int lifetime = 0;
     unsigned int penalty = 0;
     unsigned char c;
 
+    cold = charcode_null;
     do {
-        idle_time_ms(10); // 0.125 * 4 * 20 = 10ms.
-        c = readkey(); // 2 * 9 = 16ms
+        idle_time_ms(5); // 0.125 * 4 * 20 = 10ms.
+        c = readkey(); // 2 * 9 = 18ms
         ClrWdt();
         if(c != charcode_null) {
             if(cold != c){
index b447f2e..e50d670 100644 (file)
@@ -205,7 +205,7 @@ void setfreq_updown(unsigned char ctlword)
             break;
         case charcode_0: // Step
             threshold_width++;
-            set_thresh_width(threshold_width);
+            akc6955_set_thresh_width(threshold_width);
             akc6955_do_tune();
             break;
         case charcode_a: // Toggle FM