首页 > 编程知识 正文

8bit和16bit的区别,16bit

时间:2023-05-03 11:55:13 阅读:215932 作者:1399

       大部分的应广单片机只支持8bit数据查表,那16bit的数怎么查表呢?哈哈,拆分成高低直接分别存储就可以了.先做好表格,排好序,并且做了一个线性搜索.搜索到区间值就跳出循环,并记录当前位置.

不多说,上代码:

include    "extern.h"

    /*表格按照由小到大排列*/
void    HByteTable(void)
{
    A += 1;
    _Pcadd
    {
        ret        0x10;
        ret     0x11;
        ret        0x12;
        ret     0x13;
        ret        0x14;
    }
}
/*低8bit*/
void    LByteTable(void)
{
    A += 1;
    _Pcadd
    {
        ret        0x01;
        ret     0x02;
        ret        0x03;
        ret     0x04;
        ret        0x05;
    }
}

byte ucTabNum = 0;
word usTableDat;

/*目标值,可以修改进行测试,看目标位置是否正确*/
word usTarDat=0x1102;
//word usTarDat=0x1304;
//word usTarDat=0x1004;

/*目标位置*/
byte ucTarNum=0;

void    FPPA0 (void)
{
    .ADJUST_IC    SYSCLK=IHRC/8, IHRC=16MHz, VDD=3.3V;

    while (1)
    {

        /*必须在表格范围内进行搜索*/
        while(ucTabNum<5)
        {
             A = ucTabNum;//将数据给累加器A,A的值需要小于表中的个数
            LByteTable();//查表
            usTableDat$0 = A;//将累加器A的值在赋给需要的变量

            A = ucTabNum;
            HByteTable();
            usTableDat$1 = A;

            /*位置更新*/
            ucTabNum++;

            /*搜索数据位置,比较大小,一旦发现标准值大于等于目标值,就锁定目标,返回表格位置区间*/
            if(usTableDat>=usTarDat)
            {
                /*搜索到就跳出循环,当表格大的时候,为了缩短搜索时间,
                有兴趣可以进行二分法查找*/
                break;
            }
        }
        /*返回的目标位置*/
        ucTarNum=ucTabNum;

        nop;
    }
}

/*edit by Q:85547259 zhongvv*/

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。