Kod: Markera allt
list p=12F683
errorlevel -302 ; suppress message 302 from list file
#include <p12F683.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _IESO_OFF & _FCMEN_OFF)
reset_v code 0
goto Start
code
Start:
bsf STATUS,RP0 ;banksel option_reg bättre?
movlw b'00000111' ;init timer0 med max prescale
movwf OPTION_REG
bcf STATUS,RP0
;banksel GPIO
clrf GPIO ;init GPIO
movlw b'111110' ;0 analog/1-5 digi
movwf CMCON0
banksel ANSEL
clrf ANSEL ;0 till analog fixa senare
movlw b'001001' ;1245 ut, 3/mclr in, 0 analog in
movwf TRISIO
Mainloop:
call par12 ;kör led-par 12
call par24 ;kör led-par 24
call par45 ;osv..
call par14
call par25
call par15 ;sista paret, byt håll
call par25
call par14
call par45
call par24
goto Mainloop
;tri 0 och 3 alltid höga 001001, kom ihåg, ändra till 8bit
par12
bsf STATUS,RP0
movlw b'001111' ;3210
movwf TRISIO
bcf STATUS,RP0
bsf GPIO,1 ;fram
bcf GPIO,2
call delay1
bcf GPIO,1 ;tillbaka
bsf GPIO,2
call delay1
return
par24
bsf STATUS,RP0
movlw b'011101' ;4320
movwf TRISIO
bcf STATUS,RP0
bsf GPIO,2
bcf GPIO,4
call delay1
bcf GPIO,2
bsf GPIO,4
call delay1
return
par45
bsf STATUS,RP0
movlw b'111001' ;5430
movwf TRISIO
bcf STATUS,RP0
bsf GPIO,4
bcf GPIO,5
call delay1
bcf GPIO,4
bsf GPIO,5
call delay1
return
par14
bsf STATUS,RP0
movlw b'001111' ;3210
movwf TRISIO
bcf STATUS,RP0
bsf GPIO,1
bcf GPIO,4
call delay1
bcf GPIO,1
bsf GPIO,4
call delay1
return
par25
bsf STATUS,RP0
movlw b'101101' ;5320
movwf TRISIO
bcf STATUS,RP0
bsf GPIO,2
bcf GPIO,5
call delay1
bcf GPIO,2
bsf GPIO,5
call delay1
return
par15
bsf STATUS,RP0
movlw b'101011' ;3210
movwf TRISIO
bcf STATUS,RP0
bsf GPIO,1
bcf GPIO,5
call delay1
bcf GPIO,1
bsf GPIO,5
call delay1
return
delay1
btfss INTCON,T0IF
goto $-1
bcf INTCON,T0IF
;om gp3 hög kör delay2
return
delay2
btfss INTCON,T0IF
goto $-1
bcf INTCON,T0IF
return
end