求教一个关于MSP430 G2 Launchpad按键程序的问题

2019-07-15 16:09发布

在给Launchpad写程序的时候发现一个比较有意思的问题。如下图
P1.3为一个按键
P1.0 P1.6分别是两个LED
QQ截图20151124172048.png

参照一下官方给出的原理图

1.png 2.png


然后......我就撸出了这么一段代码:
  1. #include "msp430g2553.h"

  2. void main(void)
  3. {
  4.     WDTCTL = WDTPW | WDTHOLD;        // Stop watchdog timer
  5.     P1DIR|= BIT0+BIT6;
  6.     P1DIR&=~BIT3;

  7.         P1REN=BIT3;
  8.         while(1)
  9.         {
  10.                 if(P1IN&BIT3)
  11.                         P1OUT=BIT0;
  12.                 else
  13.                         P1OUT=BIT6;
  14.         }
  15. }
复制代码然而不管我怎么按都没变化。
然后我就在网上找找别人的程序看看了,我发现有一点不同,就是我看到某位同学,他把P1OUT的BIT3也给置为1了。
然后,我就加上这个BIT3
  1. #include "msp430g2553.h"

  2. void main(void)
  3. {
  4.     WDTCTL = WDTPW | WDTHOLD;        // Stop watchdog timer
  5.     P1DIR|= BIT0+BIT6;
  6.     P1DIR&=~BIT3;

  7.         P1REN=BIT3;
  8.         while(1)
  9.         {
  10.                 if(P1IN&BIT3)
  11.                         P1OUT=BIT0+BIT3;
  12.                 else
  13.                         P1OUT=BIT6+BIT3;
  14.         }
  15. }
复制代码说来神奇,竟然就这么好了,这下可以按下键另外的LED亮了,松开就又回来了。
那么...问题来了,明明给P1.3的I/O模式设置为输入了,按我的理解来说,P1OUT中的BIT3应该对结果无影响才对,但是事实上又不是如此,难道说写按键程序的时候,I/O设置成输入,管脚悬空默认高阻态的情况下,P1IN会向P1OUT读取相应的值吗?
求各位替我解答下心中疑惑!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
lingergz
1楼-- · 2019-07-15 16:15
楼主居然 第一步没有配置  时钟
旺仔棒棒糖
2楼-- · 2019-07-15 19:17
 精彩回答 2  元偷偷看……
旺仔棒棒糖
3楼-- · 2019-07-15 20:50
旺仔棒棒糖 发表于 2015-11-26 11:59
楼主给了内部上下拉电阻使能信号,但并没有选定上拉或者下拉电阻,一般设置为输入模式后,然后使能内部电阻,之后再用PxOU选定上拉或者下拉,具体记不清了,楼主可以查查手册

好像设置完内部电阻使能后,PxOUT =1是上拉,=0是下拉电阻
旺仔棒棒糖
4楼-- · 2019-07-15 23:25
旺仔棒棒糖 发表于 2015-11-26 12:01
好像设置完内部电阻使能后,PxOUT =1是上拉,=0是下拉电阻

而且楼主操作其中一位时,不要改变其他位,置1则用或,置0则用与
trsy003
5楼-- · 2019-07-15 23:40
lingergz 发表于 2015-11-25 10:54
楼主居然 第一步没有配置  时钟

时钟没配置,按默认的MCLK,SMCLK 1M,ACLK 32768
trsy003
6楼-- · 2019-07-16 03:40
旺仔棒棒糖 发表于 2015-11-26 12:30
而且楼主操作其中一位时,不要改变其他位,置1则用或,置0则用与

嗯,道理是这个道理,我就想着我只需要BIT3的上拉,就没有用| ,下面的控制LED如果要用上|的话,还得先把另一位给置0,所以我也没用,直接就=了,当然,在以后的编程中肯定还是少这样用的好, 毕竟是不好的习惯。

一周热门 更多>