* EE 5340/7340 Lab 6: Use of interrupts and the timer. * * The following program is designed to demonstrate the use of the timer * for generating interrupts at regular intervals. The timer is programmed * to overflow once every 0.52 seconds. A timer overflow interrupt is * generated. The interrupt service routine then sends the ASCII character * 'A' to the BUFALO monitor using the serial port every 0.52 sec. * * To send data from the A/D converter, the timer overflow ISR must * be modified to manipulate the A/D converter. * *************** * EQUATES * *************** REGBS EQU $1000 start of registers BAUD EQU REGBS+$2B sci baud reg SCCR1 EQU REGBS+$2C sci control1 reg SCCR2 EQU REGBS+$2D sci control2 reg SCSR EQU REGBS+$2E sci status reg SCDAT EQU REGBS+$2F sci data reg TMSK2 EQU REGBS+$24 Timer Interrupt Mask Register 2 TFLG2 EQU REGBS+$25 Timer Interrupt Flag Register 2 * * Interrupt Vectors for microcontroller * * ORG $FFFE Reset interrupt vector * FDB start only the address goes in the vector * ORG $FFDE TOF interrupt vector * FDB TOF_ISR * * Interrupt Vectors for BUFALO monitor * ORG $00D0 Timer Overflow interrupt under monitor JMP TOF_ISR this instruction is executed every * time there is a timer overflow *************************************************************** * Main program starts here * *************************************************************** ORG $2400 * ORG $E000 start LDS #$23FF set stack pointer JSR ONSCI initialize serial port JSR t_init initialize timer CLI enable interrupts again BRA again ************************************************************ * t_init - Initialize the timer ************************************************************ t_init LDAA #$83 STAA TMSK2 enable overflow INT every 0.52 sec RTS ************************************************************ * TOF_ISR - timer overflow interrupt service routine ************************************************************ TOF_ISR LDAA #$41 put "A" in acc A JSR OUTPUT output character 'A' to monitor LDAA #$0D JSR OUTPUT LDAA #$0A JSR OUTPUT LDAA #$80 STAA TFLG2 clear TOF bit RTI return from ISR ************************************************************ * ONSCI() - Initialize the SCI for 9600 * baud at 8 MHz Extal. ************************************************************ ONSCI LDAA #$30 STAA BAUD baud register LDAA #$00 STAA SCCR1 LDAA #$0C STAA SCCR2 enable RTS ************************************************************ * OUTPUT() - Output A to sci. ************************************************************ OUTPUT OUTSCI2 LDAB SCSR read status BITB #$80 BEQ OUTSCI2 loop until tdre=1 * ANDA #$7F mask parity (not needed) STAA SCDAT send character OUTSCI3 RTS END