*12456789012345678901245678901234567890124567890123456789 #INCLUDE 'A:\VAR_DEF.ASM' *LAB3-EX2 * Define program variables ORG DATA DT RMB 2 ; Half wave duration * Start main program ORG PROGRAM START LDX #REGBAS LDAA #%00010000 ; mask for OM3=0, OL3=1 STAA TCTL1,X ; set OC3 to toggle LDD DT ; store TCNT+DT in TOC3 ADDD TCNT,X STD TOC3,X * Main loop LABEL1 LDAA TFLG1,X ; check OC3F ANDA #%00100000 ; mask for OC3F BEQ LABEL1 ; loop back * We are here when output compare happens LDAA #%00100000 ; reset OC3F STAA TFLG1,X LDD DT ; add DT to TCNT ADDD TCNT,X ; STD TOC3,X ; store new time in TOC3 BRA LABEL1 ; back to the top SWI ORG RESET ; reset vector FDB START ; set to start of program