东南大学单片机教程1概述第7章串行口资料_第1页
东南大学单片机教程1概述第7章串行口资料_第2页
东南大学单片机教程1概述第7章串行口资料_第3页
东南大学单片机教程1概述第7章串行口资料_第4页
东南大学单片机教程1概述第7章串行口资料_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一节

串行通讯口概述其次节

串行口结构与工作原理第三节

波特率设计第四节

串行通讯工作方式第五节

串行口应用举例第六节多机串行通讯技术第7章串行通讯口作业讲解1①RET指令必需作子程序的最终一条指令;RETI必需作中断服务程序的最终一条指令。②RETI指令除复原断点地址外,还复原CPU响应中断时硬件自动疼惜的现场信息。执行RETI指令后,将清除中断响应时所置位的优先级状态触发器,使得已申请的同级或低级中断申请可以响应;而RET指令只能复原返回地址。作业讲解2用表格说明方式0的最短定时常数,8191,送入TH0,TL0的常数:FF1F作业讲解3晶振为12MHz,在方式1下,最大的定时时间Tmax为:

Tmax=65536μs=65.536ms另设两个软件计数器方案:T1定时50ms;软件计数器1:秒计数,用片内50H作为循环次数20。软件计数器2:分计数,用片内51H单元作为循环次数60。设置TMOD计算T1的初始值X

X=65536-50000μs/1μs

=15536D

=3CB0H作业讲解3 MOV50H,#14H ;20*50ms=1s

MOV51H,#3CH ;60*1s=1min

MOVTMOD,#10H ;设定时器1为方式1

MOVTH1,#3CH ;赋初值

MOVTL1,#0B0H

SETBTR1 ;启动T1L2: JBCTF1,L1 ;50ms到?

SJMPL2

L1: MOVTH1,#3CH MOVTL1,#0B0H DJNZ50H,L2 ;未到1s接着循环

MOV50H,#14H DJNZ51H,L2 ;未到1min接着循环

MOV51H,#3CH

CPLP1.2 ;1min到P1.2端取反 SJMPL2 ;反复循环作业讲解31、无说明;2、中断响应子程序中利用A作为存放中间值,须要疼惜。一般用干脆地址比较好。划分一个RAM区;3、定时初值须要重置,循环初值也须要重置。4、须要注明出口和入口第一节

串行通讯口概述串行通讯:所传送数据的各位按依次一位一位地发送或接收。经济,但速度慢。并行通讯:所传送数据的各位同时发送或接收。速度快,但价格贵。

串行通讯中的几个概念:一、传送编码因为单根通讯线仅能表示0和1两种状态,而需传送的信息中有字母、数字和字符等,这就要用二进制数对传送字符编码。常用的主要有美国标准信息交换码ASCII和扩展的BCD码EBCDIC,后一种是8位编码,较常用在同步通信中。

二、同步和异步方式1、

异步通讯ASYNC(AsynchronousDataCommunication):①

数据以一个字符为单位进行传送,一帧一帧地传送;②

在帧格式中先用一个起始位“0”表示字符的起先;③

5-8位数据,规定低位在前,高位在后;④

奇偶校验位(可省略)⑤

停止位“1”表示字符的结束D0D1D2D3D4D5D6D7PD0D01010N-1第N个字符(一串行帧)

N+12、同步通讯(速度快,但硬件结构要求高)在数据或字符起先处用一同步字符来指示(常约定1—2个),由时钟来实现发送端和接收端同步。一旦检测到与规定的同步字符符合,下面就连续依据依次传送数据。SYN字符1SYN字符2连续传送的数据

三、波特率

波特率是异步通讯中对数据传送速率的规定,其意义是每秒钟传送多少位二进制数。

例如:数据传送的速率每秒为120个字符,每个字符由1个起始位、

8个数据位和1个停止位组成,则其传送波特率为:

10*120=1200b/s=1200波特每一位的传送时间即为波特率的倒数:

Td=1/1200=0.833ms

异步通讯的传送速度一般在50到9600波特之间。四、通讯方向1、

单工传送:只能发送或接收,这种单向传送的方法称单工传送;2、

半双工传送:数据可在两机之间双向传送,但接收和发送不能同时进行,只能分时接收和发送;3、全双工传送:两机的发送和接收可以同时进行。图串行通信数据传送的三种方式(a)单工方式;(b)半双工方式;(c)全双工方式五、信号的调制与解调

