访问外部器件只8位地址,P2口也输出0吗??

[复制链接]
3664|18
 楼主| agua4auto 发表于 2007-6-2 08:38 | 显示全部楼层 |阅读模式
我现在P2口接了键盘扫描了显示,如果访问外部器件时,P2口一定有输出的话,要用软件抑制可能出现的扫描错误了.
conwh 发表于 2007-6-2 10:48 | 显示全部楼层

如果使用第二功能的,P2会相应变化

怎么只扩充8位地址?那你扩充它干什么?如果是扩充IO,就不如再加个锁存器了
gyt 发表于 2007-6-2 12:02 | 显示全部楼层

不要这样用

已经做地址用了,再做IO口用,不好不好。
 楼主| agua4auto 发表于 2007-6-2 12:14 | 显示全部楼层

恩,扩充IO口

上个图
https://bbs.21ic.com/upfiles/img/20076/20076212857771.jpg

PA,PB,PC3个扩展口正好一路控制8个功率管,一路控制继电器实现相应功能,另外一路输出给一个DAC.

所以只有把扫描接在P2上面,我想知道访问8255时,P2是不是要输出地址??

虽然影响很小,就算有输出,也对扫描没影响,毕竟最多1个us,用12m的晶振.
 楼主| agua4auto 发表于 2007-6-2 12:15 | 显示全部楼层

额,连CS都没接,见笑见笑

conwh 发表于 2007-6-2 14:35 | 显示全部楼层

如果这样扩充的话,就不要使用第二功能的。直接当IO操作就

 楼主| agua4auto 发表于 2007-6-2 15:55 | 显示全部楼层

To: conwh

有点疑惑,我确实不需要P2口的第二功能,可是P2口的第二功能是输出高8位地址,而我又要访问8255,肯定要movx的,额,等等,翻了一下movx的说明::

movx使用RO或R1,仅输出8位地址到p0口,不影响p2.

但是我用c写,怎么确定编译后是用R0/R1,而不是DPTR呢???
conwh 发表于 2007-6-2 16:41 | 显示全部楼层

不要使用MOVX指令,用MOV P0,#XX,CLR Px.x做片选

软件上多费点事,要不你的扫描(显示)也扩充出来。
 楼主| agua4auto 发表于 2007-6-2 17:11 | 显示全部楼层

可是我想用movx

用movx,一个周期就能把数据写入8255.
如果用clr Px.x做片选,选完之后还要Px.x =1,这样就至少3个周期了.太浪费啦.

扫描显示可以用8279扩充,可是那样单片机P2,P1口就都闲置了,而且8279要10块钱一片,也浪费了.

所以,还是用确定地址是写入R0/R1的,反正movx @R0/R1,A是不影响P2的.但是问题就是我用C写,怎么确定它将地址放入R0/R1后输出,而不是DPTR.

除了插入汇编,还有其他确定的方法吗??
conwh 发表于 2007-6-2 17:13 | 显示全部楼层

你这样做还不如使用2片MCU呢

gyt 发表于 2007-6-2 17:15 | 显示全部楼层

conwh说的很是

 楼主| agua4auto 发表于 2007-6-2 22:26 | 显示全部楼层

?我2片MCU??

可是我认为这1片就足够解决问题了啊,恩,我会找出来怎么用C搞定的,一定能,因为肯定了不用DPTR时P2时没有影响的啊
conwh 发表于 2007-6-3 04:21 | 显示全部楼层

真有犟的,I服了U。你可以用MOVX @Ri,A或MOVX A,@Ri

古道热肠 发表于 2007-6-3 10:10 | 显示全部楼层

楼主有股子冲劲,赞!

  能否将地址定义为PData,再运用相关语法如指针,绝对地址方式将数据输出,这个办法没试过,但P0口既作总线又作输出口我用过。
  
sbit c_OutLatchClk = P3^2;
#define c_DataOutPort P0
void WriteDataToOutPort(uchar ucWriteData)
{
    c_OutLatchClk = 0x01;    
    c_DataOutPort = ucWriteData;
    c_OutLatchClk = 0x00;
}

gyt 发表于 2007-6-3 11:08 | 显示全部楼层

厉害

有一股牛气:)
Airwill 发表于 2007-6-3 21:56 | 显示全部楼层

8255 CS 怎么处理的呀

 楼主| agua4auto 发表于 2007-6-4 08:57 | 显示全部楼层

CS连P1口的某一位,看我当天感觉吧

谢谢各位,书上确实写了,pdata是分页寻址片外,由movx @R0访问,这样的话,就不会有问题了,谢谢大家.全力把程序写完..............
gyt 发表于 2007-6-4 09:40 | 显示全部楼层

汇编一下

看看程序不就知道了?
古道热肠 发表于 2007-6-4 09:47 | 显示全部楼层

对呀,快用软仿真试试吗

  软仿真能看到汇编码的!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

86

帖子

0

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