小弟最近初学单片机,用C语言编程,买了一块板子,想用单片机的外部中断做几个试验,我想实现的效果是当 单片机上电之后,小灯闪烁,然后当按下一个按键之后产生外部中断,小灯停止闪烁一段时间之后,另外一个小灯闪烁, 就是这么一个简单的功能,可是无奈我对单片机的中断执行过程不是很清楚,写出的程序,上电之后发现单片机并不响应键盘的外部中断!还是上电时的初始状态,哪位大哥(大姐也行)能贴一下代码帮我解决一下这个问题么?(我的单片机独立键盘由P1.0-P1.3口控制,8个LED灯由P0口控制)下面是我写的代码
#include <reg52.h> sbit key0=P1^0; //按键位 sbit D=P3^2; //外部中断口 void keydelay(int z)//消抖延时函数 { int x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }
void delaytime(int ms)//控制小灯的闪烁 { int x,y; for(x=ms;x>0;x--) for(y=200;y>0;y--); }
void main() { IT0=0; EA=1; EX0=1; P1=0xff; //独立键盘位置1 while(1) { if(key0==0) // 判断键盘是否按下 keydelay(15);//消抖 if(key0==0) { D=0;//产生外部中断 while(!key0); }
while(1)//上电时小灯闪烁 { P0=0xfe; delaytime(10); P0=0xff; delaytime(10); } } }
void extinter() interrupt 0 //中断处理 { P0=0xff; //灯灭 delaytime(5); while(1) { P0=0x7f; delaytime(10); P0=0xff; delaytime(10); }
}
[此贴子已经被作者于2008-11-21 12:38:58编辑过]
|