按钮按下后无法中断if语句-Microchip

问题描述 投票:-1回答:1

按下按钮后,我无法打破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);
}    
c embedded pic uart rs485
1个回答
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();
      }
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.