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

PIC 微控制器自动按下

如何解决PIC 微控制器自动按下

我正在尝试通过按下按钮来打开 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 的闪烁速度非常快

解决方法

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

,

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

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