第5章 中断系统与定时器计数器.ppt

① TMOD确定 T1控制 T0控制 X X X X 1 0 0 0 M0 M1 C/T GATE M0 M1 C/T GATE 控制字10H 要产生500μs 的方波脉冲,只需在P1.0端以250μs为间隔,交替输出高低电平即可实现。为此,定时间应为250μs 。使用6MHz晶振,则一个机器周期为2μs,设待求定时器初值为X,则: ② 计算定时器的初值; (216–X)×2×10 -6 =250×10 -6 即216–X=125 X=216-125=10000H-7DH =0FF83H 所以,初值为: TH1=0FFH,TL1=83H ③ 采用中断方式:编程时将IE控制字设置为 88H,实现开中断。 ④ 由定时器控制寄存器TCON中的TR1位控制定 时器的启动和停止。 TR1=1,启动; TR1=0,停止。 汇编语言源程序清单 ORG 0000H ;复位地址 LJMP MAIN ;跳转到主程序 ORG 000BH ;定时器T0中断入口 LJMP SQ ;跳转到定时器T0中断服务程序 ORG 0030H ;主程序入口地址 MAIN: MOV TMOD,#10H ;主程序,设置TMOD控制字 MOV TL1, #83H ;写入T0定时2毫秒初值 MOV TH1, #0FFH MOV IE, #88H ;开中断,设置IE控制字 SETB TR1 ;启动T0 HERE: SJMP HERE ;循环等待 SQ: CPL P1.0 ;T1中断服务程序,取反P1.0 MOV TL1, #83H ;重装T1定时初值 MOV TH1, #0FFH RETI ;中断返回 END 例2:假设单片机的振荡频率fosc=6MHz,现要求产生1ms的定时,试分别计算定时器T1在方式0、方式1和方式2时的初值。 方式0:最大计数值为M=213,因此定时器的初值应为 X = 213-(1×10-3)/(12/(6×10-6) = 7692D = 1111000001100B 其中高8位为TH1的初值,即F0H,低5位为TL1的初值 注意,这里TL1的初值应即0CH,而不是60H,因为在方式0时,TL1的高3位是不用的,应都设为0。 方式1:最大计数值为M=216,因此定时器的初值应为 X = 216-(1×10-3)/(2×10-6) = 65036D = 1111111000001100B = FE0CH 此时高8位TH1的初值为FEH,低8位TL1的初值为0CH。 方式2:最大计数值为M=28,因此定时器的初值应为 X = 28-(1×10-3)/(2×10-6) = 256-500= -254 计算得到的初值为负值,说明当fosc=6MHz时,不能采用方式2(即常数自动装入)来产生1ms的定时,除非把单片机的时钟频率降得很低。 定时器方式的应用举例 定时时间大于最大定时值如何实现? 利用T0中断方式产生1秒的定时 (设主频f=6M) 中断系统与定时器/计数器 在程序的执行过程中,由于某种外界的原因,必须终止当前执行的程序,而去执行相应的处理程序,待处理结束后,再回来继续执行被终止的程序。这个过程叫中断。 中断的概念 执行主程序 主程序 继续执行主程序 断点 中断请求 中断响应 执行中断处理程序 中断返回 5个中断源,具有二个中断优先级,可实现二级中断服务程序的嵌套。每个中断源均可软件编程为高优先级或低优先级中断,允许或禁止向CPU请求中断。 有关的特殊功能寄存器(SFR)有: 中断允许寄存器IE 中断优先级控制寄存器IP 中断源寄存器(TCON、SCON中的有关位) 注:均可位寻址。 中断系统结构 IE0 TF0 IE1 TF1 TI RI 中断请求标志 EX0 ET0 EX1 ET1 ES ≥1 PX0 PT0 PX1 PT1 PS 高级 低级 内 部 查 询 内 部 查 询 入口地址 入口地址 INT0 INT1 T0 T1 TI RI 中断允许控制 中断优先级 EA 中断源 中断系统结构图 8051单片机共有5个中断源,分别是2个外部中断、 2个定时中断和1个串行中断。 外部中断是: 外部中断0

文档评论(0)

1亿VIP精品文档

相关文档