2-MSP430按键输入检测
Posted 优秀不够,你是否无可替代
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2-MSP430按键输入检测相关的知识,希望对你有一定的参考价值。
为了写一篇文章做铺垫--提醒着自己,,,,,,
P1.0的电平,随着P1.1引脚输入的电平变化而变化
#include "io430.h" void delay(void) { unsigned char a,b,c; for(c=167;c>0;c--) for(b=171;b>0;b--) for(a=1;a>0;a--); } void main( void ) { WDTCTL = WDTPW + WDTHOLD;//看门狗默认是打开的,不使用就关了它 P1DIR = 0x01;//P1.0为输出模式 while(1) { 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(1) { 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按键输入检测的主要内容,如果未能解决你的问题,请参考以下文章
MSP430 DM430-A开发板学习笔记IO中断方式来实现按键检测