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