KRITSADA icon

2 digit 7 Segment Count Down

KRITSADA | PRO | 12/13/19 08:02:50 AM UTC | 0 ⭐ | 922 👁️ | Never ⏰ | []
C |

1.68 KB

|

None

|

0 👍

/

0 👎

#include "mcc_generated_files/mcc.h"
#include <xc.h>
#include <stdint.h>
//                    0     1   2     3   4     5    6    7    8    9   A    B    C                  
unsigned char led[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0xFF};
unsigned char g=0,x=0,y=0,i,cnt=60;
void disp(unsigned char num)  {
    PORTC=led[num];
    if (num==0 || num==1||num==7){RA2=1;}
    else {RA2=0;}
    return;
}
void main(void) {
    OSCCON = 0x7A; // SCS INTOSC; SPLLEN disabled; IRCF 16MHz_HF; 
    OSCTUNE = 0x00;     // TUN 0; 
    BORCON = 0x00; // SBOREN disabled; BORFS disabled; 
    ANSELA=0x00;
    PORTA=0x00;
    TRISA = 0x01; // Port A is Digital Output RA0 input
    TRISC = 0; // Port C is Digital Output
    PORTC =0;
    RA1=0;
    while(g==0){
        y=cnt/10;
        x=cnt%10;
        for (i=0;i<50;i++){
            RA4=0;
            disp(x);
            __delay_ms(10);
            RA4=1;
            RA5=0;
            disp(y);
            __delay_ms(10);
            RA5=1;
            if (RA0==0){g=1;break;}
        }
    }
    while(cnt>0){
        y=cnt/10;
        x=cnt%10;
        for (i=0;i<20;i++){
            RA4=0;
            disp(x);
            __delay_ms(10);
            RA4=1;
            RA5=0;
            disp(y);
            __delay_ms(10);
            RA5=1;
        }
        cnt--;
    }
    RA1=1;
    while(1){
        for (i=0;i<50;i++){
            RA4=0;
            disp(0);
            __delay_ms(10);
            RA4=1;
            RA5=0;
            disp(0);
            __delay_ms(10);
            RA5=1;
            if (RA0==0){break;}
        }
    }
    return;
}

Comments