当前位置:文档之家› c51单片机的定时器和中断

c51单片机的定时器和中断


二、方式1 方式
方式1结构 图6-5 T0 (或T1) 方式 结构 或
三、方式2 方式
TMOD 申请 TCON 中断 D7 TF1 TR1 TF0 TR0 T1引脚 溢出 TL1 重装初值控制 TH1 8位 &
≥1
0 1
M0 M1 C/T
D4
1
1 0
机器周期
GATE D7
1 INT1引脚
D0
方式2结构 图6-6 T0 (或T1) 方式 结构 或
图6-3 方波硬件设计和仿真波形
(2)源程序 ) //中断方式 中断方式 #include "reg51.h" #include "stdio.h" Uart_Init(); sbit P1_1=P1^1; void main() { TMOD=0X01; // T0工作在方式 工作在方式1 工作在方式 TL0=0xB0; //给TL0置初值 给 置初值 TH0=0x3c; //给TH0置初值 给 置初值 ET0=1; //开串行口中断 开串行口中断 EA=1; TF0=0; TR0=1; //启动 启动T0 启动 while(1) ; //设置断点处 设置断点处 } void Int_T0() interrupt 1 using 2 { TL0=0xB0; TH0=0x3c; //重赋初值 重赋初值 P1_1=!P1_1; //定时时间到 定时时间到P1_1取反 定时时间到 取反 printf("Timer1 overflow in Mode 1\n");/* 定时 溢出后, 器0溢出后,输出提示信息 */ 溢出后 }
计数器控制寄存器TCON 三、定时/计数器控制寄存器 定时 计数器控制寄存器
定时器控制字TCON的格式如下。 位地址 位符号 8FH TF1 8EH TR1 8DH TF0 8CH TR0 8BH IE1 8AH IT1 89H IE0 88H IT0
各位定义如下: ⑴ TF1-定时器T1溢出标志。当定时器T1计满溢出时,由硬件使TF1置“ 并且申请中断。进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件 ⑵ TF0-定时器T0溢出标志。当定时器T0计满溢出时,由硬件使TF0置“ 并且申请中断。进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件 ⑶ TR1 —— 定时 / 计数器T1运行控制位。软件置位,软件复位。 与GATE有关,分两种情况: 当GATE = 0 时,若TR1 = 1,开启T1计数工作; 若TR1 = 0,停止T1计数。 当GATE = 1 时,若TR1 = 1 且/INT1 = 1时,开启T1计数; 若TR1 = 1 但 /INT1 = 0,则不能开启T1计数。 若TR1 = 0, 停止T1计数。
四、定时/计数器的初始化 定时 计数器的初始化
1.定时器初始化的主要步骤 . 选择工作方式,即对TMOD 赋初值。 ⑴ 选择工作方式,即对 给定时器赋初值,即把初始常数装入TH0 TL0 或 TH1 TL1。 ⑵ 给定时器赋初值,即把初始常数装入 ⑶ 根据需要设置中断控制字 直接对中断允许寄存器IE 和 优先级寄存器 IP 设置。 启动定时/计数器 ⑷ 启动定时 计数器 ① 若已规定用软件启动(即GATE =0), 则可把TR0 或 TR1 置1 ② 若已规定由外中断端子电平启动(即GATE =1), 则需给外端子加启动电平。 2.定时器初值设定方法 . 根据定时长短,选择工作方式 设用M 选择工作方式, ⑴ 根据定时长短 选择工作方式,设用 表示最大计数值,则 各种方式计数最大值如下。 方式 0 M= 213=8192 方式 1 M= 216=65536 方式 2 M= 28=256 方式 3 M=28=256
=0,M1M0=00;T0不用可为任意方式,只要不使其进入方式 即可, , 不用可为任意方式, 即可, ; 不用可为任意方式 只要不使其进入方式3即可 一般取0即可 即可。 各位设置如下: 一般取 即可。TMOD各位设置如下: 各位设置如下
GATE 0 0 M1 0 M0 0 GATE 0 0 M1 0 M0 0
(3)Proteus仿真 ) 仿真 经Keil软件编译通过后,可利用Proteus软件进行仿真。 在Proteus ISIS编辑环境中绘制仿真电路图,或者打开配套光盘中的 “例程\第六章\例6-1 方波”文件夹内的“方波.DSN”仿真原理图文件。 将编译好的“方波.hex”文件加入AT89C51,启动仿真。 如图6-3所示,可以看到周期为100ms的方波。 (4)下载验证 ) 本实验可以通过SP-28 USB下载验证,可以观察到VD2不停的亮灭。
(3)M1、M0-工作方式选择位,其功能见表6-1。 表6-1 M1和M0 工作方式选择位 M1 0 0 1 1 M0 0 1 0 1 模式 0 1 2 3 说明 13位定时 计数器,高八位 (7~0)+ 低五位 位定时/计数器 高八位TH ~ ) 低五位TL 位定时 计数器,
(4 ~0) )
16位定时 计数器 TH(7 ~ 0)+ TL(7 ~ 0) 位定时/计数器 位定时 ) ) 8位计数初值自动重装 TL(7 ~ 0) TH(7~0) 位计数初值自动重装 ) ~ ) T0运行,而T1停止工作,8位定时 计数。 运行, 停止工作, 位定时 计数。 位定时/计数 运行 停止工作
定时/计数器 计数器4种工作方式 第二节 定时 计数器 种工作方式
一、方式0 方式
TMOD 申请 TCON 中断 D7 TF1 TR1 TF0 TR0 T1引脚 溢出 TH1 0 0 0 TL1 8位 5位 &
≥1
0 0
M0 M1 C/T
D4
1
1 0
机器周期
GATE D7
1 INT1引脚
D0
方式0结构 图6-4 T0(或T1)方式 结构 或 方式
(1)硬件设计 ) 硬件设计见图6-3所示。 硬件设计见图
图6-8 1ms方波
例6.3 用AT89S51单片机产生“嘀、嘀、…”报警声从P3.7端口输出, 产生频率为1KHz, 1KHZ方波从P3.7输出0.2秒,接着0.2秒从P3.7输出电平信号, 如此循环下去,就形成所需的报警声了。 解:生活中常常到各种各样的报警声,例如“嘀、嘀、…”就是常见的一种声音报警声, 但对于这种报警声,嘀0.2秒钟,然后断0.2秒钟,如此循环下去, 假设嘀声的频率为1KHz,则报警声时序图如图6-9所示。
C /T = 0
C /T =1
图6-2 定时/计数器的工作原理结构框图
二、定时/计数器工作方式控制寄存器 TMOD 定时 计数器工作方式控制寄存器 TMOD为T0、T1的工作方式控制寄存器,其格式如下。
C /T /T
定时器 T1
定时器T0
GATE
C/T
M1
M0
GATE
C/T
M1
M0
(1)GATE -门控位,控制定时器的两种启动方式, 当GATE = 0,只要TR0 或 TR1 置1, 定时器则可启动。GATE = 1,除TR0 或 TR1 置1 外,还必须等待外部脉冲输入端 P3.4 或P3.5 高电平到,定时器才能启动。若外部输入低电平,则 定时器关闭,这样可实现由外部控制定时器的启停,故称该位 为门控位。
一、定时/计数器的结构和工作原理 定时 计数器的结构和工作原理 1.定时/计数器的结构 .定时 计数器的结构
图6-1 TMOD、TCON与T0、T1的结构框图
2.定时/计数器工作原理 .定时 计数器工作原理 定时器工作前先装入初值,利用送数指令将初值装入TH0 和 TL0 或 TH1和TL1, 高位数装入TH0 和TH1,低位数装入 TL0 和 TL1。当发出启动命令后, 装初值寄存器开始计数,连续加1,每一个机器周期加1 一次,加到满值(各位全1)。 若再加1,则溢出,同时将初值寄存器清零。如果继续计数定时,则需要重新赋初值。

