a.c

来自「pic单片机定时器0的相关程序」· C语言 代码 · 共 97 行

C
97
字号

#include <pic1687x.h>

unsigned char  count;
unsigned char uSec=0,mSec=0,Sec_1=0,Sec_2=0;
const unsigned char Led_dot[11]={0X40,0x79,0X24,0X30,0X19,0X12,0X02,0X78,0X00,0X10,0X40}; //带小数点的数码段	
const unsigned char     Led[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90,0xc0}; //不带小数点的数码段



void  Init_timer()      //4M的晶体   T=(256-初值)*(4/f)* 分频比 
{
	
	PSA=0;			    //128分频后
    PS2=1;
    PS1=1;
    PS0=0;
	T0IF=0;			    //清除TMR0的中断标志
	T0IE=1;				//TMR0中断允许
    TMR0=217;             //定时1ms
	T0CS=0;				//TMR0工作于定时器方式
}
void delay(void)
{
    unsigned char i;
    for(i=100;i>0;i--);
}
void display (void)
{
     PORTA=0xFE;
     PORTC=Led[uSec];
     delay();
     
     PORTA=0xFD;
     PORTC=Led[mSec];
     delay();
     
	 PORTA=0xFB;
     PORTC=Led_dot[Sec_1];
     delay();
     
	 PORTA=0xF7;
     PORTC=Led[Sec_2];
     delay();
     

 }

void interrupt Update(void)
{
	if(T0IF)
	{
		count++;
        T0IF=0;
        TMR0=217;
        if( count==2 )
     	{
        	count=0;
            uSec++;
 			if( uSec==10)
			{
				uSec=0;
                mSec++;
				if( mSec==10 )
				{
					mSec=0;
               		Sec_1++;
					if( Sec_1==10)
					{
						Sec_1=0;
                		Sec_2++;
						if( Sec_2==10 )
						{
							Sec_2=0;
                        }
					}
				}	
			}
		}
    display();

	}
}




main()
{
	TRISA=0x00;
    ADCON1=0x07;
    TRISC=0x00;
    GIE=1;
	Init_timer();
    while(1);
}

⌨️ 快捷键说明

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