久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1695|回復: 11
打印 上一主題 下一主題
收起左側

C51單片機E2PROM拷貝程序,用MASM51編譯通過,燒入單片機后led2亮2s后無反應,請匯...

[復制鏈接]
跳轉到指定樓層
樓主
ID:655665 發表于 2021-9-7 13:18 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
C51單片機,E2PROM  24C01-24C256母、子片拷貝的程序,
程序如下:
;***********************
;Copy Ee24 to Ee24
;************************
Debug equ 01
JbE24Bak bit 00h;=1 Slave
sda bit p3.2
scl bit p3.3
sda_bak bit p3.5;bak ee24c16
scl_bak bit scl
Led1 bit p3.7
Led2 bit p3.4
;*********************************
AdrL equ 08h
AdrH Equ AdrL+1
AdrMaxL Equ AdrH+1
AdrMaxh Equ AdrmaxL+1
;***********************************
Temp equ 21h
SpData equ Temp+64
;*************************************
ORG 0000H;;
LJMP start1
ORG 0003H;;
reti;
Ljmp int0
reti;
ORG 000BH;
reti;
ORG 0013H
reti;
ORG 001BH;
reti
ORG 0023H;
reti
;**************************************
start1:
        mov b,#7fh
        MOV R0,#01H;
clrram: INC R0;
        MOV @R0,#00h;
        Djnz r1,$;R1
        Djnz r1,$
        Djnz r1,$
        djnz b,clrram
        MOV SP,#spdata;
;**** read ee24 if =err then led_err =1
        Lcall ReadEe24data
        jnb f0,DoNext1
;***** led1 =Ligh
       clr Led1
       Ljmp Delay2S
DoNext1:
       setb JbE24bak
       Lcall ReadEe24data ;Read Slave
       jnb f0,Main
       clr Led2
Delay2S:
        mov r7,#0
Led11:
        Lcall Delay;call Delay
        djnz r7,Led11
        Sjmp Main1
;################################
Main:
        Clr JbE24Bak
        mov Dpl,AdrL
        mov Dph,AdrH
        Lcall ReadEe24Data
        Setb JbE24Bak
        mov Dpl,AdrL
        mov Dph,AdrH
        Lcall WriteEe24Data
;**********************
        Lcall ReadDip
        add a,AdrL
        mov Adrl,a
        mov a,AdrH
        addc a,#0
        mov AdrH,a
;**********************
        EE24c01 equ 128
;**********************
        mov AdrMaxL,#EE24c01
        mov AdrMaxH,#0
        mov a,b
        jz JbOver
RlAdr:
        mov a,AdrMaxl
        rlc a
        mov AdrMaxL,a
        mov a,AdrmaxH
        rlc a
        mov AdrMaxH,a
        djnz b,RlAdr
;******** jb Over
JbOver:
        mov a,Adrl
        add a,#01
        mov R7,a
        mov a,AdrH
        addc a,#0
        mov r6,a; r6r7=Adr+1
;************ sub
        clr c
        mov a,r7
        subb a,AdrMaxL
        mov r7,a
        mov a,r6
        subb a,Adrmaxh
        jc main
;Over
Main1:
        nop
        if Debug =1
        mov p1,#0ffh
        mov p3,#0ffh
        mov Pcon,#02
        Else
        endif
;************************
ReadDip:
        mov a,p1
        anl a,#0f0h
        swap a
        mov b,a
        cjne a,#05,Rdd1
        mov a,#32
        ret
rdd1:
        cjne a,#06,rdd2
        mov a,#32
        ret
rdd2:
        cjne a,#07,rdd3
rdd4:
        mov a,#64
        ret
rdd3:
        jnc rdd4
        mov a,#16
        ret
;*****************
IntEe24:
        Lcall ReadDip
        mov r1,a
        cjne a,#16,Ee24Type
        clr a
        sjmp rade1
Ee24type:
        mov a,#01
Rade1:
        mov R0,#Temp
        ret
;************************
ReadEe24Data:
        Lcall IntEe24
;********************
;Dptr=Ee24Adr
;R0=RamAdrCpu
;R1=DataNumber
;a=0 24c01~14c16
;a=1 24c32~24c512
;use a,b
;********************
rdee:
      Lcall star_ee
      mov R7,a
