主题:[讨论]调试 串行E2prom 读写程序时出现的 奇怪问题
tigris
[专家分:0] 发布于 2007-10-24 11:26:00
[size=3] 在网上找了一段 E2prom的读写子程序. 单独在主程序里调用 写 子程序 , 烧入MCU ,写入e2prom.然后再在主程序单独调用 读 子程序 , 烧入mcu , 从e2prom把 字 读出来 显示在8个小灯上, 小灯显示正确.
但是在主程序里一起调用读写子程序. 先写 后读 的话,程序就卡在读子程序里的一个 调用子程序"SUBS"里了.很郁闷 无法解决了[/size]
最后更新于:2007-10-24 12:08:00
回复列表 (共1个回复)
沙发
tigris [专家分:0] 发布于 2007-10-24 12:10:00
ORG 0000H
LJMP MAIN
ORG 0080H
MAIN:
MOV 30H,#0aH
MOV 31H,#0bH
MOV 32H,#0cH
MOV 33H,#0dH
MOV 34H,#0eH
MOV 35H,#0fH
MOV 40H,#00H
MOV 41H,#00H
MOV 42H,#00H
MOV 43H,#00H
MOV 44H,#00H
MOV 45H,#00H
MOV R7,#06H
MOV R1,#30H
MOV R3,#0A0H
MOV R4,#23H
LCALL EEPW
MOV R7,#06H
MOV R1,#40H
MOV R3,#0A0H
MOV R4,#23H
LCALL EEPR
clr p3.6
L2: MOV P2,40H
clr p3.7
LJMP L2
;**************************
EEPW: MOV P1,#0FFH
CLR P1.6
MOV A,R3
LCALL SUBS
MOV A,R4
LCALL SUBS
AGAIN: MOV A,@R1
LCALL SUBS
INC R1
DJNZ R7,AGAIN
CLR P1.6
ACALL DELAY
SETB P1.7
ACALL DELAY
SETB P1.6
RET
[color=FF0000]SUBS: MOV R0,#08H[/color]
LOOP: CLR P1.7
RLC A
MOV P1.6,C
NOP
SETB P1.7
ACALL DELAY
DJNZ R0,LOOP
CLR P1.7
ACALL DELAY
SETB P1.7
REP: MOV C,P1.6
JC REP
CLR P1.7
RET
DELAY: NOP
NOP
RET
;************************
EEPR: MOV P1,#0FFH
CLR P1.6
MOV A,R3
LCALL SUBS
MOV A,R4
LCALL SUBS
clr p3.5
MOV P1,#0FFH
clr p3.4
CLR P1.6
MOV A,R3
SETB ACC.0
clr p3.3
LCALL SUBS
clr p3.2
MORE: ACALL SUBR
MOV @R1,A
INC R1
DJNZ R7,MORE
CLR P1.6
ACALL DELAY
SETB P1.7
ACALL DELAY
SETB P1.6
RET
SUBR: MOV R0,#08H
LOOP2: SETB P1.7
ACALL DELAY
MOV C,P1.6
RLC A
CLR P1.7
ACALL DELAY
DJNZ R0,LOOP2
CJNE R7,#01H,LOOW
SETB P1.6
AJMP SET0K
LOOW: CLR P1.6
SET0K: ACALL DELAY
SETB P1.7
ACALL DELAY
CLR P1.7
ACALL DELAY
SETB P1.6
RET
END
读写一起的时候 程序就卡在用红色标注得 子程序SUBS里了 这个程序之前被调用过几次 都没有问题得
我来回复