含有蜂鳴器和LED提示模塊的控制系統、即熱型熱水器的製作方法
2023-06-28 21:08:51 1

unsignedcharcodecmdLen[]={
sizeof(cmd0)-1,sizeof(cmd1)-1,sizeof(cmd2)-1,sizeof(cmd3)-1,};//命令長度表
unsignedcharcode*cmdPtr[]={&cmd0[0],&cmd1[0],&cmd2[0],&cmd3[0],};
for(i=0;i=cmdLen[i])//首先接收到的數據長度要不小於命令長度
{if(CmpMemory(buf,cmdPtr[i],cmdLen[i])){break;}}}//比較相同時退出循環
switch(i)//循環退出時i的值即是當前命令的索引值
{case0:Avaliable_Flag=1;break;case1:Avaliable_Flag=0;break;
case2:temprature_set++;send_len=IntToString(buf,(int)temprature_now);
UartWrite(buf,send_len+1);break;
case3:temprature_set--;send_len=IntToString(buf,(int)temprature_now);
UartWrite(buf,send_len+1);break;
default:UartWrite("badcommand.\r\n",sizeof("badcommand.\r\n")-1);
return;}}//發送提示
voidConfigTimer0(unsignedintms)/*配置並啟動T0,ms-T0定時時間*/
{unsignedlongtmp;//臨時變量
tmp=11059200/12;tmp=(tmp*ms)/1000;//定時器計數頻率,計算所需的計數值
tmp=65536-tmp;tmp=tmp+32;//計算定時器重載值,補償中斷響應延時造成的誤差
T0RH=(unsignedchar)(tmp>>8);T0RL=(unsignedchar)tmp;//定時器重載值拆分為高低字節
TMOD&=0xF0;TMOD|=0x01;//清零T0的控制位,配置T0為模式1
TH0=T0RH;TL0=T0RL;ET0=1;TR0=1;}//加載T0重載值,使能T0中斷,啟動T0
voidInterruptTimer0interrupt1/*T0中斷服務函數,執行串口接收監控和蜂鳴器驅動*/
{staticintms_cnt;ms_cnt++;if(ms_cnt>1000){flag1s=1;ms_cnt=0;}//定時1秒
TH0=T0RH;TL0=T0RL;UartRxMonitor(1);}//重新加載重載值,串口接收監控
以上實施實例不是對本發明的保護範圍的限定。