;*************************
;a=0 24c01~24c16
;a=1 >24c16
      jz Rree32
;>24c32
;in order: 1010,000 r/w
      mov a,#0a0h
      Lcall w1bt
      Lcall cack
      jb f0,rdee_end
;** in adr_h
      mov a,dph
      sjmp Rree321
Rree32:
       mov a,dph
;**************************
       rl a;
       orl a,#0a0h
;**************************
Rree321:
        Lcall w1bt
        Lcall cack
        jb f0,rdee_end
        mov a,dpl
        Lcall w1bt
        Lcall cack
        jb f0,rdee_end
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
        Lcall star_ee
;*************************
        mov a,r7
;*************************
        jz Rr32
;** 24c32 slave =10100001h
        mov a,#0a1h
        sjmp Rr33
Rr32:
        mov a,dph
;**************************
        rl a
        orl a,#0a1h; slar
;**************************
Rr33:
        Lcall w1bt
        Lcall cack
        jb f0,rdee_end
;************ Read @R1 Number
ReadNext:
         Lcall r1bt
         mov @r0,a
         inc r0
         Lcall mack
         djnz r1,ReadNext
         Lcall mnack
         Lcall stop_ee
rdee_end:
         ret
;****************************
delay:
        push acc
        mov b,#04
delay2:
        mov a,#0ffh
delay1:
        dec a
        jnz delay1
        djnz b,delay2
        pop acc
        ret
;**********
Jbsda1:
       jb JbE24Bak,ste11
       setb sda
       sjmp ste12
ste11:
       setb sda_bak
ste12:
       ret

Jbsda0:
       jb JbE24Bak,ste13
       clr sda
       sjmp ste14
ste13:
       clr sda_bak
ste14:
       ret
;*****************************
star_ee:
         Lcall jbsda1
         setb scl
         Lcall jbsda0
         clr scl
         ret
stop_ee:
         Lcall jbsda0
         setb scl
         Lcall jbsda1
         ret
mack:
         Lcall jbsda0
         setb scl
         nop
         nop
         clr scl
         Lcall jbsda1
         ret
mnack:
       Lcall jbsda1
       setb scl
       nop
       nop
       clr scl
       Lcall jbsda0
       ret
cack:
        Lcall jbsda1
        setb scl
        nop
        nop
        clr f0

       jb jbE24bak,jee23
       jnb sda,cend
       sjmp jee24
jee23:
       jnb sda_bak,cend
jee24:
       setb f0
cend:
       clr scl
       ret
w1bt:
       mov B,#08
wlp:
       rlc a
       jc wr1
wr0:
       Lcall jbsda0
       setb scl
       nop
       nop
       clr scl;********
       Ljmp wlp1
wr1:
       Lcall jbsda1
       setb scl
       nop
       nop
       clr scl
       Lcall jbsda0
wlp1:
       nop
       djnz B,wlp
       ret
r1bt:
       mov b,#08
rlp:
       Lcall jbsda1
       setb scl
       nop
;******
       jb jbE24bak,jee12
       jnb sda ,rd0
       sjmp rd1
jee12:
       jnb sda_bak,rd0

rd1:
      setb c
      rlc a
      clr scl
      Ljmp rlp1
rd0:
      clr c
      rlc a
      clr scl
rlp1:
      nop
      djnz b,rlp
      ret
;*******************************
WriteEe24Data:
          Lcall IntEe24
;******************************
;Dptr=Ee24Adr
;R0=RamAdrCpu
;R1=DataNumber
;a=0 24c01~14c16
;a=1 24c32~24c512
;use a,b
;*****************************
wree:
     Lcall star_ee
;*************************
;a=0 24c01~24c16
;a=1 >24c16
     jz Wree32
;>24c32
;in order: 1010,000 r/w
      mov a,#0a0h
      Lcall w1bt
      Lcall cack
      jb f0,wree_end
;** in adr_h
      mov a,dph
      sjmp wree321
Wree32:
        mov a,dph
;**************************
      rl a
      orl a,#0a0h;slaw
