;-------------------------------------------------------------------------------
;16F684_blink
;
; 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

;geen interrupt
INTCON_T0IE     = low
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


;-------------------------------------------------------------------------------
forever loop
  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
      Led = !Led                              ;zet de led aan of uit
    end if
  end if
  ;hier tijd voor andere zaken uit te voeren
  ;...
end loop
;-------------------------------------------------------------------------------