title " Hogeschool van Utrecht PJweek" subtitle "Projectweek Autoalarm" ; XT Oscillator is used target 4 MHz ; do not use power up nor watchdog nor code protection !! ;destinations for file register-byte indirect equ 00h ;Indirect data adressing tmr0 equ 01h ;counter register pcl equ 02h ;Program Counter status equ 03h ;status word register fsr equ 04h ;File select register port_a equ 05h port_b equ 06h tris_a equ 05h ; new value for port a reg tris_b equ 06h ; new value for port b reg eedata equ 08h ; eeprom registers eeadr equ 09h pclatch equ 0ah ; intcon equ 0bh ; interrupt settings ;bit declarations w equ 00h ;destination is W-register f equ 01h ;destination is a File register input equ 01h output equ 00h rp0 equ 05h ;bank change bit zero_bit equ 02h ;zero bit in status byte carry_bit equ 00h ;carry bit in status byte dc_bit equ 01h ;digit carry tf0 equ 02h ;timer overflow in intcon gie equ 07h ; byte declarations ; reset vector equ 000h jump to out off call org 000h goto start ; initialiseren van de poorten start clrf port_a ; clear init byte port_a clrf port_b ; clear init byte port_b bsf status,rp0 ; select bank 1 movlw B'11111111' ; 1 = input , 0 = output movwf tris_a ; set port a in bank 1 movlw B'00000000' ; 1 = input , 0 = output movwf tris_b ; set port b in bank 1 bcf status,rp0 ; select bank 0 ; start of the programm main bsf port_b, 4 ;zet power led aan bcf port_b, 5 ;zet active led uit ;-------------------------------------------------------------------------- ;loop1 Hierna volg de ruststandloop ;-------------------------------------------------------------------------- loop1 ; your coding comes here btfsc port_a, 3 ;checkt of sleutel geactactiveerd wordt goto loop1 ;zo nee terug naar loop1 call delay_jp ;zo ja wacht voor uitstappen en ga naar ; alert ;-------------------------------------------------------------------------- ;alert Hierna wordt het alarm op scherp gezet ;-------------------------------------------------------------------------- alert movlw 0fh ;zet 00fh in locatie 0ch movwf 0ch loop4 movlw 0ffh movwf 0dh ;zet 0ffh in locatie 0dh loop3 movlw 0ffh movwf 0eh ;zet 0ffh in locatie 0eh loop2 btfsc port_a, 2 ;chekken of port_a niet hoog wordt goto alarm ;zo ja alarmeer btfsc port_a, 3 ;check of sleutel nog op actief staat goto main ;zo nee, ga terug naar ruststand decfsz 0eh, f ;telt tot getal in locatie 0eh 0 is. goto loop2 decfsz 0dh,f ;trekt 1 van locatie 0d af en goto loop3 ;springt vervolgens naar loop2 decfsz 0ch, f ;trekt 1 van locatie 0c af en springt vervolgens naar loop3 goto loop4 ;-------------------------------------------------------------------------- ;ledon Hierna gaat de led aan ;-------------------------------------------------------------------------- bsf port_b, 5 ;zet LED aan movlw 0fh ;zet 00fh in locatie 0ch movwf 0ch loop7 movlw 0ffh movwf 0dh ;zet 0ffh in locatie 0dh loop6 movlw 0ffh movwf 0eh ;zet 0ffh in locatie 0eh loop5 btfsc port_a, 2 ;chekken of port_a niet hoog wordt goto alarm ;zo ja alarmeer btfsc port_a, 3 ;check of sleutel nog op actief staat goto main ;zo nee, ga terug naar ruststand decfsz 0eh, f ;telt tot getal in locatie 0eh 0 is. goto loop5 decfsz 0dh,f ;trekt 1 van locatie 0d af en goto loop6 ;springt vervolgens naar loop2 decfsz 0ch, f ;trekt 1 van locatie 0c af en springt vervolgens naar loop3 goto loop7 ;-------------------------------------------------------------------------- ;ledoff Hierna gaat de led weer uit ;-------------------------------------------------------------------------- bcf port_b, 5 ;zet LED weer uit goto alert alarm bsf port_b, 5 ;zet LED continu aan call delay_jp btfsc port_a, 3 ;check of sleutel nog op actief staat goto main ;zo nee, ga terug naar ruststand bsf port_b, 7 loop8 call delay1s ;wacht 1 seconde bsf port_b, 6 call delay1s bcf port_b, 6 btfss port_a, 3 ;check of sleutel nog op actief staat goto loop8 goto main ;zo nee, ga terug naar ruststand ;ga anders terug naar loop8 ;-------------------------------------------------------------------------- ;delay1s: deze functie zorgt voor 1s vertraging ;-------------------------------------------------------------------------- delay1s ;Functie voor het wachten van 1s movlw 0fh ;zet 00fh in locatie 0ch movwf 0ch loop11 movlw 0ffh movwf 0dh ;zet 0ffh in locatie 0dh loop10 movlw 0ffh movwf 0eh ;zet 0ffh in locatie 0eh loop9 decfsz 0eh, f ;telt tot getal in locatie 0eh 0 is. goto loop9 decfsz 0dh,f ;trekt 1 van locatie 0d af en goto loop10 ;springt vervolgens naar loop2 decfsz 0ch, f ;trekt 1 van locatie 0c af en springt vervolgens naar loop3 goto loop11 retlw 0h ;gaat terug naar aangevraagde ;-------------------------------------------------------------------------- ;delay_jp Deze funtie zorgt afhankelijk van jumpersettings (op a0 en a1) ; voor 5, 10, 15 of 20 seconden vertraging ; Jumpersetting: ; JP1 JP2 ; uit uit ---> 5 seconden ; uit aan ---> 10 seconden ; aan uit ---> 15 seconden ; aan aan ---> 20 seconden ; ; laag=actief ; ; LET WEL: jp1 zit aan a1, jp2 zit aan a0. (zoals volgens de schakeling) ;-------------------------------------------------------------------------- delay_jp ;functie voor instelbare vertraging btfsc port_a, 1 ;check of jp 1 actief is goto a0_ ;ga naar a0_ goto a1_ ;ga naar a1_ a0_ ;jp 1 is inactief btfsc port_a, 0 ;check of jp 2 actief is goto a00 ;ga naar a00 goto a01 ;ga naar a01 a1_ ;jp 1 is actief btfsc port_a, 0 ;check of jp 2 actief is goto a10 ;ga naar a00 goto a11 ;ga naar a01 a00 ;setting laag-laag: 5 s vertraging movlw 0ch ;zet 0ch in W goto movinmem a01 ;setting laag-hoog: 10 s vertraging movlw 0dh ;zet 0dh in W goto movinmem a10 ;setting hoog-laag: 15 s vertraging movlw 0eh ;zet 0eh in W goto movinmem a11 ;setting hoog-hoog: 20 s vertraging movlw 0fh ;zet 0fh in W goto movinmem movinmem ;zet het op de goede geheugenplaats movwf 0ch ;zet het getal van W in 0ch loop14 movlw 0ffh movwf 0dh ;zet 0ffh in locatie 0dh loop13 movlw 0ffh movwf 0eh ;zet 0ffh in locatie 0eh loop12 decfsz 0eh, f ;telt tot getal in locatie 0eh 0 is. goto loop12 decfsz 0dh,f ;trekt 1 van locatie 0d af goto loop13 ;springt vervolgens naar decfsz 0ch, f ;trekt 1 van locatie 0c af goto loop14 retlw 0h ;gaat terug naar aangevraagde end