2-MSP430按键输入检测
为了写一篇文章做铺垫--提醒着自己,,,,,,
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按键输入检测的更多相关文章
- STM32基本GPIO操作:按键输入(扫描+外部中断)
(涉及专有名词较多,难免解释不到位,若有错误还请指出,谢谢!) 硬件连接图如下: 一.扫描 思路是在main函数中通过死循环来扫描端口电平状态检测,以此判断按键是否按下.实现较为简单. 1.初始化(注 ...
- linux输入子系统(input subsystem)之按键输入和LED控制
实验现象:在控制台打印按键值,并且通过按键控制相应的LED亮灭. 1.代码 input_subsys_drv.c #include <linux/module.h> #include &l ...
- Python脚本控制的WebDriver 常用操作 <十二> send_keys模拟按键输入
下面将使用WebDriver中的send_keys来模拟键盘按键输入 测试用例场景 send_keys方法可以模拟一些组合键操作: ctrl+a ctrl+c ctrl+v 等. 另外有时候我们需要在 ...
- ADB——模拟手机按键输入
基本命令 adb 模拟按键输入的命令主要通过 input 进行 Usage: input [<source>] <command> [<arg>...] The s ...
- adb命令模拟按键输入keycode
adb命令模拟按键输入keycode 2017年05月18日 14:57:32 阅读数:1883 例子: //这条命令相当于按了设备的Backkey键 adb shell input keyevent ...
- linux下如何模拟按键输入和模拟鼠标【转】
转自:http://www.cnblogs.com/leaven/archive/2010/11/30/1891947.html 查看/dev/input/eventX是什么类型的事件, cat /p ...
- STM32:TIMER PWM 输入检测
PWM输入检测是输入捕获的一个特例,可以测量频率与占空比 与输入捕获不同的是PWM输入模式会将同一个输入信号(TI1或TI2)连接到两个捕获装置(IC1和IC2).这两个捕获装置一个捕获上升沿一个捕获 ...
- adb shell命令模拟按键/输入input使用keycode 列表详解
在adb shell里有一个非常使用的命令,模拟按键输入,这里首先不要理解为是键盘的模拟按键,下面命令的使用和键值做一个详解. input命令格式 adb shell input keyevent & ...
- Helium文档5-WebUI自动化-press模拟键盘按键输入技巧
前言 press方法是用来模拟键盘按键输入,可以组合使用,来模拟键盘输入,解决一些难定位的元素 入参介绍 以下是press源码中的函数介绍 def press(key): :入参 :param ke ...
随机推荐
- MATLAB - 运算符
1.关系运算符用来比较两个数之间的大小关系,在Matlab中的关系运算符包括: < 小于 <= 小于或等于 > 大于 >= 大于或等于 == ...
- html5 -js判断undefined类型
js判断undefined类型 今天使用showModalDialog打开页面,返回值时.当打开的页面点击关闭按钮或直接点浏览器上的关闭则返回值是undefined所以自作聪明判断 var reVal ...
- 开源PLM软件Aras详解三 服务端简易开发
废话少说,直接进入主题, 以CAD为例: 先找到CAD对象类:具体操作见下图 双击打开,找到服务端事件:见下图 点击新建对象,点击添加,新建Method 编写Method,语言分为前端和后端,前端支持 ...
- xsltproc docbook 转 html
/etc/xml/catalog <?xml version="1.0" encoding="UTF-8"?> <catalog xmlns= ...
- 解决winrar压缩软件弹出广告
最近winrar每次打开压缩包就会弹出一个广告,那是因为winrar是收费软件,注册了就没有广告了.下面我教大家怎么注册来屏蔽广告. 解决方法 1.新建一个txt文件并命名为"rarreg. ...
- C# 配置错误定义了重复的“system.web.extensions/scripting/scriptResourceHandler”节
一项目直接在VS里面,调试就可以正常运行.但部署到IIS下就提示,配置错误定义了重复的“system.web.extensions/scripting/scriptResourceHandler”节 ...
- Oracle列操作(增加列,修改列,删除列)
Oracle列操作 增加一列: alter table emp4 add test varchar2(10); 修改一列: alter table emp4 modify test varchar2( ...
- session的使用方法
概念:session把客户资料存在服务器中,给浏览器一个加密凭证,每次登录生成的凭证都不相同,浏览器用cookie保存凭证.下次访问时服务器收到凭证后,打开文件读取session信息.session_ ...
- js常用功能汇总
var Utils = function() { this.Tools; this.ui; }; Utils = new Utils(); Utils.prototype.Tools = { year ...
- 再见Unity3d的死循环
前两天看见http://www.manew.com/thread-89909-1-1.html这篇译文之前几个小时刚好解决了一个莫名的死循环问题,然后忍不住要把另外一种方法告诉蛮友们.这个方法不需要知 ...