********** * Program ONE_TONE (6811) * * Generates 1000 Hz square wave on output PA6. Illustrates the use of * Output Capture. (PA6 corresponds to OC2). * * Time count is fetched and 1000 ticks added corresponding to 500 usecs. * * * Peter H. Anderson, MSU, 5 Feb 90; Checked 6 Feb 90; Redone 5 Nov 90 * 18 Jan 93 ********** PSCT EQU $C000 DSCT EQU $D000 IDSCT EQU $D300 STACKTP EQU $0045 OC2_VECTOR EQU $00DC REG_BASE EQU $1000 * indexed addressing of page $10 TCNT EQU $0E * free running 16-bit counter TOC2 EQU $18 * 16-bit compare pattern TMSK1 EQU $22 * int mask, OC2 corresponds to bit 6 TFLG1 EQU $23 * logic 1 on bit 6 when OC2 TCTL1 EQU $20 * config of connection to Port A ORG PSCT SEI LDS #STACKTP LDY #REG_BASE BSET TMSK1,Y %01000000 * set mask for OC_2 BCLR TCTL1,Y %10000000 * on interrupt, toggle PA6 BSET TCTL1,Y %01000000 LDD TCNT,Y * get the time counter ADDD #500*2 * add 1000 ticks STD TOC2,Y * save in TOC L1 CLI WAI BRA L1 OC2_INTSERV BCLR TFLG1,Y %10111111 * clear the interrupt flag LDD TOC2,Y * get the current TOC2 * there is an advantage to doing this rather than fetching TCNT ADDD #500*2 * add 500 usecs STD TOC2,Y * save in TOC RTI ORG OC2_VECTOR JMP OC2_INTSERV