;=============寫入RX8025T程序=======================================
W_RX8025:
mov 30h,#00H ;8025的0Eh寄存器
mov 31h,#80H ;8025的0Fh寄存器
mov r0, #30h ;r0作為間接尋址
mov addss,#0Eh;開始地址
mov r5,#3
lcall write
ret
;---------------------------------
write:
lcall start
mov a,#64H ;寫入數據識別碼
lcall send
lcall ack
jc write
mov a,addss
lcall send
lcall ack
mov a,@r0 ;
lcall send
lcall ack
lcall stop
inc r0
inc addss
djnz r5,write ;減1后不為0轉移,存儲6位
ret
;===========讀RTX8025程序======本程序只讀3字節===========
GET8025:
mov r0,#24h ;r0開始存放地址
mov addss,#00H;指向地址
mov r5, #3
SS1:Lcall read ;調用讀程序
inc addss
inc r0
djnz r5,SS1
ret
;----------------------------------
read:
lcall start ;啟動總線
mov a, #64H ;發送芯片識別碼
lcall send
lcall ack ; 芯片應答
jc read ;
mov a, addss
lcall send
lcall ack
read_a:
lcall start
mov a,#65H ;讀
lcall send
lcall ack
jc read_a
rece:
lcall receive
mov @r0,a ;讀到數據存儲到@R0指定地址
lcall ack
lcall stop
ret
;-------總線啟動程序---------
start:
setb scl
setb sda
nop
clr sda
nop
clr scl
ret
;-------總線停止程序---------
stop:
clr sda
nop
setb scl
nop
setb sda
ret
;-----------應答----------
ack:
setb sda
nop
setb scl
jb sda, ack_0
clr c
sjmp ack_1
ack_0:
setb c
ack_1:
nop
clr scl
ret
;--------------發送8位數據---------
send:
mov b, #08h
send_1:
rlc a
mov sda, c
setb scl
nop
clr scl
djnz b, send_1
ret
;--------------接收8位數據-----------
receive:
mov b, #08h
clr a
setb sda
receive_1:
setb scl
nop
mov c,sda
rlc a
clr scl
djnz b, receive_1
ret
|