[求助] 为何P1.3一直为低电平,导致按键没有作用

tuibiannie   2015-3-30 19:09 楼主
请大神帮忙看下,就这么一个简单的程序  就是不知道错误在哪里??????急
#include"msp430g2553.h"

void main(void)
{
        WDTCTL=WDTPW+WDTHOLD;
        P1DIR=0X01;
        P1OUT|=BIT0;
        P1REN|=BIT3;        //设置内电阻
        P1OUT|=BIT3;    //设置上拉
        while(1)
        {
                if((P1IN&BIT3)==0)    //不用按下键也可以进去  太奇怪了 按道理P1IN应该为高电平??
                {
                        _delay_cycles(100000);
                        if((P1IN&BIT3)==0)
                        {
                                P1OUT^=BIT0;
                                _delay_cycles(10000);
                                while(!(P1IN&BIT3));     //程序一直在里面出不来????
                        }
                }
        }
       
}



回复评论 (10)

自己顶一下。。。
点赞  2015-3-30 19:10
用示波器测试,按下P1.3对应的按键  没有反应 一直为低电平
点赞  2015-3-30 19:32
先测量一下,这个引脚是否对地短路。如果没有,设置成输入,加一个上拉电阻看看,电平什么样。
点赞  2015-3-30 20:51
用示波器测了,没有短路,开关是好的,一开始下那个PWM的程序还是好的,后来新建工程,复制程序就不行了,在去下原来的,按键也不行了,真是奇怪,会不会是新建工程的问题,真不知道何解??
点赞  2015-3-31 00:00
这个原因慢慢找,肯定是哪个地方失误,找出来了更记得牢……
点赞  2015-3-31 08:34
#include "io430.h"
#include "intrinsics.h"
void main(void)
{
  unsigned int i=0;
  WDTCTL = WDTPW + WDTHOLD;
  P1DIR|=(BIT0+BIT6);
  P1DIR&=~BIT3;
  P1OUT|=(BIT0+BIT6);
  P1REN|=BIT3;
  while(1)
  {
    if(!(P1IN&BIT3))
    {
      for(i=0;i<23000;i++);
      if(!(P1IN&BIT3))
      {
        while(!(P1IN&BIT3));
        P1OUT^=(BIT6+BIT0);
      }
     
    }
   
   
  }
  
  
淘宝:https://viiot.taobao.com/Q群243090717 多年专业物联网行业经验,个人承接各类物联网外包项目
点赞  2015-5-31 11:01
配置上没有错误,很大可能是硬件的问题的
点赞  2015-6-11 23:41
引用: 强仔00001 发表于 2015-6-11 23:41
配置上没有错误,很大可能是硬件的问题的

谢谢
点赞  2015-8-16 21:21
引用: wateras1 发表于 2015-5-31 11:01
#include "io430.h"
#include "intrinsics.h"
void main(void)
{
  unsigned int i=0;
  WDTCTL = WDT ...

谢谢
点赞  2015-8-16 21:21
引用: ienglgge 发表于 2015-3-30 20:51
先测量一下,这个引脚是否对地短路。如果没有,设置成输入,加一个上拉电阻看看,电平什么样。

谢谢
点赞  2015-8-16 21:21
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复