单片机汇编语言问题 50

DIS:MOVR0,#79HMOVR3,#01HMOVA,R3LD0:MOVDPTR,#7F01HMOVX@DPTR,AINCDPTRMOVA,@R0ADDA,#0DHM... DIS : MOV R0,#79H

MOV R3,#01H

MOV A, R3

LD0: MOV DPTR,#7F01H

MOVX @DPTR,A

INC DPTR

MOV A,@R0

ADD A,#0DH

MOVC A,@A+PC

MOVX @DPTR,A

ACALL DL1

INC R0

MOV A,R3

JB ACC.5,ELD1

RL A

MOV R3,A

AJMP LD0

ELD: RET

DSEG: DB 3FH ,06H,5BH,4FH,66H,6DH

DB 7DH,07H,7FH,6FH,77H,7CH

DB 39H,5EH,79H,71H,40H,00H

DL1: MOV R7,#02H ; 延时1ms子程序

DL: MOV R6, #0FFH

DL6: DJNZ R6, DL6

DJNZ R7,DL

RET

1, mov r3,#01H为什么是使显示器最右边位亮 为什么7F01H是指向A口 INC DPTR就指向B口了

2。为什么有ADD A ,#0DH 要偏移0dh 那么多

3。 JB ACC.5 为什么 acc 的第6位 和是否扫描到显示器有关系

4。DB 3FH ,06h 等等代表什么意思有什么用
展开
 我来答
zhxiufan
2013-12-23 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38387
国家科技进步奖

向TA提问 私信TA
展开全部
1、看来你的电路是共阴的,也就是说“1”使LED点亮,从这个指令看来你的LED是横排列,低位在右,所以A口送01H点亮最右边的LED灯。,8255的控制口地址是A1A0决定的00为命令口,01为A口,02为B口,03为C口,所以7F01为A口 ,INC DPTR则为7F02H当然为B口。
2、ADD A,#0DH偏移0DH这么多是由于指令MOVC A,@A+DPTR确定的,偏移量即指令入口值
3、JB ACC.5是第六位这与你的计数习惯有关,对一个8位数据而言,一般地最低位为D0,最高位D7,你如果将最低位算第一为,那么ACC.5当然为第6位了。
4、DB 3fH,06H,这是数码管显示的段码值,比如3FH就是“0”,06H就显示“1”。
追问
再请教下为什么不能直接把A的值放入B口   而是经过偏移量相加   A  @A+PC  然后再送入B口  还有为什么3FH 显示为   06H显示为1   不是把单元79H中的数值传送到A口了吗  选择A口中的数值应该怎么选
追答
可以直接放到B口呀,但你比较一下就明白了
直接放B口:
mov dptr,#7f02h ,3个字节
......
movx @dptr,a
例程中的处理:
inc dptr ;1个字节
......
movx @dptr,a

看出来了吗:直接放A口程序空间大了2个字节。
做而论道
高能答主

2013-12-22 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
楼主的问题,都和硬件有关。

1, mov r3, #01H 为什么是使显示器最右边位亮
--看电路图,即可知道为什么。

为什么 7F01H 是指向A口
INC DPTR 就指向B口了
--看电路图,即可知道为什么。

2。为什么有ADD A,#0DH 要偏移0dh 那么多
--画出机器语言在 ROM 中的分布图,即可得出 0DH。

3。JB ACC.5 为什么 acc 的第6位
和是否扫描到显示器有关系
--是和扫描显示器有关。
--看电路图,即可知道。

4。DB 3FH, 06h 等等代表什么意思有什么用
--这应该是段码。
--看电路图,即可知道,是,还是不是。

看一下电路图,就都能知道这些结果。
如果没有电路图,就无法解释这些问题。

学单片机,要先学习硬件。
电路是多种多样的。
先看软件,就很难深入进去。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
生活如歌_
2013-12-22 · TA获得超过1.5万个赞
知道大有可为答主
回答量:7398
采纳率:78%
帮助的人:2194万
展开全部
, mov r3,#01H为什么是使显示器最右边位亮
因为你的电路应该是共阳极数码管,所以最后边的亮
为什么7F01H是指向A口 INC DPTR就指向B口了
因为A口B口地址正好差12。为什么有ADD A ,#0DH 要偏移0dh 那么多
因为这需要根据跳转的指令与当前指令之间的位置关系来定3。 JB ACC.5 为什么 acc 的第6位 和是否扫描到显示器有关系
因为是ACC.0为第1位4。DB 3FH ,06h 等等代表什么意思有什么用
这个是数码管的段码
追问
为什么不能直接把A 送到 DPTR  而要先偏移  ADD  A . 0DH  然后 @A+PC 才送到 A
追答
因为标准的51单片机只有一只DPTR,而要访问外部的I/O用到了DPTR,所以你的程序里查表取段码就用了@A+PC
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式