无法从PIC引脚读取输入
我面临着一个非常棘手的输入读取问题 我只是想用一个按钮来激活几个led,但我不知道为什么当我按下按钮时,特定端口没有变为0到1 我看到它可能与模拟有关,但我把它变成了数字无法从PIC引脚读取输入,c,pic,mplab,C,Pic,Mplab,我面临着一个非常棘手的输入读取问题 我只是想用一个按钮来激活几个led,但我不知道为什么当我按下按钮时,特定端口没有变为0到1 我看到它可能与模拟有关,但我把它变成了数字 PIC16F18875 使用MPLABxV5.40 这是密码 #define _XTAL_FREQ 4000000 #define button TRISDbits.RD7 #include <xc.h> ledLoop(void){ char run = 1; while(1){
- PIC16F18875
- 使用MPLABxV5.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();
}
#定义频率4000000
#定义按钮TRISDbits.RD7
#包括
ledLoop(无效){
char run=1;
而(1){
if(PORTDbits.RD7==1){
LATB=运行;
run*=2;
__延时μms(200);
}
否则{
LATB=0;
}
}
}
真空总管(真空)
{
ANSELDbits.ANSD7=0;
TRISDbits.TRISD7=1;
TRISA=0;
LATA=0x00;
ledLoop();
}
此外,我的按钮已连接,如下所示:
3V->LED->10欧姆电阻->按钮->至质量和RD7端口
编辑
如果RD的if条件=0,则4个LED工作,因此其工作正常。对于按钮部分,如果我按下按钮,led工作,但不要将PORTDbits.RD7更改为1,您的示意图是这样的吗?LED:3v->LED->10R->PORTB和BUTTON:0v->BUTTON->RD7可能会在BUTTON/RD7之间添加一个上拉按钮以避免电浮值您的原理图是这样的吗?LED:3v->LED->10R->PORTB和BUTTON:0v->BUTTON->RD7可能会在BUTTON/RD7之间添加上拉,以避免电浮值您需要将按钮的“高”侧连接到RD7,将按钮的“低”侧连接到地: 这样,如果按钮打开,3,3V的高电平就会到达输入引脚。当您按下按钮时,低电平接地连接到输入引脚 (关于这一点的正确说法听起来可能不同,但我想说得尽可能简单。)您需要将按钮的“高”侧连接到RD7,将按钮的“低”侧连接到接地: 这样,如果按钮打开,3,3V的高电平就会到达输入引脚。当您按下按钮时,低电平接地连接到输入引脚
(正确的说法听起来会有所不同,但我想说得尽可能简单。)该示意图听起来好像没有为引脚提供正确的驱动,但不清楚。请用正确的示意图进行编辑。我刚刚编辑了这篇文章,谢谢你的帮助。我说不清楚,因为这是一张试验板的照片,不是示意图,但看起来你的按钮GPIO可能刚刚接地。按下和松开按钮时,使用万用表或示波器检查您在输入引脚上看到的电压。更改
LATB=0代码>到LATB=~LATB__延迟μms(500)代码>并查看是否有这样的闪烁。该示意图听起来好像没有为pin提供正确的驱动器,但不清楚。请用正确的示意图进行编辑。我刚刚编辑了这篇文章,谢谢你的帮助。我说不清楚,因为这是一张试验板的照片,不是示意图,但看起来你的按钮GPIO可能刚刚接地。按下和松开按钮时,使用万用表或示波器检查您在输入引脚上看到的电压。更改LATB=0代码>到LATB=~LATB__延迟μms(500)我刚刚编辑了这篇文章,也许它会更清晰。我刚刚编辑了这篇文章,也许它会更清晰。所以,看起来你是对的。我想我必须将我的按钮连接到3V,然后当我按下按钮时,针脚RD7改变了他的值。但奇怪的是,当我的手指非常靠近按钮时,led例行程序工作正常,因为输入是“打开”的,所以只有很少的电流需要使其电平摆动。你的手指收集了足够多的电磁噪声来建立一些电压来影响这个引脚根据建议的解决方案,3,3V的阻抗足够低,足以阻止这种效应。所以,看起来你是正确的。我想我必须将我的按钮连接到3V,然后当我按下按钮时,针脚RD7改变了他的值。但奇怪的是,当我的手指非常靠近按钮时,led例行程序工作正常,因为输入是“打开”的,所以只有很少的电流需要使其电平摆动。你的手指收集了足够多的电磁噪声来建立一些电压来影响这个引脚在建议的解决方案中,3,3V的阻抗足够低,足以阻止这种效应。