/******************************************************************************* * 函 数 名 :main * 函数功能 :主函数 * 输 入 :无 * 输 出 :无 *******************************************************************************/ void main() { InitTime(); while(1) { if(Beep_EN == 0)//实现循环播放 { BeepOn(S_SHUTDOWN);//关机音 Delayms(2000); BeepOn(S_POWERON);//开机音 Delayms(2000); BeepOn(S_SINGLE);//单音 Delayms(2000); BeepOn(S_MUSIC);//两只老虎 Delayms(8000); BeepOn(S_ALL);//所有音符 Delayms(2000); } } }
/********************************************************** **Name: PowerOnMusic **Function: Power on music **Input: none **Output: none **********************************************************/ void PowerOnMusic(void) { BeepOn((u16*)MusicTab_PowerOn); //Power on music LCD_DisplayAll(); //display all LCD seg DispSeg_915=1;DispSeg_RFM=1;DispSeg_MHz=1; while(1) { if((gw_BeepTimer==0)&&(gw_ToneBuf[gb_BeepOnCount+1]==0)) break; LCD_Display(); } DispSeg_915=0;DispSeg_RFM=0;DispSeg_MHz=0; Clr_LCD(); //Clear LCD display }
// ============================ Implementation ================================= void Task_Beep(void) { if(EBeep.Count == 0) return; if(EBeep.IsYelling) { // Check if time to silence if(DelayElapsed(&EBeep.Timer, BEEP_ON_TIME)) { BeepOff(); EBeep.IsYelling = false; EBeep.Count--; } } // if yelling else { // Check if time to yell if(DelayElapsed(&EBeep.Timer, BEEP_OFF_TIME)) { BeepOn(); EBeep.IsYelling = true; } } }
/********************************************************** **Name: WorkModeSelect **Function: Select work mode **Input: KeyValue, key value **Output: none **********************************************************/ void WorkModeSelect(u8 KeyValue) { if(KeyValue==C_KeyUp) //Page Up key { gb_ErrorFlag=0; //Clear error flag gb_ParameterChangeFlag=2; gb_ModuleWorkMode=C_ModuleWorkMode_Standby; //Module entry stanby mode if(gb_SystemMode!=C_SysMode_Set) { gb_SystemMode=C_SysMode_Set; //Entry set mode } else { if(RF_ModemBuf[1]!=0) { gb_SystemMode=C_SysMode_Modem; //Entry Modem mode Clr_LCD(); //Clear LCD display } else { BeepOn((u16*)MusicTab_KeyErr); //Disable entry set modem mode when the modem mode only one } } if(RF_ModemBuf[1]!=0) { BeepOn((u16*)MusicTab_KeySet); SaveRFParameterToFlash(); //Save system mode } } else if(KeyValue==C_KeyLeft && gb_ParameterChangeFlag==2) //Page left key { BeepOn((u16*)MusicTab_KeyMove); //buzzer on switch(RF_ModemBuf[gb_Modem_Addr]) { case C_SysMode_FSK: if(gb_SystemMode==C_SysMode_TestTx){gb_SystemMode=C_SysMode_FSKRx+1;} //Not Tx&Rx mode gb_SystemMode--; if(RF_FdevBuf[0]==0 && gb_SystemMode==C_SysMode_TestTx){gb_SystemMode=C_SysMode_FSKRx;} //Only receive if(RF_FdevBuf[0]==0 && gb_SystemMode==C_SysMode_FSKTx){gb_SystemMode=C_SysMode_Set;} if(RF_BandBuf[0]==0 && gb_SystemMode==C_SysMode_TestRx){gb_SystemMode=C_SysMode_TestTx;} //Only send if(RF_BandBuf[0]==0 && gb_SystemMode==C_SysMode_FSKRx){gb_SystemMode=C_SysMode_FSKTx;} break; case C_SysMode_OOK: if(gb_SystemMode==C_SysMode_TestTx){gb_SystemMode=C_SysMode_OOKRx+1;} //Not Tx&Rx mode gb_SystemMode--; if(gb_SystemMode==C_SysMode_FSKTRx){gb_SystemMode=C_SysMode_Set;} if(RF_FdevBuf[0]==0 && gb_SystemMode==C_SysMode_TestTx){gb_SystemMode=C_SysMode_OOKRx;} //Only receive if(RF_FdevBuf[0]==0 && gb_SystemMode==C_SysMode_OOKTx){gb_SystemMode=C_SysMode_Set;} if(RF_BandBuf[0]==0 && gb_SystemMode==C_SysMode_TestRx){gb_SystemMode=C_SysMode_TestTx;} //Only send if(RF_BandBuf[0]==0 && gb_SystemMode==C_SysMode_OOKRx){gb_SystemMode=C_SysMode_OOKTx;} break; case C_SysMode_LoRa: if(gb_SystemMode==C_SysMode_TestTx){gb_SystemMode=C_SysMode_LoRaRx+1;} //Not Tx&Rx mode gb_SystemMode--; if(gb_SystemMode==C_SysMode_OOKTRx){gb_SystemMode=C_SysMode_Set;} // if(RF_FdevBuf[0]==0 && gb_SystemMode==C_SysMode_TestTx){gb_SystemMode=C_SysMode_LoRaRx;} //Only receive // if(RF_FdevBuf[0]==0 && gb_SystemMode==C_SysMode_LoRaTx){gb_SystemMode=C_SysMode_Set;} // if(RF_BandBuf[0]==0 && gb_SystemMode==C_SysMode_TestRx){gb_SystemMode=C_SysMode_TestTx;} //Only send // if(RF_BandBuf[0]==0 && gb_SystemMode==C_SysMode_LoRaRx){gb_SystemMode=C_SysMode_LoRaTx;} break; } } else if(KeyValue==C_KeyRight && gb_ParameterChangeFlag==2) //Page right key { BeepOn((u16*)MusicTab_KeyMove); //buzzer on gb_SystemMode++; switch(RF_ModemBuf[gb_Modem_Addr]) { case C_SysMode_FSK: if(gb_SystemMode>C_SysMode_FSKRx){gb_SystemMode=C_SysMode_TestTx;} if(RF_FdevBuf[0]==0 && gb_SystemMode==C_SysMode_TestTx){gb_SystemMode=C_SysMode_TestRx;} //Only receive if(RF_FdevBuf[0]==0 && gb_SystemMode==C_SysMode_FSKTx){gb_SystemMode=C_SysMode_FSKRx;} if(RF_BandBuf[0]==0 && gb_SystemMode==C_SysMode_TestRx){gb_SystemMode=C_SysMode_Sleep;} //Only send if(RF_BandBuf[0]==0 && gb_SystemMode==C_SysMode_FSKRx){gb_SystemMode=C_SysMode_TestTx;} break; case C_SysMode_OOK: if(gb_SystemMode>C_SysMode_OOKRx){gb_SystemMode=C_SysMode_TestTx;} if(gb_SystemMode==C_SysMode_FSKTx){gb_SystemMode=C_SysMode_OOKTx;} if(RF_FdevBuf[0]==0 && gb_SystemMode==C_SysMode_TestTx){gb_SystemMode=C_SysMode_TestRx;} //Only receive if(RF_FdevBuf[0]==0 && gb_SystemMode==C_SysMode_OOKTx){gb_SystemMode=C_SysMode_OOKRx;} if(RF_BandBuf[0]==0 && gb_SystemMode==C_SysMode_TestRx){gb_SystemMode=C_SysMode_Sleep;} //Only send if(RF_BandBuf[0]==0 && gb_SystemMode==C_SysMode_OOKRx){gb_SystemMode=C_SysMode_TestTx;} break; case C_SysMode_LoRa: if(gb_SystemMode>C_SysMode_LoRaRx){gb_SystemMode=C_SysMode_TestTx;} if(gb_SystemMode==C_SysMode_FSKTx){gb_SystemMode=C_SysMode_LoRaTx;} // if(RF_FdevBuf[0]==0 && gb_SystemMode==C_SysMode_TestTx){gb_SystemMode=C_SysMode_TestRx;} //Only receive // if(RF_FdevBuf[0]==0 && gb_SystemMode==C_SysMode_LoRaTx){gb_SystemMode=C_SysMode_LoRaRx;} // if(RF_BandBuf[0]==0 && gb_SystemMode==C_SysMode_TestRx){gb_SystemMode=C_SysMode_Sleep;} //Only send // if(RF_BandBuf[0]==0 && gb_SystemMode==C_SysMode_LoRaRx){gb_SystemMode=C_SysMode_TestTx;} break; } } else if(KeyValue==C_KeyDown && gb_ParameterChangeFlag==2) { if(gb_SystemMode==C_SysMode_Set) { BeepOn((u16*)MusicTab_KeySet); gb_SystemMode=C_SysMode_EntrySet; gb_SysMode_Set=C_SysMode_Set_Freq; } else { BeepOn((u16*)MusicTab_KeyOver); //Set over, Entry work mode switch(RF_ModemBuf[gb_Modem_Addr]) //config work mode { case C_SysMode_FSK: gb_ModuleWorkMode=C_ModuleWorkMode_FSK; break; case C_SysMode_OOK: gb_ModuleWorkMode=C_ModuleWorkMode_OOK; break; case C_SysMode_LoRa: gb_ModuleWorkMode=C_ModuleWorkMode_LoRa; break; } //if(gb_SystemMode==C_SysMode_Standby){gb_ModuleWorkMode=C_ModuleWorkMode_Standby;} if(gb_SystemMode==C_SysMode_Sleep){gb_ModuleWorkMode=C_ModuleWorkMode_Sleep;} gb_DispFlashFlag=C_FlashDisp_None; //Close flash display flag if(gb_ParameterChangeFlag==2){gb_ParameterChangeFlag=1;} //Module parameter changed gb_ModuleWorkEnableFlag=1; //Enable module work in Tx/Rx mode gw_SendDataCount=0; //Send data count gw_ReceiveDataCount=0; //Receive data count } SaveRFParameterToFlash(); } else if(KeyValue!=C_KeyNone) { BeepOn((u16*)MusicTab_KeyErr); } }
/********************************************************** **Name: ModemSelect **Function: Select module mode (FSK/OOK/LoRa) **Input: KeyValue, key value **Output: none **********************************************************/ void ModemSelect(u8 KeyValue) { if(KeyValue==C_KeyLeft) //Page left key { BeepOn((u16*)MusicTab_KeyMove); //buzzer on if(gb_Modem_Addr){gb_Modem_Addr--;} else { while(1) { gb_Modem_Addr++; if(RF_ModemBuf[gb_Modem_Addr]==0) { gb_Modem_Addr--; break; } } } } else if(KeyValue==C_KeyRight) //Page right key { BeepOn((u16*)MusicTab_KeyMove); //buzzer on gb_Modem_Addr++; if(RF_ModemBuf[gb_Modem_Addr]==0){gb_Modem_Addr=0;} } else if(KeyValue==C_KeyDown) //OK key { BeepOn((u16*)MusicTab_KeyOK); //Set over, Quit modem set mode gb_ParameterChangeFlag=2; //Module parameter changed gb_SystemMode=C_SysMode_Set; if(gb_Modem_Addr_Backup!=gb_Modem_Addr) //Initialze parameter when Modem mode changed { if(RF_ModemBuf[gb_Modem_Addr]==C_SysMode_FSK) { gb_FreqBuf_Addr=0; gb_RateBuf_Addr=1; gb_PowerBuf_Addr=0; gb_FdevBuf_Addr=0; gb_BandBuf_Addr=0; } else if(RF_ModemBuf[gb_Modem_Addr]==C_SysMode_OOK) { } else if(RF_ModemBuf[gb_Modem_Addr]==C_SysMode_LoRa) { gb_FreqBuf_Addr=0; gb_RateBuf_Addr=0; gb_PowerBuf_Addr=0; gb_FdevBuf_Addr=0; gb_BandBuf_Addr=0; } } InitSystemParameter(); //Initrupt RF parameter SaveRFParameterToFlash(); //Save Module value } else if(KeyValue!=C_KeyNone) { BeepOn((u16*)MusicTab_KeyErr); } }
/********************************************************** **Name: RFParameterSelect **Function: Select RF parameter **Input: KeyValue, key value **Output: none **********************************************************/ void RFParameterSelect(u8 KeyValue) { if(KeyValue==C_KeyUp) //Page Up key { BeepOn((u16*)MusicTab_KeySet); gb_SysMode_Set++; if(RF_ModemBuf[gb_Modem_Addr]==C_SysMode_LoRa) { if(gb_SysMode_Set==C_SysMode_Set_Fdev){gb_SysMode_Set=C_SysMode_Set_Band;} if(gb_SysMode_Set>C_SysMode_Set_Band){gb_SysMode_Set=C_SysMode_Set_Freq;} } else { if(gb_SysMode_Set>C_SysMode_Set_Rate){gb_SysMode_Set=C_SysMode_Set_Freq;} if(RF_FdevBuf[0]==0 && gb_SysMode_Set==C_SysMode_Set_Power){gb_SysMode_Set++;} } } else if(KeyValue==C_KeyLeft) //Page left key { BeepOn((u16*)MusicTab_KeyMove); //buzzer on switch(gb_SysMode_Set) { case C_SysMode_Set_Freq: if(gb_FreqBuf_Addr){gb_FreqBuf_Addr--;} else { while(1) { gb_FreqBuf_Addr++; if(RF_FreqBuf[gb_FreqBuf_Addr]==0) { gb_FreqBuf_Addr--; break; } } } break; case C_SysMode_Set_Power: gb_PowerBuf_Addr++; if(RF_PowerBuf[gb_PowerBuf_Addr]==0){gb_PowerBuf_Addr=0;} break; case C_SysMode_Set_Rate: if(gb_RateBuf_Addr){gb_RateBuf_Addr--;} else { while(1) { gb_RateBuf_Addr++; if(RF_RateBuf[gb_RateBuf_Addr]==0) { gb_RateBuf_Addr--; break; } } } break; case C_SysMode_Set_Band: //Only in LoRa mode if(gb_BandBuf_Addr){gb_BandBuf_Addr--;} else { while(1) { gb_BandBuf_Addr++; if(RF_LoRaBandWidthBuf[gb_BandBuf_Addr]==0) { gb_BandBuf_Addr--; break; } } } break; } } else if(KeyValue==C_KeyRight) //Page right key { BeepOn((u16*)MusicTab_KeyMove); //buzzer on switch(gb_SysMode_Set) { case C_SysMode_Set_Freq: gb_FreqBuf_Addr++; if(RF_FreqBuf[gb_FreqBuf_Addr]==0){gb_FreqBuf_Addr=0;} break; case C_SysMode_Set_Power: if(gb_PowerBuf_Addr){gb_PowerBuf_Addr--;} else { while(1) { gb_PowerBuf_Addr++; if(RF_PowerBuf[gb_PowerBuf_Addr]==0) { gb_PowerBuf_Addr--; break; } } } break; case C_SysMode_Set_Rate: gb_RateBuf_Addr++; if(RF_RateBuf[gb_RateBuf_Addr]==0){gb_RateBuf_Addr=0;} break; case C_SysMode_Set_Band: gb_BandBuf_Addr++; if(RF_LoRaBandWidthBuf[gb_BandBuf_Addr]==0){gb_BandBuf_Addr=0;} break; } } else if(KeyValue==C_KeyDown) //OK key { BeepOn((u16*)MusicTab_KeyOK); //Set over, Quit set mode gb_SystemMode=C_SysMode_Set; //Set mode SaveRFParameterToFlash(); } }
/********************************************************** **Name: DisplayRFParameter **Function: Complex display RF parameter **Input: none **Output: none **********************************************************/ void DisplayRFParameter(void) { u8 *TempDispBuf; if(gb_ErrorFlag!=1) { switch(gb_SystemMode) //Flash Display { case C_SysMode_Modem: if(RF_ModemBuf[gb_Modem_Addr]==C_SysMode_FSK) { SendStringToDispBuf(C_DispAddr_Time, (u8*)"sel-FS"); //Select FSK mode } else if(RF_ModemBuf[gb_Modem_Addr]==C_SysMode_OOK) { SendStringToDispBuf(C_DispAddr_Time, (u8*)"sel-OO"); //Select OOK mode } else if(RF_ModemBuf[gb_Modem_Addr]==C_SysMode_LoRa) { SendStringToDispBuf(C_DispAddr_Time, (u8*)"sel-Lr"); //Select LoRa mode } gb_DispFlashFlag=C_FlashDisp_Time; DispSeg_Tx=0; //Clear other seg DispSeg_Rx=0; DispSeg_PWR=0; DispSeg_Fdev=0; DispSeg_BW=0; DispSeg_P6=0;DispSeg_BR=0; DispSeg_315=0;DispSeg_434=0;DispSeg_868=0;DispSeg_915=0; DispSeg_HopeRF=1; SendStringToDispBuf(C_DispAddr_RFM, RF_ModuleName);DispSeg_RFM=1; //Module name display return; //break; case C_SysMode_ModuleSel: SendStringToDispBuf(C_DispAddr_Time, (u8*)"sel-RF"); gb_DispFlashFlag=C_FlashDisp_RFM; DispSeg_Tx=0; //Clear other seg DispSeg_Rx=0; DispSeg_PWR=0; DispSeg_Fdev=0; DispSeg_BW=0; DispSeg_P6=0;DispSeg_BR=0; DispSeg_315=0;DispSeg_434=0;DispSeg_868=0;DispSeg_915=0; DispSeg_HopeRF=1; SendStringToDispBuf(C_DispAddr_RFM, RF_ModuleName);DispSeg_RFM=1; //Module name display return; //break; case C_SysMode_Set: TempDispBuf=(u8*)" set "; gb_DispFlashFlag=C_FlashDisp_Time; break; case C_SysMode_FSKTx: TempDispBuf=(u8*)"FS--T "; break; case C_SysMode_FSKRx: TempDispBuf=(u8*)"FS--R "; break; case C_SysMode_FSKTRx: TempDispBuf=(u8*)"FS--TR"; break; case C_SysMode_OOKTx: TempDispBuf=(u8*)"OO--T "; break; case C_SysMode_OOKRx: TempDispBuf=(u8*)"OO--R "; break; case C_SysMode_OOKTRx: TempDispBuf=(u8*)"OO--TR"; break; case C_SysMode_LoRaTx: TempDispBuf=(u8*)"LR--T "; break; case C_SysMode_LoRaRx: TempDispBuf=(u8*)"LR--R "; break; case C_SysMode_LoRaTRx: TempDispBuf=(u8*)"LR--TR"; break; case C_SysMode_TestTx: TempDispBuf=(u8*)" T--T "; break; case C_SysMode_TestRx: TempDispBuf=(u8*)" T--R "; break; // case C_SysMode_Standby: // TempDispBuf=(u8*)"STAND "; // break; case C_SysMode_Sleep: TempDispBuf=(u8*)"SLEEP "; break; case C_SysMode_EntrySet: TempDispBuf=(u8*)" set "; if(gb_SysMode_Set==C_SysMode_Set_Freq){gb_DispFlashFlag=C_FlashDisp_Freq;} else if(gb_SysMode_Set==C_SysMode_Set_Power){gb_DispFlashFlag=C_FlashDisp_PWR;} else if(gb_SysMode_Set==C_SysMode_Set_Rate){gb_DispFlashFlag=C_FlashDisp_BR;} else if(gb_SysMode_Set==C_SysMode_Set_Fdev){gb_DispFlashFlag=C_FlashDisp_Fdev;} else if(gb_SysMode_Set==C_SysMode_Set_Band){gb_DispFlashFlag=C_FlashDisp_BW;} //?????? break; } } else { TempDispBuf=(u8*)" Err "; //Error display gb_DispFlashFlag=C_FlashDisp_Time; BeepOn((u16*)MusicTab_Error); } SendStringToDispBuf(C_DispAddr_Time, TempDispBuf); DispSeg_HopeRF=1; SendStringToDispBuf(C_DispAddr_RFM, RF_ModuleName);DispSeg_RFM=1; //Module name display switch(RF_FreqBuf[gb_FreqBuf_Addr]) //Frequency display { case 315: DispSeg_315=1;DispSeg_434=0;DispSeg_868=0;DispSeg_915=0; break; case 434: DispSeg_315=0;DispSeg_434=1;DispSeg_868=0;DispSeg_915=0; break; case 868: DispSeg_315=0;DispSeg_434=0;DispSeg_868=1;DispSeg_915=0; break; case 915: DispSeg_315=0;DispSeg_434=0;DispSeg_868=0;DispSeg_915=1; break; } SendNumberToDispBuf(C_DispAddr_BR,RF_RateBuf[gb_RateBuf_Addr]); //RF Rate display if(RF_ModemBuf[gb_Modem_Addr]==C_SysMode_LoRa) //LoRa mode { DispSeg_P6=0;DispSeg_BR=0; } else { DispSeg_P6=1;DispSeg_BR=1; } if(RF_FdevBuf[0]==0 && RF_ModemBuf[gb_Modem_Addr]!=C_SysMode_LoRa) //Receiver module { SendStringToDispBuf(C_DispAddr_Tx,(u8*)" ");DispSeg_Tx=0; SendNumberToDispBuf(C_DispAddr_Rx,gw_ReceiveDataCount);DispSeg_Rx=1; SendStringToDispBuf(C_DispAddr_PWR,(u8*)" ");DispSeg_PWR=0; SendStringToDispBuf(C_DispAddr_Fdev,(u8*)" ");DispSeg_Fdev=0; SendNumberToDispBuf(C_DispAddr_BW,RF_BandBuf[gb_BandBuf_Addr]);DispSeg_BW=1; } else if(RF_BandBuf[0]==0 && RF_ModemBuf[gb_Modem_Addr]!=C_SysMode_LoRa) //Transmitter module { SendNumberToDispBuf(C_DispAddr_Tx,gw_SendDataCount);DispSeg_Tx=1; SendStringToDispBuf(C_DispAddr_Rx,(u8*)" ");DispSeg_Rx=0; SendNumberToDispBuf(C_DispAddr_PWR,RF_PowerBuf[gb_PowerBuf_Addr]);DispSeg_PWR=1; SendNumberToDispBuf(C_DispAddr_Fdev,RF_FdevBuf[gb_FdevBuf_Addr]);DispSeg_Fdev=1; SendStringToDispBuf(C_DispAddr_BW,(u8*)" ");DispSeg_BW=0; } else //Transceiver module { SendNumberToDispBuf(C_DispAddr_Tx,gw_SendDataCount);DispSeg_Tx=1; SendNumberToDispBuf(C_DispAddr_Rx,gw_ReceiveDataCount);DispSeg_Rx=1; SendNumberToDispBuf(C_DispAddr_PWR,RF_PowerBuf[gb_PowerBuf_Addr]);DispSeg_PWR=1; //RF out power display if(RF_ModemBuf[gb_Modem_Addr]==C_SysMode_LoRa) //LoRa mode { SendStringToDispBuf(C_DispAddr_Fdev,(u8*)" ");DispSeg_Fdev=0; //RF Fdev display if(RF_LoRaBandWidthBuf[gb_BandBuf_Addr]<1000) //RF BW display { SendNumberToDispBuf(C_DispAddr_BW,RF_LoRaBandWidthBuf[gb_BandBuf_Addr]);DispSeg_BW=1; DispSeg_P8=1; } else { SendNumberToDispBuf(C_DispAddr_BW,RF_LoRaBandWidthBuf[gb_BandBuf_Addr]/10);DispSeg_BW=1; DispSeg_P8=0; } } else { SendNumberToDispBuf(C_DispAddr_Fdev,RF_FdevBuf[gb_FdevBuf_Addr]);DispSeg_Fdev=1; //RF Fdev display SendNumberToDispBuf(C_DispAddr_BW,RF_BandBuf[gb_BandBuf_Addr]);DispSeg_BW=1;DispSeg_P8=0; //RF BW display } } if(RF_RSSIBuf[0]!=0 &&(gb_SystemMode==C_SysMode_FSKRx||gb_SystemMode==C_SysMode_TestRx||gb_SystemMode==C_SysMode_LoRaRx||gb_SystemMode==C_SysMode_OOKRx)) { DispSeg_Q5=1; //RF RSSI signal display if(gb_RF_RSSI!=0xff) { DispSeg_Q4=1; DispSeg_Q3=1; DispSeg_Q2=1; DispSeg_Q1=1; if(gb_RF_RSSI<RF_RSSIBuf[3]){DispSeg_Q1=0;} if(gb_RF_RSSI<RF_RSSIBuf[2]){DispSeg_Q2=0;} if(gb_RF_RSSI<RF_RSSIBuf[1]){DispSeg_Q3=0;} if(gb_RF_RSSI<RF_RSSIBuf[0]){DispSeg_Q4=0;} //SendNumberToDispBuf(C_DispAddr_Tx,gb_RF_RSSI); } } else //Transmitter module { DispSeg_Q5=0;DispSeg_Q4=0;DispSeg_Q3=0;DispSeg_Q2=0;DispSeg_Q1=0; } }
void Beep(uint8_t ACount) { EBeep.Count = ACount; EBeep.IsYelling = true; DelayReset(&EBeep.Timer); BeepOn(); }