zoukankan      html  css  js  c++  java
  • 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输出低电平,,不影响其他引脚
        }
      }
    }

     

  • 相关阅读:
    android工程混淆和反编译
    php+列出目录文件
    php+大文件管理
    支持粘贴图片的富文本编辑器
    web上传整个文件夹
    文件夹管理
    断点续传
    超大文件上传方案
    ueditor+word粘贴上传
    java+大文件上传
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/6057892.html
Copyright © 2011-2022 走看看