;**************************
wree321:
       Lcall w1bt
       Lcall cack
       jb f0,wree_end
       mov a,dpl
       Lcall w1bt
       Lcall cack
       jb f0,wree_end
;*******************************
Wrnext:
       mov a,@r0
       inc r0
       Lcall w1bt
       Lcall cack
       jb f0,wree_end
       djnz r1,WrNext
       Lcall stop_ee
       Lcall Delay;10Ms
wree_end:
       ret
       END

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

來自 9#
ID:624769 發表于 2021-9-8 00:21 | 只看該作者
hmsd 發表于 2021-9-7 22:28
謝謝您的回復,受教了。
最近在寫E2PROM復制器的程序,就是把兩個24C32,將其中一個里面的數據,通過單
...

我不知道你擅長用什么代碼, 看你的代碼, 感覺有點 硬上匯編的樣子. 雖然匯編本來就是難解讀,但是你是亂在框架都沒.  雖然,匯編屬于 行 代碼, 但是 也是有框的. 簡單來講, 首先你要有個框,比方說,
ORG     0000H
LJMP    MAIN
這里你可以先空著,先把MAIN 做出來
ORG     0100H
MAIN:
這里你不知道寫啥,也先空著,然后就是搭建 MAIN 里面的主循環了
MAIN_LOOP:
這里可以先空著,慢慢構架,
但是,切記不要跳出這個主循環,用到JMP的不能跳出 MAIN_LOOP 范圍,就算跳出去,也要JMP回來。CALL 的任何東西, 都要有RET 保證返回。
LJMP  MAIN_LOOP      這個就是死循環了,主程序就一直在這個范圍里面跑了。
然后, 開始搭建子程序,寫完一個,用RET 結束, 在MAIN_LOOP 里面 CALL
最好子程序 用
xxxxxxx  segment code
RSEG xxxxxx     的方式來分段,方便編譯,也可以明確知道是不同子程序。
別的也不知道說什么,多看看別人的例程吧。
然后,你要讀 AT24C02 的話, 用Y_G_G那個,你就只要搭建 MAIN 函數 去 CALL 他的 WRITE_BYTE 就好了。不是省事很多么?

評分

參與人數 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

沙發
ID:401564 發表于 2021-9-7 16:10 | 只看該作者
咋又問這匯編IIC了,我充滿了問號?你確定人家看你這代碼能看得明白?什么注釋都沒有
以下我是寫的用于驗證24C01的IIC讀寫,可以復制調用
;=========================================================================================
;WRITE_BYTE---------向U3寫入一個字節-----------------------------------------------
WRITE_BYTE:                MOV         B,#08                                        ;要寫入的是8個位
WRITE_BYTE_1:         CLR         SCL                                                        ;在這里要先把SCL拉低,如果是高的話,SDA的變化會被當是啟動/停止的信號
                                CALL        DELAY_1                                                ;
                                RLC         A                                                        ;A帶進位左移一位
                                MOV         SDA,C                                        ;IIC協議是從高位先輸入,最高位MSM位移成了C
                                CALL        DELAY_1                                                ;
                                SETB         SCL                                                ;時鐘的上升沿寫入
                                CALL        DELAY_1                                                ;
                                DJNZ         B,WRITE_BYTE_1                        ;要寫入的字節數是8
                                CLR         SCL                                                         ;如果不拉低,從機會在SDA線產生變化時認為是啟始位,或者是停止位
                                CALL        DELAY_1                                                ;
                                SETB         SDA                                                 ;釋放SDA線
                                CALL        DELAY_1                                                ;
                                SETB         SCL                                                ;時鐘高電平
                                MOV                IIC_COUNT,#200                        ;
REP:                         DJNZ        IIC_COUNT,WRITE_BYTE_REP        ;
                                SETB        IIC_F                                                ;IIC沒有能完成寫入
                                JMP                WRITE_BYTE_END                        ;讀取100次之后還不應答,就退出
WRITE_BYTE_REP:        CALL        DELAY_1                                                ;
                                MOV         C,SDA                                         ;把SDA位送到C
                                JC                 REP                                                ;IIC協議:在第九個時鐘把SDA拉低,作為應答,如果是高電平,就繼續等待
                                CLR                IIC_F                                        ;IIC已經完成寫入
