第8章 AT89S51单片机的串行口.
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
波特率(比特率):每秒钟传送二进制数的位 数,单位b/s。
8.1
串行口的结构
SCON PCON
图8-1
内部结构
6
SBUF_串行口数据缓冲器
两个物理上独立的接收、发送缓冲器
发送缓冲器只写不能读。
接收缓冲器只读不能写。
两个缓冲器共用一个字节地址(99H)。
SCON __串行口控制寄存器(98H),可位寻址
第8章 AT89S51单片机的 串行口
1
全双工异步串行口
并行通信和串行通信
并行通信 数据的各位同 时传送(接收)
串行通信 数据的逐位分时 传送(接收)
2
异步通信和同步通信 异步通信(Asynchronous Communication): 异步通信是指发送端和接收端使用各自的时钟来控制 数据的发送和接收的一种通信方式。这两个时钟源彼 此独立,无需严格同步。 同步通信(Synchronous Communication): 同步通信是指通信时要建立发送方时钟对接收方时 钟的直接控制,使收发双方达到完全同步的一种通 信方式。
如图8-5。
12
图7-5 方式0发送时序
13
(2)方式0输出的应用
典型应用是外扩串行输入 / 并行输出的同步移位寄存器
74LS164,实现并行输出端口的扩展。 图 8-6 为串行口工作在方式 0 ,通过 74LS164 的输出来控 制8个外接LED发光二极管亮灭的接口电路。当串行口被设置 在方式0输出时,串行数据由RXD端(P3.0)送出,移位脉冲
18
2.方式0输入 (1)方式0输入工作原理 方式0接收,REN为允许接收控制位,REN=0,禁止接收;
REN = 1,允许接收。
当向SCON寄存器写入控制字(设置为方式0,并使REN位置 “1”,同时RI = 0)时,产生一个正脉冲,串行口开始接收
数据。
引脚RXD为数据输入端,TXD为移位脉冲信号输出端,接收 器以fosc/12的固定波特率采样RXD引脚的数据信息,当接收完 8位数据时,中断标志RI置“1”,表示一帧数据接收完毕, 通知CPU读取该数据,并执行RI=0指令,准备接收下一帧数据, 时序如图8-7。
#include <reg51.h> #include <stdio.h> sbit P1_0=0x90; unsigned char nSendByte; void delay(unsigned int i) { int j; for(;i>0;i--) for(j=0;j<125;j++); } main( ) { SCON=0x00; EA=1; ES=1; nSendByte=1; SBUF=nSendByte; P1_0=0; while(1); }
串行通信的3种制式:单工(simplex) 半双工(half duplex) 全双工 (duplex)
4
概述: 可编程的全双工异步串行口 管脚:TXD(P3.1)、RXD(P3.0) 可同时发送、接收数据 四种工作方式,帧格式有8位、10位、11位 波特率(Baud rate)可设置
/* 设置串行口为方式0*/ /* 全局中断允许 */ /* 允许串行口中断 */ //启动串口发送 // 允许串口向164串行发送数据
17
void Serial_Port( ) interrupt 4 using 0 { TI=0; P1_0=1; nSendByte<<=1; if(nSendByte==0) nSendByte =1; SBUF=nSendByte; delay(500); P1_0=0; }
PCON __电源控制寄存器(87H),不可位寻址
7
8.1.1 串行口控制寄存器SCON
工作方式选择位 多机通信控制位
接收中断标志 发送中断标志 接收的第9位数据
允许串行接收位
发送的第9位数据
表8-1 串行口的工作方式
SM0 SM1
工作 方式 0 1 2 3
功 能 8位同步移位寄存器(扩展IO口) 10位异步收发(8位数据) 11位异步收发(9位数据) 11位异步收发(9位数据)
19
图7-7 方式0接收时序
20
(2)方式0输入应用举例
【例8-2】图8-8为串口外接一片8位并行输入、串行输出
图8-4 方式0的帧格式
11
1.方式0输出
(1)方式0输出的工作原理 当执行一条将数据写入发送缓冲器SBUF指令时,产生一个 正脉冲,串行口开始把SBUF中的8位数据以fosc/12的固定波 特率从RXD引脚串行输出,低位在先,TXD引脚输出同步移位
脉冲,发送完8位数据,中断标志位TI置“1”。 发送时序
波特率 fosc/12 可变,由定时器1溢 出率控制 fosc/64或fosc/32 可变,由定时器1溢 出率控制
0 0 1 1
0 1 0 1
9
8.1.2
电源控制及波特率选择寄存器PCON
当SMOD=1时,要比SMOD=0时波特率加倍,所 以也称SMOD位为波特率倍增位。 例如,方式1的波特率计算公式:
由 TXD 端( P3.1 )送出。在移位脉冲的作用下,串行口发送
缓冲器的数据逐位地从RXD端串行地移入74LS164中。
14
图8-6
串行口的方式0 外接8个LED发光二源自文库管的接口电路
15
【例8-1】如图8-6所示,编写程序控制8个发光
二极管轮流点亮。
图中74LS164的CLK端为同步脉冲输入端,CLR
方式1波特率 =
2
SMOD
32
定时器T1的溢出率
10
8.2 8.2.1
串行口的4种工作方式 方式0
同步移位寄存器输入/输出方式。该方式并不用于两个 AT89S51单片机之间的异步串行通信,而是用于串行口外接
移位寄存器,扩展并行I/O口。
8位数据为一帧,无起始位和停止位,先发送或接收最低 位。波特率为fosc/12。帧格式如图8-4。
为控制端,当CLR=0时,允许串行数据从A和B端输入
但是8位并行输出端关闭;当CLR=1时,A和B输入端 关闭,但是允许74LS164中的8位数据并行输出。当8 位串行数据发送完毕后,引起中断,在中断服务程 序中,单片机通过串行口输出下一个8位数据。 采用中断方式的参考程序如下。
16