[英]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.