单片机第七.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机第七

起始帧:0xff,占一个字节。 液位数据帧:0x00~0x08,占一个字节。 采样次数帧:0x01~0xffff,占两个字节。 校验帧:液位数据帧和采样次数帧的字节和,占一个字节。 可见,只有当上位机(PC机)完整收到一帧数据(共5个字节)时,才作为一次有效数据,否则作为无效数据抛弃。 为了实现对下位机远程可控,上位机需发送一个请求命令,可规定为“STA”。当下位机收到三个字节的字符串“STA”时,按照上面规定的通信帧回发信息。 (2) 程序流程图 为了实现对上位机请求信号“STA”的响应,软件需采用中断方式进行上位机请求信号的响应,收到正确的响应信号后,再通过查询方式实时发送液位信息的通信帧。主程序流程图如图7-10所示,串行中断服务程序如图7-11所示。 图7-10 主程序流程图 图7-11 串行中断服务程序 (3) 源程序 #include reg52.h #include intrins.h //包含头文件 union uint_uchar{ unsigned int Bint; unsigned char Bchar[2]; }sample_num; //采样次数单元 unsigned char rev_statu; //接收状态单元 /*------------------------------------------------ 系统初始化程序 ------------------------------------------------*/ void sys_init(void) { /*串行口初始化*/ TMOD|=0x20; //定时器1工作在定时方式2 SCON=0x50; //串行口工作在方式1,允许接收 TH1=0xfd; TL1=0xfd; //设定波特率为9600 TR1=1; //启动定时器1 ES=1; //开串口中断 EA=1; //总中断允许 } /*------------------------------------------------ 串行口中断服务程序 ------------------------------------------------*/ void UART_ISR(void) interrupt 4 { unsigned char temp; if(RI==1) { RI=0; temp=SBUF; if((temp==S)(rev_statu==0)) { rev_statu=1; //准备接收T } else if((temp==T)(rev_statu==1)) { rev_statu=2; //准备接收A } else if((temp==A)(rev_statu==2)) { rev_statu=0; //接收到字符串“STA” sample_num.Bint+=1; //采集次数单元加1 temp=sample_Liquid(); //采集液位信息 SBUF=0xff; //发送起始符 while(TI==0); TI=0; SBUF=temp; //发送液位数据 while(TI==0); TI=0; SBUF=sample_num.Bchar[0]; //发送采样次数 while(TI==0); TI=0; SBUF= sample_num.Bchar[1]; //发送采样次数 while(TI==0); TI=0; temp+=sample_num.Bcha

文档评论(0)

little28 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档