Quantcast
Channel: MSP 低功耗微控制器论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 3634

关于launchpadG2553官网例程中的外部中断 新人请教一个问题

$
0
0

在这个代码中
P1DIR = 0x01;                             // P1.0 output, else input
  P1OUT = 0x10;                             // P1.4 set, else reset
首先设置P1.0输出,其他输入,第二句就让P1.4输出高电平,这两句不矛盾吗?

#include <msp430.h>

int main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
  P1DIR = 0x01;                             // P1.0 output, else input
  P1OUT = 0x10;                             // P1.4 set, else reset
  P1REN |= 0x10;                            // P1.4 pullup

  while (1)                                 // Test P1.4
  {
    if (0x10 & P1IN) P1OUT |= 0x01;         // if P1.4 set, set P1.0
    else P1OUT &= ~0x01;                    // else reset
  }
}

还有在下面这个代码中,为什么接P1.4时首先需要
P1OUT =  0x10;                            // P1.4 set, else reset
才能设置上拉电阻呢?上拉电阻的作用是保护内部结构防止静电接触瞬间放电吗?
而如果是P1.3就不用这样呢?(P1.3是LED  P1.4悬空)

#include <msp430.h>

int main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
  P1DIR = 0x01;                             // P1.0 output, else input
  P1OUT =  0x10;                            // P1.4 set, else reset
  P1REN |= 0x10;                            // P1.4 pullup
  P1IE |= 0x10;                             // P1.4 interrupt enabled
  P1IES |= 0x10;                            // P1.4 Hi/lo edge
  P1IFG &= ~0x10;                           // P1.4 IFG cleared

  _BIS_SR(LPM4_bits + GIE);                 // Enter LPM4 w/interrupt
}

// Port 1 interrupt service routine
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
  P1OUT ^= 0x01;                            // P1.0 = toggle
  P1IFG &= ~0x10;                           // P1.4 IFG cleared
}

Viewing all articles
Browse latest Browse all 3634

Trending Articles