打印

关于数码管的显示

[复制链接]
3308|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mugangzhu|  楼主 | 2009-9-10 14:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
LDI TBR,0FH
LDA MIN_L,00H
CALL 07FAH ;查表得显示数据
STA SEG1,06H ;显示分钟低位的dcba 四段
LDI TMP,1000B
ANDM SEG2,06H
LDA TBR,00H
ORM SEG2,06H ;显示分钟低位的egf 三段
上面这段数码管显示的每一步是如何运行的请教一下?

LCD 显示数据表:根据LCD 的矩阵表定出数据表是按egf,dcba 来建立的
ORG 07F0H
;0egf, dcba
RTNW 0101B,1111B ;0
RTNW 0000B,0110B ;1
RTNW 0110B,1011B ;2
RTNW 0010B,1111B ;3
RTNW 0011B,0110B ;4
RTNW 0011B,1101B ;5
RTNW 0111B,1101B ;6
RTNW 0000B,0111B ;7
RTNW 0111B,1111B ;8
RTNW 0011B,1111B ;9
ORG 07FAH
其中ORG 07F0H
ORG 07FAH的地址是任意定义的吗?
沙发
gaoyuaug| | 2009-9-11 07:50 | 只看该作者
程序指令不全,它不会溢出?

使用特权

评论回复
板凳
mugangzhu|  楼主 | 2009-9-11 08:25 | 只看该作者
就是不全啊,为了分析这段运行的过程吗!其它的和这个程序一样这段分析明白了,其它的自然就懂了啊

使用特权

评论回复
地板
mugangzhu|  楼主 | 2009-9-11 08:57 | 只看该作者
LDI TBR,0FH;把0FH送到Bank6中的累加器和TBR
LDA MIN_L,00H;MIN_L送到Bank0的累加器
CALL 07FAH ;查表得显示数据
STA SEG1,06H ;通过RTNW指令后把查表得到的低四位付给累加器A再送给SEG1
               显示分钟低四位dcba
LDI TMP,1000B;把1000B送到TMP和累加器A中?1000B是否可以改成08H呢???
ANDM SEG2,06H;保留SEG2的bit3,可为什么还要清SEG2的bit2-bit0,SEG1为什么不用清???
LDA TBR,00H;通过RTNW指令后把查表得到的高三位付给TBR
ORM SEG2,06H ; 显示分钟低位的egf 三段,这一步直接用STA SEG2,06H;不行吗???????


LCD 显示数据表:根据LCD 的矩阵表定出数据表是按egf,dcba 来建立的
ORG 07F0H
;0egf, dcba
RTNW 0101B,1111B ;0
RTNW 0000B,0110B ;1
RTNW 0110B,1011B ;2
RTNW 0010B,1111B ;3
RTNW 0011B,0110B ;4
RTNW 0011B,1101B ;5
RTNW 0111B,1101B ;6
RTNW 0000B,0111B ;7
RTNW 0111B,1111B ;8
RTNW 0011B,1111B ;9
上面我分析的这些对吗?

使用特权

评论回复
5
warm_ice| | 2009-9-11 09:31 | 只看该作者
LDI TBR,0FH;把0FH送到Bank6中的累加器和TBR ;把0FH送到BANK0的TBR寄存器,不是BANK6,如果是BANK6的,不能使用LDI指令
LDA MIN_L,00H;MIN_L送到Bank0的累加器
CALL 07FAH ;查表得显示数据
STA SEG1,06H ;通过RTNW指令后把查表得到的低四位付给累加器A再送给SEG1
显示分钟低四位dcba

LDI TMP,1000B;把1000B送到TMP和累加器A中?1000B是否可以改成08H呢??? ;可以,只是写成1000B看起来更直观一点
ANDM SEG2,06H;保留SEG2的bit3,可为什么还要清SEG2的bit2-bit0,SEG1为什么不用清???
;将SEG2的BIT2~BIT0清除掉是为了下二条指令的赋值方式。
LDA TBR,00H;通过RTNW指令后把查表得到的高三位付给TBR
ORM SEG2,06H ; 显示分钟低位的egf 三段,这一步直接用STA SEG2,06H;不行吗???????
;直接用STA SEG2,06H;的话,会改变SEG2的最高位的数据;

