求助坛友,如何用DEFINE将零散的IO组合为一组P0这种。谢谢
求教各位坛友,目前有一个小点阵板,因为EDA布线的需要,把IO口打散了,没法用P0=0x45这种形式直接赋值了。以前看过一个用DEFINE方法把零散io组合回一个整P0格式的,搜了半天也没有搜到。
麻烦坛友帮忙,多谢多谢! 我一般就写一个函数,然后把传送来的值一位一位的输出,哈哈 我只用到数码管 自己顶顶。。。。不想用函数的方式。。。 你现在剩什么IO资源也没说清楚啊,我倒是简单写过一个32的,不过没人关注 didadida 发表于 2014-10-23 11:10
你现在剩什么IO资源也没说清楚啊,我倒是简单写过一个32的,不过没人关注
不用管剩余的啊,我就是想把零散的8个io通过define的方法组合成一个PX的形式。谢谢啦。 问题解决了吗 fengyuzhails 发表于 2014-10-23 11:29
问题解决了吗
木有捏。。。。 你就是用define到最后也是要一堆移位操作,相比直接用函数真能省下几个始终周期? 本帖最后由 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)
#define PX(val)P2 &= ~(1<<2 | 1<<3 | 1<<6); P2 |= (val&0x01)<<2 | (val&0x02)<<3 | (val&0x04)<<6;\
P1 &= ~(1<<1 | 1<<3 | 1<<5); P1 |= (val&0x08)<<1 | (val&0x10)<<3 | (val&0x20)<<5;\
P0 &= ~(1<<0 | 1<<3); P0 |= (val&0x40)<<0 | (val&0x80)<<3;
以上代码未经测试,请自行调整。 51可以用位操作,肯定是多个组合的没办法。。。 笨办法。一个引脚一个引脚地操作吧。 不想用函数,就用9楼的,呵呵 九楼好方法,很多例程都是这么写的。 搜索关键词 位域 9楼方法感觉不错~ 不错,理解应用
页:
[1]