Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <xc.h>
- __PROG_CONFIG(1,0x3FE4); // config. uC (WDT=dis|OSC=int)
- __PROG_CONFIG(2,0x1EFF); // config. uC (PLL (OSC*4)=off) pag. 130 pdf. PIC16LF1937
- unsigned char v[10] = { 0x03, 0x9F, 0x25, 0x0D, 0x99, 0x49, 0x41, 0x1F, 0x01,0x09};
- unsigned char a,b=0,x=0,ok=1;
- /* vector "de cifre" = cifra0 cifra1 cifra2 cifra3 cifra4 cifra5 ... */
- void init (void);
- void interrupt ia2(void); // functie de intreruperi globala ptr. TOATE intreruperile
- void main(void)
- {
- init();
- while (1) // bucla infinita
- {
- if(a >= 14) // conditia se indeplineste la: 20*50ms=1sec.
- {
- a = 0; // ma pregatesc ptr. urmatoarea "secunda"
- if(ok==1)
- {
- PORTB = v[x/10]-0b00000001; // du valoarea din vector in PORTB
- PORTC = v[x%10];
- x=x+7;
- if(x>77)
- ok =0;
- }
- if(ok==0)
- {
- x=x-7;
- PORTB = v[x/10]-0b00000001; // du valoarea din vector in PORTB
- PORTC = v[x%10];
- }
- if(x==0)
- T1CON=0x00;
- }
- }
- }
- void init (void)
- {
- OSCCON=0x73; // REGLEAZA OSCILATORUL PE 8 MHz (PLL dezactivat)
- ANSELB = 0x00; // pinii portului B sa fie digitali
- TRISB = 0x00; // tot portul B este de iesire
- PORTB = 0xFF; // am digit Anod Comun, vreau ca segmentele sa fie stinse
- TRISC = 0x00;
- PORTC = 0xFF;
- TRISB = 0x00;
- T1CON = 0x11; // initializarea Timer T1
- // (Fosc/4); prescaler 1:2 => Fosc_timer1=1MHz(T=1us)
- TMR1IE = 1; // activez intreruperea ptr. T1
- PEIE = 1; // intreruperea T1 face parte din "extra intreruperi"
- GIE = 1; // activez Global intreruperile
- }
- void interrupt ia2(void) // every 50ms !!!
- { //
- if(TMR1IF) // timerul T1 a generat intreruperea ?
- {
- TMR1IF = 0; // obligatoriu - sterg flagul Timerului care a generat intreruperea
- TMR1H = 0x3C; // 65535us-50000us=15535us=3CAF (in hexa) [incarc octetul superior]
- TMR1L = 0xAF; // (50000us=50ms) [incarc octetul inferior al timerului T1]
- a++; // la fiecare 50ms se incrementeaza variabila a
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement