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输出低电平,,不影响其他引脚
    }
  }
}

时间: 2024-11-16 06:50:39

2-MSP430按键输入检测的相关文章

暴风魔镜安卓手柄输入检测接口

使用暴风魔镜做安卓VR开发,自己尝试弄了一天,发现效果太差,主要是手柄输入函数检测不到,或者检测的不灵敏.第二天才想起来百度,然后才发现暴风魔镜官方已经提供了手柄SDK.链接地址http://bbs.open.mojing.cn/forum.php?mod=viewthread&tid=48&extra=page%3D1. 好,以上就是原生的SDK,关于相机我就不说了,最要紧是把手柄函数给找到.开发文档大概介绍了一下,在BaoFengZeemoteManager.cs中提供了按键的获取事件

STM32基本GPIO操作:按键输入(扫描+外部中断)

(涉及专有名词较多,难免解释不到位,若有错误还请指出,谢谢!) 硬件连接图如下: 一.扫描 思路是在main函数中通过死循环来扫描端口电平状态检测,以此判断按键是否按下.实现较为简单. 1.初始化(注意C语言中变量声明需放在函数开头) 以下是初始化PB5端口(LED灯)的代码,每一条语句的含义在我另一篇博客里 GPIO_InitTypeDef GPIO_Init1; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_Init1.

linux输入子系统(input subsystem)之按键输入和LED控制

实验现象:在控制台打印按键值,并且通过按键控制相应的LED亮灭. 1.代码 input_subsys_drv.c 1 #include <linux/module.h> 2 #include <linux/version.h> 3 4 #include <linux/init.h> 5 #include <linux/fs.h> 6 #include <linux/interrupt.h> 7 #include <linux/irq.h&g

单通道感应芯片TTP223E-BA6/CA6/HA6 单按键触摸检测IC

TTP223E-BA6 / TONTEK/通泰封装形式:SOT23-6概 述● TTP223E-BA6 TonTouchTM 是单按键触摸检测芯片, 稳定的触摸检测效果可以广泛的满足不同应用的需求, 此触摸检测芯片是专为取代传统按键而设计, 触摸检测 PAD 的大小可依不同的灵敏度设计在合理的范围内, 低功耗与宽工作电压, 是此触摸芯片在 DC 或 AC应用上的特性.特 点● 工作电压 2.0V ~ 5.5V● 工作电流 @VDD=3V﹐无负载低功耗模式下典型值 2.0uA?最大值 4.0uA●

android 之EditText输入检测

最近开发一个功能的时候发生一个故事,其情节如下: 功能其实不复杂,其中需要一个EditText来获取用户输入的信息.于是,我做了一个Dialog来显示我的输入界面(代码如下): mAlertDialog = new AlertDialog.Builder(this)//, android.R.style.Theme_Holo_Light .setIcon(R.drawable.ic_dialog_info_light) .setTitle(R.string.model_rename_device

html5标准事件oninput实现输入检测

以往我们实现input的输入监听用到的无非是onkeyup.onkeydown.onchange,但是这些都有着一些不好的用户体验.比如onchange事件只在键盘或者鼠标操作改变对象属性,且失去焦点时触发,脚本触发无效:而onkeydown.onkeyup在处理复制.粘贴.拖拽.长按键(按住键盘不放)等细节上并不完善. onpropertychange属性可在某些情况下解决上面存在的问题,不用考虑是否失去焦点,不管js操作还是键盘鼠标手动操作,只要HTML元素属性发生改变即可立即捕获到.遗憾的

STM32 按键输入

#include "stm32f10x.h"#include "key.h" //按键初始化函数void KEY_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin

以一个闰年检测程序为例的非法字符异常输入检测

闰年:闰年(Leap Year)是为了弥补认为历法规定造成的年度天数与地球实际公转周期的时间差而设立的.补上时间差的年份为闰年. 简单来说,置润法则是:四年一闰,百年不闰,四百年再闰.即规定公历年份是整百数的,必须是400的倍数才是闰年,不是400的倍数的就是平年. 例如:1950-2050年间的闰年: 1952,1956,1960,1964,1968,1972,1976,1980,1984,1988,1992,1996,2000, 2004,2008,2012,2016,2020,2024,2

input之按键输入

通过直接操作驱动来监控键盘,只要程序一旦在后台启动,无论在任何页面都可以监控到按键的数值. 步骤如下: 1.找到键盘挂在点:有两种方法 方法一:在   /dev/input路径下通过  cat even..(1,2,3,4..)打印操作,并按下键盘看哪个出现的不是回写(乱码状态),就是键盘挂载点,我的是event1;鼠标是event2: 方法二:在命令行中输入  cat /proc/bus/input/devices 查看设备对应的结点(文件) 2.打开键盘文件: #define   DEV "