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