【发布时间】:2019-07-09 02:48:58
【问题描述】:
“我正在尝试使用按钮,当它被按下时,它会触发通过 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 库的工作原理。
我希望在第一次按下按钮时输出是“按下按钮”,然后当我再次按下同一个按钮时输出是“再次按下按钮”。
代码的输出始终是“按钮被按下”并连续打印”
【问题讨论】:
-
按下按钮时是否停止?可能是按钮的类型。
-
你能提供一个链接到所使用的 Button 和 Uart 库
-
你确定你不是简单地错过了打印“再次”行的(单个)迭代吗?您“再次”在块打印中重置
oldstate。 -
它不会停止。我现在的解决方案是指定哪个端口是输入(RA15)。明天我会试试你的建议。非常感谢