專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

我的電子鐘c程序完整代碼

作者:xio854   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2010年10月14日   【字體:

真的很感謝問問的朋友幫我解決了定時(shí)器的問題。

今天是拿到單片機(jī)的第五天了,經(jīng)過五天的挑燈學(xué)習(xí),單片機(jī)的基礎(chǔ)也算了解的三三兩兩了。

解決了定時(shí)器問題,早上逃課,趁熱打鐵,把電子鐘的程序?qū)懲。有一年沒有寫復(fù)雜的程序了,今天的過程也是磕磕碰碰,問題頗多。廢話不說了,想玩wow了。有圖有真相。

 

#include<reg52.h>
#define  unchar unsigned char
//sbit beep=P1^5;
unchar temp=0;
unsigned char code shuzi[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
unsigned char  count[]={0,0,10,5,5,10,3,2};
void delay(void)
{
 int i=100;
 while(--i);
}

unchar time(unchar j)
{
 
 
 if (temp==20)
 { 
   temp=0 ;
    ++count[0];
   if (count[0]==10)
  { 
   count[0]=0;
   ++count[1];
    }
    if(count[1]==6)
  {
     count[1]=0;
     ++count[3];
  }  

    
   if (count[3]==10)
    {
    count[3]=0;
    ++count[4];
   }
    if (count[4]==6)
    {
     count[4]=0;
   ++count[6];
    }
    if (count[6]==10)
    {
     count[6]=0;
   ++count[7];
    }
   if (count[7]==3)
    count[7]=0;
    if (count[7]==2&&count[6]==4)
        count[7]=count[6]=0;

  }
 return count[j];

}


void main()
{
 unchar num,i,j;
 EA=1;
 ET0=1;
 TMOD=0x01;
 TL0=15535%256;
 TH0=15535/256;
 TR0=1;
 while(1)
 {
    
     P2=0xff;
  i=1;
  for (j=0;j<8;++j)
    {
   num=time(j);
   P2=P2-i;
   P0=shuzi[num];
   i=i*2;
   delay();
   
     }
 }

}


void  duan() interrupt 1
{
 TL0=15535%256;
 TH0=15535/256;
 ++temp;
}


關(guān)閉窗口

相關(guān)文章