单片机查表显示程序的一个问题!~~~

断码地址为8004H,位码地址为8002H,只要让一个数码管显示即可程序中输入的数字即可:
ORG 0
MOV R0,#0
LOOP:MOV DPTR,#8002H
MOV A,#1
MOVX @DPTR,A
MOV A,R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV DPTR,#8004H
MOVX @DPTR,A
LJMP LOOP
TAB:DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH

程序很简单,却是完整的。
希望有大侠帮忙解释下,这程序指令的功能,最好每个指令都解释下(最后的表格我看懂了)。它数据传来传去,怎么的就将RO里的数字,显示在LED数码管上了?
看了4个解释,总算是有点头绪了。好在4个解释虽有不足,但都互补,才看得懂了些。
谢谢你们了。
根据你们说的,我再做一道习题,你们看看哈。
SER:MOV DPTR,#TAB
MOV A,R7
MOVC A,@A+DPTR
MOV R7,A
RET
TAB:DB 21,12,64,39,66,85,56,76,62,18
(1)请写出本程序的功能。
(2)当(R7)=3,程序结束时,R7中的数值是多少?

答:(1)程序是将R7中指定的偏移地址,以TAB为首地址,查表后送回到R7中。
(2)R7=39

不知道做得可对?

有谁在线指导俺下呗?
俺QQ616121483

这段代码的关键指令其实就是片选指令。
MOV DPTR,#* ;把外部接口的地址码传给指针DPTR,地址码通过外部译码器转
;换成片选信号
MOVX @DPTR,A ;把累加器A的值通过数据总线传递给DPTR指向的外部接口,在
;这段程序中即实现段选和位选功能。

你的这段程序只能显示数字“0”,下面详细给你解读这段程序:

ORG 0 ;程序代码段从地址0开始
MOV R0,#0 ;这句代码是控制你所要显示的数字的,它其实是TAB表中的偏移
;量,现在偏移量是0,即显示的是3FH,共阴数码管段选码表示数
;字“0”
LOOP:MOV DPTR,#8002H ;位码地址为8002H,指针指向位选的外部接口,选定一
;个数码管
MOV A,#1
MOVX @DPTR,A ;以上两句向位选接口传动数据1,其实是把第一个数码
;管置高电平,表示选通。
MOV A,R0 ;A=RO=0
MOV DPTR,#TAB ;DPTR =TAB表首地址
MOVC A,@A+DPTR ;把TAB+0地址上的数据传送给A,@TAB+N表示TAB表中第
;N+1个数据,在这里是A=3fh
MOV DPTR,#8004H ;段码地址为8004H,指针指向段选的外部接口

MOVX @DPTR,A ;把3fh传送给段选接口,实现显示“0”的功能
LJMP LOOP ;跳到LOOP处循环执行。
TAB:DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH

这样解释,你应该会明白的。 o(∩_∩)o

你的补充问题也回答正确。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-01-07
这里的8004h和8002h都是外部IO地址,所以要用movx指令来写,程序的思路是这样的:选中位码地址,写出1,也就是选中该为,让该位能够显示。然后再选中段码地址,用查表指令查出想要显示的段码写出去就行了。思路很简单,你主要要了解这个问题:外部IO地址的读写方法!! 写的方法都是MOVX @DPTR,A,读MOVX A ,@DPTR,只需给定A的值,以及DPTR的值即可,A中是要读或写的内容,DPTR是地址指针。在输出段码时,是将表格数据输出到指定地址的,用查表指令,DPTR做基址,设置为表格的首地址,A作为偏移地址,也就是你想要输出的第几个数据。RO的值给A了看到吧,作为偏移地址来查找表格,0就查到第一数据,1就查到第二个数据。。。
讲的够详细吧,还不懂再问吧

答:(1)程序是将R7中指定的偏移地址,以TAB为首地址,查表后送回到R7中。
(2)R7=39

不知道做得可对? 对,看来真懂了
PS:楼主真有财啊,这么简单的题给这么多分
第2个回答  2010-01-07
要想让数码管显示什么数字,就必须把该数字的七段码送到段地址。
软件系统中,还要准备出来全部要显示的七段码,然后再根据待显示的数字,找出对应的七段码。
下列程序就是完成了这个过程。
.
ORG 0
MOV R0,#0 ;待显示的数字是0
LOOP:
MOV DPTR, #8002H ;位地址.
MOV A, #1 ;准备用第一位显示.
MOVX @DPTR, A ;输出到“位”接口.

