代码如下,对p2.0端口读入,发现除非p2.0接地,其余(浮空和接高电平)都是读出来的高,这是为什么啊,io口问题?
#include "io430.h"
#include "oled.h"
#include "stdint.h"
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
OLED_Init();
P2DIR&=~BIT0;
while(1)
{
interface_3();
if(P2IN&BIT0)
{
delay_ms(10);
if(P2IN&BIT0)
{
interface_5();
delay_ms(100);
}
}
}
}
灰小子:
浮空的时候,电平状态由周围电磁环境决定
user5176142:
回复 灰小子:
很奇怪的是读P1.4为低,读p1.5为高
user5176142:
回复 灰小子:
很奇怪的是读P1.4为低,读p1.5为高
Susan Yang:
回复 user5176142:
悬空的时候不稳定,要避免引脚悬空
缺省情况下,所有 I/O 引脚在复位后被设置为输入。 为了避免悬空输入引脚消耗更多电流,所有未使用的I/O 应该被设置为输出低电平,除非引脚被连接至外部上拉电阻器,这一连接意味着引脚应该被设置为输出高电平。
Ling Zhu2:
回复 user5176142:
正常的,floating状态下,高低是不定的
user5176142:
回复 Ling Zhu2:
比如下面这段代码中设置了下拉电阻,可是p2.1读出来仍为高,可是将端口换为p2.2完全正常,这是为什么啊
#include <msp430.h>
int main(void)
{WDTCTL = WDTPW + WDTHOLD;P2DIR |= BIT0;P2DIR&=~BIT1;P2REN|=BIT1;P2OUT&=~BIT1;while (1){if (P2IN & BIT1)P2OUT |= BIT0;elseP2OUT &= ~BIT0;}
}