#include <p16f1784.inc>
;CONFIG1
; __config 0x3FE4
__CONFIG _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_OFF & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOREN_ON & _CLKOUTEN_OFF & _IESO_ON & _FCMEN_ON
; CONFIG2
; __config 0x3FFF
__CONFIG _CONFIG2, _WRT_OFF & _VCAPEN_OFF & _PLLEN_ON & _STVREN_ON & _BORV_LO & _LPBOR_OFF & _LVP_ON
delay equ 0x7e
BIGdelay equ 0x7f
NUMBER equ 0x7c ; if over 80h or greater next bank
temp equ 0x7d
NUMBERhi equ 0x7b
org 0x0000
goto start
org 0x004
goto dummyINT
start
;3600= 0E10H
movlw b'00000000' ;MOVE ZERO TO ACC "W"orking register
movwf NUMBER
movwf NUMBERhi
movwf temp
banksel TRISA; make all outputs
movwf TRISA
movwf TRISC
movwf TRISD
BANKSEL 0
goto firstZERO ;display MSB zero at beginning
loop INCF NUMBER,1
BZ HIdisplay
aftrHI movf NUMBER,0
movwf temp ;copy number to temp here
movlw b'00001111' ;least signifigant digit mask
andwf temp,0
CALL hexTable
movwf PORTD ;DISPLAY LOW DIGIT
movf NUMBER,0
movwf temp
movlw b'11110000' ;high bit mask
andwf temp, 1
LSRF temp, 1
LSRF temp, 1
LSRF temp, 1
LSRF temp, 0 ;shift right 3 times store in W
CALL hexTable
movwf PORTC
call PAUSE
;loop forever
goto loop
hexTable BRW
RETLW b'01110111' ;0
RETLW b'01000001' ;1
RETLW b'00111011' ;2
RETLW b'01101011' ;3
RETLW b'01001101' ;4
RETLW b'01101110' ;5
RETLW b'01111110' ;6
RETLW b'01000011' ;7
RETLW b'01111111' ;8
RETLW b'01001111' ;9
RETLW b'01011111' ;A
RETLW b'01111100' ;B
RETLW b'00110110' ;C
RETLW b'01111001' ;D
RETLW b'00111110' ;E
RETLW b'00011110' ;F
PAUSE movlw 0xA4
MOVWF BIGdelay
D250 movlw 0xFE
movwf delay
l250 decfsz delay,f
goto l250
DECFSZ BIGdelay,f
GOTO D250
return
HIdisplay INCF NUMBERhi,1
firstZERO movf NUMBERhi,0
movwf temp ;copy number to temp here
movlw b'00001111' ;least signifigant digit mask
andwf temp,0
CALL hexTable
movwf PORTA
goto aftrHI
dummyINT retfie
end