簡體   English   中英

按鈕激活的UART消息

[英]Button activated UART message

“我正在嘗試使用按鈕,當它被按下時,它會觸發通過UART發送字符串消息,但是在運行代碼時,它總是檢測到該按鈕“一直被按下”,這並不理想。我需要幫助修改我的代碼,非常感謝。

我正在使用EasyPIC Fusion v7。 該設備為P32MX795F512L @ 80MHz。 我將用於PIC32的MikroC pro用作我的IDE。”

“此代碼使用按鈕和UART庫。”

char read;
unsigned int oldstate;


void main() {
  AD1PCFG = 0XFFFF;             //SETTING AN INPUTS AS DIGITAL I/O
  JTAGEN_bit = 0;               //disable JTAG


  UART2_Init(9600);
  Delay_ms(1000);
  TRISA = 1;                    //setting All portA as inputs

  UART_Set_Active(&UART2_Read, &UART2_Write, &UART2_Data_Ready, &UART2_Tx_Idle);    //Sets UART2 as active
  UART_Write_Text("UART is now ready.");
  UART_Write(13);
  UART_Write(10);

   while(1)
   {
    if (Button(&PORTA, 15, 1 ,1))            //detect if button is pressed
    {
        UART_Write_Text("Button is pressed.");
        UART_Write(13);
        UART_Write(10);
        oldstate = 1;

    }

    if (oldstate && Button(&PORTA, 15, 1, 0)) //detect from logic 1 to 0
    {
        UART_Write_Text("Button is pressed again.");
        UART_Write(13);
        UART_Write(10);
        oldstate = 0;

    }
   }
}

“我只了解了UART的工作方式以及Button庫的工作方式。

我希望在第一次按下按鈕時輸出為“按下按鈕”,然后在再次按下同一按鈕時輸出為“再次按下按鈕”。

代碼的輸出始終為“按下按鈕”並連續打印”

您的代碼的主要問題是以下行:

UART_Write_Text("Button is pressed again.");

實際上應該讀為:

UART_Write_Text("Button is RELEASED.");

除此之外,如果不通過下拉電阻將RA15引腳連接到GND,則可能會遇到硬件問題。 您也可以在PIC上使用內部上拉電阻

問題在這里:

TRISA = 1;

這與TRISA = 0x0001;類似TRISA = 0x0001; 並且只會將端口A0作為輸入。 您必須寫:

TRISA = 0xFFFF;`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM