1. unsigned char A4,A5,A6,A7; //A4百位,A5十位,A6个位,A7小数位
2.定时3s功能
T0,方式一,定时器,50ms,初值?(11.0592MHz),中断服务函数,计60次就是3s
1)初始化
TMOD、TH0、TL0、ET0、TR0?(什么时间启动?根据需求确定)
2)中断服务函数
void T0INT() interrupt 1
{
}
(1) 重装初值;
(2) 计数+1,t0count(全局变量),计60次
(3) 60次到了:(if语句 判断)
向串口发送温度值(sendonebyte)—— ASCII码值,数字+0x30;考虑小数点(0x2E 或 '.')
t0count清零
3. S1—模式1(自动模式)
中断服务函数:modflag置1,开启T0,发送打印信息
4. S2—模式2(手动模式)
中断服务函数:modflag置2,关闭T0,发送打印信息(#-0-r-0-g-0-f-0-!)
5. 串口接收中断服务函数
1)RI=0,接收一个字节数据;
2)接收17个字节的数据(参考通信协议#-0-r-0-g-0-f-0-!)
(1)设一个数组revtab[ ]用来存放17个字节的数据,设一个变量revcount用于计数(共17个)
(2)当revcount <17时,接收来的数据赋给数组 revtab[revcount ],revcount加1
(3)当revcount ==17时,接收完成,revcount清零,判断指令内容:
先判断帧头、帧尾:“#”,“!” revtab[0]
if语句: '#','!' 或 0x23,0x21 &&
再判断具体指令值,共有4个,分别是:是否发送温度、红灯、绿灯、风扇, 0—停止,1—开启
.......................(根据判断的结果,执行动作,打印信息)
6. 主函数
1)初始化
2)while(1)函数
资料包括程序、原理图、仿真、流程图、器件清单等。
, 相关下载链接:
https://download.csdn.net/download/qq_63964231/88959718?utm_source=bbsseo