无法从引脚 PIC 读取输入
Cannot read input from pins PIC
我在输入读取方面遇到了一个非常棘手的问题。
我只是想用一个按钮来激活几个 led,但我不知道为什么当我按下按钮时,特定的端口没有变为 0 到 1。
我看到它可能与模拟有关,但我把它变成了数字
- PIC16F18875
- 使用 Mplabx v5.40
这是代码
#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 的高电平就会到达输入引脚。按下按钮时,低电平到达输入引脚。
(正确的说法听起来可能不同,但我想尽可能简单地说。)
我在输入读取方面遇到了一个非常棘手的问题。
我只是想用一个按钮来激活几个 led,但我不知道为什么当我按下按钮时,特定的端口没有变为 0 到 1。
我看到它可能与模拟有关,但我把它变成了数字
- PIC16F18875
- 使用 Mplabx v5.40
这是代码
#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 的高电平就会到达输入引脚。按下按钮时,低电平到达输入引脚。
(正确的说法听起来可能不同,但我想尽可能简单地说。)