回 帖 发 新 帖 刷新版面

主题:[讨论]调试 串行E2prom 读写程序时出现的  奇怪问题

[size=3]      在网上找了一段 E2prom的读写子程序. 单独在主程序里调用 写 子程序 , 烧入MCU ,写入e2prom.然后再在主程序单独调用 读 子程序 , 烧入mcu  , 从e2prom把 字 读出来 显示在8个小灯上,  小灯显示正确.

     但是在主程序里一起调用读写子程序. 先写 后读 的话,程序就卡在读子程序里的一个 调用子程序"SUBS"里了.很郁闷   无法解决了[/size]   

回复列表 (共1个回复)

沙发

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里了     这个程序之前被调用过几次 都没有问题得

我来回复

您尚未登录,请登录后再回复。点此登录或注册