求助坛友,如何用DEFINE将零散的IO组合为一组P0这种。谢谢

2020-01-21 21:43发布

求教各位坛友,目前有一个小点阵板,因为EDA布线的需要,把IO口打散了,没法用P0=0x45这种形式直接赋值了。
以前看过一个用DEFINE方法把零散io组合回一个整P0格式的,搜了半天也没有搜到。
麻烦坛友帮忙,多谢多谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
myin4
1楼-- · 2020-01-22 15:38
你就是用define到最后也是要一堆移位操作,相比直接用函数真能省下几个始终周期?
didadida
2楼-- · 2020-01-22 17:15
本帖最后由 didadida 于 2014-10-23 11:40 编辑

假设 P0 剩余 P0.0 P0.3,P1 剩余 P1.1 P1.3 P 1.5,P2 剩余 P2.2 P2.3 P2.6

(顺序MSB->LSB:P0.3 P0.0 P1.5 P1.3 P1.1 P2.6 P2.3 P2.2)
  1. #define PX(val)  P2 &= ~(1<<2 | 1<<3 | 1<<6); P2 |= (val&0x01)<<2 | (val&0x02)<<3 | (val&0x04)<<6;
  2. P1 &= ~(1<<1 | 1<<3 | 1<<5); P1 |= (val&0x08)<<1 | (val&0x10)<<3 | (val&0x20)<<5;
  3. P0 &= ~(1<<0 | 1<<3); P0 |= (val&0x40)<<0 | (val&0x80)<<3;
复制代码
以上代码未经测试,请自行调整。
myxiaonia
3楼-- · 2020-01-22 17:39
51可以用位操作,肯定是多个组合的没办法。。。
jyrpxj
4楼-- · 2020-01-22 22:39
笨办法。一个引脚一个引脚地操作吧。
356053261
5楼-- · 2020-01-22 22:46
 精彩回答 2  元偷偷看……
sywh
6楼-- · 2020-01-23 01:57
九楼好方法,很多例程都是这么写的。

一周热门 更多>