void Open_BattDetect(){ BattStruct.InitCount=0; BattStruct.BattDetectState=1; BattStruct.BattGridIndex=0; for(int i=0;i<BatteryGridArraySize;i++)BattStruct.BatteryGridArray[i]=1; BattStruct.BattGrid=1; TurnOnADC(); BattStruct.BattID=TakeTimer(RANDOM,32768/32,0,Compute_BattGrid); }
void ShortBeepSetTimes(unsigned char Times){ BeepTimes=Times; if(BeepID2!=0)ReleaseTimer(BeepID2); //強迫停止 if(BeepID!=0)ReleaseTimer(BeepID); //強迫停止 BuzzerOff(); BeepID2=0; BeepID=0; BeepCount2=0; BeepCount=0; BeepID2=TakeTimer(RANDOM,3000,0,ShortBeep); //9830=32768/3 }
void Beep1Sec(){ if(BeepID!=0){ ReleaseTimer(BeepID); //強迫停止..否則原本的若還在響..將會佔用1個TIMER不放 BeepID=0; BuzzerOff(); //關閉並省電 } BuzzerOn(); BeepID=TakeTimer(RANDOM,3000,SINGLE,BuzzerOff); }
__interrupt void P2ISR(void) { if (((Port[1].PortStatus & P2IFG) & P2IE) == LOW){ //(PortStatus[0] & ~P2DIR) : only consider the input pin Port[1].count = 0; if (Port[1].TimerID == 0xff){ Port[1].TimerID = TakeTimer(RANDOM,TIMER_CLK/100,PERIOD,CheckPort); if (Port[1].TimerID == 0xff) Port[1].TimerID = 0xff; } Port[1].PortStatus |= (P2IFG & P2IE); //trans port stats to postive } P2IFG = 0; }
void ShortBeep(){ BeepCount=0; if(BeepID!=0){ ReleaseTimer(BeepID); //強迫停止..否則原本的若還在響..將會佔用1個TIMER不放 BeepID=0; BuzzerOff(); //關閉並省電 } if (BeepCount2>=BeepTimes){ ReleaseTimer(BeepID2); BeepID2=0; BuzzerOff(); //關閉並省電 }else{ BuzzerOn(); BeepID=TakeTimer(RANDOM,1500,SINGLE,BuzzerOff); } BeepCount2++; }