msp430g2553(如何配置 msp430g2553 io口的 其他功能)

本文目录
如何配置 msp430g2553 io口的 其他功能
一 I/O的简介1、各种复用和各种设置(可以作为简单IO功能也可以作各种第二功能;可控制为输入、输出、接上拉电阻、接下拉电阻、接受中断等各种情况);2、IO口常用寄存器有:PXDIR、PXIN、PXOUT、PXREN、PXSEL、PXDS;其中,X可以是1~8,也可以是A~D,因为P1、P2可以合称为PA。例如(PAREN=0x0480)就等价于(P2REN=0x04、P1REN=0x80)。IO口中断相关寄存器:PXIV、PXIFGX、PXIE、PXIES;由于IO中断仅存在于P1口和P2口,因此X只能为1或2,而且不可以为A。3、msp430f5529.h中定义了BIT0~BITF,方便用户进行位操作。例如要设置P1.7和P2.2为输入,代码可如下:PADIR &= ~(BITA + BIT7)。二 IO口常用寄存器配置1、PxDIR,Px口方向寄存器0 端口配置为输入(默认)1 端口配置为输入2、PxOUT,Px口输出寄存器(输入、输出两种模式)当IO口配置为输出模式时:0 输出低电平1 输出高电平当IO口配置为输入模式并且置高/ 置低使能时:0置低1置高3、PxIN,Px 口输入寄存器只读4、PxREN,Px口置高/ 置低使能寄存器0关闭置高/ 置低1使能置高/ 置低5、PxSEL,Px功能选择寄存器(IO中断只有在普通IO下才能使用)0普通的I/O(默认)1有连接外围电路的特殊用途6、PxDS,Px 口输出驱动能力寄存器(我都是用的默认)0减弱输出驱动能力(默认)1全力输出驱动能力三 普通IO使用举例说明:本例程是流水灯加按键控制,每次S1按下,便在等待S2按下,否则,所有LED一直闪烁。若无按键按下,则八盏灯以流水灯方式显示。#include 《msp430f5529.h》#define uint8_t unsigned char#define uint16_t unsigned int//********* 控制LED的IO口宏定义 *************#define LED145678_PORT_DIR P1DIR#define LED145678_PORT_OUT P1OUT#define LED23_PORT_DIR P8DIR#define LED23_PORT_OUT P8OUT//************ LED的IO口宏定义 *************#define LED1 0x01#define LED2 0x02#define LED3 0x04#define LED4 0x08#define LED5 0x10#define LED6 0x20#define LED7 0x40#define LED8 0x80#define LED_ALL 0xFF//************ 按键的IO口宏定义 *************#define BUTTON_S1 (P1IN & BIT7)#define BUTTON_S2 (P2IN & BIT2)//**********************************************************//*函数: void delay(uint16_t x_ms)//*功能: 延时程序//*参数: x_ms(单位:ms)//*返回: 无//*备注: 无//**********************************************************void delay(uint16_t x_ms){uint16_t i=0,j=0;for(i=x_ms;i》0;i--) for(j=110;j》0;j--);}//**********************************************************//*函数: void LED_Init()//*功能: LED的IO口方向初始化//*参数: 无//*返回: 无//*备注: 无//**********************************************************void LED_Init(){LED145678_PORT_OUT &= ~(BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5); LED145678_PORT_DIR |= BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5; LED23_PORT_OUT &= ~(BIT1 + BIT2); LED23_PORT_DIR |= BIT1 + BIT2;}//**********************************************************//*函数: void Board_ledOn(uint8_t ledMask)//*功能: 打开输入的那盏灯//*参数: ledMask//*返回: 无//*备注: 无//**********************************************************void Board_ledOn(uint8_t ledMask){ if (ledMask & LED1) LED145678_PORT_OUT |= BIT0; if (ledMask & LED2) LED23_PORT_OUT |= BIT1; if (ledMask & LED3) LED23_PORT_OUT |= BIT2; if (ledMask & LED4) LED145678_PORT_OUT |= BIT1; if (ledMask & LED5) LED145678_PORT_OUT |= BIT2; if (ledMask & LED6) LED145678_PORT_OUT |= BIT3; if (ledMask & LED7) LED145678_PORT_OUT |= BIT4; if (ledMask & LED8) LED145678_PORT_OUT |= BIT5;}//**********************************************************//*函数: void Board_ledOff(uint8_t ledMask)//*功能: 关闭输入的那盏灯//*参数: ledMask//*返回: 无//*备注: 无//**********************************************************void Board_ledOff(uint8_t ledMask){ if (ledMask & LED1) LED145678_PORT_OUT &= ~BIT0; if (ledMask & LED2) LED23_PORT_OUT &= ~BIT1; if (ledMask & LED3) LED23_PORT_OUT &= ~BIT2; if (ledMask & LED4) LED145678_PORT_OUT &= ~BIT1; if (ledMask & LED5) LED145678_PORT_OUT &= ~BIT2; if (ledMask & LED6) LED145678_PORT_OUT &= ~BIT3; if (ledMask & LED7) LED145678_PORT_OUT &= ~BIT4; if (ledMask & LED8) LED145678_PORT_OUT &= ~BIT5;}//**********************************************************//*函数: void Board_ledToggle(uint8_t ledMask)//*功能: 输入的那盏灯的状态取反//*参数: ledMask//*返回: 无//*备注: 无//**********************************************************void Board_ledToggle(uint8_t ledMask){ if (ledMask & LED1) LED145678_PORT_OUT ^= BIT0; if (ledMask & LED2) LED23_PORT_OUT ^= BIT1; if (ledMask & LED3) LED23_PORT_OUT ^= BIT2; if (ledMask & LED4) LED145678_PORT_OUT ^= BIT1; if (ledMask & LED5) LED145678_PORT_OUT ^= BIT2; if (ledMask & LED6) LED145678_PORT_OUT ^= BIT3; if (ledMask & LED7) LED145678_PORT_OUT ^= BIT4; if (ledMask & LED8) LED145678_PORT_OUT ^= BIT5;}//**********************************************************//*函数: void main(void)//*功能: 主函数//*参数: 无//*返回: 无//*备注: 无//**********************************************************void main(void){ uint8_t LED = LED1; //定义变量LED WDTCTL = WDTPW | WDTHOLD; //关闭看门狗 LED_Init(); //初始化LED的IO口方向 PADIR &= ~(BITA + BIT7); //将按键的IO口方向设为输入 PAREN |= (BITA + BIT7); //置高/ 置低使能 PAOUT |= (BITA + BIT7); //置高(类似于上拉) while(1) { Board_ledOn(LED); delay(1000); //延时1s左右 Board_ledOff(LED); LED = LED 《《 1; if(LED == 0x00) LED = LED1; if(!BUTTON_S1) { delay(10); //消抖 if(!BUTTON_S1) { while(!BUTTON_S1);//等待S1释放 while(BUTTON_S2) //等待S2按下 { Board_ledToggle(LED_ALL);//所有LED状态取反 delay(300); } Board_ledOff(LED_ALL);//关闭所有LED } } }}
msp430g2553单片机供电电压为3.3V,IO口作为输入口的时候,输入电压为多少时判定为高电平
对于 5V单片机来讲,,,输出高电平大于2.4V为高,输出小于0.5V为底,而输入高电平大于2V为高,,输入低电平小于0.8V为底,,, 而3.3V是这样规定的::输出高电平大于2.4V为高,输出小于0.4V为底,而输入高电平大于2V为高,,输入低电平小于0.8V为底,,,

