×
单片机 > 单片机程序设计 > 详情

PIC单片机电子钟程序+仿真电路

发布时间:2020-05-28 发布时间:
|

 

#include

#define uchar unsigned char

#define uint unsigned int

#define CS RA5

uchar secs = 0;

uchar minutes = 0;

uchar hours = 0;

unsigned char disbuf[8] = {1,2,3,4,5,6,7,8};

void delay_ms(uint n)

{

        uchar i;

        while(n--)

        {

                for(i=0;i<100;i++);

        }

}

void Port_Initial(void)

{

        TRISC = 0xD7;

        PORTC = 0x00;

        TRISA = 0x00;

        PORTA = 0x00;

}

void Time0_Initial(void)

{

        T0CS = 0;

        PSA = 1;

        T0IF = 0;

        T0IE = 1;

        GIE = 1;

        TMR0 = 0x00;

}

volatile unsigned int cnt = 0;

void interrupt ISR(void)

{

        TMR0 = 0x13;

        T0IF = 0;

        CLRWDT();

        cnt ++;

        if(cnt==500)

        {

                cnt = 0;

                secs ++;

        }

        if(secs==60)

        {

                secs = 0;

                minutes ++;

        }

        if(minutes==60)

        {

                minutes = 0;

                hours ++;

        }

        if(hours==24)

        {

                hours = 0;

        }

}

void SPI_Initial(void)

{

        PIR1 = 0;

        SSPCON = 0x30;

        SSPSTAT = 0x00;

}

void Display(uchar *str)

{

        uchar i;

        for(i=0;i<8;i++)

        {

                MAX7221_WRITE(i+1,str[i]);

        }

}

void HEXTOBCD(void)

{

        disbuf[0] = hours/10;

        disbuf[1] = hours%10;

        disbuf[2] = 10;

        disbuf[3] = minutes/10;

        disbuf[4] = minutes%10;

        disbuf[5] = 10;

        disbuf[6] = secs/10;

        disbuf[7] = secs%10;

}

void main()

{

        SPI_Initial();

        delay_ms(10);

        Port_Initial();

        delay_ms(10);

        Time0_Initial();

        delay_ms(10);

        MAX7221_Initial();

        delay_ms(10);

        while(1)

        {

                HEXTOBCD();

                delay_ms(10);

                Display(disbuf);

                delay_ms(10);

        }

}



关键字:PIC  单片机  电子钟程  仿真电路 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
AVR熔丝位操作时的要点和需要注意的相关事项