;=============写入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
|