標(biāo)題: 自己寫的電子鐘程序 [打印本頁]

作者: liuqq    時間: 2015-5-21 17:17
標(biāo)題: 自己寫的電子鐘程序
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit D1=P2^2;              
sbit D2=P2^1;
sbit D3=P2^0;
sbit key1=P3^4;         /定義鍵盤
sbit key2=P3^5;
sbit key3=P3^6;
sbit key4=P3^7;
uchar code table[]={0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28};
uchar ge,shi,bai,qian,aa,temp;
void init();   
void delay(z);
void display(uchar qian,uchar bai,uchar shi,uchar ge);
void main()
{
init();    /程序初始化
key1=1;
key2=1;
key3=1;
key4=1;
while(1)
  {
   if(key1==0)      /鍵盤觸發(fā)程序
     {
   ge++;
   while(!key1)
      if(ge==10)
   ge=0;
  
     }  
   if(key2==0)
     {
   shi++;
   while(!key2)
      if(shi==6)
   shi=0;
  
     }
  if(key3==0)
     {
   bai++;
   while(!key3)
      if(bai==10)
   bai=0;
  
     }
   if(key4==0)
     {
   qian++;
   while(!key4)
      if(qian==3)
   qian=0;
  
     }   
     if(aa==20)      /時鐘運(yùn)行程序
   {
    aa=0;
    temp++;
    if(temp==60)
     {
      temp=0;
         ge++;
      if(ge==10)
      {
      ge=0;
      shi++;
       }
       if(shi==6)
        {
        shi=0;
        bai++;
         }
         if(bai==10)
        {
        bai=0;
        qian++;
         }
        if(qian==3)
         {
         qian=0;
         }
          if(qian==2&&bai==4)    /判斷如果到了24小時程序初始化         
   {
          init();
         }
     }
   }
  display(qian,bai,shi,ge);    /顯示子程序
      
  }
}
void init()
{
ge=0;
shi=0;
bai=0;
qian=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;

}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}
void delay(z)
{
int a,b;
for(a=0;a<z;a++)
for(b=0;b<114;b++);
}
void display(uchar qian,uchar bai,uchar shi,uchar ge)
{

P0=table[qian];
P2=0xbf;
delay(5);
P0=table[shi];
P2=0xef;
delay(5);
P0=table[ge];
P2=0x7f;
delay(5);
P0=table[bai];
P2=0xdf;
delay(5);
}
初學(xué)者自創(chuàng),如有不足,請指出!







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1