user_RFID.c 1.59 KB
/*
*********************************************************************************************************
*
*    模块名称 : RFID读写头处理模块
*    文件名称 : user_RFID.c
*    版    本 : V2.0
*    说    明 : 实现printf和scanf函数重定向到串口1,即支持printf信息到USART1
*
*    修改记录 :
*    	版本号  日期       作者    说明
*
*    Copyright (C), 2016-2017, 湖南驰众机器人 www.cizon.com.cn
*
*********************************************************************************************************
*/
#include "bsp.h"

unsigned long GetBitFromByte(unsigned char bit_len,unsigned char byte_buf[],unsigned short *byte_offset,unsigned short *bit_offset)
{
    unsigned short byteOffset,bitOffset;
    unsigned long  data,tempdata;

    byteOffset = *byte_offset;
    bitOffset  = *bit_offset;
    
    data = 0;

    if((bit_len > 32) || (bitOffset == 0) || (bitOffset > 8))
        return 0;
    
    while(bit_len > 0)
    {
        if(bit_len <= bitOffset)
        {
            tempdata  = (byte_buf[byteOffset] >> (bitOffset - bit_len));
            tempdata &= ((0x01 << bit_len) - 1);
            bitOffset -= bit_len;
            data += tempdata;
            bit_len = 0;
        }
        else
        {
            tempdata = byte_buf[byteOffset] & ((0x01 << bitOffset) - 1);
            tempdata <<= (bit_len - bitOffset);
            bit_len -= bitOffset;
            byteOffset++;
            bitOffset = 8;
            data += tempdata;
        }
    }

    if(bitOffset == 0)
    {
        byteOffset++;
        bitOffset = 8;
    }
    *byte_offset = byteOffset;
    *bit_offset  = bitOffset;
    return data;
}