D0
INT0引脚
方式3下的逻辑结构 图6-7 T0方式 下的逻辑结构 方式 2.T0工作方式 下的定时器 计数器 . 工作方式 下的定时器/计数器 工作方式3下的定时器 计数器T1 如果定时器/计数器T0已工作在工作方式3,则定时器/计数器T1只能工作在方式0、 方式1或方式2下,因为它的运行拉制位TR1及计数溢出标志位 TF1已被定时器/计数器T0借用,如图6-7所示。
故TMOD = 00H。系统复位后TMOD为0,所以不必对TMOD置初值。 下面计算500µs定时T1的初值: 机器周期 T机=12/fosc=12/(6×106)=2µs 设初值为X则:(213-X)×2×10-6 s =500×10-6 s X = 7942D=1111100000110B=1F06H 因为在作13位计数器用时,TL1高3位未用,应写0,X的低5位装入TL1的低5位, 所以TL1=06H;X的高8位应装入TH1,所以TH1=F8H。
定时器/计数器的应用举例 第三节 定时器 计数器的应用举例
一、方式0、方式 的应用 方式 、方式1的应用
/T /T 选择T1方式0用于定时, P3.7引脚输出周期为1ms的方波 晶振fosc= 6MHz。 T1方式 引脚输出周期为1ms的方波, 例C6.2 选择T1方式0用于定时,在P3.7引脚输出周期为1ms的方波,晶振fosc= 6MHz。 根据题意,只要使P3.7每隔500 取反一次即可得到1ms方波, P3.7每隔500µs 1ms方波 解:根据题意,只要使P3.7每隔500 s取反一次即可得到1ms方波, C / T T1的定时时间为500µs 因而T1的定时时间为500 设为定时方式0: 因而T1的定时时间为500 s。将T1设为定时方式 :GATE=0, 设为定时方式 ,
定时初值计算,设初值为X,最大计数值为M。 ⑵ 定时初值计算,设初值为 初值X与机器周期I机及定时时间T的关系为: (M-X)T机 = T (6-1) 其中: 其中:T机 =12个时钟周期 =12 /fOSC X = M - T/ T机 (6-2)
相关主题