无法从引脚 PIC 读取输入

Cannot read input from pins PIC

我在输入读取方面遇到了一个非常棘手的问题。

我只是想用一个按钮来激活几个 led,但我不知道为什么当我按下按钮时,特定的端口没有变为 0 到 1。

我看到它可能与模拟有关,但我把它变成了数字

这是代码

#define _XTAL_FREQ 4000000
#define button TRISDbits.RD7
#include <xc.h>
ledLoop(void){
    char run = 1;
    while(1){
        if(PORTDbits.RD7==1){
           LATB=run;
           run *= 2;
           __delay_ms(200);
           
        }
        else{
            LATB=0;
        }
    }
}
void main(void)
{
    ANSELDbits.ANSD7=0;
    TRISDbits.TRISD7=1;
    TRISA=0;
    LATA=0x00;
    ledLoop();
    
}
 

我的按钮也连接如下:

3V -> LED -> 10 欧姆电阻 -> 按钮 -> 质量和 RD7 端口

编辑


如果 RD==0 的 if 条件,则 4 个 LED 会工作,因此它会工作。对于按钮部分,如果我按下按钮,LED 会工作,但不要将 PORTDbits.RD7 更改为 1

你的原理图是这样的吗? LEDs:3v -> LEDs -> 10R -> PORTB 和 BUTTON:0v -> BUTTON -> RD7 也许在 Button/RD7 之间添加一个 Pullup 以避免电浮动值

您需要将按钮的“高”侧连接到 RD7,并将按钮的“低”侧接地:

这样,如果按钮打开,3.3V 的高电平就会到达输入引脚。按下按钮时,低电平到达输入引脚。

(正确的说法听起来可能不同,但我想尽可能简单地说。)