我有一个对微控制器 PIC18F 进行编程的项目,我必须将一个开关电路连接到微控制器板上,这个开关电路有一个电子锁和一个要连接的蜂鸣器。
锁最初是通电的。假设当我发送'1'时,蜂鸣器将以方波供电,锁将断电。当它收到“0”时,蜂鸣器将关闭,不再为锁供电。当它收到“2”时,锁应该通电,但如果蜂鸣器之前没有通电,则不应再次通电。
我的困惑在最后一部分。当我通过超级终端发送“2”并在它之前发送“0”时,蜂鸣器再次通电。
这是代码,
void buzzertest();
char uart_rd;
int buzzer;
void main() {
TRISB=0X00;
PORTB=0x00;
RB5_bit = 0xFF;                  //lock  open
UART1_Init(9600);               // Initialize UART module at 9600 bps
while (1) {                     // Endless loop
 if (UART1_Data_Ready())       // If data is received,
 {
    buzzer=1;
    uart_rd = UART1_Read();     // read the received data,
    if(uart_rd =='1') {
       RB5_bit = 0x00;  //lock closed
       buzzertest();
     }
     if(uart_rd =='0' ){   //disable buzzer
        RB1_bit = 0x00;   //buzzer
        buzzer=0;
       }//end if
      buzzer=0;
      if(uart_rd =='2'){   //disable lock
        RB5_bit=0xFF;
        if(buzzer!=1){
            buzzertest();
         }
       }//end if
     } //end outer if
    } //end while
}//end main
void buzzertest(){
 while(1){
  RB1_bit = 0xFF;  //buzzer
  Delay_ms(1000);
  RB1_bit = 0x00; //buzzer
  Delay_ms(1000);
  if (UART1_Data_Ready())
  break;
 }//end while loop
}
谁能帮我解决这个问题?