1、 第六课 中断、定时器函数的设计使用 1教学内容:中断、定时器函数的设计使用教学重点: 中断、定时器函数的设计教学难点:中断、定时器函数的使用教学目的:1、掌握中断、定时器函数的设计2、掌握中断、定时器函数的使用一、 中断和定时器使用所必须基础知识1、中断1)中断的概念在程序执行的过程中插入另外一段程序的执行就称为中断2) MCS-51 单片机的中断系统结构(中断示意图)3) 中断允许控制寄存器的介绍(IE)4) 中断优先级5) 中断函数的定义例:void 函数名( ) interrupt04Void time0( ) interrupt1D1=0;6) 中断函数和子函数的区别7)中断响应的条
2、件2、定时计数器 两个 16 位的定时计数器,T0,T1 四种工作方式 初始化步骤:1)对 TMOD 赋值,确定 T0 和 T1 的工作方式2)计算初值,并将其写入 TH0,TL0,TH1,TL13)中断方式时,对 IE 赋值,开放中断4)使 TR0,TR1 置 1,启动 T0,T1例: MOV TMOD,#01HMOV TH0,#0B0HMOV TL0,#3CHSETB EASETB ET0SETB TR0二、实战练习例 1:利用定时计数器让发光二极管以 1HZ 闪烁。#include /52 单片机头文件#include /包含有左右循环移位子函数的库#define uint unsign
3、ed int /宏定义#define uchar unsigned char /宏定义sbit P1_0=P10;uchar tt;void main() /主函数TMOD=0x01;/设置定时器 0 为工作方式 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;/开总中断ET0=1;/开定时器 0 中断TR0=1;/启动定时器 0while(1);/等待中断产生void timer0() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;tt+;if(tt=20)tt=0;P1_0=
4、P1_0;例 2:利用定时/计数器 T1 产生定时时钟由 P1 口控制 8 个发光二极管,使 8 个指示灯依次一个一个闪动,闪动频率为 10 次/秒(8 个灯依次亮一遍为一个周期 ),循环。设晶振频率为 12MHz。#include /52 单片机头文件#include /包含有左右循环移位子函数的库#define uint unsigned int /宏定义#define uchar unsigned char /宏定义sbit P1_0=P10;uchar tt,a;void main() /主函数TMOD=0x01;/设置定时器 0 为工作方式 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;/开总中断ET0=1;/开定时器 0 中断TR0=1;/启动定时器 0a=0xfe;while(1);/等待中断产生void timer0() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;tt+;if(tt=2)tt=0;P1=a;a=_crol_(a,1);三、小结:通过本次的学习要掌握中断、定时器函数的设计。课后督促大家多花时间练习。四、作业:用数码管显示一个电子时钟。