#include "lcd_acm1602.h"
#include "power.h"
#include "menu.h"
+#include "backlight.h"
/*
* Detect reset condition.
#endif
rcon.byte = RCON;
stkptr.byte = STKPTR;
- RCON |= 0b01010011; // SBOREN,*RI,*POR,*BOR = '1'.
- if((rcon.b.POR ==0) && (rcon.b.BOR == 0)) {
+ if(rcon.b.POR ==0) {
+ RCONbits.POR = 1;
return RESET_POR;
}
- if(rcon.b.BOR == 0) return RESET_BOR;
- if(rcon.b.RI == 0) return RESET_SOFTWARE;
+ if(rcon.b.BOR == 0) {
+ RCONbits.BOR = 1;
+ return RESET_BOR;
+ }
+ if(rcon.b.RI == 0) {
+ RCONbits.RI = 1;
+ return RESET_SOFTWARE;
+ }
if(rcon.b.TO == 0) return RESET_WDT;
if(rcon.b.PD == 0) return RESET_POWERDOWN;
if(stkptr.b.STKOVF) return RESET_STACK_FULL;
void power_on(unsigned char f)
{
if(f == 0x00){
- set_examp_mute(1);
+ set_examp_mute(0xff);
idle_time_ms(200);
- set_radiopower(0);
+ set_radiopower(0x00);
} else {
- set_examp_mute(0);
+ set_examp_mute(0x00);
idle_time_ms(100);
- set_radiopower(1);
+ set_radiopower(0xff);
}
}
{
unsigned char count = 0;
char i;
- for(i = 0; i < 24; i++) { // 10*24=240ms.
+
+ TRISBbits.RB4 = 1; // Set Input
+ for(i = 0; i < 24; i++) { // 2*24=48ms.
if(PORTBbits.RB4) count++;
_POWER_DELAY();
ClrWdt();
}
- if(count <= 12) { // 120ms
+ if(count <= 12) { // 24ms
return 0xff; // Pressed
}
return 0; // Not pressed
{
unsigned char sts;
- if(save != 0) save_eeprom();
-
+ if(save != 0) {
+ save_eeprom();
+ save_userbands();
+ }
lcd_setbacklight(0, 0);
set_powerlamp(0);
_AM_STATLAMP = 0;
IOCB = 0x10; // IOCB4 ONLY.
OSCCONbits.IDLEN = 0; // Not Idle.
INTCON2bits.RBIP = 1; // Priority = HIGH;
- INTCON = 0b0000100;
+ INTCON = 0b00001000;
T0CONbits.TMR0ON = 0;
Sleep();
// Wake up
if(INTCONbits.RBIF) {
INTCONbits.RBIF = 0;
+ idle_init();
sts = chk_powerbutton();
+ // sts = 0xff;
}
} while(sts == 0);