[应用相关] 这个看着非常复杂的,没怎用过的。

[复制链接]
1320|22
 楼主| kangzj 发表于 2018-11-2 20:47 | 显示全部楼层 |阅读模式
C语言中能用查表方式访问数据么?
#include <reg51.h>   
   
#define uchar unsigned char   
#define uint unsigned int   
   
void delay_ms(uchar ms); // 延时毫秒@12M,ms最大值255   
   
uint state[16] = {0xfffe, 0xfffd, 0xfffb, 0xfff7, //状态表   
                  0xffef, 0xffdf, 0xffbf, 0xff7f,   
                  0x7fff, 0xbfff, 0xdfff, 0xefff,   
                  0xf7ff, 0xfbff, 0xfdff, 0xfeff};   
   
void main()   
{   
    uchar i;   // 循环控制变量,兼有变址作用   
        
    while(1)   
    {   
        for(i = 0; i < 16; i++)   
        {   
            P2 = state[i] / 256;   // 查表将高字节送入P2口   
            P0 = state[i] % 256;   // 查表将低字节送入P0口   
            delay_ms(100);         // 延时100ms   
        }   
    }   
}   
void delay_ms(uchar ms)   
{   
    uchar i;   
    while(ms--)   
        for(i = 0; i < 124; i++);   
}
戈卫东 发表于 2018-11-3 01:30 | 显示全部楼层
你没有说清楚你要做什么
kingkits 发表于 2018-11-3 10:45 | 显示全部楼层
取高低字节有更简单的方法,你这 / 和 %操作是 最笨的
晓伍 发表于 2018-11-6 12:03 | 显示全部楼层
亲 貌似不复杂
小灵通2018 发表于 2018-11-6 14:35 | 显示全部楼层
左移右移不是更好用吗
小灵通2018 发表于 2018-11-6 14:35 | 显示全部楼层
你这用除法看着就不专业,用左移右移指令
gongche 发表于 2018-11-6 16:46 | 显示全部楼层

C中的数组就相当于汇编查表
huwr 发表于 2018-11-6 16:49 | 显示全部楼层
不过注意声明数组的时候用code关键字声明(真对KEIL C51)
huanghuac 发表于 2018-11-6 16:51 | 显示全部楼层
不然会将表格copy到SRAM中的
huanghuac 发表于 2018-11-6 16:54 | 显示全部楼层
那上面那段程序就没有code关键字,什么后果呢??
bqyj 发表于 2018-11-6 16:57 | 显示全部楼层
运行结果都正确,后果是表格copy到SRAM中执行。
wenfen 发表于 2018-11-6 17:01 | 显示全部楼层
以前还没注意到这个问题。。。。。
zhuhuis 发表于 2018-11-6 17:04 | 显示全部楼层
应该问C语言中的数组是不是就是表?
xiaoqizi 发表于 2018-11-6 17:07 | 显示全部楼层
当然可以查表了
木木guainv 发表于 2018-11-6 17:09 | 显示全部楼层
不复杂 可以的
tian111 发表于 2018-11-6 17:17 | 显示全部楼层
一般ram内存是很小的,不太建议直接用表存储大量数据
songqian17 发表于 2018-11-6 17:21 | 显示全部楼层
不建议使用太大的数组   这样会只能占用单片机有限的RAM
chenho 发表于 2018-11-6 17:29 | 显示全部楼层

使用小型数组时  可以提高运算速度
zwll 发表于 2018-11-6 17:31 | 显示全部楼层
顺序表是在计算机内存中以数组的形式保存的线性表。。
chuxh 发表于 2018-11-6 17:34 | 显示全部楼层
顺序表与数组都是数据结构
您需要登录后才可以回帖 登录 | 注册

本版积分规则

672

主题

7007

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部