打印

关于IO口的PIN与变量(紧急求助!)

[复制链接]
1720|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lphaff|  楼主 | 2013-5-13 20:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
IO, pi, CD, LCD, ST
问题:
诸如51单片机,PO口有8个bit的数据总线,可以直接定义一个8bit的变量
然后这个变量可以直接对P0口进行数据收发
如temp=P0
现在的情况是:
定义了一个变量temp,但是单片机和LCD的接线方式不是简单的DB0~DB7一一对应P0.0~P0.7
而是如:
DB0~P0.0
DB1~P1.0
DB2~P1.3
...
类似这种情况
请问一下各位大哥大姐前辈们
我该怎样,才能把P0.0,P1.0,P1.3。。。重新定义对应DB0~DB7,以便我只要定义一个8bit的变量就可以实现对DBx数据总线进行读写呢?
以上表述只是为了简化我的问题
实际情况是
我有一个LCD用STM32控制
程序里面,我的LCD的DB0~DB15直接对应STM32的PDx端口
但是硬件里面用的是一个模块FSMC
这个模块里面有专门的引脚去对应DB0~DB15
我现在不想对我的程序进行大的修改,
希望可以通过IO口pin的重新定义来完成
真心求各位大神赐教!





相关帖子

沙发
xyz549040622| | 2013-5-13 21:33 | 只看该作者
宏定义,重新定义引脚,然后替代即可吧

使用特权

评论回复
板凳
lphaff|  楼主 | 2013-5-13 23:14 | 只看该作者
xyz549040622 发表于 2013-5-13 21:33
宏定义,重新定义引脚,然后替代即可吧

谢谢版主。。
我想过用宏定义来重新定义
但是不知道具体操作方法
能详细点吗?
谢谢!

使用特权

评论回复
地板
金则立则翔| | 2013-5-14 11:10 | 只看该作者
在预编译当中,进行宏定义,举个例子因为你所说的DB只可以取0或者1,那么  #define DB2_UP  P1 |= (1<<P1.3)  #define DB2_DOWDN
P1 &=~ (1<<P1.3)    这样就可以实现

使用特权

评论回复
5
NE5532| | 2013-5-14 11:19 | 只看该作者
在硬件设计的时候,最好让端口顺次使用,否则就用软件来补偿,做位操作。参考4楼的定义。

使用特权

评论回复
6
zd420325| | 2013-5-14 13:53 | 只看该作者
byte Temp;//显示缓存

if (Temp.0)
{
   PB.0 = 1;
}else
{
   PB.0 = 0;
}
//上面的PB.0你当然可以改成任何你需要的IO口,抛砖引玉。

使用特权

评论回复
7
lphaff|  楼主 | 2013-5-14 15:28 | 只看该作者
zd420325 发表于 2013-5-14 13:53
byte Temp;//显示缓存

if (Temp.0)

谢谢,貌似兄弟你的回答最懂我的问题了。
决定还是使用FSMC模块算了
这样做软件补偿过于麻烦。
谢谢其他各位的指教!

使用特权

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

本版积分规则

个人签名:长沙电路设计爱好者,欢迎加群学术探讨、项目合作群:1636625

55

主题

540

帖子

2

粉丝