標題: 各位大神出來看看這個程序那里出錯? [打印本頁]

作者: 打雜的    時間: 2018-1-27 13:12
標題: 各位大神出來看看這個程序那里出錯?
  我在學習匯編語言,照著51單片機視頻的例子來寫的程序,燒錄后出現(xiàn)程序有時候會自己跑飛,這個是那里問題?請各位大神指點下?
代碼如下:
ORG 000H
SJMP MAIN
ORG 030H
        MAIN:MOV R0,#0FFH
                 MOV R2,#16
                 MOV DPTR, #TAB
        LOOP:INC R0
                 MOV A ,R0
                 MOVC A,@A+DPTR
        SHOW:MOV P0,A
                 LCALL DEY
                 DJNZ R2,LOOP
                 SJMP MAIN
        DEY:MOV R7,#20
        D1: MOV R6,#240
        D2: MOV R5,#160
            DJNZ R5,$
                DJNZ R6,D2
                DJNZ R7,D1
                RET
                TAB:DB 001H,003H,007H,00FH,01FH,03FH,07FH,0FFH
                        DB 0FEH,0FCH,0F8H,0F0H,0E0H,0C0H,080H,000H
                        END


作者: perfect_co    時間: 2018-1-27 17:54
現(xiàn)在都不用匯編了,改用C語言吧
作者: qmf    時間: 2018-1-27 21:59

MAIN:MOV R0,#0FFH    ;r0中是11111111是吧?  

  LOOP:INC R0                ;這時r0中是00000000對吧
                 MOV A ,R0      ;a中是0
                 MOVC A,@A+DPTR  ;表中沒0這一項對吧? 所以應(yīng)該為mov  r0  #000h

TAB:DB 001H,003H,007H,00FH,01FH,03FH,07FH,0FFH
                        DB 0FEH,0FCH,0F8H,0F0H,0E0H,0C0H,080H,000H
                        END
我學的也不好,



作者: KawhiL    時間: 2018-1-28 09:04
樓上說的不對。 MOVC A,@A+DPTR 這一句是沒問題的 DPTR的值是表的首地址,偏移量為0的時候就是表中的第一個數(shù)據(jù)。
不知道樓主說的跑飛是什么意思? 這個程序是數(shù)碼管的一位顯示0 1 2 3  4 5  6 7 8 9吧。
你SJMP跳轉(zhuǎn)到MAIN的話 它總是顯示表中的第一個數(shù)據(jù)。如果想顯示0~9,你需要SJMP跳轉(zhuǎn)到LOOP
作者: 宇智波罩    時間: 2018-1-28 11:13
用C語言吧,這個語言用的少
作者: qmf    時間: 2018-1-28 21:01
KawhiL 發(fā)表于 2018-1-28 09:04
樓上說的不對。 MOVC A,@A+DPTR 這一句是沒問題的 DPTR的值是表的首地址,偏移量為0的時候就是表中的第一個 ...

好像不是數(shù)碼管,像是先點亮一個燈,2個,3個------8個,7個-------0個,16個循環(huán)。不知樓主高低電位怎樣定義




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