一个小程序,请教各位高手

2019-03-24 12:42发布

本人想要实现在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键按下去那一瞬间是低电平的么?不胜感激! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
bobde163
1楼-- · 2019-03-24 16:55
 精彩回答 2  元偷偷看……
WPD
2楼-- · 2019-03-24 16:57
< :TI_MSP430_内容页_SA7 --> 今天偶尔看到这个帖子http://bbs.eeworld.com.cn/thread-314354-1-3.html,研究了附件的代码后,终于把这个问题解决了,在此也希望给在这个问题上同样有疑问的同学一个答案,所以给出新的源代码以供参考:
#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呈高阻状态        高阻状态
}

一周热门 更多>

相关问题

    相关文章