P3.2 P3.3接两个按键 中断INT0控制变量ledmod INT1控制变量tk,为什么按这两个按键都会改变ledmod的值呢?
include <STC12C5A60S2.H> #include <intrins.h> sbit FN1=P3^2; sbit FN2=P3^3; unsigned int ledmod=1; //LED模式标识 unsigned int tk=5; //LED时间变量 unsigned char pwroff=0; //掉电模式标识 void Fn1int(void); void Fn2int(void); void Ledmod1(void); void Ledmod2(void); void Ledmod3(void); void Pwrdown(void); void Delay(unsigned int n); void Intsystemset(void) //中断配置 { IT0=0; EX0=1; IT1=0; EX1=1; EA=1; } void Delay(unsigned int n) //延时程序 { unsigned int i,j; for(i=0;i<n;i++) for(j=0;j<50;j++); } void Fn1int() interrupt 0 //INT0中断 { unsigned int m0=ledmod; EA=0; pwroff=0; Delay(200); if(FN1==0) { while(FN1==0) { } if(m0>=3) {ledmod=1;} if((m0>=1)&&(m0<3)) {ledmod=ledmod+1;} } EA=1; } void Fn2int() interrupt 2 //INT1中断 { unsigned int e1=tk; EA=0; pwroff=0; Delay(200); if(FN2==0) { while(FN2==0) { } if(e1<=1) {tk=10;} if((e1>1)&&(e1<11)) {tk=tk-1;} } EA=1; } void Pwrdown(void) //掉电模式函数 { P4SW=0X70; P0=0X00; P1=0X00; P2=0X00; P4=0X00; //进入掉电模式 PCON=0X02; _nop_(); _nop_(); } void main(void) //主函数 { unsigned int mi,mj; P4SW=0X70; P0M1=0X00; P0M0=0X7F; P1M1=0X00; P1M0=0X7F; P2M1=0X00; P2M0=0X7F; P4M1=0X00; P4M0=0X3F; //端口配置 Intsystemset();//配置中断 while(1) { if((ledmod=1)&&(pwroff==0)) {Ledmod1();} if((ledmod=2)&&(pwroff==0)) {Ledmod2();} if((ledmod=3)&&(pwroff==0)) {Ledmod3();} if(pwroff==1) { P0=0X00; P1=0X00; P2=0X00; P4=0X00; for(mi=0;(mi<600)&&(pwroff==1);mi++) //掉电模式等待 { for(mj=0;mj<100;mj++) { Delay(100); } } if(pwroff==1) {Pwrdown();} //进入掉电模式 } } }