next up previous contents
Next: 9.1.7 ext_int.asm Up: 9.1 Khepera-Modul Previous: 9.1.5 mcan_int.asm

9.1.6 sci_int.asm

******************************************************************************************************
* Studienarbeit      Christopher Odenbach                                                            *
*                                                                                                    *
* WS98/99                                                                                            *
*                                                                                                    *
* mit Dank an Willi                                                                                  *
******************************************************************************************************

******************************************************************************************************
*   MOTOROLA  MC68HC705X32                                                                           *
*                                                                                                    *
*    SCI Interrupt service routines                                                                  *
*                                                                                                    *
*                                                                                                    *
*                                                                                                    *
*                                                                                                    *
*                                                                                                    *
******************************************************************************************************


******************************************************************************************************

******************************************************************************************************
* select SCI service routine
******************************************************************************************************

SCI_INT                 EQU     *
                        LDA     SCSR
                        STA     SCSR_BUF
                        BRSET   5,SCSR_BUF,REC_INT      ;receiver interrupt
                        BRSET   4,SCSR_BUF,IDLE_INT     ;idle interrupt
                        BRA     EO_SCI_INT



******************************************************************************************************
* Receiver interrupt service routine
******************************************************************************************************
REC_INT                 LDX     BC_IN
                        INCX
                        STX     BC_IN
                        LDA     SCDR
                        STA     SCI_TX_RAM-1,X
                        LDA     BC_IN
                        CMP     #$08
                        BEQ     SEND_SCI
                        BSET    4,SCCR2                 ; enable one idle line interrupt

                        BRA     EO_SCI_INT

******************************************************************************************************
* Idle interrupt service routine
******************************************************************************************************
IDLE_INT                BCLR    4,SCCR2                 ;disable more idle line Interrupts
                        LDA     BC_IN                   ;any more bytes to send?
                        BEQ     EO_SCI_INT

******************************************************************************************************
* Send data to SCI
******************************************************************************************************

SEND_SCI                CLRX

TBA_WAIT_LOOP           NOP
                        BRCLR   2,CSTAT,TBA_WAIT_LOOP

SEND_SCI_LOOP           INCX
                        LDA     SCI_TX_RAM-1,X
                        STA     TDS1-1,X                ;transfer data byte to CAN transmit buffer

                        TXA
                        CMP     BC_IN
                        BEQ     INSERT_HEADER
                        BRA     SEND_SCI_LOOP

INSERT_HEADER           ORA     SENDER_ID_2             ;rest of my ID
                        ORA     SCI
                        STA     TRTDL

                        LDA     MASTER                  ;recipient is master
                        ORA     SENDER_ID_1             ;sender is me
                        STA     TBI

                        LDA     #$81                    ;set transmission request
                        STA     CCOM

                        CLRA
                        STA     BC_IN

******************************************************************************************************
* End of SCI interrupt subroutine
******************************************************************************************************
EO_SCI_INT              EQU     *
                        RTI


******************************************************************************************************



Christopher Odenbach
1999-06-01