|
SET_SDA_OUT
;################################################last
mov M,#$0F ;настройка SDA и SCL на выход
mov W,#$03
mov !RB,W
ret
SET_SDA_IN
;################################################last
mov M,#$0F ; 1 in 0 out
mov W,#$07
mov !RB,W
ret
SEND_BIT_0
;################################################last
call DELAY_10us
clrb SDA
call DELAY_10us
setb SCL
call DELAY_10us
clrb SCL
call DELAY_10us
clrb SDA
call DELAY_10us
ret
SEND_BIT_1
;################################################last
call DELAY_10us
setb SDA
call DELAY_10us
setb SCL
call DELAY_10us
clrb SCL
call DELAY_10us
clrb SDA
call DELAY_10us
ret
GET_ACK
;################################################last
call DELAY_10us
call SET_SDA_IN
call DELAY_10us
setb SCL
call DELAY_10us
mov W, RB
mov status_ack, W
clrb SCL
call DELAY_10us
call SET_SDA_OUT
call DELAY_10us
clrb SDA
call DELAY_10us
ret
SET_FLAG
;################################################last
call SET_SDA_OUT ;настройка SDA и SCL на выход
setb SCL ; all signal to up
call DELAY_10us
setb SDA ; all signal to up
call DELAY_10us
;-----------------------
; start bit
clrb SDA
call DELAY_10us
clrb SCL
call DELAY_10us
; control word
call SEND_BIT_1
call SEND_BIT_0
call SEND_BIT_1
call SEND_BIT_0
call SEND_BIT_0
call SEND_BIT_0
call SEND_BIT_0
call SEND_BIT_0 ; write bit
; get acknowlege
call GET_ACK
snb status_ack. 2
jmp SET_FLAG
; address
call SEND_BIT_0
call SEND_BIT_0
call SEND_BIT_0
call SEND_BIT_0
call SEND_BIT_0
call SEND_BIT_0
call SEND_BIT_0
call SEND_BIT_0
; get acknowledge
call GET_ACK
; data
call SEND_BIT_1
call SEND_BIT_1
call SEND_BIT_1
call SEND_BIT_1
call SEND_BIT_1
call SEND_BIT_1
call SEND_BIT_1
call SEND_BIT_1
; get acknowledge
call GET_ACK
; stop condition
setb SCL
call DELAY_10us
setb SDA
call DELAY_10us
ret
E-mail: info@telesys.ru