打印

急,51单片机扩展IO及RAM后..

[复制链接]
3390|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
erhui_cn|  楼主 | 2007-6-9 16:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
zhenglixin| | 2007-6-9 18:03 | 只看该作者

ok

使用特权

评论回复
板凳
zhangwr| | 2007-6-10 13:22 | 只看该作者

p2口最好不用

安装了6264后P0口不能使用了。既然你扩展了IO,就应该使用扩展的IO去做,扩展51的IO才是充分使用了单片机

使用特权

评论回复
地板
chunyang| | 2007-6-10 16:41 | 只看该作者

空余的IO当然可以用

但在寻址时务必要避开涉及该IO的地址段,否则该IO会有被改写的可能,要特别注意,不建议初学者用这招,除非你的逻辑思维能力足够清晰、完整。

使用特权

评论回复
5
俺从头来| | 2007-6-10 17:59 | 只看该作者

请问:chunyang

“但在寻址时务必要避开涉及该IO的地址段” 怎么实现?
普通的8051不行吧/

是不是输出地址的时候,把端口计存器状态写入对应高地址,再把这个地址输出呢

使用特权

评论回复
6
conwh| | 2007-6-10 18:16 | 只看该作者

不能简单地使用,同chunyang所说

使用特权

评论回复
7
agua4auto| | 2007-6-10 18:46 | 只看该作者

很像我前几天的问题

现在正在调试,我是用8255扩展的IO口,不过只是用了P0口,用的PBYTE定义端口地址.PBYTE只用P0口,所以不影响P2口.

不过好像现在还是有点问题,先调下去再说吧

使用特权

评论回复
8
chunyang| | 2007-6-10 20:55 | 只看该作者

To俺从头来

任何地址段IO都可以对应一个或几个特定的地址段,利用寄存器保存现场并映射到地址空间中即可实现地址IO做普通IO用,寻址时要注意避开,跟是否普通的51没关系,只是注意其高位地址尽量不要用,否则地址映射的计算会非常麻烦。这种方法初学者会比较难理解,建议画画图,要仔细思考。当然,这属于“花活”,极特殊的场合才有意义,切记不要卖弄,做产品可靠性第一。

使用特权

评论回复
9
linjing| | 2007-6-10 21:06 | 只看该作者

同意4楼 空余的IO当然可以用,但是。。。需要一定的技巧

首先,只能是扩展RAM,指用MOVX指令访问,剩余的P2口可以使用用

以你的情况为例,
1)P2.5完全可以作为输入口,唯一需要注意的就是,始终保持P2.5为高电平,这可以通过定义6264的地址位于XX10 0000 0000 0000B 到 XX11 1111 1111 1111 B,即地址位13是1的地址段内。

2)P2.5可以输出不太重要的数据, 比如驱动LED用于显示一类功能,由于P2口有锁存功能,在访问RAM时P2.5会有可能“闪烁”!,但访问完RAM后恢复数据,显示数据不会丢失

3)P2.5完全可以当做普通IO使用,但RAM访问则需要受到一些限制,把6264分成多个256字节的页,使用MOVX @R0指令访问,访问之前在P2口输出“页选”信号,即整个P2口作为普通IO口使用

当然,如果扩展ROM(用MOVC指令访问),也可以通过一定的技巧来实现空余的IO作输出,但是有点太过技巧性了,不建议使用!!

使用特权

评论回复
10
erhui_cn|  楼主 | 2007-6-11 15:42 | 只看该作者

严重感谢各位的指点

现在我用了P2.5来做595的使能控制,只是在初始化里P2.5置0就可以了,程序中没有改变过.读写外部RAM和写外部io时P2.5都是低电平..(所以没有"闪烁")..

4楼.9楼的回答很专业.

使用特权

评论回复
11
xfcylyf| | 2012-5-29 10:12 | 只看该作者
老贴新看

使用特权

评论回复
12
hnhqy| | 2012-6-2 15:06 | 只看该作者
学习 一下     谢谢  高手们

使用特权

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

本版积分规则

15

主题

68

帖子

0

粉丝