#include "c:\miniide\hcs12.inc" pat_port equ PORTB ; Port that drives the segment pattern pat_dir equ DDRB ; direction register of the segment pattern sel_port equ PTP ; Port that select the digit sel_dir equ DDRP ; direction register of the select port org $1500 movb #$FF,pat_dir ; configure pattern port for output movb #$3F,sel_dir ; configure digit select port for output forever ldx #disp_tab ; use X as the pointer loop movb 1,x+,pat_port ; output the digit pattern movb 1,x+,sel_port ; output the digit select value ldy #1 ; wait for 1 ms jsr delayby1ms ; " cpx #disp_tab+8 ; reach the end of the table bne loop bra forever delayby1ms movb #$90,TSCR1 ; enable TCNT & fast flags clear movb #$06,TSCR2 ; configure prescale factor to 64 movb #$01,TIOS ; enable OC0 ldd TCNT again0 addd #375 ; start an output compare operation std TC0 ; with 1 ms time delay wait_lp0 brclr TFLG1,$01,wait_lp0 ldd TC0 dbne y,again0 rts ; ***************************************************************** ; seven-segment display table (pattern, digit select) ; ***************************************************************** disp_tab dc.b $06,$FE ; pattern for 1 dc.b $5B,$FD ; pattern for 2 dc.b $4F,$FB ; pattern for 3 dc.b $66,$F7 ; pattern for 4 ; dc.b $5B,$02 ; pattern for 5 ; dc.b $5F,$01 ; pattern for 6 end