本人想要实现在launchpad按下P1.3键,P1.0灯就亮一下的功能,一下是程序代码:
#include <msp430.h>
int main(void)
{
WDTCTL = WDTPW + WDTHOLD;
P1DIR |= 0x01;
while (1)
{
if ((0x08 & P1IN))
P1OUT &= ~0x01;
else
P1OUT |= 0x01;
}
}
但发现该程序下载到板子后,P1.0灯总是不亮(按不按P1.3键都是一样),不知道问题出在哪里,再次请教各位高手,顺便再请教下P1.3键按下去那一瞬间是低电平的么?不胜感激!
此帖出自
小平头技术问答
#include "io430.h"
#include "intrinsics.h"
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
P1DIR |= 0x41;
P1REN=0x08;//使能P1.3的拉电阻
P1OUT=0x09;//设置P1.0输出高点平,并设置P1.3的拉电阻为上拉方式
while(1)
{
if(!(P1IN&0x08))
{
__delay_cycles(3500);//精确时延
if(!(P1IN&0x08))
{
while(!(P1IN&0x08))
P1OUT^=0x41;
}
}
}
}
该代码实现了按下P1.3键切换红黄两灯的交替闪烁
注:PXREN要和PXUOT配合使用才能实现板子内部拉电阻的上下拉
PxDIR=1时输出
{
PxREN=1只有拉电阻起作用
PxOUT=1上拉
PxOUT=0下拉
PxREN=0推挽输出无拉电阻
PxOUT=1输出高
PxOUT=0输出低
}
PxDIR=0时输入
{
PxREN=1有拉电阻起作用
PxOUT=1上拉
PxOUT=0下拉
PxREN=0时IO呈高阻状态 高阻状态
}
一周热门 更多>