当前位置:
文档之家› 第07章 单片机串行通信系统
第07章 单片机串行通信系统
4. 中断允许控制寄存器IE(A8H)
总中断允许控制位。EA = 1,开放所 有中断;EA = 0,禁止所有中断。 串行口中断(包括串行发、串行收)允许位。ES = 1, 允许串行口中断;ES = 0,禁止串行口中断。
EA
AFH
----
----
ES
ACH
ET1
ABH
EX1
AAH
ET0
A9H
EX0
A8H
3、全双工制式(Full Duplex)
数据的发送和接收可同时进行
单工:广播
双工:电话 半双工:对讲机
7.2
80C51串行通信接口
波特率加倍
波特率因子:16
波特率发生器
下降沿表示“0” 起始位开始
指令清0 RI/TI
波特率因子
为保证数据传送的准确性,发送/接收时钟频率f应大于等于 波特率B
f= nB
第07章 单片机串行通信系统
7.1 概述 6.2 串行通信接口 7.3 串行通信工作方式 7.4 串行通信波特率设置 7.5 串行方式时间显示Proteus仿真
7.1 概 述
计算机与外界信息交换称为通信。 通信的基本方式可分为并行通信和串行通信: 并行通信是数据的各位同时发送或同时接收; 串行通信是数据的各位依次逐位发送或接收。 并行通信优点:传送速度快 缺点:不便长距离传送 串行通信优点:便于长距离传送 缺点:传送速度较慢 串行通信按同步方式可分为异步通信和同步通信。
常用标准波特率: b/s
110、 300、 600、
1200、1800、2400、 4800、9600、19200
7.1.2 同步通信
串行通信波特率
波特率bps(bit per second)定义: 每秒传输数据的位数,即:
1波特 = 1位/秒(1bps)
波特率的倒数即为每位传输所需的时间。 相互通信的甲乙双方必须具有相同的波特率,否则无法 成功地完成串行数据通信。
2)
CPU处于掉电方式时,振荡器停振,片内RAM和 SRF的值保持不变,P0—P3口维持原状,程序停止。只 有复位能退出掉电方式。 4) IDL--待机方式(空闲方式)控制位。 IDL=0:常规工作方式 IDL=1:进入待机方式
CPU处于待机方式时,振荡器继续振荡,中断、定时器、 串口功能继续有效,片内RAM和SRF保持不变,CPU状态 保持,P0—P3口维持原状,程序停顿。中断、复位都能 退出待机状态。
并行通信和串行通信
发送
…
计算机 1 GND
计算机 2 或外设 GND
计算机 1 GND
接收
计算机 2 或外设 GND
(a)
(b)
7.1.1 异步通信
串行异步传送中,通信双方必须事先约定:
1、字符格式。双方要事先约定字符的编 码形式、奇偶校验形式及起始位和停止位的规 定。 2、在异步通信中,发送端与接收端的波 特率必须一致。 (波特率(Baud rate)。波特率就是数据的 传送速率,即每秒钟传送的二进制数位数,单 位为位/秒。)
PS BCH PT1 BBH
同级自然优先级
最高级
最低级
PX1 BAH PT0 B9H PX0 B8H
外部中断1中断优先级控制位。PX1 = 1,设定外部中断1为 高优先级中断;PX1 = 0,设定外部中断1为低优先级中断。 定时器T0中断优先级控制位。PT0 = 1,设定定时器T0中断为高 优先级中断;PT0 = 0,设定定时器T0中断为低优先级中断。 外部中断0中断优先级控制位。PX0 = 1,设定外部中断0为高 优先级中断;PX0 = 0,设定外部中断0为低优先级中断。
DELAY:MOV R6,#10 D1:MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET END
;延时程序
2.工作方式1 8位异步通信接口,一帧有1O位信息,1位起始位(低 电平信号),8位数据位(先低位后高位),1位停止位 (高电平信号)。波特率可变,由定时器/计数器T1的 溢出率和SMOD(PCON.7)决定。其格式如下:
3、电源控制寄存器PCON
PCON D7 D6 D5 D4 D3 D2 D1 D0
位名称
SMOD
—
—
—
GF1
GF0
PD
IDL
SMOD=1:波特率加倍 SMOD=0:表示波特率不加倍。
GF1,GF0--用户可自行定义的通用标志位 3) PD--掉电方式控制位 PD=0:常规工作方式 PD=1:进入掉电方式
7.1.3 串行通信的制式
串行通信中,数据通常是在二个端点(点对点)之间进行 传送,按照数据流动的方向可分成三种传送模式: 单工、半双 工、全双工.
1、单工方式(Simplex) :数据仅按一个固定方向传送。
2、半双工制式(Half Duplex)
使用同一根传输线,数据可双向传送,但不能 同时进行。
5) RB8——接收数据第9位 在方式2、3时,RB8是接收的第9位数据。可作为奇偶校验位 或 地址帧的标志 在方式1时,若SM2=0,RB8是接收的停止位 在方式0时,不使用RB8 6) TI——发送中断标志位 在方式0时,发送完第8位数据后,该位由硬件置位。 在其它方式下,于发送停止位之前,由硬件置位 , 并向 CPU 申请中断 CPU在响应中断后,必须用软件清零。 在非中断方式,TI也可供查询使用。 7) RI——接收中断标志位 在方式0时,接收完第8位数据后,该位由硬件置位。 在其它方式下,于接收到停止位之前,该位由硬件置位,并 向CPU申请中断 在CPU响应中断后,也必须用软件清零 在非中断方式,RI也可供查询使用。
表示从机为数据传送状态 表示从机为地址传送状态
3) REN——允许串行接收控制位 REN=0 禁止接收数据 REN=1 允许接收数据 4) TB8——发送数据第9位。 在方式2和方式3时,TB8为所要发送的第9位数据 在多机通信中,以TB8位的状态表示主机发送的信 息是否地址。在 SM2=1 时, TB8=1 ,表明信息为地 址 但在SM2=0时,也可用作数据的奇偶校验位。 方式0,方式1中,该位不用
定时/计数器T1中断允许位。ET1 = 1,允许定 时器T1中断;ET1 = 0,禁止定时器T1中断。 外部中断1中断允许位。EX1 = 1,允许外部中 断1中断;EX1 = 0,禁止外部中断1中断。 定时/计数器T0中断允许位。ET0 = 1,允 许定时器0中断;ET0 = 0,禁止定时器0 中断。
指令将TI/RI清零
方式0工作时,多用查询方式编程:
发送:
MOV
SBUF,A JNB CLR TI,$ TI
……
接收: JNB
RI,$ CLR RI MOV A, SBUF
……
注)复位时,SCON被清零,工作方式的缺省值为方式0。 接收前,务必先置位REN=1方允许接收数据。
【例7.3-1】74LS165芯片的输入端接8个开关,利用单片机 串行方式0将开关的状态串行输入单片机,并在LED上显示。
SM0、SM1:串行口工作方式选择位。用于选择四种工作方式
SM0 0 0 1 1 SM1 0 1 0 1 方式 方式0 方式1 方式2 方式3 功能 移位寄存器方式 8位异步通信方式 9位异步通信方式 9位异步通信方式 波特率 fosc/12 可变 fosc/32或fosc/64 可变
SM2
通常,SM2主要用于从机的状态控制 SM2=0 SM2=1
D4 REN 9CH 接收 允许
D3 TB8 9BH 发送 第 9位
D2 RB8 9AH 接收 第 9位
D1 TI 99H 发送 中 断
D0 RI 98H 接收 中 断
工作方式 选择
① ② ③ ④ ⑤ ⑥ ⑦
SM0 SM2 REN TB8 RB8 TI RI
SM1 —— 串行口工作方式选择位。 —— 多机通信控制位。 —— 允许接收控制位。REN=1,允许接收。 —— 方式2和方式3中要发送的第9位数据。 —— 方式2和方式3中要接收的第9位数据。 —— 发送中断标志。 —— 接收中断标志。
7.3 串行通信方式
1.工作方式0
移位寄存器方式,可外接移位寄存器以扩展I/O口,也可以外接同步 输入/输出设备。
一帧信息有8位数据,低位在前,高位在后,没有起始位和停止位
数据从RXD输入或输出。TXD用来输出同步脉冲。 数据格式如下:
前 后
D0
D1
D2
D3
D4
D5
D6
D7
波特率固定为fosc/12。
于是,定时器每秒所溢出的次数为:
定时器T1的溢出率=fosc/(12×(28—N)) 式中的N为时间常数,即T1的初值。
波特率与计数初值的关系
设波特率用B表示,计数初值用N表示,则波特率B 与T1计数初值N之间的关系可以表示为:
f OSC 2 SMOD B 32 12(256 N )
2 SMOD f OSC 2 SMOD f OSC N 256 256 32 12 B 384 B
ORG 0000H ;0000H单元存放转移指令 AJMP START ;跳转到主程序 ORG 0030H ;主程序从0030H开始存放 START:MOV SCON,#10H ;设定串行口为方式0,并允许接收 LOOP:CLR P3.2 ;并行输入数据 SETB P3.2 ;允许串行移位操作 JNB RI,$ ;等待接收完毕 CLR RI ;标志位清零 MOV A,SBUF ;接受数据 MOV P2,A ;送P2口显示 LCALL DELAY ;调用延时程序 AJMP LOOP ;循环
【例7.3-2】双机通信。设甲乙两机以串行方式1进行数据 传送,fosc=11.0592MHz,波特率为1200b/s。甲机发送 的1、2、3、4、5、6、7、8八个数字,存在内部 RAM40H~4FH单元中,乙机接收后在数码管上显示。 编程思路:T1的设置。设SMOD=0,T1工作在方式2。T0 不用,则TMOD=20H,T1的计数初值为: X=256-(20×11059200)/(32×12×1200)=232=E8H 由于T1用于波特率发生器,故禁止中断,TR1=1启动。 串口设置。工作方式1(M0M1=01),其他位均为0,可 得SCON=40H。查询方式传送,禁止串口中断。 甲乙两机设置相同。