C语言 按钮按下后无法突破 if 语句 - 微芯片



按下按钮后,我无法脱离 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();
}
}
}
}

最新更新