كود:
unsigned short mask(unsigned short num);
unsigned char x=0,a=0,b=1,e=0,r=1,t=0,u=1;
int y=0,j=0;
//Timer0
//Prescaler 1:32; TMR0 Preload = 100; Actual Interrupt Time : 4,992 ms
//Place/Copy this part in declaration section
void InitTimer0(){
OPTION_REG = 0x84;
TMR0 = 100;
INTCON = 0xA0;
}
void Interrupt(){
if (TMR0IF_bit){
TMR0IF_bit = 0;
TMR0 = 100;
if(x==0) {porta=0;porta=1;portb=mask(a); }
if(x==1) {porta=0;porta=1;portb=mask(b);}
if(x==2) {porta=0;porta=1;portb=mask(e);}
if(x==3) {porta=0;porta=1;portb=mask(r);}
if(x==4) {porta=0;porta=1;portb=mask(t);}
if(x==5) {porta=0;porta=1;portb=mask(u);}
x++; y++;
if(x==6) x=0;
if(y==100) {a++; y=0; }
}
}
void main() {
InitTimer0();
trisb=0;
portb=0;
trisa=6;
porta=0;
for(;;){
if(a==10){b++;a=0;}
if(b==6){e++;b=0;}
if(e==10){r++;e=0;}
if(r==6){t++;r=0;}
if(t==10){u++;t=0;}
if(u==2&&t==4){u=0;t=0;r=0;e=0;b=0;a=0;}
if(ra1_bit==1) {delay_ms(400); e+=1; }
if(ra2_bit==1) {delay_ms(400); t+=1; }
} }
unsigned short mask(unsigned short num) {
switch(num){
case 0:return 192;
case 1:return 249;
case 2:return 164;
case 3:return 176;
case 4:return 153;
case 5:return 146;
case 6:return 130;
case 7:return 248;
case 8:return 128;
case 9:return 144;
} }