MCS-51学习小结之RS232通讯
原文:http://blog.ednchina.com/ZHOUNACHU/1603473/message.aspx
随着多微机系统的广泛使用和计算机网络技术的普及,计算机的通讯功能越来越显得重要,一般来说,可以采用串行通讯和并行通讯两种方式,由于串行通讯方式使用线路少、成本低,特别是在远程传输时,可以避免多条线路的不一致而被广泛使用,其中,RS232通讯是比较常用的,操作起来也简单,对于一般的全双工通讯,只需要3根信号线就可以了,即一条TXD线、一条RXD线和一条地线。
我手里用的是9针D型串口,它的引脚分布为2:RXD、3:TXD和5:逻辑地。
MCS-51的串行发送和串行接收利用了P3口的第二功能,P3.0作为串行数据的接收线RXD,P3.1作为串行数据线的发送线TXD。串行通信的控制寄存器占据了26个SFR中的3个,其中,PCON和SCON用于设置串行口工作方式以及确定数据的发送和接收波特率,SBUF实际上由两个8位寄存器组成,一个用于存放将要发送的数据,另一个用于存放接收到的数据,起着数据的缓冲作用。
记得还是大二暑假的时候开始接触RS232通讯,当时对这3个SFR的概念非常模糊,那个时候的数字电路是自学的,基础不扎实,现在回头好好理解一下,发现这种通讯操作起来还是比较简单的,关键是要把这3个SFR的Functional
串行口通讯有4种工作方式可供选择,我这次调试的是方式1,即10位异步收发方式,这种方式比较常用。波特率的设置这里就不多说了,有专门的表可以直接查询,可以按照自己的需求选择其中一种就OK了。需要注意的是,这里数据的传送有两种途径可供选择,分别为:
(1)查询式:CPU通过查询通讯端口TXD和RXD的状态进行数据的传送,它的优点是硬件连线和查询程序十分简单,但是CPU在查询等待过程中会降低效率。
(2)中断法:中断传送是利用CPU本身的中断功能来实现对终端的数据传送,这种方式可以提高CPU的工作效率。
下面是我修改好的程序,我尽量把它写的清楚、简单、易懂、格式标准:
(1)查询法:
#include
#define
#define
uchar
//************************************************
void
{
}
//************************************************
void
{
}
(2)中断法:
#include<reg52.h>
#define
#define
//************************************************
void
{
}
//************************************************
void
{
}
//************************************************
void
{
}
调试这个通讯程序时,发现使用串口调试发送数据时必须使用16进制模式发送,否则单片机收不到数据,以后得记住这一点.