首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按钮激活的UART消息

按钮激活的UART消息
EN

Stack Overflow用户
提问于 2019-07-09 10:48:59
回答 2查看 249关注 0票数 0

“我正在尝试使用按钮,当它被按下时,它会触发通过UART发送字符串消息,但在运行代码时,它总是检测到按钮”总是被按下“,这是不理想的。我需要帮助修复我的代码。非常感谢。

我使用的是EasyPIC fusion v7。该设备是P32MX795F512L @80 The。我正在使用PIC32的MikroC pro作为我的集成开发环境。“

“按钮和UART库用于此代码。”

代码语言:javascript
复制
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‘。

代码的输出总是‘按钮已按下’,并连续打印。“

EN

回答 2

Stack Overflow用户

发布于 2019-07-09 13:26:20

你的代码的主要问题是这一行:

代码语言:javascript
复制
UART_Write_Text("Button is pressed again.");

实际上应该是这样的:

代码语言:javascript
复制
UART_Write_Text("Button is RELEASED.");

除此之外,如果你没有通过下拉电阻将你的RA15引脚连接到接地端,你可能会有硬件问题。你也可以在你的PIC上使用internal pull-ups

票数 0
EN

Stack Overflow用户

发布于 2019-07-09 19:02:40

问题出在这里:

TRISA = 1;

这类似于TRISA = 0x0001;,并且只会使端口A0成为输入。你必须这样写:

代码语言:javascript
复制
TRISA = 0xFFFF;`
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56944688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档