Itt is figyeljünk, hogy a #FUSES-nél vagyis a konfig biteknél kapcsoljuk be a WDT-t.
#include <16F877.h>
#FUSES WDT, XT, NOPUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD
#use delay(clock=4000000)
//================================================================
void main(){
//================================================================
set_tris_a(0b00011111); //PORTA bemenet
set_tris_d(0b00000000); //PORTD kimenet
output_d(0b01010101); //LED bekapcs
setup_wdt(WDT_2304MS);
for(;;) {
//Semmit nem csinálunk
if(!input(PIN_A1)) {
output_d(0xFF);
}
while(!input(PIN_A0)); //mivel ;-van a végén, addig fut önmagában, míg fel nem engedjük a gombot
restart_wdt();
}//for
}//main
Az egész program forráskód és lefordított hex: wdt_ccs.zip
A while(!input(PIN_A0)); sor teljesen egyenértékű a:
while(!input(PIN_A0)) { }
kóddal. Csak ugye tudniillik a C programozók lusták...
Most viszont olyan rész jön, amihez feltétlen értened kell mindegyik előző megszakítás működését. Eddig egyszerre mindig csak egy megszakítást használtunk. Ám most egyszerre fogunk RB0/INT-en gombot kezelni, és Timer0-ával LED-et léptetni.
A cikk még nem ért véget, lapozz!
Értékeléshez bejelentkezés szükséges!