****************************************************************************************************** * 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 ******************************************************************************************************