【问题标题】:uart received data decoding in pic microcontrolleruart在pic微控制器中接收数据解码
【发布时间】:2020-05-17 09:06:53
【问题描述】:

我正在将 HMI TFT 屏幕与 PIC 16F877A 连接,该屏幕具有发送和接收数据的协议。我想解码接收到的数据以读取所需的信息,而不需要任何额外的值。我曾考虑通过制作一个数组并将数据保存在其中来保存接收到的数据,并获取我想要读取的所需字节。
这是TFT的协议,下面是设计的代码。
AA 78 00 01 0F CC 33 C3 3C(我只想看(0F)的部分)

int uart_rd;  //UART read variable
typedef unsigned char INT8U;
typedef unsigned long INT32U;

void Read_Bytes(INT8U *str, INT32U Num) {
    INT32U i;
    for (i = 0; i < Num; i++) {
        str[i++] = UART1_Read();
    }
}

void main() {
UART1_Init(115200);  //Uart baud at 115200
    while (1) {          // Endless loop

        if (UART1_Data_Ready() == 1) {
            Read_Bytes(str_read, 9);
            uart_rd = str_read[3];

            if (uart_rd == 0x0F) {
                PORTB.B2 = 1;
            }
            else {
                PORTB.B2 = 0;
            }
        }
    }
}

【问题讨论】:

    标签: arrays byte decode pic uart


    【解决方案1】:

    问题没有解决。但我假设您需要知道为什么没有检测到 0x0F。 根据您的代码 AA 78 00 01 0F CC 33 C3 3C,当 AA 索引为 0 时,0x0F 位于左数第 4 位。

    所以,uart_rd = str_read[4]; 代表 0x0F。

    在您的 Read_Bytes 函数中,您开始从 str[1] 保存数据,因为当 i = 0 时,str[i++] 将在开始时为 str[1]。

    因此,uart_rd = str_read[5]; 为 0x0F

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-10
      • 2017-06-15
      • 2018-12-31
      • 1970-01-01
      相关资源
      最近更新 更多