微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法从PIC引脚读取输入

如何解决无法从PIC引脚读取输入

我在输入阅读方面面临着一个非常困难的问题。

我只是想使用一个按钮来激活多个led,但是我不知道为什么当我按下按钮时特定的PORT不会变为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端口

编辑


enter image description here

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

解决方法

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

,

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

schematic

这样,如果按钮打开,则3,3V的高电平将到达输入引脚。当您按下按钮时,低电平的接地到达输入引脚。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。