Dette er ett kjapt prosjekt for å teste oppvåkning av mikrokontrolleren ved pin endring.
Mål
Målet er å sette en LED høy ved sovemodus og når den våkner sette den til lav, vente 10 sekunder og sette den til høy igjen.
Krets
Video
Kode
Koden kan lastes ned her.
/** * OPTION registeret. Bit 7 er satt lav for å våkne på pin endring. */ OPTION = 0b01111111; /** * TRISGPIO registeret er satt med GP0 som utgang og GP1 som inngang. */ TRISGPIO = 0b00001110; /** * Henter status registeret og sjekker bit 7 om den er høy. Hvis den er * det så betyr det at restarten er gjort på grunn av pin endring. */ unsigned char status = STATUS & 0b10000000; if (status) { /** * Sett GP0 til lav. */ GPIO = GPIO & 0b11111110; __delay_ms(DELAY); } while (true) { /** * Sett GP0 til høy. */ GPIO = GPIO | 0b00000001; /** * Dette er gjort på grunn av en anbefaling i dataarket som sier at * testen er gjort på bakgrunn av siste lesing. */ unsigned char readValue = GPIO; /** * Sov. */ SLEEP(); }
Du må være logget inn for å legge inn en kommentar.