WRITE_BYTE_END:        CLR         SCL                                                        ;時鐘低電平
RET                                                                                                ;
;=========================================================================================
;READ_BYTE----------從U3讀一個字節-------------------------------------------------
READ_BYTE:                 SETB        SDA                                                        ;要釋放SDA
                                MOV         B,#8                                                ;要寫入的字節數是8位
READ_BYTE_1:         CALL        DELAY_1                                                ;
                                SETB         SCL                                                ;時鐘高
                                CALL        DELAY_1                                                ;
                                MOV         C,SDA                                           ;SDA線的狀態傳送到C
                                RLC         A                                                        ;A左移一位,C變成最低位,IIC協議是從最高位開始讀出的
                                CLR         SCL                                                        ;
                                DJNZ         B,READ_BYTE_1                         ;要讀取的字節數是8
RET                                                                                                        ;
;=========================================================================================
START:                        SETB        SDA                                                        ;
                                CALL        DELAY_1                                                ;
                                SETB        SCL                                                        ;SCL=0
                                CALL        DELAY_1                                                ;
                                CLR                SDA                                                ;SDA由1>0,啟動
                                CALL        DELAY_1                                                ;
                                CLR         SCL                                                        ;
RET                                                                                                ;
STOP:                        CLR                SDA                                                ;SDA=0
                                CALL        DELAY_1                                                ;
                                SETB        SCL                                                        ;
                                CALL        DELAY_1                                                ;
                                SETB        SDA                                                        ;SDA從0>1,停止
                                CALL        DELAY_1                                                ;
                                CLR                SCL                                                ;
RET                                                                                                ;
;=========================================================================================
DELAY_1:                PUSH          DEL1                                                ;
                            PUSH          DEL2                                                ;
                                MOV                DEL1,#40                                ;延時,讓從機有時間響應
DELAY_1_0:                MOV                DEL2,#100                                ;
                                DJNZ        DEL2,$                                                ;
                                DJNZ        DEL1,DELAY_1_0                                ;
                                POP                DEL2                                                ;
                                POP                DEL1                                                ;
RET                                                                                                ;
;=======================================================================================

回復

使用道具 舉報

板凳
ID:624769 發表于 2021-9-7 16:23 | 只看該作者
匯編本來看起來就累,  你還沒注釋, 沒注釋也就算了,  還有好多無用代碼. 麻煩你整理一下再發好嗎?
ORG 0000H;;
LJMP start1
ORG 0003H;;
reti;
Ljmp int0
reti;

你這里, 都RETI 了 后面那么 LJMP INT0 肯定是 不會動作的, 查了一遍 你發的代碼 確實沒有 INT0 標號,但是問題是, 沒有INT0 標號, 你編譯能通過? 不會報錯?
回復

使用道具 舉報

地板
ID:624769 發表于 2021-9-7 16:38 | 只看該作者
話說.... 你這51的匯編是跟誰學的?
學51的匯編就老老實實 用A51 不好么?
   if Debug =1   都用出來了。。。。
看你也有寫過  jb  f0,wree_end    這個代碼。
你這里不是應該: jb Debug,.........   的么?
就算你上面  Debug  一定要  equ  01
你這里 也應該  MOV   A,#01  然后:  CJNE   A,#Debug, ........  的吧?
唉,眼睛疼……
回復

使用道具 舉報

5#
ID:655665 發表于 2021-9-7 18:03 | 只看該作者
188610329 發表于 2021-9-7 16:23
匯編本來看起來就累,  你還沒注釋, 沒注釋也就算了,  還有好多無用代碼. 麻煩你整理一下再發好嗎?
ORG 000 ...

謝謝大神,您費心了,當時編譯時時將這句屏蔽掉的。以下是重新整理過的,煩請大神給看看。
;***********************
;Copy Ee24 to Ee24
;************************
Debug equ 01
JbE24Bak bit 00h;=1 Slave
sda bit p3.2
scl bit p3.3
sda_bak bit p3.5;bak ee24c16
scl_bak bit scl
Led1 bit p3.7
Led2 bit p3.4
;*********************************
AdrL equ 08h
AdrH Equ AdrL+1
AdrMaxL Equ AdrH+1
AdrMaxh Equ AdrmaxL+1
;***********************************
Temp equ 21h
SpData equ Temp+64
;*************************************
ORG 0000H;
LJMP start1
ORG 0003H;
ORG 000BH;
ORG 0013H
ORG 001BH;
ORG 0023H;
;**************************************
start1:
        mov b,#7fh
        MOV R0,#01H;
