PIC单片机自动按下

PIC microcontroller automatically pressed

我正在尝试通过按下按钮打开 pic24FV16KA301 微控制器上的 LED。问题是 LED 自动点亮。经过一些更改后,PIC 似乎已自动按下。按钮连接上拉电阻。 这是部分代码(因为部分代码与问题无关)。

#include <xc.h>
#include "Header_School_Project.h"
#include <stdlib.h>
#include <stdio.h>
#include <libpic30.h>
#define _XTAL_FREQ 20000000
#define LED_LOW LATAbits.LATA4  
#define BUTTON_LOW PORTAbits.RA1

void main(void)
{
   TRISAbits.TRISA4 = 0;
   TRISAbits.TRISA1 = 1;
    
    while(1)
    {           
        if(!BUTTON_LOW)                                   
        {
            __delay_ms(100);
            if(!BUTTON_LOW)   
            {
                LED_LOW = 1;
            }
        }
        else if(BUTTON_LOW)
        {
            LED_LOW = 0;
        }
  return;
}

如果有人能帮助我,那将不胜感激。

编辑:将 __delay_ms(100) 更改为 __delay_ms(1000) 后,我看到 LED 闪烁得非常快

如 Kozmotronik 所述,您需要先将引脚设置为数字。 PIC 默认为模拟输入...这种“默认”浪费了大量工时。

首先使用ANSEL寄存器将porta的引脚配置为相应微控制器数据表中提到的数字引脚。
还有一件事是将去抖动延迟增加到大约 300 毫秒,这可以解决你的问题。