异步通讯有距离的限制,传输距离较远时,信号衰减、频带不够宽,因此,用调制器把数字信号转换成模拟信号,并加以放大再传送,这个过程叫调制。在接收时,再用解调器检测此模拟信号,并把它转换成数字信号再送入计算机接口,这个过程即解调。其次节

串行口结构与工作原理一.功能与结构图串行口方式0结构示意图发送SBUF(99H)接收SBUF(99H)发送控制器接收控制器串行口中断定时器T1输入移位寄存器串行控制寄存器98H+TIRI门内部总线P3.1TXDP3.0RXD1、

输入数据先进入输入移位寄存器,再送入接收SBUF。在此接受了双缓冲结构,这是为避开在接收到其次帧数据之前,CPU未刚好响应接收器的前一帧中断恳求,没把前一帧数据读走,而造成两帧数据重叠的错误;MOVSBUF,A2、

对于发送器,因为发送时CPU是主动的,不会产生写重叠问题,一般不须要双缓冲器结构,以保持最大传送速率。MOVA,SBUF3、8051串行口通过编程可设置4种工作方式,三种帧格式:

方式0:以8位数据为一帧,不设起始位和停止位,先发送或接收最低位。

D0D1D2D3D4D5D6D7

方式1:以10位为一帧传输,设有一个起始位“0”,8个数据位和一个停止位“1”。

0D0D1D2D3D4D5D6D71

起始

停止方式2和3:以11位为一帧传输,设有一个起始位“0”,8个数据位,

1个可编程位(第九数据位)D8和一个停止位“1”。

0D0D1D2D3D4D5D6D7D81

起始

停止

可编程位D8由软件置1或清0,该位可作校验位,也可作它用。一般用在多机通讯中。二、串行口限制寄存器SCONCPU专用寄存器SCON为串行口限制字,方式选择、接收和发送限制以及串行口的状态标记。复位时,SCON全部位均清0。

SCON(98H):SM0SM1SM2RENTB8RB8TIRI

位地址:9FH9EH9DH9CH9BH9AH99H98H1、串行方式选择SM0、SM1:由软件置位或清零,用于选择串行口四种工作方式。

SM0SM1工作方式功能波特率

00方式0移位寄存器方式fosc/12

01方式18位异步通信方式

可变

10方式29位异步通信方式

fosc/64或fosc/32

11方式39位异步通信方式

可变2、TI:发送中断标记位。在方式0时,当发送数据第8位结束后,或在其它方式发送停止位后,由内部硬件使TI置位,向CPU恳求中断。CPU在响应中断后,必需用软件清零。此外,TI也可供查询运用。3、RI:接收中断标记位。在方式0时,当接收数据的第8位结束后,或在其它方式接收到停止位的中间由内部硬件使RI置位,向CPU恳求中断。同样,在CPU响应中断后,也必需用软件清零。RI也可供查询运用。4、REN:允许串行接收限制位。若REN=0,则禁止接收;REN=1,则允许接收,该位由软件置位或复位。5、TB8:发送数据D8位。在方式2和方式3时,TB8为所要发送的第9位数据。在多机通信中,以TB8位的状态表示主机发送的是地址还是数据:TB8=0为数据,TB8=1为地址;也可用作数据的奇偶校验位。该位由软件置位或复位。6、RB8:接收数据D8位。在方式2和方式3时,接收到的第9位数据,可作为奇偶校验位或地址帧或数据帧的标记。方式1时,若SM2=0,则RB8是接收到的停止位。在方式0时,不运用RB8位。7、SM2:方式2、方式3时用于多机通信的限制位。►方式2或方式3处于接收时:

若SM2=1且接收到的第9位数据(RB8)为0时,不启动接收中断标记RI(即RI=0),并且将接收到的前8位数据丢弃;

若SM2=1且收到的第9位RB8为1时,才将接收到的前8位数据送入SBUF,并置位RI,产生中断恳求。若SM2=0,则不论第9位数据为0或1,都将前8位数据装入SBUF中,并产生中断恳求。►方式1中,当处于接收时,若SM2=1,则只有接收到有效的停止信号为止,RI才置"1"。►方式0中SM2应置"0"。三、专用寄存器PCON

CPU专用寄存器PCON为电源限制寄存器。

