一 : 基于51单片机的D/A & A/D 与单片机接口原理
单片机属于数字芯片内部只有0和1表示的。无法表达一个模拟量。电压值 模拟量是随意变化的。数字量就2种变化没有变化表示。
如果是一个8位 D/A芯片
1 1 1 1 1 1 1
一、D/A转换器的原理
工作原理: Vref
工作原理:I0 最后有个2R
有此图可以看出D7---D0 ) 2的7次方
若Rfb这块是一个电压转换我们先不管。只要知道就是电流转成电压就行了。其实内部就是电阻的分流再转换成电压产生一个变化的过程。流压转换就是一个成正比的关系就很简单了。好了咱们再看看D/A的性能指标:
1、分辨率
分辨率与输入数字量的位数有确定的关系,可以表示成F/2的N次幂 这个写不上去 。FS 表示满量程输入值,N为二进制位数。对于5V 的满量程,采用8位的DAC时,分辨率为5V/256 = 19.5mv;当采用12位的DAC时,分辨率为5V/4096 = 1.22mv.显然,位数越多分辨率越高。当然位数越多对制作芯片的工艺要求越高,转换时间越慢,呵呵。也是制作上的瓶颈位数又高转换还快是相当不容易的,尤其是A/D
2、线性度
线性度(也称为非线性误差)是实际转换特性曲线与理想直线特性之间的最大偏差常以相对于满量程的百分数表示。如+/-1%是指实际输出值与理论值之差在满刻度的 +/- 1%以内。当然线性度越好,D/A的性能越好。
3、绝对精度和相对精度
绝对精度:(简称精度)是指在整个刻度范围内,任一输入数码所对应的模拟量实际输出值与理论值之间的最大误差。绝度精度是由DAC的增益误差(当输入数码为全1时,实际输出值与理想输出值值之差)、零点误差(数码输入为全0时,DAC的非零输出值)、非线性误差和噪声等引起的。绝对精度(即最大误差)应小于1个LSB。
相对精度 :相对精度与绝对精度表示同一个含义,用最大误差相对于满刻度的百分比表示。(跟线性度差不多)。
4、建立时间
建立时间是指输入的数字量发生满刻度变化时,输出模拟信号达到满刻度值的+/-1/2LSB所需的时间。是描述D/A转换速率的一个动态指标。(+/- 1/2LSB
电流输出型DAC的建立时间短。电压输出型DAC的建立时间主要决定放大器的响应时间根据建立时间的长短,可以将DAC分成超高速(<1us)、高速(10~1us)、中速(100~10us)、低速(>=100 us)几档。
DAC0832是使用非常普遍的8位D/A转换器,由于其片内有输入数据寄存器,故可以直接与单片机接口。DAC0832以电流形式输出,当需要转换为电压输出时,可外接运算放大器。属于该系列的芯片还有DAC0830/DAC0831,它们可以相互代换。DAC0832主要特性:
目前我这里是直通方式,下图为DAC0832内部结构及引脚
引脚功能看下图
下图为几种工作方式及跟单片机连接图
一、单缓冲
二、双极性模拟输出电压
三、双缓冲工作方式
而我们采用直通工作方式
当DAC0832芯片的片选信号,写信号及传送控制信号的引脚全部接地,允许输入锁存信号ILE引脚接+5V时,DAC0832芯片就处于直通工作方式,数字量一旦输入,就直接进入DAC寄存器,进行D/A转换。
二 : 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
李升 单片机原理与接口技术-李升-PPT第5章
三 : 单片机原理与接口技术-李升-PPT第5章
第五章 AT89S51单片机的内部功能模块
教学提示 AT89S51具有MCS-51系列单片机一些典型的片内外 围设备:并行I/O接口、中断系统、定时器/计数器 以及串行接口,这些片内外设相互独立,但在应用 时又紧密联系。同时AT89S51还具有ISP(在系统编 程)功能和看门狗电路,这是与8051、80C51、 AT89C51等单片机的不同之处。 教学目标 本章主要介绍AT89S51单片机的片内资源,包括四 个并行I/O接口、中断系统、定时器/计数器、串行 接口以及看门狗定时器。
引言
5.1
5,2 5.3
AT89S51单片机的并行输入/输出接口
AT89S51单片机的中断系统 AT89S51单片机的定时器/计数器 AT89S51单片机的串行接口 AT89S51单片机的看门狗定时器
5.4
5.5
本章小结
引言
并行I/O接口、中断系统、定时器/计数器、串 行接口是MCS-51单片机都具备的核心片内外设 资源,在学习时AT89S51单片机的内部资源时, 可运用Keil软件通过应用编程调试开展学习和研 究。尽管Keil μVision2的CPU库中没有AT89S51, 但AT89S51和AT89C51在并行I/O接口、中断系 统、定时器/计数器、串行接口这些核心片内资源 方面保持一致,因此在运用μVision2进行这些片 内外设的应用程序调试时可用AT89C51代替 AT89S51。而Keil μVision3直接支持AT89S51, 使用更为方便。
案例:下图为Keil μVision3调试界面中的外设 (Peripherals)菜单下提供的AT89S51单片机内部各 功能模块观察器。
P0口观察器
中断系统观察器 定时器/计数器观察器
串行口观察器
看门狗定时器观察器
5.1
AT89S51单片机的并行输入/输出接口
5.1.1 端口结构
1、P0口
功能:双功能的双向并行接口, 字节地址:80H, 位地址:80H~87H。 注:每一位I/O线具有完全相同但又相互独立
的电路结构,下图所示
:
地址/数据 读锁存器 BUF1 内部总线 M2 1
控制 & M1
VCC FET1
D CL
Q
P0.x锁存器
P0.x(x=0~7) 引脚 FET2 MUX
Q
BUF2
读引脚
P0口位电路结构示意图
P0口的使用:
? 作通用I/O口 ? 作输入数据时,有读锁存器和读引脚两种读取方 式 ? 作地址/数据复用线,即P0口既作低8位地址线, 又作8位数据总线 2、P1口
功能:单功能的8位并行I/O接口,通用I/O口 字节地址:90H
位地址:90H~97H
P1口每一位均具有完全相同但又相互独立的电路结构, 下图所示:
读锁存器 BUF1 R 内部上拉电阻 内部总线 写锁存器 D Q FET P1.x(x=0~7) 引脚 VCC
P1.x锁存器 CL Q BUF2 读引脚
P1口位电路结构示意图
P1口 的使用:
? 作通用I/O接口使用时 ,准双向口 ? 作输出口时,若CPU经内部总线、锁存器、驱动 电路输出“1”数据,则由于D=1,所以Q=1, =0,使FET截止,VCC电压经内上拉电阻R加在 P1口引脚上输出高电平,若CPU输出“0”,则 Q=0,=1
,使FET饱和导通,P1口该位引脚输 出低电平。 ? 作输入口时,有读锁存器和读引脚两种读取方式
3、P2口
功能:双功能的8位并行接口,准双向I/O口 字节地址:A0H 位地址:A0H~A7H。既可以字节访问,也可以 位访问。
P2口的使用:
? P2口可作为通用I/O使用 ? P2口可作为高8位地址总线信息输出端口
P2口每一位I/O口线具有完全相同但又相互独立的 电路结构:下图所示
读锁存器 BUF1 R 内部上拉电阻 内部总线 写锁存器 D Q MUX M 1 FET P2.x(x=0~7) 引脚 地址 控制 VCC
P2.x锁存器 CL Q BUF2 读引脚
P2口位电路结构示意图
4、P3口
功能:双功能的8位并行准双向接口 字节地址:B0H 位地址:B0H~B7H。
P3口的使用:
? 作通用I/O口使用 ? 作数据输入口时,相应位的输出锁存器和第二输 出功能端均应设置为1,M输出端为0 ? 作第二功能的输出/输入端口
P3口的每一位都具有完全相同但又相互独立的电 路结构,而且每一位都可以分别定义第二扩展输入/ 输出功能。 下图所示:
读锁存器 BUF1 内部总线 写锁存器 第二输出功能 VCC R 内部上拉电阻 FET P3.x(x=0~7) 引脚
D
Q
& M
P3.x锁存器 CL Q BUF2 读引脚
BUF3 第二输入功能
P3口位电路结构示意图
5.1.2 并行I/O接口的操作方式
AT89S51单片机的并行I/O接口的操作方式: 1、数据输出 2、读引脚 3、读锁存器 (一)数据输出方式 MOV Px, #data MOV Px, A MOV Px, Rn MOV Px, @Ri ;i=0、1 MOV Px, direct MOV Px.y, C ;y=0~7 CLR Px.y SETB Px.y
(二)数据输入方式——读锁存器 :“读—修改—
写”指令
ANL Px, A/#data ORL Px, A/#data XRL Px, A/#data INC Px
DEC Px
DJNZ Px, lable ;lable为标号 CPL Px,y JBC Px.y, lable
(三)数据输入方式——读引脚 注:先必须通过数据输出操作指令(或复位方式) 将Px口的输出锁存器置为1,才能使该端口的引 脚电平状态通过读引脚输入缓冲器进入内部总线 MOV A, Px MOV direct, Px MOV Rn, Px MOV @Ri, Px MOV C, Px.y
5.2
AT89S51单片机的中断系统
5.2.1 中断概述
1、CPU与外设之间的数据传送方式 无条件传送方式 查询传送方式 中断传送方式 (1)无条件传送方式:优点是CPU始终认为外设时 刻都处于“待命”状态,不需要与外设交换状态 信息,直接将信息传送给外设,缺点是易出错, 能应用的场合少。
(2)查询传送方式:优点是通用性好,可靠性高。缺 点是CPU的等待时间太长,有的外设工作速度很慢, 由于在查询期间,CPU不能进行其他工作,因此CPU 的效率较低。其过程见图
输入状态信息
N
外设是否准备好? Y 传送数据
(3)中断传送方式 在运行过程中,暂停正 在执行的主程序,而转去 执行处理单片机内部或外 部某一突发事件的程序, 待中断服务程序执行完毕 ,CPU再回
到原来被中断 的地方(断点处),继续执 行主程序。优点是可以避 免查询等待的时间,提高 CPU的效率,应用价值极 高。
主 程 序
响应中断请求
继 续 执 行 主 程 序
断点
执 行 中 断 服 务 程 序 RETI
返回主程序
动画
2、引入中断技术的优点
(1)提高了CPU的工作效率,实现了CPU 和外部设备的并行工作 (2)实现实时控制 (3)便于突发故障的及时发现,提高系统可 靠性 (4)用户能通过发出中断请求,随时可以对 运行中的计算机进行干预
3、中断嵌套与中断系统结构
AT89S51单片机的中断系统的组成: (1)5个中断入口
(2)几个与中断有关的特殊功能寄存器 (3)中断允许控制寄存器IE (4)中断优先级控制寄存器IP) (5)中断顺序查询逻辑电路等组成
结构图如下图所示:
0
TCO N IE0 EX0 TF0 ET0 IE1 EX1 TF1 ET1 T1 R1 SCO N 中断标志
≥1
IE
INT 0 (外部中断0)
1 T0(定时器T0中断) 0
IP PX0 PT0 PX1 PT1 PS
1 0 1 0 1 0 1 0 1 0
自 然 优 先 级 矢量 地址
高 级 中 断 请 求 PC
INT1 (外部中断1)
1 T1(定时器T1中断) TX(串行发送中断) RX(串行接收中断)
ES EA 源允许 总允许 优先级 IE(中断允许控制) IP(中断优先级)
自 然 优 先 级 矢量 地址 硬件查询
低 级 中 断 请 求 PC
AT89S51单片机中断系统结构
5.2.2 中断源与中断标志
1、中断源与中断请求信号 (1)外部中断 ①低电平触发方式 ②下降沿触发方式 (2)定时器/计数器中断 (3)串行中断 2、中断标志 (1)定时器控制寄存器TCON
TCON 位符号 位地址
D7 TF1 8FH
D6 TR1 8EH
D5 TF0 8DH
D4 TR0 8CH
D3 IE1 8BH
D2 IT1 8AH
D1 IE0 89H
D0 IT0 88H
①IE0和IE1:外部中断请求 ②IT0和IT1:外部中断请求触发方式 1:下降沿触发,0低电平触发 ③TF0和TF1:定时器/计数器溢出中断请求标志 位,1溢出 ④TR0(TR1):定时器/计数器的运行控制位。1 启动,0停止
(2) 串行口控制寄存器SCON
SCON D7 D6 D5 D4 D3 D2 D1 D0
位符号 SM0 SM1 SM2 位地址 9FH 9EH 9DH
SEN 9CH
TB8 9BH
RB8 9AH
TI 99H
RI 98H
①TI:串行口发送中断请求标志位。 当发送完一帧串行数据后,由硬件置“1”;在转向 中断服务程序后,需要用软件对该位清“0”。 ②RI:串行口接收中断请求标志位。 当接收完一帧串行数据后,由硬件置“1”,在转向中 断服务程序后,需要用软件对该位清“0”
5.2.3 中断向量与中断控制
1、中断向量 定义:中断入口地址(即中断服务程序的 入口地址),当某个中断源的中断请求被CPU 响应之后,CPU便自动将该中断源的中断入 口地址装入程序计数器PC,中断服务程序便 从该地址开始执行,直到执行到RETI指令才 重新回到主程序的断点。 2、中断控制 (1)与中断控制有关的寄存器
①中断允许控制寄存器IE
IE D7 D6 D5 D4 D3 D
2 D1 D0
— — ES ET1 EX1 ET0 EX0 位符号 EA 位地址 AFH AEH ADH ACH ABH AAH A9H A8H
1允许/0禁止 EA:中断允许/禁止位 ES:允许/禁止串行口中断 ET1:允许/禁止定时器T1中断 EX1:允许/禁止中断 ET0:允许/禁止定时器T0中断 EX0:允许/禁止中断
②中断优先级控制寄存器IP
IP
位符号
D7
—
D6
—
D5
—
D4
PS
D3
PT1
D2
PX1
D1
PT0
D0
PX0
位地址 BFH BEH BDH BCH BBH BAH B9H B8H
PS:串行口中断优先级控制位。 PT1:定时/计数器T1中断优先级控制位。 PX1:外部中断1中断优先级控制位。 PT0:定时器/计数器T0中断优先级控制位。 PX0:外部中断0中断优先级控制位。
(2)中断处理过程的三个阶段: 中断响应 中断处理
中断返回
5.2.4 中断服务程序设计应用举例
AT89S51单片机中断系统初始化步骤为: (1)对于外部中断应设定中断请求信号形式(低电 平/下降沿触发); (2)设定所允许中断的中断源; (3)设定所用中断源的中断优先级; (4)将总中断允许标志EA置位; (5)对于定时器/计数器中断应设定工作方式(定 时或计数方式)。
【例5-1】通过P1口扩展八只LED,在引脚(P3.2)接一个自复 位按钮开关到地,每按一下按钮就申请一次中断,点亮一只 LED。中断服务则是:依次循环点亮八只LED中的一只(即按 P1.0—P1.1—…—P1.7—P1.0—…的顺序)。外部中断0采用 边沿触发,低优先级。硬件电路下图所示。试编写主程序和 +5V 中断服务程序。 LED
P1.0 P1.1 P1.2 P1.3 P1.4 AT89S51 P1.5 P1.6 P1.7
INT0
ORG 0000H ;主程序 LJMP MAIN ;主程序转至MAIN ORG 0003H ;中断服务程序入口地址 LJMP INT_0 ;中断服务程序转至INT ORG 0030H ;主程序放在0100H开始的位置 MAIN: MOV SP, #5FH ;建栈 MOV P1, #0FFH ;使LED全灭,本题可略 MOV P3, #0FFH ;P3口置高电平,本题可略 SETB IT0 ;边沿触发方式 SETB EX0 ;开/INT0中断允许“开关” CLR PX0 ;将/INT0设为低优先级 SETB EA ;开总中断允许“开关” MOV A, #0FEH ;给累加器A赋初值,使LED0先亮 SJMP $ ;原地等待中断申请 INT_0:MOV P1,A ;输出到P1口 RL A ;左循环移一位 RETI ;中断返回 END
5.3
AT89S51单片机的定时器/计数器
5.3.1 结构与功能
1、定时器/计数器的结构
振荡器 ÷12
C/T ? 0
MUX 加1计数器 TF0/TF1 中断
T0(或T1)引脚
C/T ?1 控制信号
AT89S51单片机的定时器/计数器结构框图
2、定时器/计数器的功能
(1)计数功能。
(2)定时功能
5.3.2 控制寄存器与工作方式 (1)定时器/计数器工作方式寄存器TMOD
T1 TMOD 位符号 D7 GATE D6 D5 D4 D3 GATE T0 D2 D1 M1 D0 M0
C / T M1 M0
C/T
①GATE:门控位。 0:表示只要用软件使TCON中的运行控制位 TR0(或TR1)置为1,就可以启动T0(或T1),称 为软启动。 1:表示只有在(或)引脚为高电平时,并且用软件 使运行控制位TR0(或TR1)置为1的条件下才可以 启
动T0(或T1),称为硬启动。 ② C / T :定时/计数方式选择位。 0:设置为定时方式,对内部的机器周期进行计数 1:设置为计数方式,通过T0(或T1)的引脚对外 部脉冲信号进行计数。
③M1、M0:工作方式选择位。 M1M0=00:工作方式0,作13位定时器/计数器用 M1M0=01:工作方式1,作16位定时器/计数器用 M1M0=10:工作方式2,为8位计数初值自动装载 方式; M1M0=11:工作方式3,仅适用于定时器/计数器0 ,分为2个独立的8位定时器/计数器用
(2) 定时器控制寄存器TCON (3) 中断允许控制寄存器IE
2、定时器/计数器的工作方式 (4种)
(1)工作方式0——13位工作方式
TMOD M0=0 M1=0
C/T GATE
振荡器
÷12
C/T ? 0
TCON K 控 制 TH0 TL0 高8位 低5位 TF0 TR0 T0溢出中断
MUX T0(P3.4)引脚 1
≥1
C/ T ?1
A & B
INT0 引脚
方式0是13位计数结构的工作方式 其计数器由TH0(或TH1)全部8位和TL0(或TL1)的低 5位构成,TL0(或TL1)的高3位弃之不用。
方式0的定时方式 多路转换开关MUX接振荡器12分频的输出端。 将13位的计数器初值设定后,开始在初值的 基础上对机器周期进行加1计数,当TL0的低5 位溢出时向TH0进位,而TH0溢出时向中断标 志位TF0进位,即TF0由硬件置1,去申请中 断。可通过查询TF0是否置1或是否产生定时 中断,来判断定时器/计数器的定时操作是否 已经完成。其定时时间公式为:
T ? (2 ? X) ? Tc
13
方式0的计数方式 多路转换开关MUX接T0的P3.4引脚,接收外 部输入的脉冲信号。设定好13位的计数器初 值并启动计数器后,开始对外部脉冲进行加1 计数,当引脚上的信号电平发生1到0的跳变 时,计数器加1。 计数值的范围为1~8192(213),当溢出时其记 录脉冲的个数为:
C?2
13
?X
(2)工作方式1——16位工作方式 在方式1下,当设置为定时工作方式时, 定时时间的计算公式为:
T ? (2 ? X) ? Tc
16
式中,X为T0(或T1)的计数初值,Tc为机 器周期。 当设置为计数工作方式时,计数值为:
C?2
16
?X
式中X为T0(或T1)的计数初值,计数值的 范围为1~65536(216)。
(3)工作方式2——8位初值自动装载方式
TMOD M0=0 M1=1 振荡器 ÷12
C/T ? 0
C/T GATE
MUX T0(P3.4)引脚 1
≥1
C/T ?1
A &
K 控 制 B
TL0 低8位
TCON TF0 TR0 T0溢出中断
INT0 引脚
TH0 高8位
方式2的定时方式:其定时的时间公式为:
T ? (2 ? X) ? Tc
8
方式2的计数方式:8位计数器,则其记录脉冲的个数为:
C?2 ?X
8
(4)工作方式3——T0为2个8位方式
控制 TMOD M0=1 M1=1
C/T GATE
TCON TF1 TH0 高8位 TL0 低8位 TR1 TCON TF0 TR0 中断
振荡器
÷12
K
C/T ? 0
MUX T0(P3.4)引脚 1
≥1
C/ T ?1
A & B
K 控 制
中断
INT0 引脚
逻辑电路结构框图
工作特点:只有T0才有工作方式3。T0被拆成两个独
立 的部分TL0和TH0,TL0独占原T0的各个控制位、引脚 和中断溢出标志:、GATE、TR0、TF0、T0(P3.4)引 脚和(P3.2)引脚。除了只用8位TL0之外,其功能及操 作与方式0、方式1完全相同,可用于定时,也可用于 计数。而TH0只可用作简单的内部定时器用,它占用 原T1的控制位TR1和中断标志位TF1,其启动和关闭 只受TR1的控制。 当T0工作在方式3时,T1只能工作在方式0~方式2,因 为它的控制位已被占用,不能置位TF1,而且也不再 受TR1和的控制,此时T1只能工作在不需要中断的场 合,功能受到限制。 一般T0工作在方式3时,T1通常用作串行口波特率发 生器,用以确定串行通信的速率。
5.3.3 定时器/计数器应用编程
(1)确定定时/计数方式、工作方式、计数启动控制
方式,写入TMOD寄存器。 (2)设置定时器或计数器的初值,可直接将初值送 入TH0、TL0或TH1、TL1。 (3)根据要求确定是否采用中断方式来对IE寄存器
赋值。
注:编程时启动定时器工作可使用SETB TR0、
SETB TR1指令。
【例5-2】设AT89S51单片机晶振频率为 6MHz,使用定时器1以工作方式0,产生周期 为500μs的等宽正方波连续脉冲由P1.0输出, 要求以查询方式完成。 分析: (1)计算计数初值。 13 ?6 ?6 (2 - X) ? 2 ?10 ? 250?10 (2)TMOD的确定。 (3)由定时器控制寄存器TCON中的TR1位控 制定时的启动和停止。
(4)程序如下: ORG 0000H AJMP START ORG 0030H START: MOV TMOD, #00H MOV TH1, #0FCH MOV TL1, #03H MOV IE, #00H SETB TR1 LOOP: JBC TF1, LOOP1 AJMP LOOP LOOP1:MOV TH1, #0FCH MOV TL1, #03H CPL P1.0 AJMP LOOP END
;T1工作于方式0 ;设置计数初值
;关中断 ;启动T1计数 ;查询是否计数溢出
;继续查询 ;重新设置计数初值
;P1.0状态取反 ;重复循环
【例5-3】设AT89S51单片机晶振频率为6MHz,使 用定时器1以工作方式1产生周期为500μs的等宽连 续正方波脉冲由P1.0端输出,要求用中断方式来完 成。 分析: (1)计算计数初值: 由,可得X=65411=FF83H,则TH1=FFH, TL1=83H。 (2)TMOD寄存器初始化: M1M0=01,方式1;,定时方式;GATE=0(软启动) 。则TMOD=10H(低4位设置为全0)。
(3)程序如下: ORG 0000H AJMP MAIN ORG 001BH AJMP INT_T1 ORG 0030H MAIN: MOV TMOD, #10H MOV TH1, #0FFH MOV TL1, #83H SETB ET1 SETB EA SETB TR1 SJMP $ INT_T1:MOV TH1, #0FFH MOV TL1, #83H CPL P1.0 RETI END
;T1工作于方式1 ;设置计数初值 ;开T1中断 ;开总中断 ;启动T1计数 ;等待中断 ;重新设置计数初值 ;P1.0状态取反 ;中断返回
【例5-4】已知晶振频率为12MHz,利用T0门控位 GATE测试(P3.2)引脚上出现的正脉冲宽度(设不大于 65ms),下图所示,并以机器周期数形式存放在片 内RAM 71H和70H存储单元中,将所测得值高位存 入71H单元,低位存入70H单元。
INT0 (P3.2)
设TR0=1 T0计数 停止计数
程序如下
: ORG 0000H AJMP START ORG 0030H START: MOV TMOD, #09H ;设T0为方式1,GATE=1 MOV TL0, #00H ;设置计数初值为0 MOV TH0, #00H MOV R0, #70H JB P3.2, $ ;等待P3.2变低 SETB TR0 ;启动T0准备工作 JNB P3.2, $ ;等待P3.2变高 JB P3.2, $ ;等待P3.2再次变低 CLR TR0 ;停止计数 MOV @R0, TL0 ;存放计数的低字节 INC R0 MOV @R0, TH0 ;存放计数的高字节 SJMP $ END
【例5-5】定时器/计数器T0在方式2时对外部 信号计数,要求每计满10次,将P1.0取反。 外部信号由P3.4(T0)引脚输入,每发生一次 负跳变计数器加1。试采用中断方式编写程 序。 分析:本题T0应采用计数方式,计数初值 C=256-10=246。在工作方式2下不需要在中 断服务程序中再次给TH0和TL0设置初值, 这是和方式0、方式1的不同之处。
ORG 0000H AJMP MAIN ORG 000BH AJMP INT_T0 ORG 0030H MAIN: MOV TMOD,#06H ;T0工作于方式2,计数方式 MOV TL0,#246 ;设置计数初值 MOV TH0,#246 SETB ET0 ;开T0中断 SETB EA ;开总中断 SETB TR0 ;T0启动计数 SJMP $ INT_T0: CPL P1.0 RETI END
5.4
AT89S51单片机的串行接口
5.4.1 串行口结构及控制寄存器 1、串行口结构
AT89S51单片机内有一个可编程的全双工串行 口,串行口的结构主要由数据发送和接收部分、波 特率发生器、串行口通信控制寄存器SCON组成。 串行口既可用作通用异步接收/发送器UART,又可 用作同步移位寄存器。串行口收发数据的帧格式有 8位、10位和11位,并可设置固定和可变的波特 率。
写SBUF SBUF 波 特 率 控 制 发送控制 TI RI 接收控制 SBUF 读SBUF
DB
串行中断 ≥1
发送 端口
TXD
接收 端口
RXD
DB
串行口结构框图
2、串行口控制寄存器
? (1)串行口通信控制寄存器SCON ? (2) 电源控制寄PCON
PCON
位符号
D7
SMOD
D6
—
D5
—
D4
—
D3
GF1
D2
GF0
D1
PD
D0
IDL
SMOD=1,在串行口工作在方式1、2、3的条 件下,波特率提高一倍; SMOD=0,在串行口工作在方式1、2、3的条 件下,波特率不倍增。 单片机复位时,SMOD=0。
5.4.2 串行口工作方式及波特率的设置 方式0以8位数据为一帧传输,不设起始位和 停止位,先发送或接收最低位。其帧格式如 下:
… D0 D1 D2 D3 D4 D5 D6 D7 …
方式1以10位为一帧传输,设有一个起始位 “0”,8个数据位(先低位后高位)和1个停止 位“1”,其帧格式如下
起始 D0 D1 D2 D3 D4 D5 D6 D7 停止
方式2和方式3以11位为一帧传输,设有一 个起始位“0”,8个数据位(先低位后高位)、 一个附加第9位和1个停止位“1”。附加的第 9位(D8)发送时在TB8中,接收时在RB8中。 其帧格式为:
起 始 D0 D1 D2 D3 D4 D5 D6 D7 D8 停 止
1、工作方式 串行口工作方式0 波特率是固定的,为fosc/12 (2) 串行口工作方式1 它是波特率可变的异步串行数据通信方式。 其中有1位起始位“0”,8位数据位(低位在
前), 1位停止位“1”。 ①串行口工作方式1发送数据的工作原理
写入SBUF SEND TXD TI 起始位
D0 D1 D2 D3 D4 D5 D6 D7
停止位
②串行口工作方式1接收数据的工作原理。
RXD 空闲位 位检测器 采样 RI 起始位
D0 D1 D2 D3 D4 D5 D6 D7
停止位
(3)串行口工作方式2和工作方式3 每帧11位异步通信格式,波特率不同,方式2 的波特率是固定的,方式3的波特率可变,是由定 时器T1控制的。
①串行口工作方式2/方式3发送数据的工作原理。
写入SBUF SEND TXD TI 起始位
D0 D1 D2 D3 D4 D5 D6 D7 TB8
停止位
②串行口工作方式2/方式3接收数据的工作原理。
RXD 起始位
D0 D1 D2 D3 D4 D5 D6 D7 TB8
停止位
位检测器 采样 RI
2、波特率的设置 (1)方式0的波特率 波特率=fosc/12 (2)方式2的波特率 波特率=fosc×(2SMOD/64) (3)方式1和方式3的波特率 波特率=2SMOD×32×T1的溢出速率 T1的溢出速率=(fosc/12)/(256-X)
波特率=
2SMOD fosc 波特率= 384 256 ? X
5.4.3 串行口应用编程举例
【例5-6】设计一个发送子程序,将片内 RAM 50H~52H单元中的3个字节数据串行 发送,串行口设定为方式2,TB8作奇偶校 验位。在数据写入发送缓冲器之前,先将 数据的奇偶位P写入TB8,这时第9位数据 作奇偶校验用。
TRT:
MOV SCON, #80H ;串行口设定为方式2,TI=0 MOV PCON, #80H ;取波特率为fosc/32 MOV R0, #50H MOV R7, #03H ;数据长度为3 LOOP:MOV A, @R0 ;取数据送A MOV C, P MOV TB8, C MOV SBUF, A ;数据送SBUF,启动发送 WAIT:JBC TI, CONT ;判TI是否为1 SJMP WAIT CONT:INC R0 DJNZ R7, LOOP RET
【例5-7】设计一个接收子程序,将接收的 16个字节数据送入片内RAM 50H~5FH单元 中。串行口设定为方式3,波特率为2400b/s 。接收到的第9位数据作奇偶校验用,若接 收数据出错,则将片内RAM 60H单元置FFH ;如正确接收完,则将60H单元则置0。设 单片机晶振频率为11.0592MHz,定时器T1 作波特率发生器,SMOD=0。
。
2 ? 11.0592? 10 ? 244 ? F4H T1计数初值 X ? 256 ? 384 ? 2400
0 6
RVE: MOV TMOD, #20H ;T1设定为方式2 MOV TH1, #0F4H ;计数初值送TH1和TL1 MOV TL1, #0F4H SETB TR1 ;启动T1 MOV SCON, #0D0H ;串行口设定为方式3,REN=1,SM2=0,RI=0 MOV PCON, #00H ;置SMOD=0 START: MOV R0, #50H MOV R7, #10H ;数据长度为16 WAIT: JBC RI, PRI ;判RI是否为1,若是则一帧数据接收完毕 SJMP WAIT PRI: MOV A, SBUF JNB P , ZZ ;奇偶校验判P=RB8? JNB RB8, ERR ;奇偶校验出错转ERR SJMP RIGHT ZZ: JB RB8, ERR ;奇偶校验出错转ERR RIGHT: MOV @R0, A ;数据送缓冲区 INC R0 DJNZ R7, WAIT ;判断数据块接收完否? MOV 60H, #00H ;正确接收完16个字节,60H单元内容置为0 RET ERR: MOV 60H, #0FFH ;接收数据出错,60H单元内容置为FFH RET
5.5
AT89S51单片机的看门狗定时器
1、WDT的应用
WDTRST的字节地址为A6H,看门狗初始化程 序为: MOV
0A6H, #1EH MOV 0A6H, #0E1H
2、辅助寄存器AUXR
AUXR D7 D6 位符 号 D5 D4
D3
D2 D1
D0 DISAL E
—
—
—
WDIDL DISRT E O
—
—
【例5-8】如图所示,编写流水灯程序,使接于P1口 的8只LED依次循环点亮(按P1.0—P1.1—…— P1.7—P1.0…的顺序),LED点亮时的延时采用例411的软件延时程序加入看门狗功能。 +5V
LED P1.0 P1.1 P1.2 P1.3 P1.4 AT89S51 P1.5 P1.6 P1.7
ORG 0000H AJMP MAIN ORG 0030H MAIN:ACALL WDT_CLR ;激活看门狗 MOV A,#0FEH ;使P1.0所接 LED亮 LOP: MOV P1,A RL A ;使下一个LED亮 ACALL DELAY ;调用延时子 程序 AJMP LOP ORG 0100H DELAY: MOV R6,#10 ;延时子程 序 LOOP1: MOV R7,#200
LOOP:
NOP NOP NOP DJNZ R7,LOOP ACALL WDT_CLR ;喂狗 DJNZ R6,LOOP1 RET WDT_CLR: MOV 0A6H, #1EH ;复位看门狗定时器 MOV 0A6H, #0E1H RET END
本章小结
? 本章介绍了AT89S51单片机内部的主要功能模块(包括并 行输入/输出接口、中断系统、定时器/计数器及串行接口) 的结构、工作原理及应用实例,并介绍了看门狗定时器的 应用。 ? AT89S51单片机内部有四个并行输入/输出接口P0、P1、 P2、P3。中断系统的5个对用户开放的中断源分别是两个 外部中断0和1、两个定时器/计数器溢出中断0和1、1个串 行口中断,这些中断的入口地址是固定的,不可人为改变。 单片机内部具有两个16位的定时器/计数器T0和T1,定时 和计数各有四种工作方式:方式0、1、2、3,其中方式3 仅T0具有。单片机内部还具有一个全双工的串行通信接口, 共有四种工作方式:方式0、1、2、3,其中方式1、2、3 为UART方式,是重点学习的内容。 ? 本章在教学时可运用支持AT89S51的Keil μVision3进行数 字仿真教学,以加强学生对单片机内部资源进行应用编程 的能力。
61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1