22
####include <xc.h>
#define _XTAL_FREQ 16000000
__PROG_CONFIG(1,0x3FE4);
__PROG_CONFIG(2,0x1EFF);
void init();
void interrupt etti();
unsigned char v[10]={0x03, 0x9F, 0x25, 0x0D, 0x99, 0x49, 0x41, 0x1F, 0x01, 0x09},
d=0, c=1, a=0, b=0,
timp_sec, timp_ms,
timp_sec_stop, timp_ms_stop,
pornit=0;
void main()
{
init();
while(1)
{
if(RA1==1)
{
pornit=1;
RA0=0;
}
while(pornit==1)
{
if(a>=2)
{
a=0;
PORTD=v[d++];
if(d>10)
{
d=1;
PORTD=0x03;
PORTC=v[c++];
}
if(c>10)
{
c=1;
PORTC=0x03;
}
if(RA2==1)
{
__delay_ms(500);
if(RA2==0)
{
pornit=0;
timp_sec_stop=c-1;
timp_ms_stop=d-1;
}
else //apasare lunga /RESET
{
pornit=0;
d=1;
c=1;
PORTC=0x03;
PORTD=0x03;
}
}
}
if(RA3==1)
{
timp_sec=c-1;
timp_ms=d-1;
}
}
if(RA3==1)
b++;
switch(b)
{
case 1:
PORTC=v[timp_sec];
PORTD=v[timp_ms];
RA0=1;
break;
case 2:
PORTC=v[timp_sec_stop];
PORTD=v[timp_ms_stop];
RA0=0;
b=0;
break;
}
__delay_ms(100);
}
}
void init()
{
OSCCON=0x73;
T1CON=0x11;
TMR1H=0x3C;
TMR1L=0xAF;
TRISA=0x0E;
ANSELA=0x00;
PORTA=0x00;
TRISC=0x00;
PORTC=0x03;
TRISD=0x00;
ANSELD=0x00;
PORTD=0x03;
TMR1IE=1;
GIE=1;
PEIE=1;
}
void interrupt etti()
{
if(TMR1IF)
{
TMR1IF=0;
TMR1H=0x3C;
TMR1L=0xAF;
a++;
}
}