Dette er ett prosjekt for å programmere avbrudd(interrupt) ved endring på en inngang på en PIC12F629.
Mål
Målet er å programmere en PIC12F629 med en avbruddsrutine som lyser opp en lysdiode når en knapp trykkes. Lysdioden skal holdes oppe to sekunder.
Krets
Video
Kode
Koden finnes her.
/** * Slå av komparatoren. */ CMCONbits.CM0 = 1; CMCONbits.CM1 = 1; CMCONbits.CM2 = 1; /** * Setter GP0 som utgang. */ TRISIObits.TRISIO0 = 0; /** * Setter bit 5 som inngang. */ TRISIObits.TRISIO5 = 1; /** * Tillat avbrudd på GPIO endringer. */ INTCONbits.GPIE = 1; /** * Slå på global avbrudd. */ INTCONbits.GIE = 1; /** * Slå på avbrudd på GP5. */ IOCBbits.IOC5 = 1;
/** * Sjekk om avbrudd ble gjort av endring på inngang. */ if (INTCONbits.GPIF) { /** * Slå på lysdioden ved å sette GP0 høy. */ GPIObits.GP0 = 1; /** * Vent to sekunder. */ __delay_ms(2000); /** * Resett avbrudds registeret. */ INTCONbits.GPIF = 0; /** * Slå av lysdioden ved å sette GP0 lav. */ GPIObits.GP0 = 0; }
Andre lærdommer.
Siden GP5 ble brukt som inngang og jeg hadde satt FOSC til LP, noe som gjorde at den ble satt som oscillator inngang. Ved å sette den til INTRCCLK så ble GP5 tilgjengelig som inngang.
Du må være logget inn for å legge inn en kommentar.