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

數(shù)字電子時(shí)鐘3(修正程序)

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2010年09月15日   【字體:
 
___________________________________________________________
功能:
        電子時(shí)鐘程序重寫,使用延時(shí)函數(shù)來設(shè)定掃描間隔
時(shí)間:
        2010—8--16
___________________________________________________________

#include<reg52.h>

#define uint unsigned int
#define uchar unsigned char


sbit setsec=P3^0;
sbit setmin=P3^1;
sbit sethour=P3^2;



uchar num=0,hour,min,sec,hourshi,hourge,minshi,minge,secshi,secge;



void delayms(uchar cnt);
void display();
void scan();



void main()
{
        TMOD=0x01;
        TH0=(65536-10000)/256;
        TL0=(65536-10000)%256;
        TR0=1;
        EA=1;
        ET0=1;
        while(1)
        {
                if(num==100)
                {
                        sec++;
                        if(sec==60)
                        {
                                sec=0;
                                min++;
                        }
                        if(min==60)
                        {
                                min=0;
                                hour++;
                        }
                        if(hour==24)
                        {
                                hour=0;
                        }
                        num=0;
                }
                hourshi=hour/10;
                hourge=hour%10;
                minshi=min/10;
                minge=min%10;
                secshi=sec/10;
                secge=sec%10;
                display();
                scan();
        }

}


void display()//No use of timer1,using delayms()
{
        P0=secge;
        P2=0xfe;
        delayms(5); 
        P0=secshi;
        P2=0xfd;
        delayms(5);

        P0=0x40;
        P2=0xfb;
        delayms(5);

        P0=minge;
        P2=0xf7;
        delayms(5);
        P0=minshi;
        P2=0xef;
        delayms(5);

        P0=0x40;
        P2=0xdf;
        delayms(5);

        P0=hourge;
        P2=0xbf;
        delayms(5);
        if(hourshi)
        {
                P0=hourshi;
                P2=0x7f;
                delayms(5);
        }
}

 

void timer0() interrupt 1 using 0
{
        TH0=(65536-10000)/256;
        TL0=(65536-10000)%256;
        num++; 
}

 

void scan()
{
        if(!setsec)
        {
                delayms(2);
                sec++;
                if(sec==60)
                {
                        sec=0;
                        min++;
                        if(min==60)
                        {
                                min=0;
                                hour++;
                                if(hour==24)
                                {
                                        hour=0;
                                }
                        }
              }
        }
        if(!setmin)
        {
                delayms(2);
                min++;
                if(min==60)
                {
                        min=0;
                        hour++;
                        if(hour==24)
                        {
                                hour=0;
                        }
                }
        }
        if(!sethour)
        {
                delayms(2);
                hour++;
                if(hour==24)
                {
                        hour=0;
                }
        }
}

 

void delayms(uchar cnt)
{
        uchar x,y;
        for(x=cnt;x>0;x--)
                for(y=110;y>0;y--);
}

___________________________________________________________

功能:

        電子時(shí)鐘程序重寫,使用定時(shí)器設(shè)定掃描間隔

時(shí)間:

        2010—8—16

___________________________________________________________
關(guān)閉窗口

相關(guān)文章