"); //-->
| 用C51实现带奇偶校验的串行通信 |
| http://www.yidaba.com 2006年05月31日 13:06 电子查询网 |
| 关键字:MCS-51 单片机 |
|
MCS-51系列单片机的串行口有4种工作方式。方式0为移位寄存器方式,用于外接同步I/O设备或扩展I/O口,不算起始位和停止位。方式1为8位异步串行通讯,方式2和方式3为9位异步串行通讯。方式2和方式3中的第9位是可程控位,即可由软件来确定第9位是“0”还是“1”。也就是说,MCS-51系列单片机不像某些专用串行芯片,如INTEL8051、8050、TLC16C550等那样,可根据初始化条件自动加入串行通讯中的奇偶校验位发送出去,而是需要软件参与产生奇偶校验位。用软件产生奇偶校验位是根据MCS-51系列单片机的状态寄存器PSW的定义:当累加器A中为1的个数为奇数时,P=1,否则P=0,来编程的。假定待发送的数据已放入累加器A中,可用如下汇编语言来实现(串行口工作于方式2): MOV C,P; 把奇偶标志送给进位位 用C语言来编写时,因累加器A对编程者不透明,则会带来问题。例如,假定待发送的数据已放入变量VARIABLE中,若要从串行口发送出去,想当然地认为使用如下语句即可: TB8=P; /*语句1*/ 实际上,2条语句并不能可靠地产生奇偶校验位。因为在语句1前面的语句所对应的汇编语言中的累加器A中为1的个数是不确定的,而 语句2又是不可分割的。语句1和2对应的汇编语言程序为: 可以看出,只有将语句3、4放到语句5和语句6之间时,才能正确地产生奇偶校验位。为了达到这一目的,可引入全局变量VARIABLE1相应的C语言程序如下: 需要强调的是: |
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
Keil C51语言使用技巧及实战
力科示波器及其在嵌入式系统中的应用(华中科技大学)
Keil C编译器常见警告与错误信息的解决方法
Keil C51资料(上)
科学家开创了在电子产品上生长超薄半导体的无转移方法
低功率 RF 混频器增强了接收器性能
边缘光子集成电路的新应用
[求助]关于tornado的ftp服务器软件wftpd的问题,有其他办法下载VXWORKS映像文件吗?
[求助]急需大量不同ARM开发板!!!
TDK推出适用于xEV平台的标准化EMC滤波器CarXield
CW4962构成的开关电源降压后作为前级输入电源(1)
Keil C编译器常见警告与错误信息的解决方法
电源监控器检查电路:第 1 部分
CW4960组成的开关电源降压后作为前级输入电源
[求助]近写了一个程序,大家帮忙看看,如何调试???
走进MIPS(华中科技大学)
如何在IC设计行业成功发展(华中科技大学)
\"AI智能体\"加速\"智能终端\"消费市场转型
抗振电容器的选型标准和应用指南是什么?
超越--赛灵思7系列28nm FPGA产品发布会
LED产品专业厂家!!
CW4962/CW4960构成双电压输出的应用电路
Keil C51资料(下)
[求助]怎样使用vxworks的无编号接口
为什么要使用零欧姆电阻器?
全球ICT支出指南发布:AI算力驱动未来五年7.6万亿美元市场
Sensirion突破性微型二氧化碳传感器发售
什么是JESD209-6,为什么它对边缘AI很重要?
多个CW4962/CW4960同步工作的应用电路
由CW4962/CW4960构成的0~30V连续可调的应用电路