MOV A, R0 ;取来待显示的数据,可能是0~9
MOV DPTR, #TAB ;七段码表的起始地址.
MOVC A, @A+DPTR ;从表中,找到第0~9个字节到A
MOV DPTR, #8004H ;段地址.
MOVX @DPTR, A ;输出A的内容到“段”接口,即可显示出0~9的字形.
LJMP LOOP ;重复.

TAB:DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
-------------------------------
答:(1)程序是将R7中指定的偏移地址,以TAB为首地址,查表后送回到R7中。
(2)R7=39
不知道做得可对?

对。
第3个回答  2010-01-06
ORG 0
MOV R0,#0
LOOP:MOV DPTR,#8002H ;位码地址送指针
MOV A,#1
MOVX @DPTR,A ;选通LED数码管
MOV A,R0 ;R0送A
MOV DPTR,#TAB ;表格地址送指针
MOVC A,@A+DPTR ;查表获得显示段码(即R0中内容的字码)
MOV DPTR,#8004H ;段码地址送指针
MOVX @DPTR,A ;段码送LED数码管显示
LJMP LOOP

单片机查表指令相关问题
MOVC A,@A+DPTR:A是偏移量,加上首地址DPTR后就是你想要的了 比如说10个人排成一对 DPTR就是第一个人战的地方 再往后数几个就可以找到相应的人了

求单片机大神解释这个查表程序!!
这个查表程序很好理解,MOVC A,@A+DPTR和MOVC A,@A+PC的区别就在于,前者DPTR是表的首地址,比较好理解;后者PC是当前行的地址(PC值)。这里当前行与表首地址之间隔开了一个RET,占用一个地址空间,所以A要加1.

单片机50个字节的无序表查找一个关键字,程序如下,有些问题不懂,求帮忙...
就是 读取数据表 第一个字节数据,需要 A = #14H 再执行 MOVC A,@A+PC 指令。

MSC-51单片机指令中的查表问题
1、如果数据区的长度不超过256个字节(累加器A的容量之内),且数据是单字节的,则不需要另外处理;2、因为如果数据区的长度不超过256个字节,但数据是双字节的,需要将偏移量乘2,第一次读出一个字节保存,将地址加1后再读第二字节(类推:一个数据是n字节,则偏移量乘n,每次读出一个字节保存,...

单片机的矩阵键盘检测,扫描程序已经写出来了,怎么显示呢
MOV A,R1 ;R1中是要显示的十进制 MOV DPTR,#TABEL ;使DPTR 指向TABEL(TABEL 中 是10进制对应的16进制表格)MOVC A,@A+DPTR;查表 MOV P2,A ;此时A中即是 16进制 ;---LED的 共阴码表--- TABEL:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;0123456789 DB 77H,7CH...

单片机 用proteus仿真 “电子秒表显示器”时无法复位,就是图中红色圈...
这个可能是你程序的问题 不防检查检查程序 看中断对不 在一个复位按键完全可以用最小系统里的复位 可以节省一个按键

单片机查表程序编写 急!
;查表法求平方的程序如下。SQRT:MOV R0, #30H MOV R1, #40H MOV R2, #10 LOOP:MOV A, @R0 ADD A, #S_TAB - ($ + 4)MOVC A, @A + PC MOV @R1, A INC R0 INC R1 DJNZ R2, LOOP RET S_TAB:DB 1, 4, 9, 16, 25, 36, ...

51单片机的查表法的原理是什么?
查表法,就是将你的一些固定的数据存储到程序存储器中,当你的程序中需要这些数据时,movc指令读取这些数据。举例假设你的系统要用数码管显示0-9这10个数字,而假设这10个数字各自的断码(点亮时io口相应的电平)分别为 0xC0, \/\/"0"0xF9, \/\/"1"0xA4, \/\/"2"0xB0, \/\/"3"0x99, ...

51单片机一直显示真在检查单片机,是程序问题吗?不是的话是什么问题,型...
检查:1.单片机最小系统供电是否正常。2.检查晶振连接是否正常,可以用万用表测量、正常情况下其他引脚都是高电平而晶振引脚约为1\/2Vcc。3.检查串口连接线缆是否正常,RXD、TXD是否错接,USB转串口下载线要求交叉连接。4.spi下载软件中选择使用外部晶振,核实串口号是否匹配。5.最小系统断电状态点击下载...

c51单片机 做表不准
①那得看做什么表,如果是 秒表,精度达到0.001s,那有些偏差可以理解。(理解原因见后)②如果是做时钟,在几天后,出现 1~5秒的误差,也可以理解。(理解原因也见后)③如果是做时钟,1天内出现几秒 甚至 十几秒的误差,那就是程序问题了。这个不能理解。理解原因:晶体本身有参数差异,也会...

相似回答