我的程序怎么读写不了24c02
以下是我的24C02的读写部分,下载到AT89c52上运行到jc处死循环,24C02不知道怎么不反应,我真不知道什么问题了,求教sdabitp3.7;;;;;;;;;;;...
以下是我的24C02的读写部分,下载到AT89c52上运行到jc 处死循环,24C02不知道怎么不反应,我真不知道什么问题了,求教
sda bit p3.7 ;;;;;;;;;;;;;;晶振12M
scl bit p3.6
;;;;;;;;;;;初始化;;;;;;;;;;;;
mov 70h,#1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;开始写
mainwr: lcall start
mov r7,#0a0h
lcall send
mov r7,#01h ;要写入的地址
lcall send
;要发送的地址
wrloop: mov a,70h
mov r7,a
inc r0
lcall send
lcall stop
;发送完毕,
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;开始读
mainrt: lcall start
mov r7,#0a0h
lcall send
mov r7,#01h ;;;;;;;;;;;;;;;;;;;要读的地址
lcall send
lcall start
mov r7,#0a1h
lcall send
reloop: lcall read
mov 31h,r7 ;---------读取出的数据存放的位置
lcall stop
;;;;;;;;读完返回数据存放在31H
read: mov r6,#08h
readlop1: setb sda
setb scl
lcall d5u
mov c,sda
rlc a
clr scl
djnz r6,readlop1
mov r7,a
sack: clr sda
setb scl
lcall d5u
clr scl
setb sda
ret
stop: clr sda
setb scl
lcall d5u
setb sda
lcall d5u
clr sda
clr scl
ret
send: mov r6,#08h
mov a,r7
sendlop1: rlc a
mov sda,c
setb scl
lcall d5u
clr scl
djnz r6,sendlop1
cack: setb sda
setb scl
lcall d5u
sendlop2: mov c,sda
jc sendlop2
clr scl
ret
start: setb sda
setb scl
lcall d5u
clr sda
lcall d5u
clr scl
ret
d5u: nop
nop
nop
nop
nop
ret
init: mov 70h,#0c0h
mov 71h,#0f9h
mov 72h,#0a4h
ret 展开
sda bit p3.7 ;;;;;;;;;;;;;;晶振12M
scl bit p3.6
;;;;;;;;;;;初始化;;;;;;;;;;;;
mov 70h,#1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;开始写
mainwr: lcall start
mov r7,#0a0h
lcall send
mov r7,#01h ;要写入的地址
lcall send
;要发送的地址
wrloop: mov a,70h
mov r7,a
inc r0
lcall send
lcall stop
;发送完毕,
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;开始读
mainrt: lcall start
mov r7,#0a0h
lcall send
mov r7,#01h ;;;;;;;;;;;;;;;;;;;要读的地址
lcall send
lcall start
mov r7,#0a1h
lcall send
reloop: lcall read
mov 31h,r7 ;---------读取出的数据存放的位置
lcall stop
;;;;;;;;读完返回数据存放在31H
read: mov r6,#08h
readlop1: setb sda
setb scl
lcall d5u
mov c,sda
rlc a
clr scl
djnz r6,readlop1
mov r7,a
sack: clr sda
setb scl
lcall d5u
clr scl
setb sda
ret
stop: clr sda
setb scl
lcall d5u
setb sda
lcall d5u
clr sda
clr scl
ret
send: mov r6,#08h
mov a,r7
sendlop1: rlc a
mov sda,c
setb scl
lcall d5u
clr scl
djnz r6,sendlop1
cack: setb sda
setb scl
lcall d5u
sendlop2: mov c,sda
jc sendlop2
clr scl
ret
start: setb sda
setb scl
lcall d5u
clr sda
lcall d5u
clr scl
ret
d5u: nop
nop
nop
nop
nop
ret
init: mov 70h,#0c0h
mov 71h,#0f9h
mov 72h,#0a4h
ret 展开
1个回答
展开全部
追问
请问,怎么解决sp加多次后程序飞的问题,我的程序用JB跳转后工作后用jmp返回到主程序,再执行到jb,SP又加了一次,循环多次了SP加大了,程序就飞了,我是新手不要见怪。谢谢,另外我24C02我已经搞好了,按照书上写了下,修改了下,同时可以写8个字节,读8个字节、搞这个我感觉比上炕还费劲。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询