更多文章:
摄影工作室英文(XX摄影工作室的英文名称,应该是XXphotography,还是XXimage)
2024年10月9日 17:50
批发和零售的区别?有谁知道哪里有中最大的手机批发,我想开个手机店
2025年9月1日 16:30
findx2pro什么时候上市(oppofindx2pro电池容量)
2024年6月26日 13:20
华硕fz63v参数(华硕飞行堡垒fz63vd支持哪种接口和哪种协议的固态硬盘)
2025年6月11日 05:51
660ti和960哪个好(电脑显卡GTX660和GTX960m比,哪个更好)
2025年3月7日 19:40
京东618电子产品能便宜多少(家里旧电视不行了,想换台新的,618电视降价力度大吗,有人知道)
2024年10月26日 21:20
三星n7100 galaxy note2(三星note 2是不是n7100)
2025年2月9日 21:30
斯巴达克bios设置图解教程(斯巴达克主板bios怎么设置u盘启动)
2025年2月10日 02:50
iphone12promax电池多少毫安(苹果12promax电池多少毫安)
2025年4月18日 11:10
r9000p泡水(22年7月24日产的拯救者r9000p有泡水的吗)
2025年5月22日 06:21
好记星点读机怎么下载课本内容视频(好记星点读机怎么下载课本)
2025年4月13日 13:50
苹果为什么卖不过三星(三星手机曾经占据了不小的市场,如今的它跟苹果手机比有哪些劣势)
2024年2月25日 15:10











