代码规范性书写.ppt

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

串口通讯 代码规范性书写 电子组 代码规范性书写 1.首先最基本的。写出的代码要有层次感,让他们看时不会太费力,思路清晰即可,并且尽可能少滴出现编写错误。 2.了解一些编译常见问题处理。 3.STC89 与 STC12 程序之间移植的注意项。了解主要不同点与相同点。【硬件实现与CPU实现区别】 4.代码结构规整,思路清晰。。一个好的思路等于解决了一大半工作量 void Delay1ms() { unsigned char i, j; _nop_(); _nop_(); _nop_(); i = 11; j = 190; do { while (--j); } while (--i); }//STC12 void Delay1ms() { unsigned char i, j; _nop_(); i = 2; j = 199; do { while (--j); } while (--i); }//STC89 延时函数的问题 【寄存器,定时器,串口,CPU实现和定时器】 振荡(时钟)周期,机器周期,指令周期三者不同 STC12默认是1T模式,STC89默认是12T模式 为什么STC官网说只能快6~7倍 //AUXR = 0x7F; TMOD = 0xF0; TMOD |= 0x01; TL0 = 0xA4; TH0 = 0xFF; TF0 = 0; TR0 = 1; 上面关于延时函数的不同, 但是下面的的定时器初始化函数同样与时间有关,但是在移植时却不需要更改。 一般通讯格式与稳定性 上位机与下位机的通信 上位机是指可以直接发出操控命令的计算机,一般是,屏幕上显示各种信号变化。 下位机是直接控制设备获取设备状况的计算机,一般是单片机、PLC等。 上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。下位机不时读取设备状态数据(一般为模拟量),转换成数字信号反馈给上位机。 在通讯过程中,下位机上位机都需要一个共同的通讯协议负责信息交流,并提高稳定性。 【上位机与下位机通讯具体过程】 (最普通)常用到的通讯格式为 帧头(包头/开始标志位)+ 数据包 +帧尾(包尾/结束标志位) 简单的设计解决了许多问题 1.上位机、下位机都需要明确到底哪些才是自己需要接受的数据。 2.不同的帧头帧尾可以对数据包内容进行分类接受(此功能也可在数据包内实现) 3.方便上位机与下位机编程。帧头帧尾提供了通讯开始与通讯结束的两个标志位。可控制内容输入、输出。 在数据包发送数据时常用两种形式 1.使用十六进制格式发送——优势:最短数据长度包含最多的信息。且单片机不用进行或进行简单解析(不一定,有时解析难度还是较大)。缺点:调试不太方便,直观性不强。 2.使用十进制格式发送——优劣与上十六进制格式正好相反。 如:如果发送一个值为100的数据。 你可以发送一个0x64进行传输。也可以发送0x31 0x30 0x30单片机接收到时进行解析 数据包的常用简单结构 目前简单数据包应用的格式有 1.以固定长度进行识别 如:类似S40034D格式 假如我们按照一个约定数据包内第一个数据为2位,第2个数据为3位。(上位机与下位机已经约定好的) 则 数据包信息为 40 34 。。如果我们发送信息为 1 1时就要发送 S01001D 2.以特殊字符作为数据分割点进行识别 如:类似上面S40034D格式40 34数字我们可以用字母将数据分割为 即发送S40A34D。若发送1 1数字 就可以发送 S1A1D 两种通讯格式各有优略,各自按照自己的习惯和具体通讯数据类型进行选择 第一种数据处理方便,长度固定,但可能耗费较多资源。第二种需要分配空间,动态长度存储,需要算法进行解析处理。 关于串口发送和接收函数的纠结 纠结1:到底在发送的时候需不需要关闭串口中断(ES=0) 纠结2:为什么串口自己写,少了一点点差别为什么很大 串口的发送和接受方式有两种方法:中断法、轮询法(不用中断) 首先,明确,串口接受数据、发送数据时是不需要CPU参与具体时序过程(不同于CPU模拟的IIC通讯,需要CPU模拟)的,是由定时器与串行口等硬件共同协助工作的。 当CPU置于SBUF=A语句时,就相当于通知串口硬件工作并把A的八位的ASCII码值一位一位滴发送出去。发送结束后有TI置1作为发送结束的中断请求。 当上位机发送数据过来时,CPU是并不知道这件事的,等到一个字节接收完毕后,由硬件将RI置1,通知CPU有一字节数据到来,并已经存至SBUF中可以取走。 RI 、TI都是由硬件置1,由软件清零的。 #include “STC12C5A6

文档评论(0)

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

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

1亿VIP精品文档

相关文档