PCON(87H):SMODXXXGF1GF0PDIDLPCON的最高位SMOD是串行口波特率系数限制位。SMOD=1时,波特率增大一倍。其余各位与串行口无关。SMOD=0时,方式2波特率为fosc/64;

SMOD=1时,方式2波特率为fosc/32;

SMOD还影响方式1、方式3波特率的计算公式。第三节

波特率设计

串行口编程可约定4种工作方式。其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率限制。一、方式0和方式21、

方式0,每个机器周期发送或接收一位数据,因此波特率固定为时钟频率的1/12,且不受SMOD的影响。2、

方式2的波特率取决于PCON中的SMOD之值。当SMOD=0时,波特率为时钟频率的1/64;若SMOD=1,则波特率为时钟频率的1/32。

方式2波特率=(2SMOD/64)*Fosc二、方式1和方式3串行口方式1和方式3的波特率由定时器T1的溢出率与SMOD值同时确定。波特率=(2SMOD/32)*(T1的溢出率)其中:T1的溢出率取决于计数速率和定时器的预置值。1、

计数速率:当TMOD中C/T=0,定时方式,计数速率=Fosc/12;=1,计数方式,计数速率取决于外部输入时钟频率。3、溢出率为溢出周期之倒数:

波特率=(2SMOD/32)(Fosc/(12*(256-X))4、定时器T1方式2的初始值为:

X=256-(fosc*(SMOD+1)/(384*波特率))

2、溢出周期:当定时器T1作波特率发生器运用时,通常是选用自动重装载模式,即模式2。在模式2中,TL1作计数用,而自动重装载的值放在TH1内。设计数初值为X,那么每过“256-X”个机器周期,定时器T1就会产生一次溢出。为了避开因溢出而产生不必要的中断,此时应禁止T1中断。溢出周期为:(12/Fosc)*(256-X)

例:已知8051单片机时钟振荡器为11.0592MHZ,选用定时器T1工作方式2作波特率发生器,波特率为2400波特,求初值。解:设SMOD=0,

X=256—11.0592*106*1/(384*2400)=244=F4H

所以TH1=TL1=F4H

假如串行通讯选用很低的波特率,可将定时器T1置于方式0或方式1,即13位或16位定时方式。但在这种状况下,T1溢出时,需重装初值,从而对波特率产生确定的误差。

表:常用波特率与定时/计数器1各参数关系见书中P123第四节

串行通讯工作方式一、方式01、

在方式0下,串行口作同步移位寄存器用,其波特率是固定的,为fosc/12。2、

串行数据由RXD(P3.0)端输入或输出。3、

同步移位脉冲由TXD(P3.1)端送出。4、

这种方式常用于扩展I/O口

RXD8051TXD1274LS164345610111213数据输出移位脉冲D7D0串入并出寄存器方式0用于I/O扩展输出RXDTXD

80519274LS165

654314131211数据输入移位脉冲D0D7并入串出寄存器方式0用于I/O扩展输入发送:当一个数据写入发送缓冲寄存器SBUF,串行口即把8位数据以fosc/12的波特率从RXD端送出(低位在前),发送完置中断标记TI为1。接收:REN是串行口接收器允许接收限制位。REN=0,禁止接收;REN=1,允许接收。当软件置REN为1时,即起先从RXD端以fosc/12波特率输入数据(低位在前),当接收到8位数据时,置中断标记RI为1。

这种扩展方法输入输出的速度是不高的,如fosc=12MHZ,则每移动一位需1us.留意:1、串行限制寄存器中TB8或RB8位在方式0中未用。2、每当发送或接收完8位数据时,由硬件将发送中断TI或接收中断RI标记置位。3、CPU响应TI或RI中断恳求时,不会清除TI或RI标记,必需由用户用软件清0。4、方式0时,SM2位必需为0。二、方式11、

串行口为8位通用异步接口,一帧信息为10位。2、

1位起始位0,8位数据位和1位停止位1;3、

传送波特率可调

发送:数据从TXD端输出,当数据写入发送缓冲器SBUF时,就启动发送器发送。当发送完一帧数据后,就把TI标记置1,并申请中断。接收:由REN置1允许接收,串行口采样引脚RXD。当采到1至0的跳变时,确认是起始位“0”,就起先接收一帧数据。当RI=0且停止位为1或者SM2=0时,停止位进入RB8位,同时置位中断标记RI;否则,信息将丢失。所以通常方式1下,设SM2=0。三、方式21、

串行口为9位通用异步接口,一帧信息为11位。2、

1位起始位0,8位数据位,1位可编程位和1位停止位1;3、

传送波特率与SMOD有关。发送:发送前,先依据通讯协议由软件设置TB8(如作奇偶校验位或地址/数据标识位),然后将要发送的数据写入SBUF,即启动发送器。发送过程,是执行任何一条以SBUF作为目的寄存器的指令而启动的。“写SBUF”信号,把8位数据装入SBUF,同时还把TB8装到发送移位寄存器的第9位位置上,并通知发送限制器,要求进行一次发送。然后即从TXD端输出一帧信息。接收:先置位REN为1,使串行口处于允许接收状态,同时还要将RI清0。在满足这个条件的前提下,再依据SM2的状态(因为SM2是方式2和方式3的多机通讯限制位)和所接收到的RB8的状态才能确定此串行口在信息到来后是否会使RI置1,并申请中断,接收数据。当SM2=0时,不管是RB8为0还是为1,RI都置1,此串行口将接收发来的信息。当SM2=1时,且RB8为1时,表示在多机通讯状况下,接收的信息为地址帧,此时RI置1。串行口将接收发来的信息。当SM2=1时,且RB8为0时,表示接收的信息为数据帧,但不是发给本从机的,此时RI不置1,因此所接收的数据帧将丢失。四、方式3

方式3为波特率可变的11位异步通讯方式。除波特率外,方式3和方式2完全相同。第五节

串行口应用举例一、方式0举例,用串行口扩展I/O口

例1用并行输入8位移位寄存器74LS165作为扩展输入口。下图是利用8051的3根口线扩展为16根输入口线的好用电路,其由2块74LS165串接而成(前级的数据输出位QH与后级的信号输入端SIN相连)。

现编程从16位扩展口读入20个字节数据(读十次),并把它们转存到内部RAM的50H~63H中。

P3.08051

P3.1

P1.0QHSIN74LS165S/LCKQH74LS165S/LCK+5VD0D7D0D76129111516810

MOVR7,#14H ;设置读入字节数

MOVR0,#50H ;设片内RAM指针 SETBF0 ;设置读入字节奇偶数标记RCV0:CLRP1.0 ;并行口输入数据,允许74165串行移位

SETBP1.0

RCV1:MOVSCON,#10H;设串行口方式0并启动接收

JNBRI,$ ;等待接收一帧数据CLRRI ;清接收中断标记

MOVA,SBUF ;取缓冲器数据

MOV@R0,A

INCR0

CPLF0

JBF0,RCV2;判是否接收完偶数帧,接收完则重新并行置入

DECR7

SJMPRCV1 ;否则再接收一帧RCV2:DJNZR7,RCV0 ;判是否已读入预定的字节数程序中F0作为读入字节的奇偶性标记。由于每次由扩展口并行输入到移位寄存器的是两个字节数据,置入一次,串行口应接收二帧数据。故已接收的数据字节数为奇数时F0=0,不再并行输入数据就干脆启动接收过程。否则F0=1,在启动接收过程前,应当先在外部移位寄存器中输入新的数据。例2用8位并行输出串行移位寄存器74LS164作为扩展输出口。由于74LS164无并行输出限制端,在串行输入过程中,其输出端的状态会不断变更,故在某些场合,在74LS164与输出装置之间,还应加上输出可控的缓冲级(如74LS244),以便串行输入过程结束后再输出。

图中的输出装置是2位共阳级七段显示发光二极管,接受静态显示方式。

由于74LS164在低电平输出时,允许通过电流可达8mA,故不需再加驱动电路。与动态扫描显示比较,静态显示方式的优点是CPU不必常见的为显示服务,软件设计比较简洁,很简洁做到显示不闪烁。

编程把片内20H、21H中的数字取出,由串行口送给显示器,显示相应的数字。+5VP3.08051P3.1

P1.0

QAQHA,B74LS164CLRCK

QAQHA,B74LS164CLRCK+5V

共阳极LED

。ga

共阳极LED

。ga3131,298714 MOVR7,#02H;设置显示位数 MOVR0,#20H;设显示数据区指针

MOVSCON,#00H;设串行口方式0DISP1: MOVA,@R0

MOVDPTR,#TABH

MOVCA,@A+DPTR;取显示码

MOVSBUF,A;启动串行口发送过程

JNBTI,$;等待接收一帧数据

CLRTI;清串行口发送中断标记

INCR0;修改指针取下一个数

DJNZR7,DISP1

RET

TAB: DBC0H,F9H,A4H,B0H,99H;0,1,2,3,4的显示代码

DB92H,82H,F8H,80H,98H;5,6,7,8,9的显示代码方式1举例例:双机通信,甲机发送乙机接收,波特率2400,晶振6MHz,T1作为波特率发生器,串行口工作在方式1。甲机送出数据为50H起先的16个字节数据。乙机接收数据存放在3000H~300FH单元中(外部RAM)

解:

双机通信串行口工作在方式1,定时器T1工作在方式2。

定时常数:X=256-(fosc*(SMOD+1))/(384*波特率)

若SMOD=0,则X=249.49,误差较大。

取SMOD=1,则X=242.98=243=F3H,误差较小。

发送程序:

MOVTMOD,#20H;定时器(波特率)初始化

MOVTL1,#0F3H

MOVTH1,#0F3H

SETBTR1

MOVSCON,#40H;串行口初始化

MOVPCON,#80H

MOVR0,#50H

MOVR7,#10H

TRS: MOVA,@R0

MOVSBUF,AWAIT: JBCTI,CONT

AJMPWAIT

CONT: INCR0

DJNZR7,TRS

RET

接收程序: MOVTMOD,#20H;定时器(波特率)初始化

MOVTL1,#0F3H

MOVTH1,#0F3H

SETBTR1

MOVSCON,#50H;串行口初始化

MOVPCON,#80H

MOVDPTR,#3000H

MOVR7,#10H

WAIT: JBCRI,READ AJMPWAIT

READ: MOVA,SBUF

MOVX@DPTR,A

INCDPTR

DJNZR7,WAIT RET

例:方式3举例编程把甲机片内RAM50H—5FH单元中的数据块从串行口输出。乙机从甲机接收16字节数据块,并存入片外3000H—300FH单元。接收过程要求推断奇偶校验标记RB8。若出错置F0标记为1,正确置F0标记为0。然后返回。要求:定义工作方式3发送,TB8作奇偶校验位。接受定时器1方式2作波特率发生器,波特率为1200,Fosc=11.0592MHZ分析:预置值TH1=0E8H。发送: MOV TMOD,#20H ;设置定时器1为方式2 MOV TL1,#0E8H ;设置预置值;

MOV TH1,#0E8H SETB TR1 ;启动定时器1 MOV SCON,#0C0H ;设置串行口为方式3 MOV PCON,#00H ;SMOD=0 MOV R0,#50H ;设数据块指针

MOV R7,#10H ;设数据长度TRS: MOV A,@R0 ;取数据到A

MOV C,P MOV TB8,C ;奇偶位P送TB8

MOV SBUF,A ;数据送SBUF,启动发送WAIT: JBC TI,CONT ;判一帧是否发送完

AJMP MAIT ;未完等待CONT: INC R0 ;更新数据单元

DJNZ R7,TRS ;循环发送至结束

RET ;返回接收: MOV TMOD,#20H ;设置定时器1为方式2 MOV TL1,#0E8H ;设置预置值 MOV TH1,#0E8H SETB TR1 ;启动定时器1 MOV SCON,#0C0H ;设置串行口为方式3 MOV PCON,#00H ;SMOD=0 MOV DPTR,#3000H;设置数据块指针 MOV R7,#10H ;设数据块长度 SETB REN ;允许接收WAIT: JBC RI,READ ;判一帧是否接收完 AJMP WAIT ;未完接着等待READ: MOV A,SBUF ;读入一帧数据 JNB PSW.0,PZ ;奇偶位P为0则转 JNB RB8,ERR ;P=1,RB8=0则出错 SJMP YES ;二者全为1则正确PZ: JB RB8,ERR ;P=0,RB8=1则出错YES: MOVX @DPTR,A ;正确,存放数据 INC DPTR ;修改地址指针 DJNZ R7,WAIT ;推断数据块接收完否 CLR PSW.5 ;接收正确,且接收完清F0标记 RET ;返回ERR: SETB PSW.5 ;出错置F0标记为1 RET ;返回第六节多机串行通讯技术一、多机通讯的基本原理图主从式多机通讯系统

MCS-51系列单片机的串行通讯方式2和方式3具有多机通讯功能,可构成各种分布式通

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论