电工技术基础_电工基础知识_电工之家-电工学习网

欢迎来到电工学习网!

单片机串行接口作业办法

2017-03-23 23:43分类:PLC基础知识 阅读:

 

AT89S52单片机的串行口有办法0、办法1、办法2、办法3四种作业办法。办法0首要用于拓宽并行输入输出口,办法1、2、3用于串行通讯。对这4中作业办法的学习,首要是经过剖析各个办法下的发送和接纳逻辑来把握。单片机的串行通讯办法包含单片机与单片机之间的双机或多机通讯、单片机与PC机的通讯等,需求留心。

一、串行口办法0:同步移位寄存器办法

串行口的作业办法0为移位寄存器输入输出办法,办法0发送或接纳完8位数据后由硬件置位发送接连象征TI或接纳接连象征RI。

1.办法0发送

串行数据从RXD引脚输出,TXD引脚输出移位脉冲。CPU将数据写入发送寄存器(SBUF)时,当即主张发送,将8位数据以fosc/12的固定波特率从RXD输出,低位在前,高位在后,直至最高位(D7位)数字移出后,接连发送数据和移位时钟脉冲。

MOV SCON, #10H ; 串行口办法0

MOV A, SBUF ; 接纳数据

JNB RI, $ ; 等候数据接纳结束

2.办法0接纳

办法0接纳前,有必要先置位REN=1,容许接纳数据。此刻,RXD为串行数据输入端,TXD仍为同步脉冲移位输出端。当RI=0和REN=1一同满意时,就会主张一次接纳进程。接纳器以fosc/12的固定波特率接纳TXD端输入的数据。当接纳到第8位数据时,将数据移入接纳寄存器,并由硬件置位RI,向CPU恳求接连。

MOVSCON,#00H ;串行口办法0

MOVSBUF,A ;将数据送出

JNBTI,$ ;等候数据发送结束

作业办法0通常用于对并行输入输出口的拓宽,如图1所示。



图1 办法0的运用

二、办法1:8位UART办法

当SM0=0、SM1=l时,串行口挑选办法1,单片机作业于8位数据异步通讯办法(UART)。在办法1时,传送一帧信息为10位,即1位开端位(0),8位数据位(低位在先)和1位接连位(1)。办法1的数据格局如图2所示。



图2 办法1的数据格局

1.办法1发送

当CPU施行MOVA,SBUF指令将数据写入发送缓冲SBUF,主张发送。先把开端位输出到TXD,然后把移位寄存器的输出位送到TXD。接着宣告榜首个移位脉冲(SHIFT),使数据右移一位,并从左端补入0。尔后数据将逐位由TXD端送出,而其左面不断补入0。发送完一帧数据后,就由硬件置位TI。


图3 办法1发送

2.办法1接纳

当REN=1且接纳到开端位后,在移位脉冲的操控下,把接纳到的数据移入接纳缓冲寄存器(SBUF)中,接连位到来后,把接连位送入RB8中,并置位RI,告诉CPU接纳到一个字符。


图4 办法1接纳

三、办法2和办法3:9位数据异步通讯办法

当SM0=1、SM1=0时,串行口挑选办法2;当SM1=1、SM0=1时,串行口挑选办法3。办法2和办法3的作业原理类似,界说为9位的异步通讯接口,发送(经过TXD)和接纳(经过RXD)一帧信息都是11位,1位开端位(0)、8位数据位(低位在先)、1位可编程位(即第9位数据)和1位接连位(1)。其数据格局如图5所示。


图5 办法2和3的数据格局

办法2和办法3仅有的纷歧样是办法2的波特率是固定的,办法3的波特率是可变的。

1.办法2和办法3发送

当CPU施行一条数据写入SUBF的指令时,主张发送器发送。把开端位(0)放到TXD端,经过一位时刻后,数据由移位寄存器送到TXD端,经过榜首位数据,呈现榜首个移位脉冲。当TB8的内容移到位寄存器的输出方位时,其左面一位是接连位“1”,再往左的悉数位全为“0”。这种状况由零查看器查看到后,就告诉发送操控器作终究一次移位,然后置TI=1,恳求接连。发送进程如图6所示。


图6 办法2和3的发送

2.办法2和办法3接纳

接纳时,数据从右边移入输入移位寄存器,在开端位0移到最左面时,操控电路进行终究一次移位。当RI=0,且SM2=0(或接纳到的第9位数据为1)时,接纳到的数据装入接纳缓冲器SBUF和RB8(接纳数据的第9位),置RI=1,向CPU恳求接连。假定条件不满意,则数据扔掉,且不置位RI,持续查找RXD引脚的负跳变。接纳的进程如图7所示。


图7 办法2和3的接纳

四、波特率的核算

波特率反映串行口传输数据的速率,它取决于振动频率、PCON寄存器的SCON位以及守时器的设定。在串行通讯中,收发两头的数据传送率(波特率)要遵从必定的约好。AT89S52串行口的四种作业办法中,办法0和2的波特率是固定的,而办法1和3的波特率是可变的,由守时器的溢出率操控。

办法0为固定波特率:波特率=fosc/12

办法2可选两种波特率:波特率=(2SMOD/64)×fosc

当SMOD=1时,波特率=fosc/32;

当SMOD=0时,波特率=fosc/64。

办法1、3为可变波特率,用T1作波特率发作器。

波特率=(2SMOD/32)×T1溢出率,T1溢出率为T1溢出一次所需时刻的倒数。

例如:核算波特率。恳求用T1作业于办法2来发作波特率2400,已知晶振频率=12MHz。

解:求出T1的初值:

常用波特率和T1初值可参阅教材中的表6-2。
五、多机通讯

在集散式散布体系中,通常选用一台主机和多台从机。其间主机发送的信息能够被各个从机接纳,而各从机的信息只能被主机接纳,从机与从机之间不能彼此直接通讯。

图8为多机通讯连线暗示图,体系中左面为主机,别的的为1~n号从机,并确保每台从机在体系中的编号是专一的。


图8 多通讯暗示图

上一篇:AT89S52单片机接连体系

下一篇:单片机的接连体系

相关推荐
返回顶部