串口通信编程的内容:计算机串口通信的理解
串口通信编程的内容:计算机串口通信的理解图3图2表示串口的内部结构图。一台计算机通过串口的TXD引脚发送数据,通过RXD接收数据。图1图1表示两台计算机的网络通信连接示意图。两台计算机的发送和接收都是通过网线中的单根导线连接,所以,不管是发送信息还是接收信息,都只能一位一位地进行,也就是以串行的方式进行,这也是串口名称的由来。图2
1、串行接口
是指数据一位一位地顺序传送。其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。
2、并行接口
简称并口。所谓“并行”,是指8位数据同时通过并行线进行传送,这样数据传送速度大大提高,但并行传送的线路长度受到限制,因为长度增加,干扰就会增加,数据也就容易出错,目前,并行接口主要作为打印机端口等。
图1
图1表示两台计算机的网络通信连接示意图。两台计算机的发送和接收都是通过网线中的单根导线连接,所以,不管是发送信息还是接收信息,都只能一位一位地进行,也就是以串行的方式进行,这也是串口名称的由来。
图2
图2表示串口的内部结构图。一台计算机通过串口的TXD引脚发送数据,通过RXD接收数据。
图3
图3是单片机中断连接图。如前文所示,串口发送中断要发生的话,就必须TI开关、ES开关、EA开关以及优先级开关都必须闭合。
现在我们想象一下,如果我们要将信息传送出去,需要解决哪几个问题呢?
1:我们要知道待发送的数据放在什么地方。
2:我们发送数据的速率是多少,如何控制这个发送速率。
图3表示,当CPU要发送数据时,即将数据并行写入发送缓冲器SBUF中,同时启动数据由
TXD(P3.1)引脚串行发送,当一帧数据发送完毕即发送缓冲器空时,由硬件自动将发送中断标志位TI置位(TI开关闭合),向CPU发出中断请求。CPU响应中断后,用软件将TI位清除,同时又将下帧数据写入SBUF中,重复上述过程直到所有数据发送完毕。
以上叙述说明了如下问题:
1:存储发送数据的是缓冲寄存器SBUF.
2:当SBUF中存满8位数据时,自动触发发送过程,将这8位数据一位一位串行发送出去。发送的速率(波特率)可以由定时器T1或者T2确定。
3:当8位数据都发送完成以后,这个时候会自动硬件将TI置1。
4:为了进行下一次发送,需要软件清0.因为TI等于0是8位数据逐位串行发送进行等待的条件
发送过程的程序主要就是下面几条:
MOV SBUF A ;数据写入SBUF并启动发送,发送方式是一位一位串行发送,发送速率由
定时器控制
WAIT: JNB TI WAIT ;测试TI位,如果为0,则等待SBUF中8位数据发送完成。TI位为1
是跳出本条等待指令的条件
CLR TI ;如果TI为1,则表示SBUF中8位数据发送完毕,TI被硬件置1,从而跳出上一条等 待语句。为了进行下一次发送,又要软件清除TI标志(置0)。
以上3条指令重复执行就可以了。
所以,串口通信发送时主要解决的问题就是:
1:当发送缓冲器里面SBUF有8位数据时,自动启动串行发送过程 发送速率由定时器控制。
2:当8位数据发送完毕时,触发发送中断,准备下一次发送。
从以上叙述可以看出,TI置1触发的串口发送中断好像并没有做出什么实质性的操作,只是将发送过程从等待中跳出来。