2-MSP430按键输入检测

时间:2022-05-01 01:24:26

为了写一篇文章做铺垫--提醒着自己,,,,,,

P1.0的电平,随着P1.1引脚输入的电平变化而变化

#include "io430.h"
void delay(void)
{ unsigned char a,b,c;
for(c=;c>;c--)
for(b=;b>;b--)
for(a=;a>;a--);
}
void main( void )
{
WDTCTL = WDTPW + WDTHOLD;//看门狗默认是打开的,不使用就关了它
P1DIR = 0x01;//P1.0为输出模式
while()
{
P1OUT = 0x01;//P1.0输出高电平
delay();
P1OUT = 0x00;//P1.0输出低电平
delay();
}
}

在msp430的头文件中有这样的定义

/*-------------------------------------------------------------------------
* Standard Bits
*-------------------------------------------------------------------------*/ #define BIT0 (0x0001)
#define BIT1 (0x0002)
#define BIT2 (0x0004)
#define BIT3 (0x0008)
#define BIT4 (0x0010)
#define BIT5 (0x0020)
#define BIT6 (0x0040)
#define BIT7 (0x0080)
#define BIT8 (0x0100)
#define BIT9 (0x0200)
#define BITA (0x0400)
#define BITB (0x0800)
#define BITC (0x1000)
#define BITD (0x2000)
#define BITE (0x4000)
#define BITF (0x8000)

所以在设置P1.0为输出模式的时候可以

P1DIR = BIT0;

假如说  我们再配置P1.1为输入模式

如果直接 P1DIR = 0x0001;

如果以后再配置P1.2为输出模式

P1DIR = 0x0005;

这样做会非常的麻烦,因为要考虑以前的引脚配置

所以在配置某个引脚为输出引脚的时候

P1DIR  = P1DIR | 0x0001;    P1.0为输出

P1DIR  = P1DIR | 0x0004;    P1.2为输出

P1DIR  = P1DIR | BIT0;      P1.0为输出

P1DIR  = P1DIR | BIT2;     P1.2为输出

P1DIR  |= BIT0;            P1.0为输出

P1DIR  |= BIT2;             P1.2为输出

当配置为输入的时候P1.1

P1DIR &= 0xFFFD;    P1.1为输入

P1DIR &= ~BIT1;    P1.1为输入       P1DIR = P1DIR & (~BIT1);

看一下是不是互不影响

P1DIR  |= BIT0;            P1.0为输出       P1DIR = 0000 0000 0000 0000 0000 0000 0000 0001

P1DIR  |= BIT2;             P1.2为输出      P1DIR = 0000 0000 0000 0000 0000 0000 0000 0101

P1DIR &= ~BIT1;    P1.1为输入             P1DIR = 0000 0000 0000 0000 0000 0000 0000 0101

现在看来  不配置方向好像初始化为输入模式

#include "io430.h"

void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD; P1DIR |= BIT0;//P1.0为输出 // P1DIR &= BIT1;//P1.1为输入------屏蔽 // P1DIR |= BIT6;//-----屏蔽
// P1OUT &= ~BIT6;//------屏蔽 P1DIR |= BIT7;//P1.7为输出-------测试不受影响
P1OUT |= BIT7;//P1.7输出高电平-------测试不受影响 while()
{
if(P1IN&BIT1)//#define BIT1 (0x0002)如果P1输入寄存器P1IN的第1位为1时
{
P1OUT |= BIT0;//P1.0输出高电平,,不影响其他引脚
}
if(!(P1IN&BIT1))//#define BIT1 (0x0002)如果P1输入寄存器P1IN的第1位为0时
{
P1OUT &= ~BIT0;//P1.0输出低电平,,不影响其他引脚
}
}
}

2-MSP430按键输入检测

2-MSP430按键输入检测