clrram: INC R0;
        MOV @R0,#00h;
        Djnz r1,$;
        Djnz r1,$
        Djnz r1,$
        djnz b,clrram
        MOV SP,#spdata;
;**** read ee24 if =err then led_err =1
        Lcall ReadEe24data
        jnb f0,DoNext1
;***** led1 =Ligh
       clr Led1
       Ljmp Delay2S
DoNext1:
       setb JbE24bak
       Lcall ReadEe24data ;Read Slave
       jnb f0,Main
       clr Led2
Delay2S:
        mov r7,#0
Led11:
        Lcall Delay;call Delay
        djnz r7,Led11
        Sjmp Main1
;################################
Main:
        Clr JbE24Bak
        mov Dpl,AdrL
        mov Dph,AdrH
        Lcall ReadEe24Data
        Setb JbE24Bak
        mov Dpl,AdrL
        mov Dph,AdrH
        Lcall WriteEe24Data
;**********************
        Lcall ReadDip
        add a,AdrL
        mov Adrl,a
        mov a,AdrH
        addc a,#0
        mov AdrH,a
;**********************
        EE24c01 equ 128
;**********************
        mov AdrMaxL,#EE24c01
        mov AdrMaxH,#0
        mov a,b
        jz JbOver
RlAdr:
        mov a,AdrMaxl
        rlc a
        mov AdrMaxL,a
        mov a,AdrmaxH
        rlc a
        mov AdrMaxH,a
        djnz b,RlAdr
;******** jb Over
JbOver:
        mov a,Adrl
        add a,#01
        mov R7,a
        mov a,AdrH
        addc a,#0
        mov r6,a; r6r7=Adr+1
;************ sub
        clr c
        mov a,r7
        subb a,AdrMaxL
        mov r7,a
        mov a,r6
        subb a,Adrmaxh
        jc main
;Over
Main1:
        nop
        if Debug =1
        mov p1,#0ffh
        mov p3,#0ffh
        mov Pcon,#02
        Else
        endif
;************************
ReadDip:
        mov a,p1
        anl a,#0f0h
        swap a
        mov b,a
        cjne a,#05,rdd1
        mov a,#32
        ret
rdd1:
        cjne a,#06,rdd2
        mov a,#32
        ret
rdd2:
        cjne a,#07,rdd3
rdd4:
        mov a,#64
        ret
rdd3:
        jnc rdd4
        mov a,#16
        ret
;*****************
IntEe24:
        Lcall ReadDip
        mov r1,a
        cjne a,#16,Ee24Type
        clr a
        sjmp rade1
Ee24type:
        mov a,#01
Rade1:
        mov R0,#Temp
        ret
;************************
ReadEe24Data:
        Lcall IntEe24
;********************
;Dptr=Ee24Adr
;R0=RamAdrCpu
;R1=DataNumber
;a=0 24c01~14c16
;a=1 24c32~24c512
;use a,b
;********************
rdee:
      Lcall star_ee
      mov R7,a
;*************************
;a=0 24c01~24c16
;a=1 >24c16
      jz Rree32
;>24c32
;in order: 1010,000 r/w
      mov a,#0a0h
      Lcall w1bt
      Lcall cack
      jb f0,rdee_end
;** in adr_h
      mov a,dph
      sjmp Rree321
Rree32:
       mov a,dph
;**************************
       rl a;
       orl a,#0a0h
;**************************
Rree321:
        Lcall w1bt
        Lcall cack
        jb f0,rdee_end
        mov a,dpl
        Lcall w1bt
        Lcall cack
        jb f0,rdee_end
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
        Lcall star_ee
;*************************
        mov a,r7
;*************************
        jz Rr32
;****************** 24c32 slave =10100001h
        mov a,#0a1h
        sjmp Rr33
