标题:
各位大神出来看看这个程序那里出错?
[打印本页]
作者:
打杂的
时间:
2018-1-27 13:12
标题:
各位大神出来看看这个程序那里出错?
我在学习汇编语言,照着51单片机视频的例子来写的程序,烧录后出现程序有时候会自己跑飞,这个是那里问题?请各位大神指点下?
代码如下:
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
现在都不用汇编了,改用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这一项对吧? 所以应该为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的时候就是表中的第一个数据。
不知道楼主说的跑飞是什么意思? 这个程序是数码管的一位显示0 1 2 3 4 5 6 7 8 9吧。
你SJMP跳转到MAIN的话 它总是显示表中的第一个数据。如果想显示0~9,你需要SJMP跳转到LOOP
作者:
宇智波罩
时间:
2018-1-28 11:13
用C语言吧,这个语言用的少
作者:
qmf
时间:
2018-1-28 21:01
KawhiL 发表于 2018-1-28 09:04
楼上说的不对。 MOVC A,@A+DPTR 这一句是没问题的 DPTR的值是表的首地址,偏移量为0的时候就是表中的第一个 ...
好像不是数码管,像是先点亮一个灯,2个,3个------8个,7个-------0个,16个循环。不知楼主高低电位怎样定义
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1