void Dopen;
char select = 0, Digitt1, Digitt2, Digitt3, Digitt4;
unsigned char common_cathode_mask[21] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71, 0x73, 0x50, 0x5C, 0x37, 0x40};
// 0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,A ,b ,C ,d ,E ,F ,P ,r ,o ,N ,-
//char digit[2];
char digit[4];
//Timer1
//Prescaler 1:1; TMR1 Preload = 63536; Actual Interrupt Time : 2 ms
//Place/Copy this part in declaration section
void InitTimer1() {
//T1CON = 0x01;
T1CON = 0x01;
TMR1IF_bit = 0;
TMR1H = 0xF8;
TMR1L = 0x30;
TMR1IE_bit = 1;
INTCON = 0xC0;
}
void Interrupt(){
if(TMR1IF_bit) {
TMR1H = 0xF8;
TMR1L = 0x30;
PORTD = 0x00;
}
//Enter your code here
switch(select) {
case 0:
PORTC = digit[0];
PORTD = 0x01;
break;
case 1:
PORTC = digit[1];
PORTD = 0x02;
break;
case 2:
PORTC = digit[2];
PORTD = 0x04;
break;
case 3:
PORTC = digit[3];
PORTD = 0x08;
break;
};
if(++select == 4)select = 0;
TMR1IF_bit = 0;
if(PORTB.B0 == 0) {
Dopen();
}
else {
PORTB = 0b11000000;
}
}
void machoff() {
Digitt1 = 20;
Digitt2 = 20;
Digitt3 = 20;
Digitt4 = 20;
}
void Dopen() {
Digitt1 = 0;
Digitt2 = 16;
Digitt3 = 14;
Digitt4 = 19;
PORTB.RB5 = 1;
}
void main() {
CMCON = 0x07;
ADCON1 = 0x87;
TRISA = 0x00;
TRISB = 0x03;
TRISC = 0x00;
TRISD = 0x00;
TRISE = 0x00;
PORTA = 0x00;
PORTB = 0x00;
PORTC = 0x00;
PORTD = 0x00;
PORTE = 0x00;
InitTimer1();
machoff();
digit[0] = common_cathode_mask[Digitt1];
digit[1] = common_cathode_mask[Digitt2];
digit[2] = common_cathode_mask[Digitt3];
digit[3] = common_cathode_mask[Digitt4];
}