;
; variables
;
Dig_Sel equ 0x70 ; bit 7 is used to select digit
Temp equ 0x71 ;
;
org 0x0000
Reset
clrf STATUS ; force bank 0
movlw h'07' ;
movwf CMCON ; turn comparator off
bsf STATUS,RP0 ; bank 1
movlw h'FF' ;
movwf TRISA ; make Port A all inputs
movlw h'00' ;
movwf TRISB ; make Port B all outputs
bcf STATUS,RP0 ; bank 0
clrf Dig_Sel ; init Digit Select (B7 = 0)
Loop
movf PORTA,W ; get Lo input in b3..b0
btfsc Dig_Sel,7 ; low digit? yes, skip, else
swapf PORTA,W ; get Hi input in b3..b0
call SegData ; get segment data
iorwf Dig_Sel,W ; pick up digit select bit (b7)
movwf PORTB ; update display
movlw b'10000000' ; digit select bit mask
xorwf Dig_Sel,F ; toggle b7 digit select bit
goto Loop ;