精华内容
下载资源
问答
  • 常用二分查表法函数

    千次阅读 2018-12-07 13:57:14
    二分查表法查找效率相较于普通查表法,效率较为高效,常用于嵌入式开发中,如温度采集等。 本函数基于网上的案例加以整理并实际多次应用验证无误,现贴源码如下并加以注解: //////////////////////////////////////...

    二分查表法查找效率相较于普通查表法,效率较为高效,常用于嵌入式开发中,如温度采集等。
    本函数基于网上的案例加以整理并实际多次应用验证无误,现贴源码如下并加以注解:

    
    /*
    形参说明:
    float cData:当前输入索引的数据
    float pTab[]:所要索引的表
    unsigned char pTab_len:所要索引的表的长度
    以上数据类型可依据实际表数据和表长度作更改
    返回值:
    返回当前输入索引的数据的位置
    */
    unsigned char Find_Tab(float cData,float pTab[],unsigned char pTab_len)// 
    {
    	unsigned char tab_s=0; //索引表的起始位置
    	unsigned char tab_e; //索引表的结束位置
    	unsigned char tab_c=0; //索引表的当前位置
    	unsigned char k=0;
    
    	tab_e=pTab_len-1;//结束位置为表尾【即正常的下行索引方式】
    	if(pTab[tab_s]<=cData) 如果当前输入的数据大于当前表头
    	{ 
    		return tab_s; //则退出,并取表首位置作为函数返回值
    	}
    	else if(pTab[tab_e]>=cData) 如果当前输入的数据大于当前表尾
    	{
    	    return tab_e;//则退出,并取表尾位置作为函数返回值
    	} 
    	for(;tab_s<tab_e;)
    	{
    		tab_c=(tab_s+tab_e)/2; //取表中间位置为当前位置
    		if(pTab[tab_c]==cData) break;//若输入的索引数据正好等于当前表位置数据,则结束索引
    		if(pTab[tab_c]>cData&&cData>pTab[tab_c+1]) break; //若当前输入的索引数据在当前表位置临近数据区间内,则结束索引
    		if(cData>pTab[tab_c]) tab_e=tab_c;//若输入的索引数据大于当前索引表中位置的数据,则将当前表中的位置赋给表尾
    		else tab_s=tab_c;//反之赋给表首
    		if(k++>pTab_len) break;//若索引次数超过表长度,亦结束索引
    	}
    	if(tab_s>tab_e) return 0;//若表首位置大于表尾位置,则退出
    	return tab_c;//返回当前输入索引的数据的位置
    }
    
    展开全文
  • 单片机查表法总结

    2021-06-05 10:42:24
    //单片机查表法 //第一种:固定值查表 if(input >= 20) { output = 0; } else if(input <= 40) { output = 1; }else { output = 2; } //第二种:读ROM值查表 读取存在ROM中的值,ROM的值可以...

    个人总结的C语言环境下的集中查表的方法。

    void free_test(int input)
    {
    	int output;
        //单片机查表法
        //第一种:固定值查表
    	if(input >= 20)
    	{
    		output = 0;
    	}
    	else if(input <= 40)
    	{
    		output = 1;
    	}else
    	{
    		output = 2;
    	}
    	//第二种:读ROM值查表  读取存在ROM中的值,ROM的值可以被外部函数给改变
    	if(input >= 20)
    	{
    		output = read_ROM_byte(0x30);
    	}
    	else if(input <= 40)
    	{
    		output = read_ROM_byte(0x31);
    	}else
    	{
    		output = read_ROM_byte(0x32);
    	}
    	//第三种:函数查表 分为常函数查表法和变函数查表法  
    
    	//常函数查表法
    	output = input * 20 -5 + cos(input);
    
    	//变函数查表法
    	/*先读取ROM中的值,计算得出函数的表达式,接下来
    	就和常函数查表法一致了,将input代入函数中得到output*/
    }
    

    原创文章,转载请附链接

    展开全文
  • P1 外接 4x4 键盘的反转法扫描 V4 扦测程序无错但 三处警告 2009 11 07 10 53 P1 口外接 4 4 按键 常用的读出键值的方法 查表法 和 反转法 查表法的程序最为简短 但是稍多占用一点存储空间 反转 法的程序执行...

    P1 外接 4x4 键盘的反转法扫描 V4 扦测程序无错但有 三处警告 2009 11 07 10 53 P1 口外接 4 4 按键 常用的读出键值的方法有 查表法 和 反转法 查表法的程序最为简短 但是稍多占用一点存储空间 反转 法的程序执行速度最快 只是要求接口是双向的 下面分别给出了使用查表法和反转法读取键值的程序 include include define uint unsigned int define uchar unsigned char 名称 Key Tab 功能 P1 外接 4 4 按键 按照查表法读出键值 返回 按键值 0 15 如无键按下 返回 16 uchar Key Tab void uchar code K Tab 4 4 0 xee 0 xde 0 xbe 0 x7e 0 xed 0 xdd 0 xbd 0 x7d 0 xeb 0 xdb 0 xbb 0 x7b 0 xe7 0 xd7 0 xb7 0 x77 uchar temp1 0 xfe temp2 i j for i 0 i 4 i 扫描低四位 P1 temp1 输出一行 0 temp2 P1 马上就读入 if temp2 j 4 j 就扫描高四位 if temp2 K Tab i j 查表 return i 4 j 查到了就返回按键的 数值 else temp1 crol temp1 1 return 16 没有查到 返回按键 松开的代码 呵呵 实质性的语句不过 9 行 就是这么简练 名称 KeyRvs 功能 P1 外接 4 4 按键 按照反转法读出键值 输出 按键值 0 15 如无键按下 返回 16 uchar KeyRvs void uchar temH temL key P1 0 xf0 temH P1 低四位先输出 0 读入 高 四位含有按键信息 P1 0 x0f temL P1 然后反转输出 0 读入 低 四位含有按键信息 两次读入的时间间隔 必须尽量的小 以尽量避免按键状 态发生变化 有些人给出的程序 就没有注重这些 有些程序甚至还有 间隔几个毫秒的 要知道 按键是会抖动的 夜长梦多 真不知道读出些什 么 呵呵 做而论道给出的这个程序 读键的准确性最高 switch temH case 0 xe0 key 0 break case 0 xd0 key 1 break case 0 xb0 key 2 break case 0 x70 key 3 break default return 16 按下的不是上述按键 就当 是没有按键 switch temL case 0 x0e return key case 0 x0d return key 4 case 0 x0b return key 8 case 0 x07 return key 12 default return 16 按下的不是上述按键 就当 是没有按键 本程序虽然稍多几行 但是没有循环 还可以提前返回 所以执行的速度最快

    展开阅读全文

    展开全文
  • CRC16是单片机程序中常用的一种校验算法。依据所采用多项式的不同,得到的结果也不相同。...闲言少叙,下面是查表法计算CRC16的代码: /********************************************************...

     

    CRC16是单片机程序中常用的一种校验算法。依据所采用多项式的不同,得到的结果也不相同。常用的多项式有CRC-16/IBM和CRC-16/CCITT等。本文代码采用的多项式为CRC-16/IBM: X16+X15+X2+1。

    闲言少叙,下面是查表法计算CRC16的代码:

    /*******************************************************************************
    *   Copyright (c) 2012 ICPUB.NET. All Rights Reserved.
    *
    *   文件名称: crc16.c
    *   简要描述: CRC16查表算法
    *
    *   当前版本: 1.0
    *   作    者: ICPUB.NET
    *   完成日期: 2012.10.15
    *   说    明: 创建
    *******************************************************************************/
    #include <stdint.h>
    
    
    //
    //  CRC16码表
    //
    
    static uint16_t const CRC16Table[256] = {   
        0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241,
        0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440,
        0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40,
        0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841,
        0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40,
        0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41,
        0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641,
        0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040,
        0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240,
        0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441,
        0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41,
        0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840,
        0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41,
        0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40,
        0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640,
        0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041,
        0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240,
        0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441,
        0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41,
        0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840,
        0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41,
        0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40,
        0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640,
        0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041,
        0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241,
        0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440,
        0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40,
        0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841,
        0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40,
        0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41,
        0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641,
        0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040
    };
    
    /*******************************************************************************
    *   函数名称: CRC16
    *   功能描述: 查表法计算CRC16.
    *   输入参数: dataIn -- 待校验数据
    *             length -- 数据长度
    *   返 回 值: 校验值
    *******************************************************************************/
    uint16_t CRC16(uint8_t* dataIn, int length)
    {  
        uint16_t result  = 0;
        uint16_t tableNo = 0;
    
        for(int i = 0; i < length; i++)
        {
            tableNo = ((result & 0xff) ^ (dataIn[i] & 0xff));
            result  = ((result >> 8) & 0xff) ^ CRC16Table[tableNo];
        }
    
        return result;  
    }

    转载于:https://www.cnblogs.com/lvdongjie/p/4444494.html

    展开全文
  • CRC算法 个人学习笔记 直接法、查表法注意点

    万次阅读 多人点赞 2017-12-09 17:00:09
    1、CRC算法会根据选择生成的检验码的长度,需要设置一个生成多项式,一般会使用国际上几个大厂或者行业内的常用的标准多项式,而且这些标准还有其他选项细微的差别, 比如初始值的设置、是从数据的MSB/LSB开始计算、...
  • import java.util.HashMap; import java.util.Map; public class MapDemo { public static void main(String[] args) { ... * Map在映射关系时,可以优先考虑 ... * 在查表法中的应用较为多见。
  • C# CRC16 查表法

    2014-02-25 10:22:00
    private static ushort[] crctab = new ushort[256]{ 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1...
  • 步进电机S(SigMoid)曲线加减速【查表法

    万次阅读 多人点赞 2019-01-11 14:18:00
     查表法简单来说就是通过曲线公式预先计算出加速过程的各个点,再将该点转化为定时器的比较匹配值,载入数组中,查询数组值即可达到加减速的目的。优点是运算速度快,占用较少的CPU资源,缺点也很明显。 1.占用较...
  • 循环冗余校验码(CRC),简称循环码,是一种常用的、具有检错、纠错能力 的校验码,在通信中运用广泛。 CRC 计算可以靠专用的硬件来实现,但是对于低 成本的微控制器系统,在没有硬件支持下实现 CRC 检验,关键的...
  • crc8查表法校验程序和校验检查软件

    热门讨论 2012-08-03 20:25:07
    CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。 CRC校验可以简单地描述为:例如我们要发送一些数据(信息字段),...
  • 查表法:数组常见的方法 package  db; //查表法,根据下标找元素 //数据一多就要存储起来,所以再定义一个临时数组 public   class  Demo { public   static   void  main(String[]  args ...
  • Git 常用命令速查表

    2018-12-21 16:20:06
    Git 常用命令速查表 Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支 git branch -r 查看远程所有分支 git c...
  • 接收端接收到数据后,对接收的数据使用CRC算法进行计算,计算的结果与附加在数据包结尾的校验值进行对比,如果对比一致,则可以断定接收的数据就是发送端发送的数据,否则,接收到的数据误,丢弃。 帧头(2字节,...
  • Git常用命令速查表

    2018-01-20 16:44:54
    转自文章《Git常用命令速查表(三)》 本文将对Git 命令,做一下全面而系统的简短总结,整理成简洁、明了的图表结构,方便查询 一、 Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前...
  • git常用命令速查表

    2018-09-17 14:12:45
    1、常用的Git命令 命令 简要说明 git add 添加至暂存区 git add–interactive 交互式添加 git apply 应用补丁 git am ...
  • Git 常用命令速查表(三)
  • Git 常用命令速查表

    2016-11-25 10:52:47
    git的各种命令实在是太多了,我们常常记不住,现结合网上的一些文章总结如下: ...1、常用的Git命令 命令 简要说明 git add 添加至暂存区 git add–interactive 交互式添加 ...
  • 常用linux命令速查表

    2020-03-14 11:46:17
    linux终端命令格式 command [-options] [parameter] 说明 : 对应单词 作用 作用 command 命令名 相应功能的英文单词或单词的缩写 [-options] ...常用的的linux命令 序号 命令 对应英文...
  • git 常用命令速查表

    2014-12-09 21:42:28
    一、 Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态  git commit 提交  git branch -a 查看所有的分支 git branch -r 查看远程所有分支 git commit -am "init" 提交并且加注释

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,027
精华内容 2,810
关键字:

常用的查表法有