單片機按位接收數據的處理辦法

從GIS軟件工程轉到嵌入式開發有一年了,總結嵌入式開發的一些小技巧。

本例模擬發送8位數據,其它位數視情況調整,本程序在VS2008下調試通過。

#include <stdio.h>
#include <stdlib.h>

typedef unsigned char byte;

int i = 0;            // 傳入的位數
byte value = 0;       // 接收uart數據

/*
*@brief 模擬bit型數據,
*/
typedef struct BIT_st
{
    byte data:1;
}bit;

/*
*@brief 
*
*移植入單片機時可將參數改爲串口數據寄存器變量
*@param bit bit_data -- 按位發送的數據
*@retval byte -- 返回接受的數據
*/
byte receive_bit(bit bit_data)
{
    /* 接受8位數據 */
    if (i==8)
    {
        i=0;
        return value;
    }

    /* 按位接收數據主代碼 */
    if (bit_data.data)
    {
      value |= (1<<i);
    }
    else
    {
      value &= ~(1<<i);
    }

    i++;
    return value;
}

int main()
{
    int j = 0;
    bit uart_data[8] = {1,0,1,0,1,0,1,0};    // uart_data = 85;
    byte ret = 0;

    for (j=0; j<8; j++)
    {
        ret = receive_bit(uart_data[j]);
    }

    printf("%d\n", ret);
    return 0;
}

搞了幾年的技術,剛有寫博客的覺悟,不足之處還請指教。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章