Rr32:
        mov a,dph
;**************************
        rl a
        orl a,#0a1h; slar
;**************************
Rr33:
        Lcall w1bt
        Lcall cack
        jb f0,rdee_end
;************ Read @R1 Number
ReadNext:
         Lcall r1bt
         mov @r0,a
         inc r0
         Lcall mack
         djnz r1,ReadNext
         Lcall mnack
         Lcall stop_ee
rdee_end:
         ret
;****************************
delay:
        push acc
        mov b,#04
delay2:
        mov a,#0ffh
delay1:
        dec a
        jnz delay1
        djnz b,delay2
        pop acc
        ret
;**************************
Jbsda1:
       jb JbE24Bak,ste11
       setb sda
       sjmp ste12
ste11:
       setb sda_bak
ste12:
       ret

Jbsda0:
       jb JbE24Bak,ste13
       clr sda
       sjmp ste14
ste13:
       clr sda_bak
ste14:
       ret
;*****************************
star_ee:
         Lcall jbsda1
         setb scl
         Lcall jbsda0
         clr scl
         ret
stop_ee:
         Lcall jbsda0
         setb scl
         Lcall jbsda1
         ret
mack:
         Lcall jbsda0
         setb scl
         nop
         nop
         clr scl
         Lcall jbsda1
         ret
mnack:
       Lcall jbsda1
       setb scl
       nop
       nop
       clr scl
       Lcall jbsda0
       ret
cack:
        Lcall jbsda1
        setb scl
        nop
        nop
        clr f0
       jb jbE24bak,jee23
       jnb sda,cend
       sjmp jee24
jee23:
       jnb sda_bak,cend
jee24:
       setb f0
cend:
       clr scl
       ret
w1bt:
       mov B,#08
wlp:
       rlc a
       jc wr1
wr0:
       Lcall jbsda0
       setb scl
       nop
       nop
       clr scl
;**************************
       Ljmp wlp1
wr1:
       Lcall jbsda1
       setb scl
       nop
       nop
       clr scl
       Lcall jbsda0
wlp1:
       nop
       djnz B,wlp
       ret
r1bt:
       mov b,#08
rlp:
       Lcall jbsda1
       setb scl
       nop
;****************
       jb jbE24bak,jee12
       jnb sda ,rd0
       sjmp rd1
jee12:
       jnb sda_bak,rd0

rd1:
      setb c
      rlc a
      clr scl
      Ljmp rlp1
rd0:
      clr c
      rlc a
      clr scl
rlp1:
      nop
      djnz b,rlp
      ret
;*******************************
WriteEe24Data:
          Lcall IntEe24
;******************************
;Dptr=Ee24Adr
;R0=RamAdrCpu
;R1=DataNumber
;a=0 24c01~14c16
;a=1 24c32~24c512
;use a,b
;*****************************
wree:
     Lcall star_ee
;*************************
;a=0 24c01~24c16
;a=1 >24c16
     jz Wree32
;>24c32
;in order: 1010,000 r/w
      mov a,#0a0h
      Lcall w1bt
      Lcall cack
      jb f0,wree_end
;** in adr_h
      mov a,dph
      sjmp wree321
Wree32:
        mov a,dph
;**************************
      rl a
      orl a,#0a0h;slaw
;**************************
wree321:
       Lcall w1bt
       Lcall cack
       jb f0,wree_end
       mov a,dpl
       Lcall w1bt
       Lcall cack
       jb f0,wree_end
;*******************************
Wrnext:
       mov a,@r0
       inc r0
       Lcall w1bt
       Lcall cack
       jb f0,wree_end
       djnz r1,WrNext
       Lcall stop_ee
       Lcall Delay;10Ms
wree_end:
       ret
       END

回復

使用道具 舉報

6#
ID:624769 發表于 2021-9-7 20:50 | 只看該作者
hmsd 發表于 2021-9-7 18:03
謝謝大神,您費心了,當時編譯時時將這句屏蔽掉的。以下是重新整理過的,煩請大神給看看。
;*********** ...

