MSP430单片机IO引脚的宏定义

发布时间:2008-1-1 11:38    发布者:MSP430
关键词: 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单片机就可以这种方法来很好的实现。
本文地址:https://www.eechina.com/thread-2824-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关在线工具

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表