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

[复制链接]
4775|11
 楼主| erhui_cn 发表于 2007-6-9 16:04 | 显示全部楼层 |阅读模式
急,51单片机扩展IO及RAM后..P0&nbsp;P2口未用到的IO还可以当一般IO用吗?<br /><br />扩展RAM为6264,扩展用了13条地址线,P2.7//P2.6用做片选.还有P2.5未用.<br /><br /><br />会的指点下<br />
zhenglixin 发表于 2007-6-9 18:03 | 显示全部楼层
zhangwr 发表于 2007-6-10 13:22 | 显示全部楼层

p2口最好不用

安装了6264后P0口不能使用了。既然你扩展了IO,就应该使用扩展的IO去做,扩展51的IO才是充分使用了单片机
chunyang 发表于 2007-6-10 16:41 | 显示全部楼层

空余的IO当然可以用

但在寻址时务必要避开涉及该IO的地址段,否则该IO会有被改写的可能,要特别注意,不建议初学者用这招,除非你的逻辑思维能力足够清晰、完整。
俺从头来 发表于 2007-6-10 17:59 | 显示全部楼层

请问:chunyang

“但在寻址时务必要避开涉及该IO的地址段”&nbsp;怎么实现?<br />普通的8051不行吧/<br /><br />是不是输出地址的时候,把端口计存器状态写入对应高地址,再把这个地址输出呢<br />
conwh 发表于 2007-6-10 18:16 | 显示全部楼层

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

  
agua4auto 发表于 2007-6-10 18:46 | 显示全部楼层

很像我前几天的问题

现在正在调试,我是用8255扩展的IO口,不过只是用了P0口,用的PBYTE定义端口地址.PBYTE只用P0口,所以不影响P2口.<br /><br />不过好像现在还是有点问题,先调下去再说吧
chunyang 发表于 2007-6-10 20:55 | 显示全部楼层

To俺从头来

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

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

首先,只能是扩展RAM,指用MOVX指令访问,剩余的P2口可以使用用<br /><br />以你的情况为例,<br />1)P2.5完全可以作为输入口,唯一需要注意的就是,始终保持P2.5为高电平,这可以通过定义6264的地址位于XX10&nbsp;0000&nbsp;0000&nbsp;0000B&nbsp;到&nbsp;XX11&nbsp;1111&nbsp;1111&nbsp;1111&nbsp;B,即地址位13是1的地址段内。<br /><br />2)P2.5可以输出不太重要的数据,&nbsp;比如驱动LED用于显示一类功能,由于P2口有锁存功能,在访问RAM时P2.5会有可能“闪烁”!,但访问完RAM后恢复数据,显示数据不会丢失<br /><br />3)P2.5完全可以当做普通IO使用,但RAM访问则需要受到一些限制,把6264分成多个256字节的页,使用MOVX&nbsp;@R0指令访问,访问之前在P2口输出“页选”信号,即整个P2口作为普通IO口使用<br /><br />当然,如果扩展ROM(用MOVC指令访问),也可以通过一定的技巧来实现空余的IO作输出,但是有点太过技巧性了,不建议使用!!<br />
 楼主| erhui_cn 发表于 2007-6-11 15:42 | 显示全部楼层

严重感谢各位的指点

现在我用了P2.5来做595的使能控制,只是在初始化里P2.5置0就可以了,程序中没有改变过.读写外部RAM和写外部io时P2.5都是低电平..(所以没有&quot;闪烁&quot;)..<br /><br />4楼.9楼的回答很专业.
xfcylyf 发表于 2012-5-29 10:12 | 显示全部楼层
老贴新看
hnhqy 发表于 2012-6-2 15:06 | 显示全部楼层
学习 一下     谢谢  高手们
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

68

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部