13
1)
#include <xc.h>
__PROG_CONFIG(1,0x3FE4);
__PROG_CONFIG(2,0x1EFF);
char v[10]={0x03, 0x9F, 0x25, 0x0D, 0x99, 0x49, 0x41, 0x1F, 0x01, 0x09};
unsigned char a=0,m=0, c1=0,c2=1,c3=2,c4=3;
void interrupt etti();
void init();
void main(void)
{
init();
while (1)
{
if(a>=20)
{
a=0;
if(m<6)
{
PORTA=v[c1++];
PORTB=v[c2++];
PORTC=v[c3++];
PORTD=v[c4++];
}
m++;
if(m>6)
{
PORTA=v[c1--];
PORTB=v[c2--];
PORTC=v[c3--];
PORTD=v[c4--];
}
if(m>11)
{
m=0;
}
}
}
}
void init()
{
OSCCON=0x73;
T1CON=0x11;
PEIE=1;
GIE=1;
TMR1IE=1;
TMR1H=0x3C;
TMR1L=0xAF;
TRISA=0x00;
ANSELA=0x00;
PORTA=0xFF;
TRISB=0x00;
ANSELB=0x00;
PORTB=0xFF;
TRISC=0x00;
PORTC=0xFF;
TRISD=0x00;
ANSELD=0x00;
PORTD=0xFF;
}
void interrupt etti()
{
if(TMR1IF)
{
TMR1IF=0;
TMR1H=0x3C;
TMR1L=0xAF;
a++;
}
}
2)
#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
{
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++;
}
}
3)
#include <xc.h>
__PROG_CONFIG(1,0X3FE4);
__PROG_CONFIG(2,0X1EFF);
unsigned char cifra[10] = {0x03,0x9F,0X25,0X0D,0X99,0X49,0X41,0X1F,0X01,0X09};
int a=0;
unsigned b;
void interrupt etti();
void init();
unsigned int read_adc()
{
GO_nDONE=1;
while(GO_nDONE);
return ADRESH;
}
void main(void)
{
init();
while (1)
{
if(a>=400)
{ a=0;
b=read_adc();
b=b*310;
}
if(RA1==0)
{
PORTB=cifra[b/10000];
PORTC=cifra[(b/1000)%10]-1;
PORTD=cifra[b/100%10];
}
else
{
PORTB=0xFF;
PORTC=cifra[b/10000];
PORTD=cifra[b/1000%10];
}
}
}
void init()
{
OSCCON=0X73;
OPTION_REG=0x00;
TMR0IE=1;
TMR0IF=0;
GIE=1;
TRISB=0x00;
ANSELB=0x00;
TRISD=0x00;
ANSELD=0x00;
TRISC=0x00;
ANSELA=0X01;
TRISA=0X03;
ADCON0=0b00000001;
ADCON1=0X60;
}
void interrupt etti()
{
if(TMR0IF)
{
TMR0IF=0;
TMR0=5;
a++;
}
}