如何解决无法从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端口
编辑
如果RD的if条件== 0,则4个LED起作用,因此其起作用。对于按钮部分,如果我按下按钮,LED会起作用,但不要将PORTDbits.RD7更改为1
解决方法
您的原理图是这样吗? LEDs:3v-> LEDs-> 10R-> PORTB和BUTTON:0v-> BUTTON-> RD7也许在Button / RD7之间添加一个上拉以避免电气浮动值
,您需要将按钮的“高”侧连接到RD7,并将按钮的“低”侧连接到地面:
这样,如果按钮打开,则3,3V的高电平将到达输入引脚。当您按下按钮时,低电平的接地到达输入引脚。
(正确的说法听起来会有所不同,但我想说的尽可能简单。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。