单片机第六章 定时器计数器与串行通信口

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.工作方式控制寄存器TMOD (89H)
控 制 T1 控 制 T0
89H
GATE
C/T M 1 M 0 GATE C/T 和T0 类同
M1
M0 M1 M0 00 01 10 11 0 1 0 1 方 式 方式0 方式1 方式2
方式3
定时器模式 计数器模式 与INT 0 无关 与INT 0 有关
GATE——门控位
当T1用作串行口的波特率发生器时,T0才工作 在方式3。T0处于方式3时, T1可定为方式0、方式 1和方式2,用来作为串行口的波特率发生器(通常 设置成方式2 ),或不需要中断的场合。
6.1.4
定时/计数器常数的计算
1.计数器初值的计算 • 把计数器计满为零所需要的计数值设定为C,计 数初值设定为TC,由此可得到公式: TC=M-C • 式中,M为计数器模值,该值和计数器工作方式 有关。在方式0时M为213;在方式1时M为216;在 方式2和方式3时M为28。
0:以运行控制位TRX(X=0,1)来启动定时器/计 数器运行。
1:TRX=1且中断引脚(INT0或INT1)上为高电平时, 启动定时器/计数器运行。
6.1.3
定时器/计数器的工作方式(4种)
1. 方式0—13位方式
振荡器 1/12 C/T=0 C/T=1 1 & ≥1 计数 器 定时 器
计数脉冲输入
• 把计数值换算成二进制装入THX、TLX中。
2.定时器初值的计算 在定时器模式下,计数器由单片机主脉冲经12 分频后计数。因此,定时器定时时间T的公式: T=(M-TC)TP 上式也可写成:TC=M-T/TP
M:模值,和定时器的工作方式有关; TP:单片机的机器周期(振荡周期TCLK的12倍); TC:定时器的定时初值。
6.1.2
定时器/计数器的控制寄存器
1.启/停与中断控制寄存器TCON (88H) D7 D6 D5 D4 D3 D2 D1 D0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 中断请求标志 启动定时/计数器 触发方式选择
0 停止 1 启动 0 低电平 1 下降沿
TCON可位寻址,字节地址是88H,复位时所有位 清零。低4位与外部中断有关,已介绍。高4位的功 能如下: (1) TF1、TF0——计数溢出标志位,计数溢出时由 硬件自动置1,向CPU请求中断,当CPU响应时,由 硬件清0。 (2) TR1、TR0——计数运行控制位 1:启动定时器/计数器工作 0:停止定时器/计数器工作
6.1.6 定时器/计数器的实时性 注意:从回0溢出到主机响应中断造成的时延。 方法:在中断服务程序中对TLX、THX、重新置初值时,应 将当前的TLX、THX值读出来重新补偿到初值中。 CLR EA ;禁止中断 MOV A,TLX ;读TLX中已计数值 ADD A,#LOW ;LOW为低字节初值 MOV TLX,A ;设置低字节初值 MOV A,#HIGE ;高字节初值送A ADDC A,THX ;高字节初值补偿 MOV THX,A ;设置高字节初值 SETB EA ;开中断
例:方式1,定时时间为5ms,主频为6MHz,求计数 初值?
3.初始化设置顺序
• • • •
工作方式控制字TMOD的设置; 计数初值的装入; 开中断; 启/停位的设置等。
6.1.5 定时器/计数器的编程和应用 由于方式0是为兼容MCS-48而设,其计数初值 计算复杂,在实际应用中,一般不用方式0,而采 用方式1。 一、方式1应用 例:假设系统时钟频率采用6MHz,要在P1.0上输出一 个周期为2ms的方波,如图所示。
二、同步通信方式 在同步通信中,以一串字符为一个传送 单位,字符间不加标识位,在一串字符开 始用同步字符标识,硬件要求高,通讯双 方须在时钟上必须严格同步。数据传输时, 中间不允许断流,否则将出错。
三、串行通信的制式
四、串行通信中的数据校验
奇偶校验:是一个表示给定位数的二进制数 中 1 的个数是奇数还是偶数的二进制数。 奇偶校验位是最简单的错误检测码。
ORG 0000H RESET: AJMP MAIN ORG 000BH AJMP IT0P ORG 0100H MAIN: MOV SP,#60H MOV TMOD,#01H
;转主程序 ;T0的中断入口 ;转T0中断处理程序IT0P
;设堆栈指针 ;设置T0为方式1
ACALL PT0M0 HERE: AJMP HERE PT0M0: MOV TL0,#0CH MOV TH0,#0FEH SETB TR0 SETB ET0 SETB EA RET ITOP: MOV TL0,#0CH 值 MOV TH0,#0FEH CPL P1.0 RETI
(3)10次计数的实现 对于中断10次计数,采用循环程序的方法实现。 (4)程序设计 参考程序 : ORG RESET: LJMP ORG LJMP ORG MAIN: MOV MOV
0000H MAIN ;上电,转主程序入口MAIN 000BH ;T0的中断入口 IT0P ;转T0中断处理程序IT0P 1000H SP,#60H ;设堆栈指针 B,#0AH ;设循环次数10次
6.1.7 运行中读定时器/计数器 方法:先读(THX),后读(TLX),再读(THX)。若 两次读得(THX)相同,则读得的内容正确。若前后 两次读得的(THX)有变化,则再重复上述过程,这 次重复读得的内容就应是正确的。 RDTIME:MOV MOV CJNE
MOV RET
A,TH0 ;读(TH0) R0,TL0 ;读(TL0) A,TH0,RDTIME;比较2次读得的(TH0) ,不相等则重复读 R1,A ;(TH0)送入R1中
1/12
C/T=0 TLX C/T=1 & THX TFX 去串口
≥1
初值同时送THX、TLX,启动后可无限次运行,常用 于串行口波特率的产生。
4. 方式3—2个8位方式 只适用于定时器/计数器T0 。此时T1可用来作 串行口波特率产生器。 T0分为两个独立的8位计数器:TL0和TH0 。TL0 使用T0的状态控制位C/T*、GATE、TR0、,而TH0 被固定为一个8位定时器(不能作外部计数模式), 并使用定时器T1的状态控制位TR1和TF1。 各引脚与T0的逻辑关系如图所示:
(1)计算初值
设:需要装入T0的初值为X,则有: (216-X)×2×10-6=1×10-3 216-X=500 X=65036 X化为16进制,即X=FE0CH=1111111000001100B。 所以,T0的初值为: TH0=0FEH TL0=0CH
(2)初始化程序设计
(3)程序设计 中断服务程序除了完成要求的产生方波这一工作 之外,还要注意将计数初值重新装入定时器中,为 下一次产生中断作准备。 参考程序:
循环冗余校验(CRC):CRC在传输或者储存 之前计算出来并且附加到数据后面,然后接 收方进行检验确定数据是否发生变化。
五、通用异步收发器(UART)的功能 1.发送器:并串数据格式转换,添加标识 位和校验位,一帧发送结束,设置结束标志, 申请中断。 2.接收器:串并数据格式转换,检查错误, 去掉标识位,保存有效数据,设置接收结束 标志,申请中断。 3.控制器:接收编程命令和控制参数,设置 工作方式:同步/ 异步、字符格式、波特率、 校验方式、数据位与同步时钟比例等。
TLX THX
低5位 8位
TFX
TX TRX
GATE INTX
13位计数器
2. 方式1—16位方式
振荡器 TX TRX GATE INTX 1
1/12
C/T=0
C/T=1
&
≥1
TLX THX TFX 8位 8位
16位计数器
3. 方式2—8位自动装入时间常数方式
振荡器
TX TRX GATE INTX 1
;调用子程序PT0M0 ;自身跳转 ;T0初始化程序,T0置初值 ;启动T0 ;允许T0中断 ;CPU开中断 ;T0中断服务子程序,T0重置初
;P1.0的状态取反
例:假设系统时钟为6MHz,编写定时器T0产生1秒定 时的程序。 (1)定时器T0工作方式的确定 因定时时间较长,采用哪一种工作方式?由定时器各 种工作方式的特性,可计算出: 方式0最长可定时16.384ms; 方式1最长可定时131.072ms; 方式2最长可定时512s。 选方式1,每隔100ms中断一次,中断10次为1s。 (2)计算计数初值 因为:(216-X)×2×10-6 = 10-1 所以:X=15536=3CB0H 因此:TH0=3CH,TL0=B0H
例:利用定时器T1的方式2对外部信号计数,要求每计 满100个数,将P1.0取反。 (1)选择工作方式 外部信号由T1(P3.5) 脚输入,每发生一次负跳变 计数器加1,每输入100个脉冲,计数器产生溢出中 断,在中断服务程序中将P1.0取反一次。 T1工作在方式2的控制字为TMOD=60H。不使用T0 时,TMOD的低4位可任取,但不能使T0进入方式3, 这里取全0。 (2)计算T1的初值 X=28-100=156=9CH 因此,TL1的初值为9CH,重装初值寄存器TH1=9CH
异步通讯双方的两项约定 (1)帧格式:帧格式的规定是双方能够在对同 一种0和1的串理解成同一种意义。从通用、方 便的角度出发,一般还是使用一些标准为好, 如采用ASCII标准(串行通信中为10位)。 (2)波特率:(位/秒)对传送速率的规定。 例:要求每秒传送120个字符,每帧为10位。 解: 10b×120/s=1200b/s=1200波特 每位传输时间为0.83ms
MOV MOV MOV SETB SETB SETB HERE: SJMP ITOP: MOV MOV DJNZ CLR LOOP: RETI
TMOD,#01H ;设T0工作在方式1 TL0,#0B0H Leabharlann Baidu给T0设初值 TH0,#3CH TR0 ;启动T0 ET0 ;允许T0中断 EA ;CPU开放中断 HERE ;等待中断 TL0,#0B0H ;中断子程序,重装初值 TH0,#3CH ; B,LOOP TR0 ;1s定时时间到,停止T0工作
(3)程序设计
ORG LJMP ORG CPL RETI ORG MAIN: MOV MOV MOV SETB SETB SETB HERE: AJMP 0000H MAIN 001BH P1.0
;T1中断服务程序入口 ;P1.0位取反
0100H TMOD,#60H ;设T1为方式2计数 TL0,#9CH ;T0置初值 TH0,#9CH TR1 ;启动T1 ET1 ;允许T1中断 EA ;CPU开放中断 HERE
第六章 定时器/计数器与串行通信口
定时器/计数器学习目标
定时器/计数器的结构及原理
定时器/计数器的各种工作方式 掌握定时器/计数器的应用
6.1.1
定时/计数器的基本原理
定时/计数器的核心部件是二进制加1计数器 (TH0、TL0或TH1、TL1) 。 1. 定时功能----计数输入信号是内部时钟脉 冲,每个机器周期使寄存器的值加1。所以, 计数频率是振荡频率的1/12。 2. 计数功能----计数脉冲来自相应的外部输入 引脚,T0为P3.4,T1为P3.5。当输入脉冲信号 从1到0的负跳变时,计数器就自动加1。计数的 最高频率为振荡频率的1/24。
6.2.2 MCS-51单片机串行口结构 MCS-51有一个可编程的全双工串行通 信接口,可作为通用异步接收/发送器 UART,也可作为同步移位寄存器。它的帧 格式有8位、10位和11位,可以设置为固 定波特率和可变波特率,给使用者带来很 大的灵活性。
6.2
单片机的串行通信
单片机串行通信I/O接口的结构 串行通信控制寄存器 单片机串行通信的工作方式 串行通信应用。
6.2.1
串行通信的概念
通 信 方 式
并行通信方式—空间上区分各位数据 及联络控制信号。占 用传输线多,速度快。
串行通信方式—时间上区分各位数据 及联络控制信号。占 用传输线少,速度慢。
串行通信方式 ----信息传输在一个方向上只占 用一跟通信线,它既作为数据线,又作为联络 线。
异步通信方式—按字符传输
信息 格式 上分
同步通信方式—按数据块传输,要 求时钟严格同步。
一、异步通信方式
数据是以帧为单位传送的。每1帧数据由 1个字符代码组成,而每1个字符代码又是由 起始位、数据位、奇偶校验位和停止位四个 部分组成。
相关文档
最新文档