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();} //进入掉电模式
}
}
}
我要赚赏金
