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为底,,,
更多文章:
麒麟655和骁龙625哪个好(高通骁龙625和海思麒麟655差距大吗)
2024年4月25日 00:40
final cut pro多少钱(final cut pro多少钱)
2024年5月30日 12:30
三星手机出厂设置还原密码(三星手机怎样恢复出厂设置密码忘记了)
2024年3月6日 04:10
直播:日本vs克罗地亚世界杯直播(12.6号卡塔尔世界杯还直播吗)
2024年9月12日 16:40
小米2s救砖线刷包(小米2s手机完全变砖了,recovery、fastboot模式两种模式都试过进不去了,怎么办)
2024年3月7日 05:20
苹果cmiit id查询官网(如何用iPhone后面的CMIIT ID(序列号)查询到该iPhone的信息(例如激活日期、iP)
2024年9月4日 05:20
数码宝贝官方手游(以前有款数码宝贝题材的回合制手游叫什么名字)
2024年5月28日 00:10
东芝电器官网首页(东芝全国服务热线电话-人工400客服电话)
2024年4月26日 00:40
一加8t什么时候上市时间(一加手机kb2000是那年出厂的)
2024年5月26日 09:20
ultimate怎么读(ultimate怎么读 ultimate的意思)
2024年7月3日 20:10
真我x7pro至尊版处理器(小米11青春版和真我x7pro至尊版对比哪个好-怎么选)
2024年6月29日 17:20
中兴通讯股票历史数据(中兴通讯属哪种概念股中兴通讯历史股票数据中兴通讯股票连续跌多久了)
2024年5月1日 16:30