打印
[匠人手记]

如何用4个PA加4个PB组合显示七段数码管的数据

[复制链接]
2429|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lc_0755|  楼主 | 2010-10-3 08:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
入门不久,想用合泰的HT46R48做个东东,问题是这个IO口应该如何组合?
要用4个PA口加4个PB口组合起来显示七段数码管的数据,PA0-3与PB4-7共8个口,如何定义成一个寄存器?以方便送显示数据?
汇编代码应该怎样写?C应该怎样写?头痛了好些日子,也找不到资料,就只好请教匠人,小弟拜谢了!或者有没有过路高人有过这方面的经验可以分享一下的?小弟拜谢!

相关帖子

沙发
123jj| | 2010-10-5 11:54 | 只看该作者
PA0-3与PB4-7共8个口,如何定义成一个寄存器?
无法定义成一个寄存器!应分二次传送,第一次将低4位传送至PA0-3寄存器,第二次将高4位传送至PB4-7寄存器,为方便送显示数据,一般可将上述过程编在一个子程序或封装在一个宏定义中,方便送显示数据。

使用特权

评论回复
板凳
lc_0755|  楼主 | 2010-10-5 20:41 | 只看该作者
谢谢指点

使用特权

评论回复
地板
lc_0755|  楼主 | 2010-10-5 22:12 | 只看该作者
include ht48r10a-1.inc
data .section 'data'
disp_buff db ?  ;显存

code .section at 0 'code'
org  00h
jmp  start
org  04h
reti

start:

clr pac    ;pa0-3 output
clr pbc   ;pb4-7 output

loop:
mov a,55        ;测试显示55
mov disp_buff,a
call disp_proc
jmp loop

disp_proc:

mov a,disp_buff
and a,0fh
mov pa,a

mov a,disp_buff
and a,0f0h
mov pb,a

ret

;以上调试OK,只是不知道会不会对已经定义为按键输入PA4-7造成干扰。PA4-7为4个独立按键,为0时表示有键被按下。

使用特权

评论回复
5
123jj| | 2010-10-6 11:31 | 只看该作者
这两句有错。
clr pac    ;pa0-3 output
clr pbc   ;pb4-7 output
你将pa4-7,pb0-3 同时设置为输出,而非你想要的PA4-7为4个独立按键输入!
其他暂时没看出问题。

使用特权

评论回复
6
lc_0755|  楼主 | 2010-10-6 20:37 | 只看该作者
如果是汇编,应该是这样写:
mov a,11110000b
mov pac,a
mov a,00001111b
mov pbc,a

如果用C这样写,应该没有问题:
_pac=0x0f0;
_pbc=0x0f;

谢谢回复

这样定义之后,如果在向PA写11111111b 数据的瞬间,发生按键被按下,即pa4-7的任意一位为0,不知道会出现什么后果?

使用特权

评论回复
7
123jj| | 2010-10-7 04:46 | 只看该作者
由HT46R48的输入/输出结构图可看出,I/O口设置为输入时,任何向该I/O口输出寄存器写入的东东,只作缓存,并不输出到I/O口,因此,此时发生按键被按下,不产生任何影响。

使用特权

评论回复
8
lc_0755|  楼主 | 2010-10-8 06:39 | 只看该作者
由HT46R48的输入/输出结构图可看出,I/O口设置为输入时,任何向该I/O口输出寄存器写入的东东,只作缓存,并不输出到I/O口,因此,此时发生按键被按下,不产生任何影响。 ...
123jj 发表于 2010-10-7 04:46


真是够深入呀,谢谢你啦!

使用特权

评论回复
9
123jj| | 2010-10-8 08:01 | 只看该作者
呵呵!

不用谢!互相学习,共同进步,你硬件学的不错~~~

学实话,俺连HT46R48长什么样都不知道~~~ :P

只是临时抱佛脚,网上搬点说明书的内容来淘淘浆糊,不过请放心,不会害你的~~~

使用特权

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

本版积分规则

个人签名:天若有情

0

主题

15

帖子

1

粉丝