You are on page 1of 2

#include <htc.

h>

__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_OFF & BOREN_ON & LVP_ON & CPD_OFF &
WRT_OFF & CP_OFF);

#define _XTAL_FREQ 20000000

unsigned char ma[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};

void hienthi(long count)


{
nghin=count/1000;
tram=count%1000/100;
chuc=count%1000%100/10;
donvi=count%1000%100%10;

for(int z=0; z<250;z++)


{
PORTB=ma[nghin]; RC0=0;__delay_ms(1);RC0=1;
PORTB=ma[tram]; RC2=0;__delay_ms(1);RC2=1;
PORTB=ma[chuc]; RC4=0;__delay_ms(1);RC4=1;
PORTB=ma[donvi]; RC6=0;__delay_ms(1);RC6=1;
}
}

int i=0;

void interrupt timer0(void)// th?c hi?n m?i 10 us


{
if(TMR0IE && TMR0IF)
{
i++;
TMR0IF=0;
if(i<=3)
{
RC7=1;
}
if(i>3 && i <= 10
{
RC7=0;// m?c 0, 70 us
}
if(i > 10 ) i=0;
}
}

void main(void)
{
TRISB=TRISC=0x00;
TRISD=0xff;

GIE=1;
TMR0IE=1;

T0CS=0;
PSA=0;
PS2=0;
PS1=0;
PS0=0;
TMR0=246;
long a;
while(1)
{
while(PORTDbits.RD7==0)
{
for(a=0; a<=9999; a++)
{
hienthi(a);
if(PORTDbits.RD7==1) break;
}
if(PORTDbits.RD7==1) break;
}
hienthi(a);
}
}

You might also like