请教外部中断问题
为什么一启动,P0.4亮,其他灭??
- /*
- 中断 2012-8-17
- 线路:
- P0.0、P0.4、P0.7各接一led
- P3.2、P3.3各接一按钮
- 要求:
- 初始状态,P0.0 led亮
- 当P3.2按钮按下时,中断,让P0.4 led 亮延时,然后灭,P0.0 led继续亮;
- 当P3.3按钮按下时,中断,让P0.7 led 亮延时,然后灭,P0.0 led继续亮
- */
- #include
- #define uint unsigned int
- sbit led_1 = P0^0;
- sbit led_2 = P0^4;
- sbit led_3 = P0^7;
- void ys(uint ms){//延时
- uint i;
- while(ms--){
- for(i=0;i<120;i++);
- }
- }
- void zd_init(){//中断初始化
- EX0 = 1;//打开外部中断0、1
- EX1 = 1;
- IT0 = 1;//下降沿触发中断0、1
- IT1 = 1;
- IP = 0x05;//外部中断0、1的优先级为高
- EA = 1;//打开全局中断
- }
- void zd_0(void) interrupt 0{//外部中断0
- led_2 = 0;
- ys(250);
- }
- void zd_1(void) interrupt 2{//外部中断1
- led_3 = 0;
- ys(250);
- }
- void mian(void){
- zd_init();//定时器初始化
- while(1){
- P0 = 0xff;
- };
- }
复制代码
此帖出自
小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
#define uchar unsigned char
#define uint unsigned int
sbit LED_1=P0^0;
sbit LED_2=P0^4;
sbit LED_3=P0^7;
void DelayMS(uint x)
{
uchar t;
while(x--) for(t=0;t<120;t++);
}
void main()
{
IE=0x85;
IT0=1;
IT1=1;
P0=0xfe;
}
//INT0中断函数
void EX_INT0() interrupt 0
{
P0=0xef;
DelayMS(500);
P0=0xfe;
}
//INT1中断函数
void EX_INT1() interrupt 2
{
P0=0x7f;
DelayMS(500);
P0=0xfe;
}
按照你的思路写的程序,试过了可以成功.你看下.
一周热门 更多>