標題:
各位大神出來看看這個程序那里出錯?
[打印本頁]
作者:
打雜的
時間:
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