August 27, 1998
GENERAL RELEASE SPECIFICATION
ISR
BCLR
BRCLR
1,SMSR
; CLEAR THE SMIF FLAG
; CHECK THE SMSTA FLAG,
; BRANCH IF SLAVE MODE
; CHECK THE MODE FLAG,
; BRANCH IF IN RECEIVE MODE
; CHECK ACK FROM RECEIVER
; IF NO ACK, END OF
5,SMCR,SLAVE
4,SMCR,RECEIVE
0,SMSR,END
BRCLR
BRSET
; TRANSMISSION
TRANSMIT
LDA
STA
DATABUF
SMDR
; GET THE NEXT BYTE OF DATA
; TRANSMIT THE DATA
12.6.4 Generation of the STOP Signal
A data transfer ends with a STOP signal generated by the “master” device. A mas-
ter transmitter can simply generate a STOP signal after all the data has been
transmitted. The following is an example showing how a stop condition is gener-
ated by a master transmitter:
MASTX
BRSET
LDA
0,SMSR,END
TXCNT
; IF NO ACK, BRANCH TO END
; GET VALUE FROM THE
; TRANSMITTING COUNTER
; IF NO MORE DATA, BRANCH TO
; END
BEQ
END
LDA
STA
DEC
BRA
BCLR
RTI
DATABUF
SMDR
TXCNT
EMASTX
5,SMCR
; GET NEXT BYTE OF DATA
; TRANSMIT THE DATA
; DECREASE THE TXCNT
; EXIT
; GENERATE A STOP CONDITION
; RETURN FROM INTERRUPT
END
EMASTX
If a master receiver wants to terminate a data transfer, it must inform the slave
transmitter by not acknowledging the last byte of data. This can be done by setting
the transmit acknowledge bit (TXAK) before reading the 2nd last byte of data.
Before reading the last byte of data, a STOP signal must be generated first. The
following is an example showing how a STOP signal is generated by a master
receiver.
MASR
DEC
BEQ
LDA
DECA
RXCNT
ENMASR
RXCNT
; LAST BYTE TO BE READ
; CHECK LAST 2ND BYTE TO
; BE READ
BNE
BSET
NXMAR
3,SMCR
; NOT LAST ONE OR LAST SECOND
; LAST SECOND, DISABLE ACK
; TRANSMITTING
LAMAR
BRA
NXMAR
ENMASR
NXMAR
BCLR
5,SMCR
; LAST ONE, GENERATE “STOP”
; SIGNAL
; READ DATA AND STORE
LDA
STA
RTI
SMDR
RXBUF
MC68HC05SB7
REV 2.1
SM-BUS
MOTOROLA
12-13