您好,欢迎访问三七文档
基本概念RS-232接口MCS-51的串行接口单片机与单片机之间的通信编成练习第章串行口通信技术本章内容SingleChipMicrocomputer1.实训目的(1)复习掌握定时器的功能和编程使用。(2)理解串行通信与并行通信的两种方式。(3)掌握串行通信的重要指标:字符帧和波特率。(4)初步了解MCS-51单片机串行口的使用方法。实训8单片机之间的双机通信2.实训引入单片机间经常需要互相传递信息--通信.3.实训程序甲机发送程序参考如下:MOVTMOD,#20HMOVTL1,#0F4HMOVTH1,#0F4HSETBTR1MOVSCON,#40HMOVR0,#20HMOVR7,#08HSTART:MOVA,@R0MOVSBUF,AWAIT:JBCTI,CONTAJMPWAITCONT:INCR0DJNZR7,STARTSJMP$乙机接收及显示程序参考如下:MOVTMOD,#20HMOVTL1,#0F4HMOVTH1,#0F4HSETBTR1MOVSCON,#40HMOVR0,#20HMOVR7,#08HSETBRENWAIT:JBCRI,READAJMPWAITREAD:MOVA,SBUFMOV@R0,AINCR0DJNZR7,WAITDISP:LCALLDISPLAYSJMPDISP4.实训分析与总结分析程序可以看出,通信双方都有对单片机定时器的编程(注意发送、接收程序的前4条指令),而且双方对定时器的编程完全相同。这说明,MCS-51单片机在进行串行通信时,是与定时器的工作有关的。定时器用来设定串行通信数据的传输速度。在串行通信中,传输速度是用波特率来表征的,有关波特率与定时器的关系以及编程在8.3.3节介绍。什么是串行通信?串行通信和并行通信计算机1GND计算机2GND并行通信计算机1GND计算机2GND发送接收串行通信并行通信:数据的各位同时传送;串行通信:数据一位一位顺序传送。串行通信的分类:异步(AsynchronousCommunication)同步(SynchronousCommunication)串行通信制式:单工(a)、半双工(b)和全双工(c)(simplexhalfduplexfullduplex)发送器A站接收器B站单工通信(a)发收A站发收B站发收A站发收B站(b)(c)MCS-51的串行接口概述有一个可编程全双工串行通信接口(UART)(UniversalAsychronousReceiver/Transmitter)管脚:TXD(P3.1)、RXD(P3.0)可同时发送、接收数据(Transmit/Receive)有四种工作方式,帧格式有8、10、11位。波特率(Baudrate)可设置波特率:每秒钟传送二进制数码的位数,也叫比特数,单位为b/s,即位/秒。MCS-51串行接口的结构发送SBUF(99H)门发送控制器接收控制器≥1输入移位寄存器串行控制寄存器(98H)定时器1接收SBUF(99H)888TIRI内部总线TXD(P3.1)RXD(P3.0)串行口中断MCS-51串行接口寄存器SBUF——串行口数据缓冲器共两个:一个发送寄存器SBUF,一个接收SBUF,二者共用一个地址99H。SCON——串行口控制寄存器PCON——电源及波特率选择寄存器控制寄存器SCONSM0SM1SM2RENTB8RB8TIRI工作方式选择多机通信控制位允许串行接收位接收数据的第9位发送数据的第9位接收中断标志发送中断标志9FH9EH9DH9CH9BH9AH99H98HSM0SM1工作方式功能波特率00方式08位同步移位寄存器fosc/1201方式110位UART可变10方式211位UARTfosc/64或fosc/3211方式311位UART可变串行方式的定义例:设串行口工作在方式1,允许接收,则指令为:MOVSCON,#01010000B串行通信只用该位,为1时,波特率×2;为0时不变。电源及波特率选择寄存器PCONSMOD×××GF1GF0PDIDL87H串行口四种工作方式应用比较方式的选择由SM1、SM0实现。工作方式功能说明波特率方式08位同步移位寄存器常用于扩展I/O口fosc/12方式110位UART8位数据、起始位、结束位可变(取决于定时器1溢出率)方式211位UART8位数据、起始位0、结束位1和奇偶校验位fosc/64或fosc/32方式311位UART数据、起始、校验、结束位可变(取决于定时器1溢出率)波特率的设定可参见表8.2,实际无需计算。方式0128345610111213数据输出移位脉冲RXDTXD805174LS164D7D6D5D4D3D2D1D0在方式0下,串行口作同步移位寄存器用,其波特率固定为fosc/12。串行数据从RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)送出。这种方式常用于扩展I/O口。方式0用于扩展I/O口输出92654314131211数据输入移位脉冲RXDTXD805174LS165D7D6D5D4D3D2D1D0方式0用于扩展I/O口输入方式1D0D1D2D3D4D5D6D71D0D11D7……00第n+1字符帧第n字符帧8位数据起始位停止位10位的帧格式串行口为波特率可调的10位通用异步接口UART。每发送或接收的一帧信息中,包括1位起始位0,8位数据位和1位停止位1。方式2串行口为11位UART,传送波特率与SMOD有关。发送或接收的一帧数据中包括1位起始位0,8位数据位,1位可编程位(用于奇偶校验)和1位停止位1。D0D1D2D3D4D5D6D70/1D0D110/1……100第n+1字符帧第n字符帧8位数据起始位停止位奇偶校验11位的帧格式方式3方式3为波特率可变的11位UART通信方式,除了波特率以外,方式3和方式2完全相同。MCS-51串行口的波特率1.方式0和方式2的波特率是固定的•在方式2中,波特率取决于PCON中的SMOD值:当SMOD=0时,波特率为fosc/64;当SMOD=1时,波特率为fosc/32.即波特率=。oscSMODf642•在方式0中,波特率为时钟频率的1/12,即fosc/12,固定不变2.方式1和方式3的波特率可变,由定时器1的溢出率决定波特率/(b/s)fosc/MHzSMOD定时器1C/模式初始值方式0:1M方式2:375k方式1、3:62.5k19.2k9.6k4.8k2.4k1.2k137.5k11011012121211.05911.05911.05911.05911.05911.986612×1110000000××000000000××222222221××FFHFDHFDHFAHF4HE8H1DH72HFEEBHT波特率=)x256(12f322oscsmod单片机之间的通信RXDTXD8051应用系统(甲机)RXDTXD8051应用系统(乙机)双机异步通信接口电路12174LS05VCC外5V1123123SN7517511431232133474LS0574LS05外5VVCCTXDRXD8051(甲机)8051(乙机)RXDTXDVCC外5V外5VVCCSN75174SN75175SN7517474LS05外5V外5VR1R3R2R1R3R2RS-422A双机异步通信接口电路双机通信软件编程查询方式1)甲机发送编程将甲机片外1000H~101FH单元的数据块从串行口输出。定义方式2发送,TB8为奇偶校验位。发送波特率375kb/s,晶振为12MHz,SMOD=1。参考发送子程序如下:MOVSCON,#80H;设置串行口为方式2MOVPCON,#80H;SMOD=1MOVDPTR,#1000H;设数据块指针MOVR7,#20H;设数据块长度START:MOVXA,@DPTR;取数据给AMOVC,PMOVTB8,C;奇偶位P送给TB8MOVSBUF,A;数据送SBUF,启动发送WAIT:JBCTI,CONT;判断一帧是否发送完。若送完,清TI,取下一个数据AJMPWAIT;未完等待CONT:INCDPTR;更新数据单元DJNZR7,START;循环发送至结束RET2)乙机接收编程使乙机接收甲机发送过来的数据块,并存入片内50H~6FH单元。接收过程要求判断RB8,若出错置F0标志为1,正确则置F0标志为0,然后返回。在进行双机通信时,两机应采用相同的工作方式和波特率。参考接收子程序如下:MOVSCON,#80H;设置串行口为方式2MOVPCON,#80H;SMOD=1MOVR0,#50H;设置数据块指针MOVR7,#20H;设置数据块长度SETBREN;启动接收WAIT:JBCRI,READ;判断是否接收完一帧。若完,清RI,读入数据AJMPWAIT;未完等待READ:MOVA,SBUF;读入一帧数据aJNBPSW.0,PZ;奇偶位为0则转JNBRB8,ERR;P=1,RB8=0,则出错SJMPRIGHT;二者全为1,则正确PZ:JBRB8,ERR;P=0,RB8=1,则出错RIGHT:MOV@R0,A;正确,存放数据INCR0;更新地址指针DJNZR7,WAIT;判断数据块是否接收完CLRPSW.5;接收正确,且接收完清F0标志RET;返回ERR:SETBPSW.5;出错,置F0标志为1RET;返回
本文标题:串口好教程
链接地址:https://www.777doc.com/doc-7087992 .html