内容正文:
外部中断程序设计
更多模板请关注:https://haosc.taobao.com
CONTENTS
目录
01
02
外部中断的初始化
外部中断程序设计
道艺兼修
敬业乐群
外部中断的初始化
01
外部中断的初始化一般包括以下四步:
1、设置中断的触发方式
2、允许外部中断
3
外部中断的初始化
01
如:设置外部中断0工作在边沿触发方式, 初始化如下。
IT0=1;
EX0=1;
EA=1;
4
外部中断程序设计
02
(1)应用于时钟启停控制的电路
5
外部中断程序设计
02
02
(2)按键的工作于中断方式
中断程序里面消抖
6
外部中断程序设计
02
02
(3)程序设计流程图
主程序
开始
初始化
Y
秒==60?
定时器中断50次?
Y
N
Y
次数回0,秒++
分==60?
N
秒回0,分++
时==24?
Y
分回0,时++
N
时回0
N
7
外部中断程序设计
02
02
(3)程序设计流程图
TH、TL初始值
8位动态显示一次
中断入口
记录中断次数
返回
定时器中断程序
标志位==0?
Y
N
8
外部中断程序设计
02
02
(3)程序设计流程图
消抖
中断入口
改变启停控制位状态
返回
外部中断程序
确认中断?
Y
N
9
外部中断程序设计
02
02
#include <reg51.h>
unsigned char code duan[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6f,0x40};// 共阴极数码管字型码
unsigned char shi,fen,miao;
unsigned char dis[8]={0,0,10,0,0,10,0,9};
unsigned char T_count0;
sbit key=P3^2; //特殊位定义,还需要
bit con_flag; //时钟启动控制位
(4)初始化
10
外部中断程序设计
02
02
(5)T0中断程序
void T0_IR( ) interrupt 1
{ unsigned char j;
TH0=0xb1;
TL0=0xe0;
if(con_flag==0)
{
T_count0++;
}
for(j=0;j<8;j++)
{
P2=j;
P0=duan[dis[j]];
delay_nms(1);
}
}
11
外部中断程序设计
02
02
(6)外部中断服务程序
void int0_IR( ) interrupt 0
{
if(key==0) // key=P3.2, 若key=0,键按下
{
delay_nms(10); // 按下消抖
if(key==0) ;//确认按键按下
con_flag=~con_flag; // 改变运行状态控制位
//不用等待抬起,因为是下降沿触发
}
}
12
外部中断程序设计
02
02
13
谢谢观看!
Simple Gifts
Jewel
Lullaby
167584.05
胡祝兵
$$