第7章 AT89S51单片机的串行口.ppt
第第7 7章章 串行口与串行通信串行口与串行通信(本章是一个本章是一个难点、重点难点、重点,注意学习的层次性注意学习的层次性)7.1 7.1 串行口的结构串行口的结构7.2 7.2 和串行通信有关的寄存器和串行通信有关的寄存器7.3 7.3 串行口的串行口的4 4种工作方式种工作方式7.4 7.4 波特率的制定方法波特率的制定方法7.57.5 串行口的应用编程串行口的应用编程7.1 串行口的结构串行口的结构AT89S51单片机片内的单片机片内的串行口为串行口为全双工的通用异步收发(全双工的通用异步收发(UART:Universal Asynchronous Receiver and Transmitter)的串)的串行口。行口。一一.串行通信的串行通信的传送过程传送过程shiftMOV A,SBUF串行数据串行数据CPUCPU SBUF SBUFshiftMOV SBUF,A并并行行数数据据并并行行数数据据甲方甲方(发送发送)乙方乙方(接收接收)TIRI 发送过程发送过程:甲方发送甲方发送时时,CPU,CPU执行执行指令指令MOV SBUF,AMOV SBUF,A,就就启动了发送启动了发送过过程程,数据数据并行并行送入送入SBUFSBUF,在在发送时钟发送时钟shiftshift的控制下由的控制下由低位到低位到高位一位一位发送高位一位一位发送;甲方甲方一帧数据发送完毕一帧数据发送完毕,置位发送中断标志置位发送中断标志TITI,该位可该位可作为作为查询标志查询标志(或引起中断或引起中断),CPU,CPU可再发送下一帧数据可再发送下一帧数据.接收过程:接收过程:乙方乙方在在接收时钟接收时钟shiftshift的控制下的控制下,由由低位到高位顺序进低位到高位顺序进入移位寄存器入移位寄存器SBUFSBUF;乙方一帧乙方一帧数据到齐数据到齐,即接收缓冲器满即接收缓冲器满,置位接收中断标置位接收中断标志志RIRI,该位可作为该位可作为查询标志查询标志(或引起接收中断或引起接收中断),),通过通过MOV MOV A,SBUFA,SBUF,CPU,CPU将这帧数据将这帧数据并行读入并行读入.注意注意:1.1.甲、乙方的甲、乙方的移位时钟频率应相同移位时钟频率应相同,即应具有即应具有相同的相同的波特率波特率,否则会造成数据丢失否则会造成数据丢失.2.2.发送方是发送方是先发数据再查标志先发数据再查标志,接收方是接收方是先查标志再收数据先查标志再收数据.3.3.接收接收/发送数据发送数据,无论是否采用中断方式工作无论是否采用中断方式工作,每接每接收收/发送一个数据都发送一个数据都必须必须用指令对用指令对RI/TIRI/TI清清0 0,以备下以备下一次收一次收/发发(CLR TI,CLR RICLR TI,CLR RI)二二.波特率波特率(Baudrate)波特率是波特率是双方对数据传送速率的约定双方对数据传送速率的约定,表示表示每秒传送每秒传送的二进制位数的二进制位数(bit),是串行通信的一个重要指标是串行通信的一个重要指标,反映反映了串行通信的了串行通信的速率速率,也反映了对传输通道的要求也反映了对传输通道的要求.单位单位是是bps(Bit Per Second),bit/s 例如例如:120字符字符/秒秒,1个字符个字符10位位,波特率为波特率为:12010=1200bps 平均平均每一位每一位传送占用时间传送占用时间:Td=1/1200=0.833ms常用的波特率有常用的波特率有:(:(离散离散)19200/19200/96009600/4800/2400/1200/600/300/150/100/50,/4800/2400/1200/600/300/150/100/50,还有还有10M/100M10M/100M1.1.串行口控制寄存器串行口控制寄存器 SCONSCON Serial Port Control Register.Bit Addressable(98H)存放串行口的存放串行口的控制和状态信息控制和状态信息,其格式如下其格式如下7.1.1 7.1.1 与串行通信有关的寄存器与串行通信有关的寄存器SM0SM1SM2RENTB8RB8TIRI 模式选择模式选择 多机通讯位多机通讯位 允许接收位允许接收位 发送、接收第发送、接收第9 9位位 发送、接收标志发送、接收标志 SM0 SM1SM0 SM1:串行口串行口4 4种工作方式种工作方式的选择位。的选择位。方式方式0(00):0(00):8 8位移位寄存器用于扩展位移位寄存器用于扩展I/O,I/O,波特率波特率固定固定=f=foscosc/12/12方式方式1(01):1(01):8 8位位UART(1+UART(1+8 8+1+1位位),),波特率波特率可变可变,由定时器控制由定时器控制方式方式2(10):2(10):9 9位位UART(1+UART(1+8+18+1+1+1位位),),波特率波特率固定固定=f=foscosc/32/32或或f foscosc/6464方式方式3(11):3(11):9 9位位UART(1+UART(1+8+18+1+1+1位位),),波特率波特率可变可变,由定时器控制由定时器控制SM0SM1SM2RENTB8RB8TIRI 模式选择模式选择 多机通讯位多机通讯位 允许接收位允许接收位 发送、接收第发送、接收第9 9位位 发送、接收标志发送、接收标志SM2:(SM2:(难点难点)多机通信控制位多机通信控制位(作为方式作为方式2 2、方式、方式3 3的附加控制位的附加控制位).).当当选择方式选择方式2 2或方式或方式3 3时时,发送机设置发送机设置SM2=1SM2=1,以以发送第九位发送第九位TB8=1TB8=1作为地作为地址帧寻找从机址帧寻找从机,以以TB8=0TB8=0作为数据帧进行通信作为数据帧进行通信,从机初始化时设置从机初始化时设置SM2=1SM2=1,若接收到的第九位数据若接收到的第九位数据RB8=0RB8=0,不置位不置位RIRI,即不引起接收中断即不引起接收中断,亦既不接收数据帧亦既不接收数据帧,继续监听继续监听,如接收到的如接收到的RB8=1,RB8=1,置位置位RIRI,引起接收引起接收中断中断,中断程序中判断所接收的地址帧和本机的地址是否符合中断程序中判断所接收的地址帧和本机的地址是否符合,若不若不符合符合,维持维持SM2=1,SM2=1,继续监听继续监听,若符合若符合,则清则清SM2,SM2,接收对放发来的后续接收对放发来的后续信息信息.SM0SM1SM2RENTB8RB8TIRI 模式选择模式选择 多机通讯位多机通讯位 允许接收位允许接收位 发送、接收第发送、接收第9 9位位 发送、接收标志发送、接收标志SM2:Enable the multiprocessor communication feature in modes 2&3.In mode 2&3,if SM2 is set to 1 then RI will be activated if the received 9th data bit(RB8)is 0.In mode 1,if SM2=1 then RI will not be active if a valid stop bit was not received.In mode 0,SM2 should be 0.综上所述综上所述,SM2,SM2的作用为的作用为:在方式在方式2,32,3中中,发送机发送机SM2=1SM2=1(程序设置程序设置).).接收机接收机SM2=1SM2=1,若若RB8=1,RB8=1,激活激活RI,RI,引起接收中断引起接收中断.RB8=0,.RB8=0,不激活不激活RI,RI,不引起中不引起中断断.发送机发送机SM2=0,SM2=0,无论无论RB8=1RB8=1还是还是RB8=0RB8=0均激活均激活RIRI引起接收引起接收中断中断.在方式在方式1 1中中,当当接收时接收时SM2=1SM2=1,则只有收到有效停止位才激活则只有收到有效停止位才激活RI;RI;在方式在方式0 0中中,SM2,SM2应置为应置为0.0.RENREN:串行口接收允许控制位串行口接收允许控制位Set/Cleared by software to Enable/Disable reception =1 =1 允许接收允许接收;(SETB REN)=0 =0 禁止接收禁止接收.系统复位后系统复位后,REN=0,REN=0,不允许接受不允许接受SM0SM1SM2RENTB8RB8TIRI 模式选择模式选择 多机通讯位多机通讯位 允许接收位允许接收位 发送、接收第发送、接收第9 9位位 发送、接收标志发送、接收标志RB8:在在串行工作方式串行工作方式2和方式和方式3中中,是是收到的第收到的第9位数据位数据.该数据来自该数据来自发送机的发送机的TB8In modes 2&3,is the 9th data bit that was received.In mode 1,if SM2=0,RB8 is the stop bit that was received.In mode 0,RB8 in not used.在在多机通信多机通信中中,用作区别地址帧用作区别地址帧/数据帧的标志数据帧的标志.TB8:在串行工作方式在串行工作方式2和方式和方式3中中,是要是要发送的第发送的第9位数据位数据。The 9th bit that will be transmitted in modes 2&3.Set/Cleared by software多机通信多机通信中中:TB8=0 表示发送的是表示发送的是数据数据;TB8=1 表示发送的是表示发送的是地址地址.SM0SM1SM2RENTB8RB8TIRI 模式选择模式选择 多机通讯位多机通讯位 允许接收位允许接收位 发送、接收第发送、接收第9 9位位 发送、接收标志发送、接收标志TITI:串行口串行口发送发送中断申请标志位中断申请标志位.Transmitted Interrupt Transmitted Interrupt flag.flag.发送前发送前必须用必须用软件清零软件清零,发送过程中发送过程中TITI保持零电平保持零电平,发送完发送完一帧数据后一帧数据后,由由硬件置硬件置“1”1”,如果再发送如果再发送,必须必须用软件再清零用软件再清零.Set by hardware at the end of the 8th bit time in mode 0,or at the beginning of the stop bit in the other modes.Must be cleared by software.SM0SM1SM2RENTB8RB8TIRI 模式选择模式选择 多机通讯位多机通讯位 允许接收位允许接收位 发送、接收第发送、接收第9 9位位 发送、接收标志发送、接收标志RIRI:串行口串行口接收接收中断申请标志位中断申请标志位.Receive Interrupt flag.Receive Interrupt flag.接收前接收前必须用必须用软件清零软件清零,接收过程中接收过程中RIRI保持零电平保持零电平,接收完一接收完一帧数据后由片内帧数据后由片内硬件自动置硬件自动置“1 1”.如果再接收必须如果再接收必须用软件清用软件清零零.Set by hardware at the end of the 8th bit time in mode 0,or halfway through the stop bit time in the other modes(except see SM2).Must be cleared by software.=1=1 申请中断申请中断;=0;=0 不申请中断不申请中断SM0SM1SM2RENTB8RB8TIRI 模式选择模式选择 多机通讯位多机通讯位 允许接收位允许接收位 发送、接收第发送、接收第9 9位位 发送、接收标志发送、接收标志2.SBUF:Serial Buffer Register(99H)两个两个物理上独立的物理上独立的接收、发送缓冲器接收、发送缓冲器SBUF,它们它们占用同一占用同一地址地址99H,可同时发送、接收数据可同时发送、接收数据.发送缓冲器发送缓冲器SBUF只能写入、不能读出只能写入、不能读出,CPU写写SBUF,MOV SBUF,A 一方面修改发送寄存器一方面修改发送寄存器,同时启动数据串同时启动数据串行发送行发送;接收缓冲器接收缓冲器SBUF只能读出、不能写入只能读出、不能写入,CPU读读SBUF,MOV A,SBUF 就是读接收寄存器就是读接收寄存器.SMOD GF1 GF0 PD IDL3.3.电源控制寄存器电源控制寄存器 PCON PCON Power Control Register.(87H)最高位最高位SMODSMOD位和串行通信有关位和串行通信有关(了解了解)(1)(1)只能只能字节字节寻址寻址,初始化时初始化时SMOD=0.SMOD=0.(2)SMOD:(2)SMOD:Double baud rate bitDouble baud rate bit.在串行口工作方式在串行口工作方式1/2/31/2/3中中,波特率加倍位波特率加倍位 =1=1时时,波特率加倍波特率加倍 (MOV PCON,#80H(MOV PCON,#80H 加倍加倍)=0 =0时时,波特率不加倍波特率不加倍.(MOV PCON,#00H.(MOV PCON,#00H 默认是不加倍的默认是不加倍的)(串行通信只用其中的最高位串行通信只用其中的最高位SMOD)SMOD)If Timer1 is used to generate baud rate and SMOD=1,the baud rater is doubled when the Serial Port is used in modes 1,2,3.PCONPCONGF1,GF0:用户可自行定义使用的用户可自行定义使用的通用标志位通用标志位GF1:General purpose Flag bit.GF0:General purpose Flag bit.SMOD GF1 GF0 PD IDLPCONPCONPD:掉电方式控制位掉电方式控制位 Power Down bit.=0:=0:常规工作方式常规工作方式.=1:=1:进入掉电方式进入掉电方式:振荡器停振振荡器停振片内片内RAMRAM和和SRFSRF的的值保持不变值保持不变P0P0P3P3口维持原状口维持原状程序停止程序停止 只有复位能使之退出掉电方式只有复位能使之退出掉电方式.Setting this bit activates Power Down operation in the 80C51BH.(Available only in CHMOS)IDL(Idle Mode bit)待机方式待机方式(空闲方式空闲方式)控制位控制位.=0:=0:常规工作方式常规工作方式.=1:=1:进入进入待机方式待机方式:振荡器继续振荡振荡器继续振荡中断、定时中断、定时器、串口功能继续有效器、串口功能继续有效片内片内RAMRAM和和SRFSRF保持不变保持不变CPUCPU状态保持状态保持、P0P0P3P3口维持原状口维持原状程序停顿程序停顿.中断和复位能退出待机中断和复位能退出待机,继续后面的程序继续后面的程序.Setting this bit activates Idle Mode operation in the 80C51BH.(Available only in CHMOS)SMOD GF1 GF0 PD IDL4.TMOD 4.TMOD 定时器方式寄存器定时器方式寄存器Timer/Counter Mode control register.Not bit addressable(89H)用于控制用于控制T0和和T1的操作模式的操作模式 (MOV TMOD,#20H)M0M1C/T*GATEM0M1C/T*GATE (89H)D0D1D2 D3D4D5D6 D7 TMOD定时器定时器T0T0 定时器定时器T1T1方式方式0:00:13位位 Timer方式方式1:01:16位位 Timer方式方式2:10:8位自动重装的位自动重装的Timer波特率发生器波特率发生器方式方式3:11:T0 分为分为2个个8位位 Timer;(1)M1,M0:工作方式定义位工作方式定义位(定义定义4种方式种方式):M1M0 Operation Mode000 13-bit Timer(MCS-48 compatible)011 16-bit Timer/Counter102 8-bit Auto-Reload Timer/Counter113 Split timer mode(Timer 0)TL0 is an 8-bit Timer/Counter controlled by the standard Timer 0 control bits,TH0 is an 8-bit Timer and is controlled by Timer 1 control bits(Timer 1)Timer/Counter 1 stopped7.2 串行口四种工作方式(难点)回顾:定时器也有四种工作方式,不要混淆7.2.17.2.1 工作工作方式方式0 0 SM0 SM1=00 SM0 SM1=00(常用常用)(special,(special,记忆记忆)串行口作为串行口作为同步移位寄存器同步移位寄存器使用使用,数数据传输波特率固定为据传输波特率固定为f foscosc/12,/12,串行数据由串行数据由RxD(P3.0)RxD(P3.0)输入输入输出输出,同步移位脉冲由同步移位脉冲由TxD(P3.1)TxD(P3.1)输出输出,数据的发送和接收数据的发送和接收以以8 8位为一帧数据位为一帧数据,低位在前低位在前,高位在后高位在后,无起始位、奇偶无起始位、奇偶位和停止位位和停止位.1.1.发送发送:SBUF:SBUF中的中的串行数据串行数据由由RxDRxD逐位移出逐位移出;TxDTxD输出移位时钟输出移位时钟,频率频率=fosc/12;=fosc/12;每送出每送出8 8位数据位数据,TITI就自动置就自动置1 1;需要用需要用软件对软件对TITI清零清零 (CLR TI)(CLR TI)2.2.接收接收:串行串行数据由数据由RxDRxD逐位移入逐位移入SBUFSBUF中中;TxDTxD输出移位时钟输出移位时钟,频率频率=fosc/12=fosc/12;每接收每接收8 8位数据位数据,RIRI就自动置就自动置1 1;需要用需要用软件对软件对RIRI清零清零(CLR RI)CLR RI)3.3.经常配合经常配合“串入并出串入并出的移位寄存器芯片的移位寄存器芯片74LS16474LS164/CD4094/CD4094”“并入串出并入串出的移位寄存器芯片的移位寄存器芯片74LS16574LS165/CD4014/CD4014”一起使用一起使用,达到达到扩展一个扩展一个I/OI/O口口使用的目的使用的目的.QA-QH:QA-QH:并行输出端并行输出端;A,B:A,B:串行输入端串行输入端(联到一起联到一起)CLR*:CLR*:清除端清除端,低电平时输出端清零低电平时输出端清零,一般一般 接高电平接高电平CLK:CLK:时钟脉冲输入端时钟脉冲输入端,在脉冲的在脉冲的上升沿上升沿实现移位实现移位当当CLEAR*=1,CLK=0,74LS164CLEAR*=1,CLK=0,74LS164保持原来的数据保持原来的数据状态状态4.4.方式方式0 0工作时工作时,多用多用查询方式编程查询方式编程:发送发送:MOV SBUF,A :MOV SBUF,A 接收接收:JNB RI,$JNB RI,$JNB TI,$JNB TI,$CLR RICLR RI CLR TICLR TI MOV A,SBUF MOV A,SBUF5.5.复位时复位时,SCON=00H ,SCON=00H 缺省值缺省值:方式方式0 06.6.接收前接收前,务必先务必先置位置位REN=1,REN=1,允许接收数据允许接收数据,因为系统因为系统复位后复位后,SCON.4=0,SCON.4=0 SM0 SM1 SM2 REN TB8 RB8 TI R1SCONSCON7.串行口方式0的应用(经常用到),串行口常用工作方式0扩展出并行I/O口,而工作方式1、2、3则常用于串行通信.74LS16474LS164是是串入并出串入并出芯片芯片;74LS16574LS165是是并入串出并入串出芯片芯片A AB BCLKCLKh g f e d c b ah g f e d c b aCLRCLRA AB BCLKCLKCLRCLRA AB BCLKCLKCLRCLR+5V+5V74LS16474LS16474LS164h g f e d c b ah g f e d c b ah g f e d c b ah g f e d c b a+5V+5V共阳共阳LED LED 数码管数码管VccVccTxDTxDRxDRxD51单片机单片机共阳极共阳极介绍介绍:共阳共阳LEDLED数码管数码管公共端公共端(字位字位)接高电平接高电平,笔划笔划(字段字段)置为低电平置为低电平就被点亮了就被点亮了h g f e d c b ah g f e d c b a1 1 1 1 0 0 0 0 0 00 0 0 0 0 00C0H=0C0H=“0 0”比如要显示比如要显示“0 0”须令须令a b c d e f a b c d e f 为为“0 0”电平电平,g h,g h为为“1 1”电平电平.再再比如要显示比如要显示“3 3”须令须令a b c d g a b c d g 为为“0 0”电平电平,e f h,e f h为为“1 1”电平电平.1 1 0 0 1 1 1 1 0 0 0 00 0 0 00B0H=0B0H=“3 3”h g f e d c b ah g f e d c b aa ab bc cd dg ge ef fh h例例1:1:利用串行口利用串行口工作方式工作方式0 0扩展出扩展出8 8位并行位并行I/OI/O口口,驱驱动共阳动共阳LEDLED数码管数码管显示显示0 09 9.A AB BCLKCLKh g f e d c b ah g f e d c b aCLRCLR+5V+5VVccVccTxDTxDRxDRxD51单片机单片机74LS164共阳共阳LEDLED数码管数码管 根据上图编写的通过根据上图编写的通过串行口串行口和和74LS16474LS164驱动驱动共阳共阳LEDLED数数码管码管显示显示0-90-9数字的子程序数字的子程序(查表查表):):入口参数入口参数:A:ADISPLAY:MOV DPTR,#TABLE MOVC A,A+DPTR MOV SBUF,A;发送发送 JNB TI,$CLR TI RETTABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H DB 82H,0F8H,80H,90H ;共阳极段码表共阳极段码表例例2 2 采用采用串行通信方式串行通信方式0 0,扩展扩展I/OI/O接口接口,接八个数接八个数码管码管,使内部数据存储器使内部数据存储器58H58H5FH5FH单元的内容送数单元的内容送数码管显示码管显示;分析分析:由于由于TXD,RXDTXD,RXD运行在运行在工作方式工作方式0 0时时,可方便的连可方便的连接接串入并出串入并出寄存器寄存器74LS164,74LS164,RXDRXD发送数据发送数据,TXDTXD发送移发送移位脉冲位脉冲,P3.3P3.3用于显示器的输入控制用于显示器的输入控制,通过通过74LS16474LS164接接八个数码管八个数码管,电路如下图所示电路如下图所示.dp g f e d c b a+5V+5VP3.3TXDRXD8XX51ABCLKCLRCLKCLRCLKCLR74LS16474LS16474LS164Q7Q0200LA5011(共阳)88&ORG 0050H SETB P3.3 ;允许移位寄存器工作允许移位寄存器工作 MOV SCON,#00h ;0000 0000 选选串行通信方式串行通信方式0 MOV R7,#08H ;显示八个字符显示八个字符 MOV R0,#5FH ;先送先送最后最后一个显示字符一个显示字符 MOV DPTR,#TAB ;DPTR指向字形表首址指向字形表首址DLO:MOV A,R0 ;取待显示数码取待显示数码 MOVC A,A+DPTR ;查字形表查字形表 MOV SBUF,A ;送出显示送出显示 JNB TI,$;一帧输出完?一帧输出完?CLR TI;已完已完,清中断标志清中断标志 DEC R0 ;修改显示数据地址修改显示数据地址 DJNZ R7,DLO CLR P3.3 ;8位送完位送完,关发送脉冲关发送脉冲(软件控制硬件软件控制硬件)SJMP$TAB:DB 0C0H,0F9H,0A4H,B0H,99H,92H ;共阳极段码共阳极段码 DB 82H,0F8H,80H,90H,83H,83H,0C6HDB 0A1H,86H,84H,0FFH,0BFH7.2.2 7.2.2 工作工作方式方式1 1 SM0 SM1=SM0 SM1=0101 方式方式1 1是是1010位位(记忆记忆)为一帧为一帧的异步串行通信方式的异步串行通信方式,包括包括1 1个起始位个起始位,8 8个数据位个数据位和和1 1个停止位个停止位,波特率可变波特率可变,由由TxDTxD端发送数据端发送数据,RxD,RxD端接收数据端接收数据.(.(和方式和方式0 0不一样不一样)SM0 SM1 SM2 REN TB8 RB8 TI R1SCON(1)SM0/SM1:(1)SM0/SM1:串行口工作方式选择位串行口工作方式选择位.0 1:0 1:方式方式1 1,1010位位UART(1+UART(1+8 8+1+1位位)(2)SM2:(2)SM2:串行口多机通信控制位串行口多机通信控制位,作为方式作为方式2 2、3 3的附的附 加控制位加控制位,此处不用此处不用,可写成可写成“0”0”(3)REN:(3)REN:串行口接收允许位串行口接收允许位.REN=1 REN=1 允许接收允许接收(4)TB8/RB8/TI/RI(4)TB8/RB8/TI/RI等位由运行中间的情况决定等位由运行中间的情况决定,可先可先写成写成“0”0”串行口控制寄存器串行口控制寄存器SCONSCON 0 1 0 1 0 0 0 0NOTE:NOTE:1.1.常用于串行通讯常用于串行通讯,除发除发/收收8 8位数据外位数据外,在在D0D0位前位前有一个有一个起始位起始位“0”0”;在在D7D7位后位后有一个有一个停止位停止位“1”1”.2.2.方式方式1 1工作时工作时:发送端发送端自动添加自动添加一个一个起始位起始位和一个和一个停止位停止位;接收端接收端自动去掉自动去掉一个一个起始位起始位和一个和一个停止位停止位.3.3.波特率可变波特率可变用用定时器定时器T1,T1,以工作方式以工作方式2,82,8位自动重新位自动重新加载加载做为波特率发生器做为波特率发生器(系统规定的系统规定的),),可以省去重新加可以省去重新加载初始值的麻烦和误差载初始值的麻烦和误差.波特率波特率=(2=(2SMODSMOD/32)/32)T1T1的溢出率的溢出率溢出率溢出率:溢出周期的倒数溢出周期的倒数,即即:T1T1溢出一次所需时溢出一次所需时间的倒数间的倒数.假定计数初值为假定计数初值为X,X,则计数溢出周期为则计数溢出周期为:则则初值初值 X=2 2n n-2SMOD fosc32 波特率波特率 124.4.初值初值的计算的计算:记忆记忆例例3:3:要求用要求用T1T1工作于方式工作于方式2 2来产生来产生波特率波特率12001200,已知晶振已知晶振频率频率=6MHz.=6MHz.要求出要求出T1T1的初值的初值.解解:1200=(2:1200=(20 0/32)/32)T1T1的溢出率的溢出率T1T1的溢出率的溢出率=32*1200=38400=32*1200=38400 T1 T1的溢出周期的溢出周期=1/38400s=1000/38400ms=1000,000/38400us=1/38400s=1000/38400ms=1000,000/38400us6MHz6MHz下转成计数值是下转成计数值是:1000,000/384001000,000/38400/2/2=13.02(=13.02(有误差有误差)256-13=243=0F3H256-13=243=0F3H(后面用到后面用到)例例4:4:要求用要求用T1T1工作于方式工作于方式2 2来产生来产生波特率波特率12001200,已知已知晶振晶振频率频率f foscosc=11.0592MHz=11.0592MHz,要求出要求出T1T1的初值的初值:(11.0592=2(11.0592=21212*27)*27)解解:1200=(2:1200=(20 0/32)/32)T1T1的溢出率的溢出率T1T1的溢出率的溢出率=32*1200=32*1200 T1 T1的溢出周期的溢出周期=1/38400s=1000/38400ms=1000,000/38400us=1/38400s=1000/38400ms=1000,000/38400us11.0592MHz11.0592MHz下转成计数值是下转成计数值是:6MHZ-2us6MHZ-2us121211.0592MHz-Xus X=11.0592MHz-Xus X=12MHZ-1us12MHZ-1us 11.0592 11.0592 1000,000 12 1000,000*11.0592 1000,000 12 1000,000*11.0592 38400 11.0592 38400*12 38400 11.0592 38400*12 256-24=232=0E8H 256-24=232=0E8HNOTE:晶振也止一种晶振也止一种,表格有多种表格有多种 5.常用常用波特率和波特率和T1初值速查表初值速查表串口串口波特率波特率(串行串行口工作方式口工作方式1,3)foscSMOD位位(PCON中中)定时器定时器T1C/T*定时器定时器工作方式工作方式初值初值1920011.0592MHz1020FEH960011.0592MHz0020FDH480011.0592MHz0020FAH240011.0592MHz0020F4H120011.0592MHz0020E8H62.5K12MHz1020FFH137.5K11.986MHz0021DH6.工作方式工作方式1的接收的接收/发送发送 (1)RxD引脚为接收端引脚为接收端,TxD引脚为发送端引脚为发送端,由波特率发生器由波特率发生器T1控制发送速度控制发送速度;不同于方式不同于方式0下下,收收/发都需要由发都需要由TxD送出移送出移位时钟位时钟;(2)串行口的初始化串行口的初始化包括包括:a.对对SCON选工作方式选工作方式;b.对对PCON波特率加倍位波特率加倍位“SMOD”进行设定进行设定(缺省值缺省值=0);c.如果是如果是接收接收数据数据,仍要先仍要先置置“1”REN位位;(3)T1作波特率发生器时作波特率发生器时初始化包括初始化包括:TMOD设置为设置为定时器工作方式定时器工作方式2(8位自动重装位自动重装);将计算将计算(或查表或查表)出的初值出的初值X赋给赋给TH1,TL1;启动启动T1(SETB TR1);对对T1不要开中断不要开中断!例例6.6.在内部数据存储器在内部数据存储器20H20H3FH3FH单元中共有单元中共有3232个数据个数据,要求采用要求采用串行方式串行方式1 1发送出去发送出去,传送速率为传送速率为12001200波特波特,设设f foscosc=12MHz.(=12MHz.(采用查询方式采用查询方式)解解:T1T1工作于方式工作于方式2,2,作作波特率发生器波特率发生器,取取SMOD=0SMOD=0,T1,T1的的时间常数计算如下时间常数计算如下:波特率波特率=1200=(1/32)1200=(1/32)121210106 6/12(256-x)/12(256-x)x=230=E6H x=230=E6H 2 2SMODSMOD fosc fosc12(256-x)12(256-x)3232发送发送程序程序:ORG 0000H MOV TMOD,#20H ;T1方式方式2 0010 0000 MOV TH1,#0E6H MOV TL1,#0E6H ;T1时间常数时间常数 SETB TR1 ;启动启动T1 MOV SCON,#40H ;0100 0000串行口工作于方式串行口工作于方式1 MOV R0,#20H ;R0指发送缓冲区首址指发送缓冲区首址 MOV R7,#32 ;R7作发送数据计数作发送数据计数LOOP:MOV SBUF,R0 ;发送数据发送数据 JNB TI,;一帧未发完继续一帧未发完继续查询查询 CLR TI ;一帧发完清一帧发完清TI INC R0 DJNZ R7,LOOP ;数据块未发完继续数据块未发完继续 SJMP 接收接收程序程序:ORG 0000H MOV TMOD,#20H ;T1方式方式2 0010 0000 MOV TH1,#0E6H MOV TL1,#0E6H ;初始化初始化T1,T1时间常数时间常数 SETB TR1 ;启动启动T1 MOV SCON,#50H ;0101 0000设定设定串行方式串行方式1,并允许接收并允许接收MOV R0,#20H MOV R7,#32 LOOP:JNB RI,;一帧收完一帧收完?CLR RI ;收完清收完清RI MOV R0,SBUF ;将数据读入将数据读入 INC R0 DJNZ R7,LOOP SJMP (1)(1)1111位位UART(1+UART(1+8+18+1+1+1位位)()(记忆记忆),),两种波特率两种波特率,由由TxDTxD端端发送数据发送数据,RxD,RxD端接受数据端接受数据.7.2.3 7.2.3 工作方式工作方式2 2 SM0,SM1=10SM0,SM1=10(2)(2)由于由于波特率固定波特率固定,常用于单片机间通讯常用于单片机间通讯.数据位由数据位由8+18+1位位=9=9位位组成组成,通常通常附加的一位附加的一位(TB8/RB8(TB8/RB8 在在SCONSCON寄存器中寄存器中)用于用于“奇偶校验奇偶校验”.SM0SM1SM2RENTB8RB8TIRI 模式选择模式选择 多机通讯位多机通讯位 允许接收位允许接收位 发送、接收第发送、接收第9位位 发送、接收标志发送、接收标志(3)(3)方式方式2 2的波特率的波特率=f foscosc 2 2SMODSMOD/64/64 即即:f foscosc/32/32或或f foscosc/64/64 两种两种(4)(4)奇偶校验奇偶校验是检验串行通信双方传输的数据正确与否的一个是检验串行通信双方传输的数据正确与否的一个措施措施,并不能保证通信数据的传输一定正确并不能保证通信数据的传输一定正确.换言之换言之:如果如果奇偶校验发生错误奇偶校验发生错误,表明数据传输一定出错了表明数据传输一定出错了;如果奇偶校验没有出错如果奇偶校验没有出错,绝不等于数据传输完全正确绝不等于数据传输完全正确.(5)(5)奇校验奇校验:8:8位有效数据位有效数据连同连同1 1位附加位位附加位中中,“1”“1”的个数为奇的个数为奇数数 偶校验偶校验:8:8位有效数据位有效数据连同连同1 1位附加位位附加位中中,“1”,“1”的个数为的个数为偶偶数数约定约定接收接收采用采用奇校验:奇校验:若接收到的若接收到的9 9位数据中位数据中“1 1”的个数为的个数为奇数