第六章串行口及应用.ppt
第六章第六章 单片机的串行口及应用单片机的串行口及应用 6.1 单片机串行通信工作方式单片机串行通信工作方式 6.2 多机通信多机通信 6.3 应用举例应用举例 6.1 单片机串行通信工作方式单片机串行通信工作方式 5151单片机具有一个双全工的串行通讯口,该串口单片机具有一个双全工的串行通讯口,该串口可同时发送、接收串行数据。发送数据通过串行可同时发送、接收串行数据。发送数据通过串行数据发送缓冲器进行,发送缓冲器只能写入不能数据发送缓冲器进行,发送缓冲器只能写入不能读出;接收数据通过接收数据缓冲器进行,接收读出;接收数据通过接收数据缓冲器进行,接收缓冲器只能读出不能写入。缓冲器只能读出不能写入。发送和接收数据缓冲器共用一个寄存器发送和接收数据缓冲器共用一个寄存器SBUFSBUF(99H)(99H)。6.1.1 串行口控制寄存器串行口控制寄存器1.SCON(98H)1.SCON(98H)串行口工作方式与状态控制寄存器串行口工作方式与状态控制寄存器对对SCON可进行字节操作,也可按位进行操作。可进行字节操作,也可按位进行操作。SCON寄存器各位的功能如下:寄存器各位的功能如下:SCONSM0SM1SM2RENTB8RB8TIR1位地址位地址9FH9EH9DH9CH9BH9AH99H98H(3)REN:串行接收允许位。串行接收允许位。(2)SM2:在方式在方式2和方式和方式3中多机通信的控制位。中多机通信的控制位。(1)SM0、SM1:串行口工作方式选择位,可构成串行口工作方式选择位,可构成四种工作方式,见表四种工作方式,见表6-1。(4)(4)TB8TB8:在方式在方式2 2或方式或方式3 3中,是将要发送的第中,是将要发送的第九位数据,由软件置位或清零,它可作为数据奇九位数据,由软件置位或清零,它可作为数据奇偶校验位,也可在多机通信中作为地址帧或数据偶校验位,也可在多机通信中作为地址帧或数据帧的标志位使用。帧的标志位使用。(5)RB8:在方式在方式2或方式或方式3中,是已接收到的中,是已接收到的第九位数据,可作为奇偶校验位。第九位数据,可作为奇偶校验位。(6)TI:发送中断标志位。发送中断标志位。(7)RI:接收中断标志位,方式接收中断标志位,方式0中,在接收完中,在接收完第八位数据时由硬件置位。第八位数据时由硬件置位。表表6-1 SM0 SM1工作方式工作方式功能功能波特率波特率0 00 11 01 1方式方式0方式方式1方式方式2方式方式3移位寄存器方移位寄存器方式式8位数据位数据UART9位数据位数据UART9位数据位数据UARTfosc/12可变可变fosc/64可变可变2.PCON(87H)电源控制寄存器电源控制寄存器SMOD:为:为0时串行口的波特率由时串行口的波特率由SCON的内容的内容决定;为决定;为1时串行口工作于方式时串行口工作于方式1、2、3时,串时,串行口的波特率加倍。行口的波特率加倍。PCONSMODGF0GF1PDIDL位地址位地址8EH8DH8CH8BH8AH89H88H87H6.1.2 串行口的工作方式串行口的工作方式1方式方式0:移位寄存器方式:移位寄存器方式 在方式在方式0下,串行口是作为同步移位寄存器使用下,串行口是作为同步移位寄存器使用的,数据的输入、输出均通过的,数据的输入、输出均通过RXD引脚,引脚,TXD脚以脚以fosc/12的频率输出同步移位脉冲的频率输出同步移位脉冲。串行传送数据。串行传送数据8位为一帧位为一帧(没有起始、停止、奇偶校验位没有起始、停止、奇偶校验位)。由。由RXD(P3.0)端输出或输入,低位在前,高位在后。端输出或输入,低位在前,高位在后。TXD(P3.1)端输出同步移位脉冲,可以作为外部扩展端输出同步移位脉冲,可以作为外部扩展的移位寄存器的移位时钟,因而串行口方式的移位寄存器的移位时钟,因而串行口方式0常用于常用于扩展外部并行扩展外部并行I/O口。口。串行口方式0发送数据时序图串行口方式0接收数据时序图2工作方式工作方式1 在方式在方式1下,串行口为下,串行口为8位位UART方式,发送数方式,发送数据从据从TXD输出,接收数据从输出,接收数据从RXD输入,串口的波输入,串口的波特率由定时器特率由定时器1的溢出率及的溢出率及PCON中的中的SMOD位的位的取值决定。发送或接收一帧信息中,除取值决定。发送或接收一帧信息中,除8位数据移位数据移位外,还包含一个起始位位外,还包含一个起始位(0)和一个停止位和一个停止位(1),其波特率是可变的。其波特率是可变的。串行口方式1发送数据时序图串行口方式1接收数据时序图3工作方式2、3 当串行口工作于方式2、3时,串行口为9位UART方式,发送数据从TXD输出,接收数据从RXD输入,方式2与方式3的区别在于方式2的波特率是固定的,而方式3的波特率是可调的。一帧信息包含一个起始位“0”,八个数据位,一个可编程第九数据位和一个停止位“1”。其中可编程位是SCON中的TB8位,在八个数据位之后,可作奇偶校验位或地址/数据帧的标志位使用,由使用者确定。6.1.3 串行通信波特率串行通信波特率2.方式1、3下的串行通信波特率1.方式0下的串行通信波特率在方式0下,串行通信的波特率是固定的,其波特率为fosc/12。在方式1、3下,串行通信的波特率是可变的,其值由定时器T1的溢出率及SMOD取值决定。定时器1的溢出率为:T1的溢出率=单位时间内T1的溢出次数 =T1的溢出次数/秒当定时器1采用8位自动再装入时间常数的定时方式2时,T1的溢出率可由下式给出:溢出率=fosc/12*(256-N)例6-1 当fosc=6MHz,波特率=1200bit/s时,取SMOD=0,定时器1工作于方式2,计算时间常数。3.方式2下的串行通信波特率在方式2下,串行通信的波特率是固定的,其波特率为6.2 多机通讯多机通讯 当单片机的串行口工作于方式2或方式3,可用TB8及SM2控制地址信息或数据信号的发送与接收,实现多机通讯。主从多机通信原理图实现主实现主从多机串行通信的通信的工作方式从多机串行通信的通信的工作方式 主机在发送数据之前应先发送一地址信息主机在发送数据之前应先发送一地址信息(TB8=1)到串行通讯总线上,从机在初始化时使到串行通讯总线上,从机在初始化时使REN=1,SM2=1,当接收到地址信号时所有的从当接收到地址信号时所有的从机均产生串行口接收中断,在中断服务程序中,把机均产生串行口接收中断,在中断服务程序中,把接受到的地址信号与本机地址编码进行比较,若相接受到的地址信号与本机地址编码进行比较,若相等,则复位等,则复位SM2使使SM2=0,若不相等则使若不相等则使SM2=1。当主机发送数据信息时(当主机发送数据信息时(TB8=0),),只有只有SM2=0的从机能够产生接收中断,从而接收主机发出的数的从机能够产生接收中断,从而接收主机发出的数据信号,而据信号,而SM2=1的那些从机在主机发送数据信的那些从机在主机发送数据信号时则不产生接收中断。这样就可进行主从式多机号时则不产生接收中断。这样就可进行主从式多机串行通讯。串行通讯。见主见主从多机通信原理图,设从机的地址为从多机通信原理图,设从机的地址为1、2、3,则主机向从机发送数据的控制程序以及从机接,则主机向从机发送数据的控制程序以及从机接收串行数据的控制程序如下:收串行数据的控制程序如下:主机初始化程序:主机初始化程序:ORG0000HLJMPMAINORG0023HLJMPINTSE1MAIN:MOVSP,#30H MOVSCON,#0C0H;主机串行口工作于方式主机串行口工作于方式3SETBES;允许串行口中断允许串行口中断SETBEA SETBTB8;发送地址信息发送地址信息MOVDPTR,#Saddres;指向传送数据地址指向传送数据地址MOVR7,#Snumber;传送数据个数送传送数据个数送R7MOVA,#SN;从机地址送从机地址送SBUFMOVSBUF,ASJMP主机串行口中断服务程序:主机串行口中断服务程序:INTSE1:CLRTI;清除中断标志清除中断标志CLRTB8MOVXA,DPTRMOVSBUF,AINCDPTRDJNZR7,IEND;数据未发送完继续发送数据未发送完继续发送CLRES;发送完,禁止串行中断发送完,禁止串行中断IEND:RETI 从机初始化程序:从机初始化程序:ORG0000HLJMPMAIN1ORG0023HLJMPINTSE2MAIN1:MOVSP,#30H MOVSCON,#0D0H;从机串行口工作于方式从机串行口工作于方式3,REN=1允许接收允许接收 SETBES;允许串行口中断允许串行口中断SETBEASETBSM2;从机接收到地址信息后允许接收数据从机接收到地址信息后允许接收数据 MOVDPTR,#S2addres;指向接收串行数据地址指向接收串行数据地址SJMP从机串行口中断服务程序:从机串行口中断服务程序:INTSE1:CLR RI;清除中断标志清除中断标志JNBSM2,INDATA;SM2=0转数据接收转数据接收MOVA,SBUF;SM2=1判断从机地址判断从机地址#SN与接收到地址是否一致与接收到地址是否一致CJNEA,#SN,INSEND;地址不一致,禁止接受数据中断地址不一致,禁止接受数据中断CLRSM2;从机地址从机地址#SN与接收到地址一致与接收到地址一致,SM2=0准备接准备接SJMPINSEND;收数据收数据INDATA:MOVA,SBUF;接收数据接收数据MOVXDPTR,AINCDPTRINSEND:RETI实现主实现主从多机通信的注意事项:从多机通信的注意事项:1.应保证参与通讯双方的波特率相同应保证参与通讯双方的波特率相同。2.在使用串行通讯前应对串行通讯进行初始化在使用串行通讯前应对串行通讯进行初始化。3.在串行通讯中,若需要进行奇偶校验可选择工在串行通讯中,若需要进行奇偶校验可选择工作方式作方式2、3,用,用TB8传送被发送数据的奇偶特传送被发送数据的奇偶特征位,在接收过程中用征位,在接收过程中用RB8接收发送数据的奇接收发送数据的奇偶特征位。偶特征位。4.当进行多机通讯时,当进行多机通讯时,TB8是发送地址是发送地址/数据的数据的控制位,控制位,TB8=1发送的为地址信息,发送的为地址信息,TB8=0发发送的为数据信息,送的为数据信息,RB8接收地址接收地址/数据控制位,数据控制位,当当SM2=1时,只有时,只有RB8接收到接收到1,才能使,才能使RI=1申申请中断。请中断。6.3 应用举例应用举例 例例6-1:已知:已知=6MHz,串行口以串行口以1200波特率向外波特率向外部设备发送部设备发送ASCII字符,遇到回车符结束发送。字符,遇到回车符结束发送。先计算波特率常数先计算波特率常数N,取,取SMOD=0,则常数则常数N可可由下式计算:由下式计算:设串行口工作于方式设串行口工作于方式1,具体程序见教材,具体程序见教材113页。页。例例6-2:甲机发送数据,乙机接收数据,采用偶校:甲机发送数据,乙机接收数据,采用偶校验,当接收到数据正确时,乙机送验,当接收到数据正确时,乙机送#AAH给甲机,当给甲机,当发送数据错误时,乙机向甲机发送发送数据错误时,乙机向甲机发送#55H,甲机重新甲机重新发送,发送发送,发送20个数据后结束。个数据后结束。甲乙均采用工作方式甲乙均采用工作方式2,波特率为,波特率为fosc/32,具体具体程序见教材程序见教材113页。页。