; ; include "DB12Macros.Asm" opt lis ; ; RegBase: equ $0000 ; TIOS: equ RegBase+$80 ; input capture/output compare select. CFORC: equ RegBase+$81 ; force output compare register OC7M: equ RegBase+$82 ; Output compare 7 mask register. OC7D: equ RegBase+$83 ; Output compare 7 data register. TCNT: equ RegBase+$84 ; 16-bit timer/counter register. TSCR: equ RegBase+$86 ; timer system control register. TQCR: equ RegBase+$87 ; Timer Queue control register. TCTL1: equ RegBase+$88 ; Timer control register 1. TCTL2: equ RegBase+$89 ; Timer control register 2. TCTL3: equ RegBase+$8a ; Timer control register 3. TCTL4: equ RegBase+$8b ; Timer control register 4. TMSK1: equ RegBase+$8c ; Main timer interrupt mask register. TMSK2: equ RegBase+$8d ; Miscellaneous timer interrupt mask register. TFLG1: equ RegBase+$8e ; Main timer interrupt flag register. TFLG2: equ RegBase+$8f ; Main Miscellaneous timer interrupt flag register. TC0: equ RegBase+$90 ; Timer input capture/output compare 0. TC1: equ RegBase+$92 ; Timer input capture/output compare 1. TC2: equ RegBase+$94 ; Timer input capture/output compare 2. TC3: equ RegBase+$96 ; Timer input capture/output compare 3. TC4: equ RegBase+$98 ; Timer input capture/output compare 4. TC5: equ RegBase+$9a ; Timer input capture/output compare 5. TC6: equ RegBase+$9c ; Timer input capture/output compare 6. TC7: equ RegBase+$9e ; Timer input capture/output compare 7. PACTL: equ RegBase+$a0 ; Pulse accumulator control register. PAFLG: equ RegBase+$a1 ; Pulse accumulator flag register. PACNT: equ RegBase+$a2 ; 16-bit pulse accumulator count register. TIMTST: equ RegBase+$ad ; Timer test register. PORTT: equ RegBase+$ae ; Timer port data register. PORTTD: equ RegBase+$af ; Timer port data direction register. ; ; org $7000 ; SetUserVector #UserTimerCh0,#Ch0Int ; set the user timer Ch0 interrupt vector. ldaa #$03 ; set the timer prescaler to /8 staa TMSK2 ldaa #$01 staa TIOS ; set timer Ch0 as an output compare. staa PORTTD ; set the associated OC0 pin to an output. staa TMSK1 ; enable OC0 interrupts. staa TCTL2 ; set OC0 to toggle on output compares. ldd #5000 std TC0 ; set up for a 10 mS period (5 mS each half cycle). ldaa #$90 staa TSCR ; startup the timer/counter system, enable fast clear of interrupt flags. cli ; enable interrupts. bra * ; just loop here. the interrupt routine does all the work. ; ; This timer interrupt routine generates a square wave on port pin PT0 ; using the output compare function of timer channel #0. ; Ch0Int: equ * ldd TC0 ; get the value of the OC0 register. addd #5000 ; add the half period to it. std TC0 ; update the OC0 register automatically clearing the interrupt flag. rti ;