⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 code.c

📁 毕设时做的程序
💻 C
字号:


#include <AT89X52.H> 
#include <intrins.h>
#include <head.H> 
#include <subprogram.H> 
void main(void) 
{  
BEEP=0;
SDA = 1;
SCL = 1;
//fill_byte(0x08);
MCU_Init();
while(1) 
{ 
if(Keyenableflag==1)
{
P1=0xff; 
P1_4=0; 
temp=P1; 
temp=temp & 0x0f; 

if (temp!=0x0f) 
{ 
KeyDelay();                //延时去抖 
if (temp!=0x0f) 
{ 
temp=P1; 
temp=temp & 0x0f; 
switch(temp) 
{ 
case 0x0e:   key=1;  break; 
case 0x0d:   key=2;  break; 
case 0x0b:   key=3;  break; 
case 0x07:   key=10; break; 
} 
efficiencyKey();							// 按键有效提示
if((key>=0) && (key<10))   DealNum();       //数字键的处理 

else if(key==11)      Rest();				//复位键的处理				
else if(key==12)      DealDel();            //删除键的处理
else if(key==14)      Dealpschange();       //修改密码键输入的处理
else if(key==15)    DealENl();				//确定键的处理                      
else if(key==13)      Doorbell();          //门铃按键的处理
ReleaseKey();                               //等待键释放 
} 
} 

P1=0xff; 							//扫描下一行
P1_5=0; 
temp=P1; 
temp=temp & 0x0f; 

if (temp!=0x0f) 
{ 

KeyDelay();                //延时去抖 

if (temp!=0x0f) 
{ 

temp=P1; 
temp=temp & 0x0f; 

switch(temp) 

{ 
case 0x0e: key=4;  break; 
case 0x0d: key=5;  break;
case 0x0b: key=6;  break; 
case 0x07: key=11; break; 
} 

efficiencyKey();							// 按键有效提示
if((key>=0) && (key<10))   DealNum();       //数字键的处理 

else if(key==11)      Rest();				//复位键的处理				
else if(key==12)      DealDel();            //删除键的处理
else if(key==14)      Dealpschange();       //修改密码键输入的处理
else if(key==15)    DealENl();				//确定键的处理                      
else if(key==13)      Doorbell();          //门铃按键的处理
ReleaseKey();                               //等待键释放 

} 
} 

P1=0xff; 
P1_6=0; 
temp=P1; 
temp=temp & 0x0f; 

if (temp!=0x0f) 
{ 

KeyDelay();                //延时去抖 
if (temp!=0x0f) 
{ 

temp=P1; 
temp=temp & 0x0f; 

switch(temp) 
{ 
case 0x0e:  key=7; break; 
case 0x0d:  key=8; break; 
case 0x0b:  key=9; break; 
case 0x07:  key=12;break; 
} 

efficiencyKey();							// 按键有效提示
if((key>=0) && (key<10))   DealNum();       //数字键的处理 

else if(key==11)      Rest();				//复位键的处理				
else if(key==12)      DealDel();            //删除键的处理
else if(key==14)      Dealpschange();       //修改密码键输入的处理
else if(key==15)    DealENl();				//确定键的处理                      
else if(key==13)      Doorbell();          //门铃按键的处理
ReleaseKey();                               //等待键释放 


} 
} 

P1=0xff; 
P1_7=0; 
temp=P1; 
temp=temp & 0x0f; 

if (temp!=0x0f) 
{ 
KeyDelay();                //延时去抖 
if (temp!=0x0f) 
{ 
temp=P1; 
temp=temp & 0x0f; 

switch(temp) 
{ 
case 0x0e:  key=13;  break; 
case 0x0d:  key=0;   break; 
case 0x0b:  key=14;  break; 
case 0x07:  key=15;  break; 
} 

efficiencyKey();							// 按键有效提示
if((key>=0) && (key<10))   DealNum();       //数字键的处理 

else if(key==11)      Rest();				//复位键的处理				
else if(key==12)      DealDel();            //删除键的处理
else if(key==14)      Dealpschange();       //修改密码键输入的处理
else if(key==15)    DealENl();				//确定键的处理                      
else if(key==13)      Doorbell();          //门铃按键的处理
ReleaseKey();                               //等待键释放 


} 
}  					// end if (temp!=0x0f)  有按键按下
}					//end   if(Keyenableflag==1)
} 					// end while(1) 
}                  //end  main(void)

void t0(void) interrupt 1 using 0 
{ 
TH0=(65536-500)/256; 
TL0=(65536-500)%256; 
flashcount++; 
if(flashcount==8) 
  { 
	flashcount=0; 
	
	clr_wdt();	    	// 8191个机器周期内必须至少调用此程序一次
						// 否则看门狗会溢出
	//P0=dispcode[getps[dispcount]]; 
	P0=dispcode[dispbuf[dispcount]]; 
	P2=dispbit[dispcount]; 
	dispcount++; 
	if(dispcount==8)  dispcount=0; 
  } 
if((errorflag==1) && (rightflag==0)) 
{ 
	 Keyenableflag=0;                               //按键输入无效
	 bb++; 
	 if(bb==800) 
   		   {  bb=0;  alarmflag=~alarmflag; } 
     if(alarmflag==1)    BEEP=~BEEP;                       //sound alarm signal 
     aa++; 
	 if(aa==800)//light alarm signal 
    		{ aa=0;  P3_4=~P3_4;  } 
	 second3++; 
	 if(second3==3200) 
	 { 
	 	second3=0; 
		errorflag=0; 
		rightflag=0; 
		alarmflag=0;
 		Keyenableflag=1;                           //报警结束按键输入有效
		bb=0; 
		aa=0; 
	} 
} 
else if((errorflag==0) && (rightflag==1)) 
{ 
	Keyenableflag=0;                               //按键输入无效
	cc++; 
	if(cc==800) 
     	{  cc=0;   alarmflag=~alarmflag; } 
	if(alarmflag==1)     BEEP=~BEEP;        //sound alarm signal 
	dd++; 
	if(dd==800)//light alarm signal 
   		 {  dd=0;  P3_3=~P3_3; } 
	second3++; 
	if(second3==12800) 
	{ 
		second3=0; 
		errorflag=0; 
		rightflag=0; 
		alarmflag=0; 
		Keyenableflag=1;                           //报警结束按键输入有效
		cc=0; 
		dd=0; 
	} 
	Rest();
} 

}

void time1(void)  interrupt 3 using 1  //产生10MS精确定时
{  TH1=(65536-10000)/256;
   TL1=(65536-10000)%256;
   n--;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -