22

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++;

  }

}








Report Page