rendered paste body include include/p12f683.inc
org 0
bcf status, 5 ; go bank 0
movlw 0x07 ; cmcon is here
movwf cmcon0
bsf status, 5 ; go bank 1
clrw
bcf ansel, 0
bcf ansel, 1
bcf ansel, 2
bcf trisio, 0
bcf trisio, 1
bcf trisio, 2
bcf status, 5 ; back to 0 for gpio
clrf gpio
; set scan limit
movlw 0x0B
movwf 0x20
movlw 1
movwf 0x03
call setnum
; enable code B decoding
movlw 0x09
movwf 0x20
movlw 0xFF
movwf 0x21
call setnum
; disable shutdown mode
movlw 0x0C
movwf 0x20
movlw 1
movwf 0x21
call setnum
; end display test
movlw 0x0F
movwf 0x20
movlw 0
movwf 0x21
call setnum
; set intensity
movlw 0x0A
movwf 0x20
movlw 0x00
movwf 0x21
call setnum
; set a number
movlw 0x04
movwf 0x20
movlw 0x03
movwf 0x21
call setnum
movlw 0x03
movwf 0x20
movlw 0x02
movwf 0x21
call setnum
movlw 0x02
movwf 0x20
movlw 0x01
movwf 0x21
call setnum
movlw 0x01
movwf 0x20
movlw 0x00
movwf 0x21
call setnum
loop
; endless loop
goto loop
; set register of max7219 chip,
; [0x20] = address
; [0x21] = data
; gp0 = data
; gp1 = clock
setnum
bcf gpio, 2 ; load low
; byte 1, address
movlw 0x80
movwf 0x22
bita
bcf gpio, 0
andwf 0x20, w
btfss status, z
bsf gpio, 0
call sleep
call clock
rrf 0x22, w ; next bit
btfsc status, c
goto enda
movwf 0x22
goto bita
enda
; byte 2, data
movlw 0x80
movwf 0x22
bitb
bcf gpio, 0
andwf 0x21, w
btfss status, z
bsf gpio, 0
call sleep
call clock
rrf 0x22, w ; next bit
btfsc status, c
goto endb
movwf 0x22
goto bitb
endb
bsf gpio, 2 ; load high
call sleep
return
clock
bsf gpio, 1
call sleep
bcf gpio, 1
call sleep
return
sleep
clrf 0x25
dlay
clrf 0x26
dlay1
clrf 0x27
decfsz 0x26, f
goto dlay1
decfsz 0x25, f
goto dlay
return
org 0x2007
data _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _FCMEN_OFF & _IESO_OFF