(八)中断的设计与应用 01 单一外部中断
1、
一 、单一外部中断应用案例
参考代码外部中断0 代码:
1 #include<reg52.h> 2 #define uchar8 unsigned char 3 #define uint16 unsigned int 4 5 /*****************************/ 6 // 函数名称: DelayMS( ) 7 // 函数功能: 延时 8 // 入口函数: 延时毫秒 9 // 出口函数: 无 10 /************************* *******************/ 11 void delay(uint16 val) 12 { 13 uint16 i,j; 14 for( i=0;i<val;i++) 15 for(j=0;j<113;j++); 16 17 } 18 19 void main() 20 { 21 22 EA = 1; // 总中断允许 23 EX0 =1; // 允许外部中断0中断 ,也可以直接 写成 IE=0x81 好像也对了 24 IT0=0; // INT0外部中断为跳变沿触发,当第一个机器周期采样到INT0为低电平时,则IE1置1, 25 //便是外部中断1正向CPU申请中断,当CPU响应中断,转向中断服务程序时,该位由硬件清0 26 while(1) 27 { 28 P0=0; // P0 口 LED 全亮 29 } 30 31 } 32 33 void int0( ) interrupt 0 34 { 35 uchar8 m; 36 EX0=0; // 禁止外部中断0中断 ,感觉妈的没啥用啊,软件仿真的时候多按了几次照样多运行几次 37 for( m=0; m<3; m++) 38 { 39 P0=0x0f; 40 delay(1000); 41 42 P0=0xf0; 43 delay(1000); 44 45 EX0=1; // 中断返回前,打开外部中断0中断 46 47 } 48 49 }
3、 电路图:
实验正确, 疑问 按两次 button ,闪了六次,那么不是就说明 下面这句代码没啥用了嘛??? WHY ??? 草,好像又有用了???
EX0=0; // 禁止外部中断0中断 ,感觉妈的没啥用啊,软件仿真的时候多按了几次照样多运行几次
关于调试,KEil 和 Proteus 联合起来调试外部中断,但是根本就没用,不知道究竟怎样调试外部中断,进入不了外部中断函数
虚拟 port 也不行,点击不懂,tell me why ??????