单片机查表显示程序的一个问题!~~~
断码地址为8004H,位码地址为8002H,只要让一个数码管显示即可程序中输入的数字即可:ORG0MOVR0,#0LOOP:MOVDPTR,#8002HMOVA,#1MO...
断码地址为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 展开
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 展开
4个回答
展开全部
这段代码的关键指令其实就是片选指令。
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
你的补充问题也回答正确。
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
你的补充问题也回答正确。
展开全部
这里的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:楼主真有财啊,这么简单的题给这么多分
讲的够详细吧,还不懂再问吧
答:(1)程序是将R7中指定的偏移地址,以TAB为首地址,查表后送回到R7中。
(2)R7=39
不知道做得可对? 对,看来真懂了
PS:楼主真有财啊,这么简单的题给这么多分
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要想让数码管显示什么数字,就必须把该数字的七段码送到段地址。
软件系统中,还要准备出来全部要显示的七段码,然后再根据待显示的数字,找出对应的七段码。
下列程序就是完成了这个过程。
.
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
不知道做得可对?
对。
软件系统中,还要准备出来全部要显示的七段码,然后再根据待显示的数字,找出对应的七段码。
下列程序就是完成了这个过程。
.
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
不知道做得可对?
对。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询