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

📄 test.c

📁 电源性能测试,使用AT89S52+AT24C02+LCD1602,编译通过,有掉电保护功能
💻 C
字号:
#include <AT89X51.H> 
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f, 
                               0x66,0x6d,0x7d,0x07, 
                               0x7f,0x6f,0x00,0x40}; //0x77,0x7c, 0x39,0x5e,0x79,0x71,
unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char dispbuf[8]={0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa}; 
unsigned char dispbuff[8]={0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa};
unsigned char dispbufff[8] ={0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa};
bit flag=1;
bit sflag=1;
bit sflage=1;
unsigned char sec ;
unsigned char dispbitcnt; 
unsigned char second; 
unsigned char minite; 
unsigned char hour; 
unsigned int tcnt; 
unsigned char mstcnt; 
unsigned char i,j; 
unsigned char shi;
unsigned char qian;
unsigned char shiwan;
unsigned char one_time=2;//完成一次跳变的时间 秒
unsigned int half_sec;
unsigned char count;
void delay();
void main(void) 
{ 
  TMOD=0x22; 
  TH0=0x06; 
  TL0=0x06; 
  TR0=1; 
  ET0=1; 
  TH1=0x06; 
  TL1=0x06; 
  TR1=1; 
  ET1=1;

  EX0=1;
  IT0=1;
  EA=1;

  	while(1) 
	    {    P1_1=1;P1_2=1;P1_3=1;

          

	      if(P1_4==0) 
	        { 
	            delay(); 
	            if(P1_4==0)
	            sflag=0;  
	        } 
	
	      if(P1_5==0) 
	        { 
	            delay(); 
	            if(P1_5==0)
	              {
	                one_time++;if(one_time==99) one_time=3;
	
	              }
	             while(P1_5==0);
	        } 
	      if(P1_6==0) 
	        { 
	          delay();
	          if(P1_6==0)
	            {
	              one_time--; 
	                if(one_time==0) one_time=3;
	            }
	
	            while(P1_6==0);
	        } 
	      if(P1_7==0) 
	        { 
	          delay(); 
	          if(P1_7==0)
	          sflag=1;  
	         } 
	     } 
} 
void t0(void) interrupt 1 using 0 
{ 
  mstcnt++; 
  if(mstcnt==8) 
    { 
      mstcnt=0; 
	  P2=~0xff;
		if(sflag)
		     { if(flag)
		        P0=~dispcode[dispbuff[dispbitcnt]]; 
		       else
		        P0=~dispcode[dispbuf[dispbitcnt]]; 
			 }
		else P0=~dispcode[dispbufff[dispbitcnt]];  
		
      P2=~dispbitcode[dispbitcnt]; 
      dispbitcnt++; 
      if(dispbitcnt==8) 
        { 
          dispbitcnt=0; 
        } 
    } 

	dispbuf[7]=second%10; 
	dispbuf[6]=second/10; 
      dispbuf[5]=11;
	dispbuf[4]=minite%10; 
	dispbuf[3]=minite/10;
       dispbuf[2]=11;
	dispbuf[1]=hour%10; 
	dispbuf[0]=hour/10;

	dispbuff[2]=shiwan/10;
	dispbuff[3]=shiwan%10;
	dispbuff[4]=qian/10;
	dispbuff[5]=qian%10;
	dispbuff[6]=shi/10;
	dispbuff[7]=shi%10;
    
    if((shiwan==0)&&(qian==0))
     { dispbuff[2]=10;dispbuff[3]=10;dispbuff[4]=10;dispbuff[5]=10;}
    else if(shiwan==0)
          { dispbuff[2]=10;dispbuff[3]=10;}
 

	dispbufff[6]=one_time/10;
	dispbufff[7]=one_time%10;


}
void t1(void) interrupt 3 using 2 
{

  half_sec++;
  if(half_sec==2000)
	{
	 half_sec=0;count++;
	  if(count>=one_time){P1_0=~P1_0;count=0;}
	}
 
  tcnt++; 
  if(tcnt==4000) 
    { 
       tcnt=0;
       sec++;
       if(sec==3)
		{sec=0;flag=~flag;}
           second++; 
           if(second==60) 
	        { 
	          second=0; 
	          minite++; 
	          if(minite==60) 
	            { 
	              minite=0; 
	              hour++; 
	            } 
	        } 

       }

 }


void it0(void) interrupt 0 
{
	shi++;

	if(shi==100)
	{
	  shi=0;
      qian++;
      if(qian==100)
        {
          qian=0;
          shiwan++;
        }
	}

}

void delay()
{
for(j=248;j!=0;j--);
}

⌨️ 快捷键说明

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