第66节:单片机外部中断的基础
字模的驱动函数
TH0=0xfe; //重装初始值(65535-500)=65035=0xfe0b
TL0=0x0b;
TR0=1; //开中断
}
/* 注释一:
* 用朱兆祺51学习板中的S1按键作为模拟外部中断0的下降沿脉冲输入。
* 原来S1按键是直接连接到P0^0口的,因此必须通过跳线把P0^0口连接到
* 单片机外部中断0专用IO口P3^2上,只需把P0^0和P3^2的两个黄颜色跳冒去掉,通过一根
* 线把P0^0和P3^2相互连接起来即可。这时每按下一次S1按键,就会给P3^2口
* 产生一个下降沿的脉冲,然后程序会自动跳到以下中断函数中执行一次。
* 由于按键按下去的时候有抖动,也就按一次可能产生几个脉冲,所以按一次往往看到数据一次加了三四个,
* 这种实验现象都是正常的。
*/
void INT0_int(void) interrupt 0 //INT0外部中断函数
{
EX0=0; //禁止外部0中断 这个只是我个人的编程习惯,也可以不关闭
uiPluseCnt++; //累计外部中断下降沿的脉冲数
ucWd1Update=1; //窗口1更新显示
EX0=1; //打开外部0中断
}
void delay_short(unsigned int uiDelayShort)
{
unsigned int i;
for(i=0;i
{
; //一个分号相当于执行一条空语句
}
}
void delay_long(unsigned int uiDelayLong)
{
unsigned int i;
unsigned int j;
for(i=0;i
{
for(j=0;j<500;j++) //内嵌循环的空指令数量
{
; //一个分号相当于执行一条空语句
}
}
}
void initial_myself() //初始化单片机
{
/* 注释二:
* 矩阵键盘也可以做独立按键,前提是把某一根公共输出线输出低电平,
* 模拟独立按键的触发地,本程序中,把key_gnd_dr输出低电平。
* 朱兆祺51学习板的S1就是本程序中用到的一个独立按键。S1经过跳线后
* 连接到单片机的外部中断专用接口P3^2上,用来模拟外部下降沿脉冲输入。
*/
key_gnd_dr=0; //模拟独立按键的地GND,因此必须一直输出低电平
beep_dr=1; //用PNP三极管控制蜂鸣器,输出高电平时不叫。
TMOD=0x01; //设置定时器0为工作方式1
TH0=0xfe; //重装初始值(65535-500)=65035=0xfe0b
TL0=0x0b;
}
void initial_peripheral() //初始化外围
{
ucDigDot8=0; //小数点全部不显示
ucDigDot7=0;
ucDigDot6=0;
ucDigDot5=0;
ucDigDot4=0;
ucDigDot3=0;
ucDigDot2=0;
ucDigDot1=0;
EX0=1; //允许外部中断0
IT0=1; //下降沿触发外部中断0 如果是0代表低电平中断
/* 注释三:
* 注意,由于本系统中用了2个中断,一个是定时中断,一个是外部中断,
* 因此必须设置IP寄存器,让外部中断0为最高优先级,让外部中断0可以打断
* 定时中断。
*/
IP=0x01; //设置外部中断0为最高优先级,可以打断低优先级中断服务。实现中断嵌套功能
EA=1; //开总中断
ET0=1; //允许定时中断
TR0=1; //启动定时中断
}
总结陈词:
这节讲了外部中断的基本程序模板,下一节我会讲一个外部中断的实际应用项目例子。欲知详情,请听下回分解----利用外部中断实现模拟串口数据的收发。
单片机外部中 相关文章:
- 单片机外部中断的电平触发和边沿触发程序(12-01)
- 单片机外部中断详解及程序(12-01)
- 合泰单片机外部中断程序(12-01)
- AVR单片机外部中断C程序框架(12-01)
- 松翰单片机外部中断(11-30)
- PIC单片机外部中断(11-29)