;-------------------------------------------------------------------------------
;16F684_blink
;
;Led knipperlicht
;
; interne oscillator op 4MHz
; interne MCLR
;-------------------------------------------------------------------------------
include 16f684
pragma target clock 4_000_000 ;oscillator frequency
pragma target OSC INTOSC_NOCLKOUT ;interne oscillator/osc pinnen beiden IO
pragma target WDT disabled ;no watchdog
pragma target MCLR internal ;reset internally
enable_digital_io() ;alle pinnen digitale IO
;LED is via voorschakelweerstand aangesloten op pin A0
alias led is pin_A0
pin_A0_direction = output
led = off
;-------------------------------------------------------------------------------
;instellingen voor Timer0
;-------------------------------------------------------------------------------
const byte Timer0Reload = 0x06
const byte TimerCounterReload = 250
var byte TimerCounter = TimerCounterReload
INTCON_T0IE = high ;interrupt!
OPTION_REG_T0CS = low ;Timer0 timer mode
OPTION_REG_PSA = low ;prescaler op Timer0
;reset alle prescaler bits en zet daarna de prescaler op 011 (=/16)
OPTION_REG = (OPTION_REG & 0xF8) | 0x03
TMR0 = Timer0Reload
var bit TimePassed = low
INTCON_GIE = high ;enable interrupts
;-------------------------------------------------------------------------------
;INTERRUPT PROCEDURE
;-------------------------------------------------------------------------------
procedure Timer0Interrupt is
pragma interrupt
if(INTCON_T0IF)then
;T0IF is geset, 4 ms zijn verlopen
TMR0 = Timer0Reload ;herlaad Timer0
INTCON_T0IF = low ;reset Timer0 interrupt vlag
;laat dit 250 keer gebeuren voor 1 seconde
TimerCounter = TimerCounter - 1
if(TimerCounter == 0)then
TimerCounter = TimerCounterReload ;herlaad de teller
TimePassed = high ;Meldt dat de tijd verstreken is
end if
end if
end procedure
;-------------------------------------------------------------------------------
forever loop
if(TimePassed)then
;1 seconde is verstreken
TimePassed = low ;wis de vlag
Led = !Led ;zet de led aan of uit
end if
;hier tijd voor andere zaken uit te voeren
;...
end loop
;-------------------------------------------------------------------------------