doab equ $1204 Data Out AB register van de PSD dab equ $1206 Direction AB register van de PSD tctl2 equ $1021 TCTL2 register van de 68HC11 tflg1 equ $1023 TFLG1 register van de 68HC11 tflg2 equ $1025 TFLG2 register van de 68HC11 org $2000 ldx #$ff0f stx dab PPA0 t/m PPA7, PPB0 t/m PPB3 output, PPB4 t/m PPB7 input ldaa #$10 zorg ervoor dat IC1F 1 wordt bij een opgaande flank op PA2 staa tctl2 herhaal voor altijd { * herhaal { lus clrb zet pulsen teller op 0 ldx #488 zet rtperiode teller op 488 (488*4.096 ms = ongeveer 2 s) test ldaa tflg1 anda #%00000100 beq npuls als IC1F == 1 { ldaa #%00000100 maak IC1F 0 (door er een 1 naar toe te schrijven) staa tflg1 incb verhoog pulsen teller met 1 npuls ldaa tflg2 } anda #%01000000 beq test als RTIF == 1 { ldaa #%01000000 maak RTIF 0 (door er een 1 naar toe te schrijven) staa tflg2 dex verlaag rtperiod teller met 1 bne test } ldy #tabel } zolang rtperiod teller ongelijk aan 0 ldaa #25 aantal leds = aantal pulsen * 25 / 100 (nog afregelen!) mul ldx #100 idiv xgdx cmpb #12 als aantal leds > 12 { bls ok aantal leds = 12 ldab #12 } ok aby zet aantal leds om naar patroon voor om leds aan te sturen aby met behulp van "look up table" ldx 0,y stx doab stuur patroon naar leds bra lus } * tabel fdb %0000000000000000,%0000000100000000,%0000001100000000,%0000011100000000 fdb %0000111100000000,%0001111100000000,%0011111100000000,%0111111100000000 fdb %1111111100000000,%1111111100000001,%1111111100000011,%1111111100000111 fdb %1111111100001111