单片机第七章
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
把接收到的数据移入接收寄存器SBUF,当满足以下两个条件:
(1)RI=0, (2)收到停止位=1或SM2=0时, 置“1”RI,且停止位进入RB8。
(3)波特率(可变)
baud rate=
1)T1工作于方式0
2
SMOD
32
T1溢出率
机器周期T=12/fosc,x——初值 T1溢出周期=(213-x)×T+执行T1中断服务程序机器周期数×T
一、发送步骤: 1、 选择串行口工作方式SCON,置TI=0, REN=0。 2、赋波特率PCON,T1定时器初值、工作方 式,开T1。 3、开串行口中断IE、IP(若有)。 4、发送数据第9位写入TB8(若有)。 5、发送数据写入SBUF,启动一次发送。 6、查询TI=1否?或等待中断处理。 7、清零TI,发送下一个数据。
2.串行口控制寄存器SCON(98H)
SM0
SM0 SM1 00 01 10 11
SM1 SM2 REN TB8
RB8 TI
RI
方式 功能 波特率 0 同步移位寄存器,用于扩展I/O口 fOSC/12 1 10位UART,不能用于多机通信 可变 2 11位UART,可用于多机通信 fOSC/64或 fOSC/32 3 11位UART,可用于多机通信 可变
二、接收步骤: 1、选择串行口工作方式SCON,置RI=0,REN=1, SM2设置。 2、赋波特率PCON,T1定时器初值、工作方式,开 T1。 3、开串行口中断IE、IP(若有)。 4、查询RI=1否?或等待中断处理。 5、将SBUF中数据读入A。 6、清零RI,等待接收下一个数据。
初始化根据需要设置以下寄存器: TMOD、TH1、TL1、TCON、SCON、 PCON、IE、IP 跟T1有关的寄存器按串行口工作方式确定是 否设置。 IE、IP根据选择的编程方法确定是否设置。
X=243=F3H
由此可见,定时器T1工作在方式0、1,都必须进行中断服务 来重装初值,影响了溢出率的精度,而T1工作在方式2时, 由于是自动重装初值,所以不需进行中断服务重装初值,因 此溢出率相当准确。 ——请大家都使用方式2产生波特率。
3.方式2
11位UART口,起始位(1)、数据位(8)、TB8/RB8 (1)、停止位(1)。其中第9位放在TB8或RB8中,发送 时第9位要预先放在TB8中。适用于多机通信。 固定波特率fOSC/64或 fOSC/32.
同步 同步 数据 数据 字符1 字符2 字符1 字符2 数据 CRC CRCL 空闲 字符n H 同步 字符1
同步通信信息帧格式
优点:高速传送数据。 缺点:发送时钟和接收时钟保持严格同步,发送时 钟传送到接收端。
波特率(baud rate) 每秒钟传送二进制数码的位数(bit),单位bps (bit persecond),bit/s。
0
D0 D1 D2 D3 D4 D5 D6 D7 1
在方式1下,SM2应设为0。
(1)数据发送
只需向发送缓冲器SBUF写入数据即可,如:mov sbuf,#40h。
起始位、停止位由硬件自动加入。数据在移位脉冲的作用下, 一位一位地由TXD串行输出,当发送完,即SBUF为空时, 置“1”TI,通知CPU可以发送下一个数据。
1.使方式1、2、3的波特率加倍。
7.3 MCS-51串行口的工作方式 1.方式0(SM0=0,SM1=0)
串行口的SBUF是作为同步移位寄存器,主要用途是和外 部同步移位寄存器连接,扩展1个并行口的目的。可用于键 盘、显示器接口。 TXD引脚:作为输出移位脉冲线(时钟),固定频率=
fosc/12。
例:已知异步通信接口的帧格式由一个起始位7个数据位, 一个奇偶校验位和一个停止位组成。当该接口每分钟传送 3600个字符时,计算其传送波特率。
3.串行通信的制式
单工方式(Simplex):只允许数据向一个 方向传送(A→B)。
半双工方式(Half Duplex):允许数据向 两个方向中的一个方向传送,但每次只能一 个站发送。
SMOD
32
1 2 SMOD T1溢出率= 256 X T 32
例 已知pbs=2400bit/s,fOSC=6MHz,SMOD=1,定时器T1
为方式2,求T1初值X=?,TH1=?TL1=? 解:
f OSC 2 SMOD =2400 32 12 256 X
∴TH1=TL1=F3H
RXD引脚:作为串行输入/输出数据线(发送/接收引脚)。 发送/接收数据格式:无起始位和停止位,所以不同于异步 通信,数据位为8位,低位在前,高位在后。
(1)输出(发送)
设置:SM0=0,SM1=0,SM2=0,REN=0。 时序:
RXD TXD D0 D1 D2 D3 D4 D5 D6 D7
串口方式0发送数据时序
注:当发送多个数据时,一定要等前个数据发送 完,即SBUF为空时,才能再向SBUF装入下个 数据,即发送下个数据。 如:发送两个字符40H和50H。 mov sbuf,#40h jnb ti,$ ;发送完否,否,等待 clr ti ;是,发送下个数据 mov sbuf,#50h
(2)数据接收
接收时,必须将REN设置为“1”。串口采样RXD端,当采样 到由“1”变为“0”时,串行口再采样3次,如果有两次以上为 “0”,CPU就认为接收到起始位,随后在移位脉冲的控制下,
7.1 串行通信基础知识
1.通信方式 并行通信:是指数据的各位同时进行传送的通信方式。 优点:传输速度快。 缺点:占用I/O线多,传输距离短(<30m)。 串行通信:是指数据一位一位顺序传送的通信方式。 优点:占用I/O线少(一对),传输距离远。 缺点:传输速度低。
2.串行通信的分类 异步通信(Asynchronous Communication)
单片机原理与应用
厦门理工学院电子与电气工程系 陈志英
第七章 MCS-51的串行口
当设备需要与外界其它设备进行信息交换时,需要 通信接口。通信接口的性质主要应考虑以下3点: 电平性质(TTL电平,CMOS电平或其他) 数据格式(数据格式的不同,接口也就不同) 速率(波特率) 目前在工业领域,最常用的通信接口之一就是串行 口。
(2)输入(接收) 设置:SM0=0,SM1=0,SM2=0,REN=1。 时序:
D0 D1 D2 D3 D4 D5 D6 D7
RXD TXD
串口方式0接收数据时序
接收完8位数据,即SBUF为满,硬件自动置“1”中断标志位 RI,CPU响应中断后必须软件清“0”RI。
应用:“并入串出”。
8051 RXD TXD P1.0
SM2:多机通信位,主要用于方式2、3。 0—单机对单机; 1—多机通信。
当SM2=1时,只有当接收到第9位数据(RB8)为1时,才将 接收到的前8位数据送入SBUF,并置位RI;否则,将接收到 都将8位数据装入SBUF中,并置位RI。 REN:允许/禁止接收控制位 0—禁止接收; 1—允许接收。 TB8:发送数据第9位。 RB8:接收数据第9位。
的8位数据丢弃。当SM2=0时,则不论第9位数据为0还是为1,
TI: 发送中断标志
RI: 接收中断标志。
3.串行口电源控制寄存器PCON(87H)
SMOD GF1 GF0 PD IDL
PCON主要是为CHMOS型单片机(如80C51)的电源控制而
设置的专用寄存器。 PCON在HMOS型单片机(如8051)中,只有设置了SMOD 位。 SMOD:波特率系数选择位
2)T1工作在方式1 溢出周期=T×(216-x+执行T1中断服务程序机器周期数) 3)T1工作在方式2 溢出周期=T×(28-x+执行T1中断服务程序机器周期数) 由于方式2的初值可自动装入,所以可以不产生中断,这时:
溢出周期=T×(28-x)
溢出率=1/溢出周期=1/T×(28-x)
波特率=
2
T1溢出周期=T×(213-x+执行T1中断服务程序机器周期数)
T1溢出率=1/T1溢出周期
例:fosc=6MHz MAIN: SETB PT1 ;置T1中断为高优先级 SETB EA SETB ET1 ;允许T1中断 ANL TMOD,#0FH ;置T1为定时器,方式0 MOV TL1,#XH MOV TH1,#YH SETB TR1 ;开始计数 …… T1INT: CLR TR1 MOV TL1,#XH MOV TH1,#YH SETB TR1 RETI 溢出周期=T×(213-x+3+1+2+2+1+1)
4.方式3
11位UART口,起始位(1)、数据位(8)、TB8/RB8
(1)、停止位(1)。其中第9位放在TB8或RB8中,发送时
第9位要预先放在TB8中。适用于多机通信。
可变波特率=
f OSC 2 SMOD 2 SMOD T1溢出率= 12 256 X 32 32
7.4 串行口的应用编程
三、 C语言编程方法说明
#include <stdio.h> getchar(void) putchar(char) scanf(const char *, ...) printf(const char *, ...) ——对于51单片机来说,基本输入输出只有串 行口,因此这几个函数都是访问串行口的。 但是,不建议大家使用这些函数操作串行口, 因为编译的效率太低,即编译的汇编源程序 太复杂,不够优化简练。
波特率=移位脉冲频率=fosc/12,也就是一个机器周期移一
位。
若 fosc=6MHz,则波特率=500kbps,即2us移位一次; fosc=12MHz,则波特率=1Mbps,即1us移位一次。
2.方式1(SM0=0,SM1=1. 适用于点对点通信) TXD:发送引脚;
RXD:接收引脚;
10位UART口:起始位(1)、数据位(8)、停止位(1)。
发送完8位数据,即SBUF为空,硬件自动置“1”中断标志位
TI,CPU响应中断后必须软件清“0”TI。
应用:扩展一并行口,“串入并出”。
8051 RXD TXD P1.0
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 SA、SB CLK CLR 74LS164
/CLR=0时,将74ls164输出端Q0~Q7清零; /CLR=1时,允许74ls164输出端Q0~Q7输出数据。这时, 通过移位脉冲TXD的控制,数据D0~D7从RXD端逐位移入 74ls164内的移位寄存器,并从74ls164的Q0~Q7输出。
数据以字节为单位组成字符帧传送。字符帧由发送端一 帧一帧地发送。两相邻字符帧之间可以无空闲位,也可以有 若干空闲位。这就是异步概念。发送端和接收端的时钟各自 独立。实现双方同步接收是靠字符帧的起始位和停止位。 字符帧格式:起始位(1位)、数据位(1~8位)、奇偶校 验位(1位)和停止位(1~2位)。
空 闲 位 起 始 位 0 异步通信字符帧frame格式 数 据 位 奇偶 停 空 校验 止 闲 位 位 位 1
优点:不需要传送同步时钟。 缺点:字符帧中包含有起始位和停止位从而降低了有效数据 的传输速率,适用低速通信。
同步通信(Synchronous Communication)
是一种连续串行传送数据的通信方式。1个信息帧中包含 有若干数据字符。发送端和接收端的时钟必须同步。实现双方 同步接收是靠信息帧中同步字符。数据字符之间无间隔。 信息帧格式:同步字符n、数据字符n、CRCH、CRCL
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 QH CLK S/L 74LS165
S/L=0时,Q0~Q7输入;
S/L=1时,允许QH端移出数据。
S/L=1时,74ls165若接收到TXD端的移位脉冲,那Leabharlann Baidu数据就 在TXD的控制下,一位一位移出到RXD,8051就由RXD接收
到数据。
(3)波特率
全双工方式(Full Duplex):允许数据同时 双向传送。
7.2 MCS-51串行口的结构
内部含有1个可编程全双工串行通信接口,4种工作方式。
1.串行口数据缓冲器SBUF
8位发送/接收缓冲器SBUF,在物理上是独立的两个,包 括发送缓冲器SBUF和接收缓冲器SBUF,只是共用地址 99H,这样可以同时进行发送、接收。 发送缓冲器SBUF只能写入不能读出,接收缓冲器SBUF只 能读出不能写入。 发送指令:MOV SBUF,A ;写到发送缓冲器SBUF 接收指令:MOV A,SBUF ;读出接收缓冲器SBUF 硬件管脚:发送端TXD(P3.1);接收端RXD(P3.0)