Nu är det läge att göra hårdvaruförändringarna och ändringen i multiplexdelen. Sedan sätta den nya DISP7 till ett fast värde i initieringen av programmet för att testa så det fungerar och att inget redan befintligt slutar att fungera innan nästa steg av modifieringen läggs till.
Koppla helst dioderna så att den första att tändas ansluts till RB0, nästa till RB1 o.s.v., alternativt första till RB7, nästa till RB6 o.s.v.
Sedan kan tillägget enkelt göras utan tabell och bli okänsligt för om det hamnar på en "page break". Det kan göras utan tabell ändå, men det blir lite stökigare.
Edit: Här är ett förslag på programkod som kanske (otestad) gör det som skall göras. Den förutsätter att de nya LED's börjar tändas från RB0 och uppåt. Ändra en bokstav och en siffra och den börjar från RB7 och nedåt istället.
Edit2: missade att bitarna skall vara inverterade, ändrade detta
Kod: Markera allt
;handle extra leds illuminating one-by-one
;on seconds 55 to 59, goes blank at minute turnover
XLEDS
movlw 0xff ;inverted bits, 0xff means all off
movwf DISP7 ;turn off and also gives blank to start with
movfw TIME_CNT1 ;get seconds
addlw 0xab ;add decimal 171, gives 0..4 on BCD 55..59
btfss STATUS,c ;reached second 55?
return ;no-done
addlw 0x1 ;make #leds to lit 1-relative
XLEDS1 rlf DISP7 ;move pattern 1 pos left
bcf DISP7,0 ;turn on led at the new bit
addlw 0xff ;count down #leds to lit
btfss STATUS,z ;all done?
goto XLEDS1 ;no-do nxt
return ;yes-done
Kod: Markera allt
; transfer TIME_CNT1,2&3 to DISP1-6
TRANS call TM_DSP ; time to display
call XLEDS ; !!handle added led's!!
goto SW_CHK