“我正在尝试使用按钮,当它被按下时,它会触发通过UART发送字符串消息,但在运行代码时,它总是检测到按钮”总是被按下“,这是不理想的。我需要帮助修复我的代码。非常感谢。
我使用的是EasyPIC fusion v7。该设备是P32MX795F512L @80 The。我正在使用PIC32的MikroC pro作为我的集成开发环境。“
“按钮和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 is press‘,然后当我再次按下相同的按钮时,输出是’button is pressed‘。
代码的输出总是‘按钮已按下’,并连续打印。“
发布于 2019-07-09 13:26:20
你的代码的主要问题是这一行:
UART_Write_Text("Button is pressed again.");实际上应该是这样的:
UART_Write_Text("Button is RELEASED.");除此之外,如果你没有通过下拉电阻将你的RA15引脚连接到接地端,你可能会有硬件问题。你也可以在你的PIC上使用internal pull-ups。
发布于 2019-07-09 19:02:40
问题出在这里:
TRISA = 1;
这类似于TRISA = 0x0001;,并且只会使端口A0成为输入。你必须这样写:
TRISA = 0xFFFF;`https://stackoverflow.com/questions/56944688
复制相似问题