220 likes | 307 Views
第七章 MCS-51 的串行口. 一、复习. 二、串行口的四种工作方式. 三 、 串行口的应用举例与实验六. 4 、串行通信工作方式. 方式 0 方式 0 时,串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输入或输出口。数据由 RXD ( P3.0 )引脚输入或输出,同步移位脉冲由 TXD ( P3.1 )引脚输出。发送和接收均为 8 位数据, 低位 在先,高位在后。 波特率固定为 fosc/12 。 SM2 必为 0 。 ( 1 )方式 0 输出. ( 2 )方式 0 输入. 扩展并行输入或输出口. TI. 先发送低位示意图. 并出.
E N D
第七章 MCS-51的串行口 一、复习 二、串行口的四种工作方式 三、 串行口的应用举例与实验六
4、串行通信工作方式 方式0 方式0时,串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输入或输出口。数据由RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送和接收均为8位数据,低位在先,高位在后。波特率固定为fosc/12。 SM2必为0。 (1)方式0输出
(2)方式0输入 扩展并行输入或输出口
TI 先发送低位示意图 并出 RXD SBUF 74LS164 fosc/12 TXD MOV SBUF, A RI 先接收低位示意图 并入 RXD SBUF 74LS165 fosc/12 TXD MOV A , SBUF
方式1 方式1是10位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚,传送一帧数据的格式如图所示。其中1位起始位,8位数据位,1位停止位。
(1)方式1输出 (2)方式1输入
用软件置REN为1时,接收器以所选择波特率的16倍速率采样RXD引脚电平,检测到RXD引脚输入电平发生负跳变时,则说明起始位有效,将其移入输入移位寄存器,并开始接收这一帧信息的其余位。接收过程中,数据从输入移位寄存器右边移入,起始位移至输入移位寄存器最左边时,控制电路进行最后一次移位。当RI=0,且SM2=0(或接收到的停止位为1)时,将接收到的9位数据的前8位数据装入接收SBUF,第9位(停止位)进入RB8,并置RI=1,向CPU请求中断。用软件置REN为1时,接收器以所选择波特率的16倍速率采样RXD引脚电平,检测到RXD引脚输入电平发生负跳变时,则说明起始位有效,将其移入输入移位寄存器,并开始接收这一帧信息的其余位。接收过程中,数据从输入移位寄存器右边移入,起始位移至输入移位寄存器最左边时,控制电路进行最后一次移位。当RI=0,且SM2=0(或接收到的停止位为1)时,将接收到的9位数据的前8位数据装入接收SBUF,第9位(停止位)进入RB8,并置RI=1,向CPU请求中断。
方式2和方式3 方式2或方式3时为11位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚 。 方式2和方式3时起始位1位,数据9位(含1位附加的第9位,发送时为SCON中的TB8,接收时为RB8),停止位1位,一帧数据为11位。方式2的波特率固定为晶振频率的1/64或1/32,方式3的波特率由定时器T1的溢出率决定。
(1)方式2和方式3输出 发送开始时,先把起始位0输出到TXD引脚,然后发送移位寄存器的输出位(D0)到TXD引脚。每一个移位脉冲都使输出移位寄存器的各位右移一位,并由TXD引脚输出。 第一次移位时,停止位“1”移入输出移位寄存器的第9位上 ,以后每次移位,左边都移入0。当停止位移至输出位时,左边其余位全为0,检测电路检测到这一条件时,使控制电路进行最后一次移位,并置TI=1,向CPU请求中断。
(2)方式2和方式3输入 接收时,数据从右边移入输入移位寄存器。当位检测逻辑采样到RXD上的负跳变,便开始接收1帧数据。在接收完第九位数据后,满足下列条件,才能真正接收到1个字符。 当RI=0,且SM2=0(或接收到的第9位数据为1)时,接收到的数据装入接收缓冲器SBUF和RB8(接收数据的第9位),置RI=1,向CPU请求中断。如果条件不满足,则数据丢失,且不置位RI,继续搜索RXD引脚的负跳变。
1、串行口方式0的应用 80C51串行口的应用举例 方式0时,串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输入或输出口。 74LS164可用于扩展并行输出口,74LS165可用于扩展输入口。 数据由RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送和接收均为8位数据,低位在先,高位在后。波特率固定为fosc/12。
补例7-1:用89C51串行口外接164串入——并出移位寄存器扩展8位并行口;8位并行口的每位都接一个发光二极管,要求发光二极管从左到右以一定延迟轮流显示,并不断循环。设发光二极管为共阴极接法,如图所示。补例7-1:用89C51串行口外接164串入——并出移位寄存器扩展8位并行口;8位并行口的每位都接一个发光二极管,要求发光二极管从左到右以一定延迟轮流显示,并不断循环。设发光二极管为共阴极接法,如图所示。 • 解:设数据串行发送采用中断方式,显示的延迟通过调用延迟程序DELAY来实现。 返回
中断方式程序清单: ORG 0023H ;串行口中断入口 AJMP SBR ;转入串行口中断服务程序 ORG 2000H ;主程序起始地址 MOV SCON ,#00H ;串行口方式0初始化 MOV IE,#10010000B MOV A ,#80H ;最左一位发光二极管先亮 CLR P1.0 ;关闭并行输出 SETB P1.0 ;启动并行输出 MOV SBUF,A ;开始串行输出 LOOP : SJMP $ ;等待中断 SBR : ACALL DELAY ;显示延迟一段时间 CLR TI ;清发送中断标志 RR A 准备右边一位显示 CLR P1.0 ;关闭并行输出 SETB P1.0 ;启动并行输出 MOV SBUF , A ;再一次串行输出 RETI ;中断返回
查询方式程序清单: ORG 2000H ;主程序起始地址 MOV SCON ,#00H ;串行口方式0初始化 MOV A ,#80H ;最左一位发光二极管先亮 LOOP1: CLR P1.0 SETB P1.0 MOV SBUF,A ;开始串行输出 LOOP : JNB TI, $ ;等待中断 SBR : ;启动并行输出 ACALL DELAY ;显示延迟一段时间 CLR TI ;清发送中断标志 RR A ;准备右边一位显示 SJMP LOOP1
解:设数据的发送不采用串行口,即用一段程序模拟串口方式0的操作,选择用P2.1传数据,P2.0传时钟。解:设数据的发送不采用串行口,即用一段程序模拟串口方式0的操作,选择用P2.1传数据,P2.0传时钟。 开 始 循环次数设置 取显示数据 数据码左移一位 送一位数据至P2.1 输出一个移位脉冲 够8次了? Y RET DOUT BIT P2.1 CLK BIT P2.0 DP12: MOV R2, #8 MOV A, @R0 DP13: RLC A MOV DOUT, C CLR CLK SETB CLK DJNZ R2, DP13 RET 先输出低位吗? 能改变吗?
1、串行口方式0的应用 • 用方式0加上并入——串出移位寄存器可扩展一个8位并行输入口。移位寄存器必须带有预置/移位的控制端,由单片机的一个输出端子加以控制,以实现先由8位输入口置数到移位寄存器,然后再串行移位从单片机的串行口输入到接收缓冲器,最后再读入到CPU中。 返回
补例7-2:用89C51串行口外加移位寄存器165或166扩展8位输入口,输入数据由8个开关提供,另有一个开关K提供联络信号。当K=0时,表示要求输入数据,输入的8位为开关量,提供逻辑模拟子程序的输入信号。补例7-2:用89C51串行口外加移位寄存器165或166扩展8位输入口,输入数据由8个开关提供,另有一个开关K提供联络信号。当K=0时,表示要求输入数据,输入的8位为开关量,提供逻辑模拟子程序的输入信号。 • 74LS165读图所得:置数和移位由引脚shift控制,低为置数,高位移位。跨接在H上的开关量最先移出;而方式0的数据传送规则是低位在先,所以,最后移入SBUF中的数据为:A在最高位、H在最低位。
PL被定义为移位/置数控制端:PL=1移位; PL=0异步置数 读图练习 0对应A;7对应H 这里才是D0
PL BIT P1.0 ORG 00H START: CLR PL SETB PL ;发送移位脉冲 MOV SCON,#10H ;允许串行口接收数据 WAIT: JNB RI,WAIT MOV A,SBUF ;读取数据 CLR RI ;清除接收中断标志 MOV P0,A ;接收到的数据送P0口显示 ACALL DELAY SJMP START DELAY: MOV R4,#0FFH AA1: MOV R5,#0FFH AA: NOP NOP DJNZ R5,AA DJNZ R4,AA1 RET END
2009-11-10作业 • P157 8、11