使用特权

评论回复
6
mugangzhu|  楼主 | 2009-9-11 09:41 | 只看该作者
谢谢啊,可是LDI TBR,0FH在上面程序中起什么作用?

使用特权

评论回复
7
warm_ice| | 2009-9-11 09:43 | 只看该作者
谢谢啊,可是LDI TBR,0FH在上面程序中起什么作用?
mugangzhu 发表于 2009-9-11 09:41

请你再回去查看一下TJMP查表是如何进行的就明白了

使用特权

评论回复
8
mugangzhu|  楼主 | 2009-9-11 09:54 | 只看该作者
TJMP 指令用于无条件程序跳转,但跳转的地址由(PC11~8)(TBR)(A)组成,程
序范例可以参照RTNW 指令。
可为什么要用0FH呢?

使用特权

评论回复
9
warm_ice| | 2009-9-11 10:06 | 只看该作者
TJMP 指令用于无条件程序跳转,但跳转的地址由(PC11~8)(TBR)(A)组成,程
序范例可以参照RTNW 指令。
可为什么要用0FH呢?
mugangzhu 发表于 2009-9-11 09:54

查表之前要对TBR和A进行赋值,这个值要与数据表所在的位置对应,数据表在7F0H,所以要赋值F。

使用特权

评论回复
10
mugangzhu|  楼主 | 2009-9-11 10:25 | 只看该作者
那经过LDI TBR,0FH这一步,TBR和A都是F了,地址也不是7F0H啊?

使用特权

评论回复
11
warm_ice| | 2009-9-11 11:45 | 只看该作者
那经过LDI TBR,0FH这一步,TBR和A都是F了,地址也不是7F0H啊?
mugangzhu 发表于 2009-9-11 10:25


还有一条LDA MIN_L,00H;呢,不能只看一条指令,要上下看全啊。

使用特权

评论回复
12
mugangzhu|  楼主 | 2009-9-11 12:01 | 只看该作者
那个7从哪出来的啊?

使用特权

评论回复
13
warm_ice| | 2009-9-11 12:08 | 只看该作者
那个7从哪出来的啊?
mugangzhu 发表于 2009-9-11 12:01

TJMP 指令用于无条件程序跳转,但跳转的地址由(PC11~8)(TBR)(A)组成

上面这句是你自己帖出来的,7就是TJMP时的PC11~PC8来的。

使用特权

评论回复
14
mugangzhu|  楼主 | 2009-9-11 12:14 | 只看该作者
呵呵,谢谢啊,举个例子说明一下吧?

使用特权

评论回复
15
mugangzhu|  楼主 | 2009-9-11 22:25 | 只看该作者
????

使用特权

评论回复
16
mugangzhu|  楼主 | 2009-9-14 09:08 | 只看该作者
给举个例子说明一下吧,呵呵,谢谢了

使用特权

评论回复
17
warm_ice| | 2009-9-14 09:12 | 只看该作者
你贴出来的例子就是这样的,ORG 7F0H就是定义了表的位置,在CALL表格时,因为表头在7F0H,自然(PC11~8)就是7,TBR和A在查表前已经赋值.

使用特权

评论回复
18
mugangzhu|  楼主 | 2009-9-14 09:20 | 只看该作者
呵呵,谢谢啊,
CALL 07FAH 这句的意思是只能查表到07FAH吧?

使用特权

评论回复
19
warm_ice| | 2009-9-14 10:00 | 只看该作者
呵呵,谢谢啊,
CALL 07FAH 这句的意思是只能查表到07FAH吧?
mugangzhu 发表于 2009-9-14 09:20

CALL指令是与TJMP共同使用的,CALL 07FAH只是跳到表格的位置,跑过去后通常会有一条TJMP,这时会根据TBR及A的值跳到具体的数据行来获取数据.

使用特权

评论回复
20
mugangzhu|  楼主 | 2009-9-14 11:22 | 只看该作者
呵呵,如果只是跳到表格的位置,那是否可以写成CALL 后面这个地址从07F0H到07FAH之间任意选个地址呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

70

主题

358

帖子

1

粉丝