從 start1 開始 往下走,第一個強制跳轉是: LJMP Delay2S, 我們跟著跳過去 繼續往下走,又一個強制跳轉到 SJMP Main1,我們跟過去,從Main1 繼續往下, 越過那個奇怪的 (if else endif)  反正沒有跳轉,繼續往下, rdd1 上面 我看到 RET!!!  這個 RET 回去哪里? 你 Debug 的話, 這個地方應該會卡住吧?
回復

使用道具 舉報

7#
ID:624769 發表于 2021-9-7 21:12 | 只看該作者
hmsd 發表于 2021-9-7 18:03
謝謝大神,您費心了,當時編譯時時將這句屏蔽掉的。以下是重新整理過的,煩請大神給看看。
;*********** ...

我覺得.......

你還是把沙發的Y_G_G 的那個代碼封裝一下,然后直接調用吧……  你自己就寫個 CALL 然后老老實實一步步走,看著你想寫分支,但是好像匯編真的不適合你,你不如 C 語言 匯編 混合編寫吧, 要寫IF 就去C 要JMP就回匯編,自己寫的也舒服。
回復

使用道具 舉報

8#
ID:655665 發表于 2021-9-7 22:28 | 只看該作者
188610329 發表于 2021-9-7 21:12
我覺得.......

你還是把沙發的Y_G_G 的那個代碼封裝一下,然后直接調用吧……  你自己就寫個 CALL 然 ...

謝謝您的回復,受教了。
最近在寫E2PROM復制器的程序,就是把兩個24C32,將其中一個里面的數據,通過單

片機復制到另一個里面去,可總是寫不好,思路一直很混亂。請大神給指點個好的

思路,按您的思路,我再重新寫程序。
回復

使用道具 舉報

10#
ID:401564 發表于 2021-9-8 09:17 | 只看該作者
你又是PIC匯編,又是8051匯編,照說會兩門匯編語言的,就不應該是新手了,一個IIC也不是什么難事了
一口是吃不成胖子的,你得一步一步來,IIC最主要就是從機地址和應答,先學好這兩個
不可能一上來就是上千行匯編代碼,你叫別人一看,頭能不暈嗎?
我自己幾個月前寫的,全是帶中文注釋的,我看著都頭暈,更別說是看別人的......
回復

使用道具 舉報

11#
ID:655665 發表于 2021-9-8 10:51 | 只看該作者
188610329 發表于 2021-9-8 00:21
我不知道你擅長用什么代碼, 看你的代碼, 感覺有點 硬上匯編的樣子. 雖然匯編本來就是難解讀,但是你是亂在 ...

188610329 大神辛苦了,謝謝您。
回復

使用道具 舉報

12#
ID:655665 發表于 2021-9-8 10:52 | 只看該作者
Y_G_G 發表于 2021-9-8 09:17
你又是PIC匯編,又是8051匯編,照說會兩門匯編語言的,就不應該是新手了,一個IIC也不是什么難事了
一口是吃不 ...

Y_G_G  大神辛苦了,謝謝您。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美二级 | 国产精品视频播放 | 国产美女在线播放 | 中文字幕免费视频 | 黄免费在线 | 伊人手机在线视频 | 成人免费xxxxx在线视频 | 一级国产精品一级国产精品片 | 二区不卡 | 国产精品久久av | 国产高清免费 | 天天综合国产 | 草久久久 | 91精品国产一区二区三区 | 亚洲三区视频 | 国产三级在线观看播放 | 91视频导航 | 中文字幕一区二区三区四区五区 | 亚洲欧美中文日韩在线v日本 | 亚洲天堂av在线 | 亚洲精选一区二区 | 最新中文字幕在线 | 国产美女视频黄 | 成人av观看 | 国产精品久久久久久久一区二区 | 欧美日韩一区二区三区在线观看 | 操人网| 成人精品一区二区三区中文字幕 | 97人人澡人人爽91综合色 | 国产亚洲精品综合一区 | 欧美一区免费 | 午夜精品久久 | 成人影院网站ww555久久精品 | 国产精品成人一区二区三区 | 亚洲欧美激情视频 | 91久久久久久久久久久 | 亚洲综合资源 | 日本免费一区二区三区 | 国产精品久久久久久久久久久免费看 | 伊人网91| 日本一区二区三区免费观看 |