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

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按键输入检测的更多相关文章

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

    (涉及专有名词较多,难免解释不到位,若有错误还请指出,谢谢!) 硬件连接图如下: 一.扫描 思路是在main函数中通过死循环来扫描端口电平状态检测,以此判断按键是否按下.实现较为简单. 1.初始化(注 ...

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

    实验现象:在控制台打印按键值,并且通过按键控制相应的LED亮灭. 1.代码 input_subsys_drv.c #include <linux/module.h> #include &l ...

  3. Python脚本控制的WebDriver 常用操作 <十二> send_keys模拟按键输入

    下面将使用WebDriver中的send_keys来模拟键盘按键输入 测试用例场景 send_keys方法可以模拟一些组合键操作: ctrl+a ctrl+c ctrl+v 等. 另外有时候我们需要在 ...

  4. ADB——模拟手机按键输入

    基本命令 adb 模拟按键输入的命令主要通过 input 进行 Usage: input [<source>] <command> [<arg>...] The s ...

  5. adb命令模拟按键输入keycode

    adb命令模拟按键输入keycode 2017年05月18日 14:57:32 阅读数:1883 例子: //这条命令相当于按了设备的Backkey键 adb shell input keyevent ...

  6. linux下如何模拟按键输入和模拟鼠标【转】

    转自:http://www.cnblogs.com/leaven/archive/2010/11/30/1891947.html 查看/dev/input/eventX是什么类型的事件, cat /p ...

  7. STM32:TIMER PWM 输入检测

    PWM输入检测是输入捕获的一个特例,可以测量频率与占空比 与输入捕获不同的是PWM输入模式会将同一个输入信号(TI1或TI2)连接到两个捕获装置(IC1和IC2).这两个捕获装置一个捕获上升沿一个捕获 ...

  8. adb shell命令模拟按键/输入input使用keycode 列表详解

    在adb shell里有一个非常使用的命令,模拟按键输入,这里首先不要理解为是键盘的模拟按键,下面命令的使用和键值做一个详解. input命令格式 adb shell input keyevent & ...

  9. Helium文档5-WebUI自动化-press模拟键盘按键输入技巧

    前言 press方法是用来模拟键盘按键输入,可以组合使用,来模拟键盘输入,解决一些难定位的元素 入参介绍 以下是press源码中的函数介绍 def press(key):  :入参 :param ke ...

随机推荐

  1. MATLAB - 运算符

    1.关系运算符用来比较两个数之间的大小关系,在Matlab中的关系运算符包括: <  小于 <= 小于或等于 >        大于 >=      大于或等于 ==     ...

  2. html5 -js判断undefined类型

    js判断undefined类型 今天使用showModalDialog打开页面,返回值时.当打开的页面点击关闭按钮或直接点浏览器上的关闭则返回值是undefined所以自作聪明判断 var reVal ...

  3. 开源PLM软件Aras详解三 服务端简易开发

    废话少说,直接进入主题, 以CAD为例: 先找到CAD对象类:具体操作见下图 双击打开,找到服务端事件:见下图 点击新建对象,点击添加,新建Method 编写Method,语言分为前端和后端,前端支持 ...

  4. xsltproc docbook 转 html

    /etc/xml/catalog <?xml version="1.0" encoding="UTF-8"?> <catalog xmlns= ...

  5. 解决winrar压缩软件弹出广告

    最近winrar每次打开压缩包就会弹出一个广告,那是因为winrar是收费软件,注册了就没有广告了.下面我教大家怎么注册来屏蔽广告. 解决方法 1.新建一个txt文件并命名为"rarreg. ...

  6. C# 配置错误定义了重复的“system.web.extensions/scripting/scriptResourceHandler”节

    一项目直接在VS里面,调试就可以正常运行.但部署到IIS下就提示,配置错误定义了重复的“system.web.extensions/scripting/scriptResourceHandler”节 ...

  7. Oracle列操作(增加列,修改列,删除列)

    Oracle列操作 增加一列: alter table emp4 add test varchar2(10); 修改一列: alter table emp4 modify test varchar2( ...

  8. session的使用方法

    概念:session把客户资料存在服务器中,给浏览器一个加密凭证,每次登录生成的凭证都不相同,浏览器用cookie保存凭证.下次访问时服务器收到凭证后,打开文件读取session信息.session_ ...

  9. js常用功能汇总

    var Utils = function() { this.Tools; this.ui; }; Utils = new Utils(); Utils.prototype.Tools = { year ...

  10. 再见Unity3d的死循环

    前两天看见http://www.manew.com/thread-89909-1-1.html这篇译文之前几个小时刚好解决了一个莫名的死循环问题,然后忍不住要把另外一种方法告诉蛮友们.这个方法不需要知 ...