2277|1

6366

帖子

4917

TA的资源

版主

楼主
 

MSP430单片机IO引脚的宏定义 [复制链接]

相信不少人都有在不同CPU间移植程序的经历,在移植过程中,对IO引脚的移植又占据了移植工作的大部分。那么,是否能在编码过程中采用一种较好的方法来减少将来移植中的工作量呢?
假设MSP430单片机的P40,P41,P42分别接在I2C的WP,SCK,SDL引脚上。通常,你可能会最先想到下面这种办法:

.H
#define I2C_WP 1
#define I2C_SCK 2
#define I2C_SDA 4
#define I2C_PDIR P4DIR
#define I2C_POUT P4OUT
#define I2C_PIN P4IN
.C
I2C_PDIR |= (I2C_WP | I2C_SCK | I2C_SDA);
I2C_POUT |= I2C_WP;
….

若WP是由P30经反相器接到WP脚上的,那么移植的工作量仍然是比较多,
#define IO_I2C_WP(m) m(3, 0, Y)
#define IO_I2C_SCK(m) m(4, 1, N)
#define IO_I2C_SDA (m) m(4, 2, N)

#define IO_SET(name) IO_##name(SET_)
#define IO_SET_(port, bit, inv) IO_SET_##inv(port, bit)
#define IO_SET_Y(port, bit) P##port##OUT &= ~(1<
#define IO_SET_N(port, bit) P##port##OUT |= (1<

#define IO_CLR(name) IO_##name(CLR_)
#define IO_CLR_(port, bit, inv) IO_CLR_##inv(port, bit)
#define IO_CLR_Y(port, bit) P##port##OUT |= (1<
#define IO_CLR_N(port, bit) P##port##OUT &= ~(1<

#define IO_DIR_O(name) IO_##name(DIR_O_)
#define IO_DIR_I(name) IO_##name(DIR_I_)
#define IO_DIR_O_(port, bit, inv) P##port##DIR |= (1<
#define IO_DIR_I_(port, bit, inv) P##port##DIR &=~ (1<

#define IO_TEST(name) IO_#name(TEST_)
#define IO_TEST_(port, bit, inv) IO_TEST_##inv(port, bit)
#define IO_TEST_Y(port, bit) ((P##port##IN & (1<
#define IO_TEST_N(port, bit) ((P##port##IN & (1<

#define IO_PORT(name) IO_##name(PORT_)
#define IO_PORT_(port, bit, inv) port

#define IO_BIT(name) IO_##name(BIT_)
#define IO_BIT_(port, bit, inv) (1<

#define IO_P4_MASK(m)
(
m(I2C_SCK)
| m(I2C_SDA)
)
…..
如上所示,你可以按照上面的方式增加自己的功能。站长提示:其实不光MSP430单片机可以用这种方法,其它微处理器也可以这种方法。象8051单片机就可以这种方法来很好的实现。

最新回复

学习了~  详情 回复 发表于 2012-11-22 21:28
 
点赞 关注

回复
举报

186

帖子

24

TA的资源

一粒金砂(高级)

沙发
 
学习了~
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表