list p=16f84a
#include "p16f84a.inc"
jeton equ 0xC
inter equ 0xD
wsav equ 0xE
ssav equ 0xF
count equ 0x10
count1 equ 0x11
count2 equ 0x12
count3 equ 0x13
waitl equ 0x14
waith equ 0x15
isrdelay0 equ 0x16
isrdelay1 equ 0x17
isrdelay2 equ 0x18
org 0
goto start
org 4
goto ISR
start
banksel TRISA
movlw 3
movwf TRISA
movlw 1
movwf TRISB
banksel PORTB
clrf PORTB
movlw 0x90
movwf INTCON
clrf jeton
clrf inter
loop btfss PORTA,0
goto loop2
btfsc jeton,0
goto loop2
bsf PORTB,6
bsf jeton,0
bcf jeton,1
call wait
bcf PORTB,6
loop2 btfss PORTA,1
goto loop
btfsc jeton,1
goto loop
bsf PORTB,7
bsf jeton,1
bcf jeton,0
call wait
bcf PORTB,7
goto loop
wait movlw 0x14
movwf waith
wait1 movlw 0xCB
movwf waitl
wait2 call delay
btfss inter,0
goto wait3
decfsz waitl
goto wait2
decfsz waith
goto wait1
bcf inter,0
wait3 return
ISR movwf wsav
movf STATUS,w
movwf ssav
bsf inter,0
bcf PORTB,6
bcf PORTB,7
bsf PORTB,5
call delay2000
bcf PORTB,5
movlw 0x90
movwf INTCON
movf ssav,w
movwf STATUS
swapf wsav,f
swapf wsav,w
retfie
delay2000 movlw 0x10
movwf isrdelay2
clrf isrdelay1
clrf isrdelay0
d4 decfsz isrdelay0
goto d4
decfsz isrdelay1
goto d4
decfsz isrdelay2
goto d4
return
delay movlw 0x1
movwf count1
clrf count
d3 decfsz count
goto d3
decfsz count1
goto d3
return
end