#include “extern.h”
#include “register.h”
#include “misc.H”
uint8_t LVD_cnt = 0;
uint8_t LVD_flag = 0;
void LED_server(void)
{
/*
if ((!pairing_done)&&(!Power_light_Flag)) {
light_cnt++;
if (light_cnt > 80) {
light_cnt = 0;
pa.4 =0;
}
if (light_cnt == 40) {
pa.4 = 1;
}
} else {
pa.4 = 0;
}
*/
if(LVD_flag&&B_Power_Flag){
if(light_cnt){
if(light_cnt200){
YGD_LED1 = 0;
YGD_LED2 = 0;
PSD_LED1 = 1;
}
if(light_cnt100){
YGD_LED1 = 0;
YGD_LED2 = 0;
PSD_LED1 = 0;
}
light_cnt --;
}ELSE{
light_cnt = 201;
}
} else if(light_cnt){
light_cnt–;
if(light_cnt==240){
YGD_LED1 = 1;
YGD_LED2 = 1;
PSD_LED1 = 1;
}
if(light_cnt==200){
YGD_LED1 = 0;
YGD_LED2 = 0;
PSD_LED1 = 0;
}
if(light_cnt==160){
YGD_LED1 = 1;
YGD_LED2 = 1;
PSD_LED1 = 1;
}
if(light_cnt==120){
YGD_LED1 = 0;
YGD_LED2 = 0;
PSD_LED1 = 0;
}
if(light_cnt==80){
if(B_Power_Flag){
YGD_LED1 = 1;
YGD_LED2 = 1;
}else{
YGD_LED1 = 0;
YGD_LED2 = 0;
}
PSD_LED1 = 1;
}
if(light_cnt==40){
YGD_LED1 = 0;
YGD_LED2 = 0;
PSD_LED1 = 0;
}
}else{
if(psled_flag){
PSD_LED1 = 1;
psled_flag--;
}else{
PSD_LED1 = 0;
}
if(led_flag){
YGD_LED1 = 1;
YGD_LED2 = 1;
}else{
YGD_LED1 = 0;
YGD_LED2 = 0;
}
}
}
void open_init(void){
led_flag = 1;
YGD_LED1 = 1;
YGD_LED2 = 1;
psled_flag = 0;
PSD_LED1 = 0;
IR_TX =1;
}
void dowm_init(void){
led_flag = 0;
psled_flag = 0;
YGD_LED1 = 0;
YGD_LED2 = 0;
IR_TX =0;
}
void io_sever(void)
{
pac = 0b1101_1110; // 0/1: 输入/输出
pa = 0b0000_0000;
paph = 0b0010_0000;
papl = 0b0000_0001;
$ padier 0b1111_1001; //1是数字输入 启用唤醒,0是模拟输入 禁止唤醒;
}
void IR_TEST_Server(void){
if(DY_TEST){
if(!key_IRC_flag){
key_IRC_flag = 1;
psled_flag = 10;
sleep_delay_cnt = SLEEP_TIME_10min;
}
// }
DY_CNT =0;
}ELSE{
DY_CNT++;
if(DY_CNT>5){
key_IRC_flag = 0;
}
// DY_CNT =0;
// psled_flag = 0;
}
}
void sleep_server(void)
{
if (sleep_delay_cnt) {
JS_CNT++;
if(JS_CNT >= 10)
{
JS_CNT = 0;
sleep_delay_cnt–;
}
} else if(Kaiguan){
// Power_light_Flag1=0;
// IRQ_HIGH();
// .delay 10;
B_Power_Flag = 0;
io_sever();
dowm_init();
// pa.4 = 1;
// $ padier 0b0100_0000;
$ padier 0b1111_1000; //1是数字输入 启用唤醒,0是模拟输入 禁止唤醒;
// hs6220_enter_sleep();
CLKMD = 0xf4; // -> ILRC
clkmd.En_WatchDog = 0;
goto $+1;
CLKMD.En_IHRC = 0; // close IHRC
STOPSYS;
nop;
CLKMD.En_IHRC = 1;
CLKMD = 0b0011_1110; // -> IHRC b7-b5:001-systemclock=IHRC/8
nop;
nop;
nop;
goto $+1;
wdreset;
io_sever();
$ t16m IHRC,/16,bit13; //16 / 16(MHZ) T16 = 1us * 2^13=8192us
delay_cnt = 3192; //8192-3192 = 5000us
stt16 delay_cnt;
intrq = 0;
// B_Power_Flag = 1;
sleep_delay_cnt = 40;
light_cnt = 0;
}
}
void ON_OFF_KEY(void)
{
uint8_t r_key_stare = 0;
if(!Kaiguan) {
r_key_stare = 0x01;
}
if(r_key_stare != R_KEY_BUF) {
B_NewKey_Flag = 1;
R_KEY_BUF = r_key_stare;
R_KEY_DEBOUNCE = C_KEY_DEBOUNCE;
} else {
if((B_NewKey_Flag != 0) && (R_KEY_DEBOUNCE == 0)) {
B_NewKey_Flag = 0;
// B_LoogPress_Flag = 0;
if(R_KEY_BUF & 0x01) {
B_LoogPress_Flag = 1;
R_LoogKEY_DEBOUNCE =250;
}else{
if(B_LoogPress_Flag){
B_LoogPress_Flag = 0;
R_LoogKEY_DEBOUNCE =0;
if(B_Power_Flag){
sleep_delay_cnt = SLEEP_TIME_10min;
if(led_flag){
led_flag =0;
}else{
led_flag =1;
}
}
}
}
}
if((!R_LoogKEY_DEBOUNCE)&&(B_LoogPress_Flag)) {
if(B_Power_Flag) {
sleep_delay_cnt = 5;
B_Power_Flag=0;
dowm_init();
light_cnt = 121;
LVD_flag =0;
} else {
sleep_delay_cnt = SLEEP_TIME_10min;
B_Power_Flag=1;
// Power_light_Flag1=1;
open_init();
LVD_flag =0;
light_cnt = 241;
}
B_LoogPress_Flag = 0;
}//if((!R_LoogKEY_DEBOUNCE)&& (B_LoogPress_Flag))
}
if(R_KEY_DEBOUNCE)
R_KEY_DEBOUNCE--;
if(R_LoogKEY_DEBOUNCE)
R_LoogKEY_DEBOUNCE--;
}
void LVD_Server(void){
$ GPCC Enable,BANDGAP,P_R;
$ GPCS VDD*12/32;//VDD = 3.2V
if(!GPC_out) {
LVD_cnt ++;
if(LVD_cnt>10){
LVD_cnt =0;
if(!LVD_flag){
dowm_init();
sleep_delay_cnt = 200;
}
LVD_flag = 1;
}
} else {
LVD_cnt =0;
}
}
/******************************************************************************
-
@brief main
-
@note
-
@param
-
@retval None
-
@version 1.0
-
@date 2018-01-23
-
@author sympathique
******************************************************************************/
void FPPA0 (void)
{
//.ADJUST_IC SYSCLK=IHRC/(P1), IHRC=(P2)MHz, VDD=(P3)V; //校准IC
//P1 = 2,4,6,8,16,32;提供不同的系统时钟
//p2 = 16 ~ 18;校准芯片到不同频率,通常选择16MHZ
//P3 = 2.2 ~ 5.5;根据不同的电源电压校准芯片
.ADJUST_IC SYSCLK=IHRC/8, IHRC=16MHz, VDD=3.3V; //校准IC , 4MHz
clkmd.En_WatchDog = 0; // WatchDog Enablewdreset;
io_sever();
// RF_INIT();
B_Power_Flag = 0;
sleep_delay_cnt = 2;
$ t16m IHRC,/16,bit13; //16 / 16(MHZ) T16 = 1us * 2^13=8192us
delay_cnt = 3192; //8192-3192 = 5000us
stt16 delay_cnt;
intrq = 0;while (1) {
wdreset;if (intrq.2) { delay_cnt = 3192;//3192 stt16 delay_cnt; intrq = 0;
// if(PA.7){
// PA.7 =0;
// }else{
// PA.7 =1;
// }
ON_OFF_KEY();
LED_server();
sleep_server();
if(B_Power_Flag&&(!LVD_flag))
{
// data_pair();
// key_server();
if(!light_cnt)
IR_TEST_Server();
LVD_Server();
// data_tx();
}}
} // else
}
/******************************************************************************
- @brief delay_nops
- @note
- @param
- @retval None
- @version 1.0
- @date 2018-01-23
- @author sympathique
******************************************************************************/
void delay_nops(void)
{
while (delay_cnt–) {
.delay 1
}
}