gpt4 book ai didi

c - 按下按钮后无法跳出 if 语句 - Microchip

转载 作者:行者123 更新时间:2023-11-30 19:25:44 26 4
gpt4 key购买 nike

按下按钮后我无法跳出 if 语句。按钮激活继电器,按下按钮则关闭继电器。

这是我的完整代码:我是 C 新手,因此非常感谢所有评论和建议。

 #include "mcc_generated_files/mcc.h"
#define FCY 8000000UL
#include <libpic30.h>
//#define baudrate 19200

int main(void)
{
// Initialise the device
SYSTEM_Initialize();
while(1)
{
LED4_SetLow(); // Turn on 3v3 LED
LED12v_SetHigh();
LED3_SetHigh();
LED1_SetHigh();

int button;
button = UART5_Read();
if (button == 0x08)
{
RLY1_SetHigh();
RLY3_SetHigh();
if (button == 0x00)
goto finished;
}

finished:
RLY1_SetLow();
RLY3_SetLow();
}
return (0);
}

我现在已将代码编辑如下。继电器可以设置为高电平,但永远不会达到条件 0x00。有人可以解释一下吗?

#include "mcc_generated_files/mcc.h"
#define FCY 8000000UL
#include <libpic30.h>
//#define baudrate 19200

int main(void)
{
// Initialise the device
SYSTEM_Initialize();
while(1)
{
LED4_SetLow(); // Turn on 3v3 LED
LED12v_SetHigh();
LED3_SetHigh();
LED1_SetHigh();

int button;
int release;
button = UART5_Read();
release = UART5_Read();
if (button == 0x08)
{
RLY1_SetHigh();
RLY3_SetHigh();
}
if (release == 0x00)
{
RLY1_SetLow();
RLY3_SetLow();
}
__delay_ms(1000);
}
return (0);
}

最佳答案

我没有使用过这个 MCU 或其库,但我相信正确的代码应该看起来像这样:

#include "mcc_generated_files/mcc.h"
#include <libpic30.h>
#include <stdint.h>

#define BUTTON_CODE 0x8u // use named constants instead of magic numbers

void main (void)
{
// Initialise the device
SYSTEM_Initialize();

for(;;)
{
uint8_t data;

LED4_SetLow(); // Turn on 3v3 LED
LED12v_SetHigh();
LED3_SetHigh();
LED1_SetHigh();

if(UART5_Data_Ready())
{
data = UART5_Read();
if(data == BUTTON_CODE)
{
RLY1_SetHigh();
RLY3_SetHigh();
}
else
{
RLY1_SetLow();
RLY3_SetLow();
}
}
}
}

关于c - 按下按钮后无法跳出 if 语句 - Microchip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58450242/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com