微控制器系统设计与应用刘燎原江苏建筑职业技术学院信息电子工程学院徐州建筑职业技术学院项目久串行收发模块制作-----------学习串行通信信息电子工程学院徐州建筑职业技术学院知识目标:1.理解异步通信2.理解发送、接受过程3.掌握串行通信的寄存器、工作方式技能目标:1.掌握双机通信的接口信息电子工程学院徐州建筑职业技术学院一、基础知识1.数据通信图(a)并行通信;(b)串行通信信息电子工程学院徐州建筑职业技术学院2.串行通信可分为异步传送和同步传送两种基本方式信息电子工程学院徐州建筑职业技术学院3.串行通信的数据传送方向有3种形式。图串行通信的三种方式(a)单工方式;(b)半双工方式;(c)全双工方式信息电子工程学院徐州建筑职业技术学院二、单片机中的串行通信1.51单片机有一个串行通信口:(P3.0,P3.1)XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51数据接收端RXD:(P3.0)串行数据接收端数据发送端TXD:(P3.1)串行数据发送端该口是全双工异步通信口,可以同时发送、接收数据XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U2AT89C51信息电子工程学院徐州建筑职业技术学院2.SBUF(数据发送、接收寄存器)MCS-51有两个独立的接收、发送缓冲器SBUF(属于特殊功能寄存器,地址为99H),一个用作发送,一个用作接收。发送缓冲器只能写入不能读出;接收缓冲器只能读出不能写入,两者共用一个字节地址(99H)。串行接口结构图信息电子工程学院徐州建筑职业技术学院发送时:(1)CPU由一条写发送缓冲器的指令SBUF=m,把数据(字符)写入串行口的发送缓冲器SBUF(发)中(2)TI=0,然后从TXD端一位位地向外发送。(3)发送完毕后,自动把TI(发送结束中断标志)置1,请求中断,通知CPU继续发送下一个数据.(4)在再次发送数据之前,必须用软件将TI清零。接收时:(1)在满足REN=1和RI=0的条件下,接收端RXD一位位地接收数据(2)直到一个完整的字符数据送到SBUF后,自动把RI(接收结束中断标志)置1,请求中断,通知CPU到SBUF读取接受的数据。(3)用一条指令把接收缓冲器SBUF(收)的内容读出m=SBUF(4)在再次接收数据之前,必须用软件将RI清零。编程方法:(如何知道什么时候发送或接收完?)中断方式、查询方式信息电子工程学院徐州建筑职业技术学院3.串口的工作模式(1).方式0串行接口工作方式0为同步移位寄存器方式,其波特率是固定的,为fosc(振荡频率)的1/12。(1)方式0发送数据从RxD引脚串行输出,TxD引脚输出同步脉冲。当一个数据写入串行口发送缓冲器时,串行口将8位数据以fosc/12的固定波特率从RxD引脚输出,从低位到高位。发送后置中断标志TI为1,请求中断,在再次发送数据之前,必须用软件将TI清零。(2)方式0接收在满足REN=1和RI=0的条件下,串行口处于方式0输入。此时,RxD为数据输入端,TXD为同步信号输出端,接收器也以fosc/12的波特率对RxD引脚输入的数据信息采样。当接收器接收完8位数据后,置中断标志RI=1为请求中断,在再次接收之前,必须用软件将RI清零。可外接移位寄存器,以扩展I/O口。(1)信息电子工程学院徐州建筑职业技术学院(2).方式1工作方式1时,串行口被设置为波特率可变的8位异步通信接口。(1)方式l发送串行口以方式1发送数据时,数据位由TxD端输出,1帧信息包含10位,即一位起始位、八位数据位(先低位后高位)和一个停止位“1”。CPU执行一条数据写入发送缓冲器SBUF的指令,就启动发送器发送数据:发送完数据后,就置中断标志TI为1。方式1所传送的波特率取决于定时器T的溢出率和特殊功能寄存器PCON中SMOD的值。(2)方式1接收前提是REN=1,串行口处于方式1的输入状态。它对RxD引脚状态采样。当采样到由1到0的负跳变时,启动接收器。当检测到起始位时,开始接收一帧的其余信息。一帧信息包含10位,即一位起始位、八位数据位(先低位后高位)和一个停止位“1”。接收数据进入SBUF,停止位进入RB8,并置中断请求标志RI为1,通知CPU到SBUF中取走数据。中断标志也必须由用户在中断服务程序中软件清零。信息电子工程学院徐州建筑职业技术学院(3).方式2串行口工作在方式2下时,被定义为波特率固定的9位异步通信接口。(1)方式2发送发送数据由TxD端输出,一帧信息包含11位,即一位起始位(0)、八位数据位(先低位后高位)、一位附加可控位(1或0)和一位停止位“1”。附加的第9位数据为SCON中的TB8,它由软件置位或清零,可作为多机通信中地址/数据信息的标志位,也可作为数据的奇偶校验位。其他同方式1(2)方式2接受数据由RxD端输入,接收11位信息,其中,一位起始位(0)、八位数据位(先低位后高位)、一位附加可控位(1或0)和一位停止位“1”。其他同方式1信息电子工程学院徐州建筑职业技术学院(4).方式3方式3为波特率可变的9位异步通信方式,除了波特率有所区别之外,其余都与方式2相同。信息电子工程学院徐州建筑职业技术学院4.串行通信相关寄存器SCON寄存器用来控制串行口的工作方式和状态,字地址为98H,它可以是位寻址。其格式如下:各位定义如下:SM0、SM1:串行口工作方式选择位其状态组合所对应的工作方式为:SM0SM1工作方式功能说明波特率0008位同步移位寄存器fosc/120118位异步收发由定时器控制1029位异步收发fosc/32或fosc/641139位异步收发由定时器控制位D7D6D5D4D3D2D1D0含义SM0SM1SM2RENTB8RB8TIRI(2)串口控制寄存器SCON(1)SBUF信息电子工程学院徐州建筑职业技术学院SM2:多机通信控制位。多机通信时用到该位,SM2=1;平时双机通信,SM2=0REN:允许接收控制位,接收前该位应置1.REN=0时禁止串行口接收。REN=1时允许串行口接收。该位由软件置位或复位。TB8:在方式2或方式3时,发送数据的第9位根据发送数据的需要由软件置位或复位。双机通信时,可作为奇偶校验位(单机通信)。多机通信时,可作为发送地址帧或数据帧的标志位RB8:在方式2和方式3时,接收数据的第9位根据发送数据的需要由软件置位或复位。双机通信时,可作为奇偶校验位(单机通信)。多机通信时,可作为发送地址帧或数据帧的标志位位D7D6D5D4D3D2D1D0含义SM0SM1SM2RENTB8RB8TIRI信息电子工程学院徐州建筑职业技术学院TI:发送中断标志位用于指示一帧数据发送完否。在方式0下,发送电路发送完第8位数据时,TI由硬件置位。在其他方式下,TI在发送前必须由软件复位,发送完一帧后由硬件置位。因此,CPU查询TI状态便可知一帧信息是否已发送完毕。RI:接收中断标志位用于指示一帧信息是否接收完。在方式0下,RI在接收电路接收到第8位数据时由硬件置位。在其他方式下,当接收到停止位或第九位数据时,硬件置位RI,RI也可供CPU查询,以决定CPU是否需要从“SBUF(接收)”中提取接收到的字符或数据。RI也由软件复位。位D7D6D5D4D3D2D1D0含义SM0SM1SM2RENTB8RB8TIRI信息电子工程学院徐州建筑职业技术学院(3).电源控制器PCONPCON寄存器主要是为CHMOS型单片机的电源控制设置的专用寄存器,单元地址为87H,不能位寻址。其格式如下:各位定义如下:SMOD:串行口波特率的倍增位。在HMOS单片机中,该寄存器中除最高位之外,其他位都是虚设的。在单片机工作在方式1、方式2和方式3时,SMOD=1,串行口波特率提高一倍。SMOD=0,则波特率不加倍。系统复位时SMOD=0位序D7D6D5D4D3D2D1D0位符号SMOD///GF1GF0PDIDL信息电子工程学院徐州建筑职业技术学院5.波特率串行口的通信波特率恰到好处地反映了串行传输数据的速率。通信波特率的选用,不仅和所选通信设备、传输距离有关,还受传输线状况所制约。用户应根据实际需要加以正确选用。1.方式0下的波特率在方式0下,串行口通信的波特率是固定的,其值为fosc/12(fosc为主机频率)。2.方式2下的波特率在方式2下,通信波特率固定的,为fosc/32或fosc/64。用户可以根据PCON中SMOD位的状态来驱使串行口在哪个波特率下工作。选定公式为:这就是说,若SMOD=0,则所选波特率为fosc/64;若SMOD=1,则波特率为fosc/32。SMODosc264f波特率信息电子工程学院徐州建筑职业技术学院3.方式1或方式3下的波特率在这两种方式下,串行口波特率是可变的,由定时器的溢出率(1s溢出多少次)决定的。相应公式为:T1溢出率(1s溢出多少次)------T1定时时间倒数定时器T1溢出率的计算公式为:式中,K为定时器T1的位数,它和定时器T1的设定方式有关。我们常取k=8。因为定时器T1工作于方式2时,TH1和TLl分别设定为两个8位重装计数器(当TL1从全“1”变为全“0”时,TH1重装TLl)。使用这种方式,不仅可使操作方便,也可避免因重装初值(时间常数初值)而带来的定时误差。若定时器T1为方式0,则K=13;若定时器T1为方式1,则K=16;若定时器T1为方式2或3,则K=8。由上两式可知,方式1或方式3下所选波特率常常需要通过计算来确定初值,因为该初值是要在定时器T1初值化时使用的(见书上)。信息电子工程学院徐州建筑职业技术学院串行收发模块制作(2)---------软件编程信息电子工程学院徐州建筑职业技术学院例:甲机与乙机串行通信,甲机接一键盘,接一数码管,乙机接一数码管。甲机把自己键盘按键的键值发送给乙机的数码管显示;乙机将接受的数据加1后再发送给甲机的数码管显示。电路