Flashing Lights


Program to make LEDs flash in a particular pattern

; Program to make lights flash in a particular pattern

prog:       equ     $0800
stack:      equ     $0A00
PORTA:      equ     $0000
DDRA:       equ     $0002


CODE:       section .text
            org     prog

            lds     #stack     ; initialize stack pointer
            ldaa    #$ff       ; Make PORTA output
            staa    DDRA       ;   0xFF -> DDRA
l1:         ldx     #table     ; Start pointer at table
l2:         ldaa    1,x+       ; Get value; point to next
            staa    PORTA      ; Update LEDs
            jsr     delay      ; Wait a bit 
            cpx     #table_end ; More to do?
            bls     l2         ; Yes, keep going through
                               ;   table
            bra     l1         ; At end; reset pointer

; Subroutine to wait for 100 ms

delay:      psha
            pshx
            ldaa    #250
loop2:      ldx     #800
loop1:      dex    
            bne     loop1
            deca
            bne     loop2
            pulx
            pula
            rts

DATA:       section .data
            org     data
table:      dc.b    $00
            dc.b    $80
            dc.b    $C0
            dc.b    $E0
            dc.b    $F0
            dc.b    $F8
            dc.b    $FC
            dc.b    $FE
table_end:  dc.b    $FF