標(biāo)題: 編譯時(shí)顯示錯(cuò)誤,求幫忙看下是什么問題 [打印本頁(yè)]

作者: 天涯浪子99    時(shí)間: 2014-6-13 16:16
標(biāo)題: 編譯時(shí)顯示錯(cuò)誤,求幫忙看下是什么問題
顯示是這樣的錯(cuò)誤:
Rebuild target 'Target 1'
assembling 123.asm...
123.asm(5): error A40: INVALID REGISTER
123.asm(5): error A9: SYNTAX ERROR
Target not created
程序:ORG 0000H
AJMP MAIN
ORG 0100H
MAIN:
      MOV R1,#DPTR
          MOV   DPTR,#7FF8H
          MOV R7,#08H
LOOP:MOVX  @DPTR,A
HER:  JNB  P3.0,HER
      MOVX  A,@DPTR
          MOV   @R1,A
          INC   DPTR
          INC   R1
          DJNZ  R7,LOOP
        k1: LCALL DISP
        JB P3.2,K2
                INC @R1
        LCALL DISP
    k2: JB P3.3,K1
             DEC @R1
       LCALL DISP         
DISP: MOV  A,@R1
      MOV  B,#10
          DIV  AB
          MOV  20H,A
          MOV  21H,B
          CLR  P2.4
          SETB P2.5
          MOV  A,20H
          MOVC  A,@A+DPTR
          MOV  P1,A
          LCALL  DELAY
      CLR   P2.5
      SETB  P2.4
      MOV   A,21H
          MOVC  A,@A+DPTR
      MOV   P1,A
      RET
DELAY: MOV  R6,#01H
DL0:   MOV  R5,#61H
       DJNZ  R5,$
       DJNZ  R6,DL0
       RET
TABLE:  DB   0C0H,0F9H,0A4H,0B0H,99H      ;
        DB  92H,82H,0F8H,80H,90H

END


作者: ahshmj    時(shí)間: 2014-6-13 20:50
MOV  R1,  #DPTR  這一句有問題。

“DPTR”是51單片機(jī)唯一的一個(gè)16位寄存器(其實(shí)是由DPH和DPL兩個(gè)8位寄存器組成的“寄存器對(duì)”。所以DPTR既不可以作為“立即數(shù)”賦值給R1,也不可以將DPTR中的16位內(nèi)容賦值給8位的R1。更何況“#DPTR"沒有一個(gè)確定的值。也不可能是DPTR的2個(gè)地址。
只有“MOV R1,#DPH”或“MOV R1,#DPL”是合法的,但是傳送的DPH或DPL的地址82H或83H。
作者: heicad    時(shí)間: 2014-6-14 01:18
是的 還是 老大厲害
作者: 天涯浪子99    時(shí)間: 2014-6-15 13:33
ahshmj 發(fā)表于 2014-6-13 20:50
MOV  R1,  #DPTR  這一句有問題。

“DPTR”是51單片機(jī)唯一的一個(gè)16位寄存器(其實(shí)是由DPH和DPL兩個(gè)8位寄 ...

謝謝,是這個(gè)問題,已經(jīng)解決。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1