打印

C语言中能用查表方式访问数据么?

[复制链接]
1375|40
手机看帖
扫描二维码
随时随地手机跟帖
沙发
jiajs| | 2017-9-26 17:44 | 只看该作者

查表方式在汇编里面叫得多

使用特权

评论回复
板凳
feelhyq| | 2017-9-26 17:44 | 只看该作者

使用特权

评论回复
地板
dengdc| | 2017-9-26 17:45 | 只看该作者
查表方式双IO口流水灯(C51)
#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++);   
}

使用特权

评论回复
5
zhenykun| | 2017-9-26 17:47 | 只看该作者
C中的数组就相当于汇编查表,不过注意声明数组的时候用code关键字声明(真对KEIL C51),不然会将表格copy到SRAM中的。

使用特权

评论回复
6
dengdc| | 2017-9-26 17:49 | 只看该作者

那上面那段程序就没有code关键字,什么后果呢

使用特权

评论回复
7
jlyuan| | 2017-9-26 17:50 | 只看该作者

后果就是多浪费32字节RAM

使用特权

评论回复
8
yszong| | 2017-9-26 17:52 | 只看该作者

后果是表格copy到SRAM中执行。
运行结果都正确。

使用特权

评论回复
9
dengdc| | 2017-9-26 17:54 | 只看该作者

用到给定值的数组,使用CODE放到ROM里面,51的内部RAM小,很容易会不够用的

使用特权

评论回复
10
dirtwillfly| | 2017-9-26 20:17 | 只看该作者
可以的。当计算量比较大的时候,用查表法执行速度更高

使用特权

评论回复
11
jlyuan| | 2017-9-26 22:12 | 只看该作者

以前还没注意到这个问题

使用特权

评论回复
12
heweibig|  楼主 | 2017-9-26 22:13 | 只看该作者

看来我想的太简单了

使用特权

评论回复
13
jiahy| | 2017-9-26 22:15 | 只看该作者

节约还是比较不错的,
大手大脚惯了不好。

使用特权

评论回复
14
jiaxw| | 2017-9-26 22:17 | 只看该作者
应该叫查询方式

使用特权

评论回复
15
heweibig|  楼主 | 2017-9-26 22:18 | 只看该作者
嗯,我再好好缕一缕吧,有了好消息及时通知大家,结贴喽

使用特权

评论回复
16
vibra2016| | 2017-9-27 19:09 | 只看该作者
这个采用循环设计的模式就可以的

使用特权

评论回复
17
chuntian2016| | 2017-9-27 20:21 | 只看该作者
这个是可以的,就看怎么进行逻辑上的处理的

使用特权

评论回复
18
baimiaocun2015| | 2017-9-27 21:00 | 只看该作者
只要逻辑上能实现的,就可以进行的哈

使用特权

评论回复
19
cehuafan| | 2017-9-27 21:29 | 只看该作者
查表不就是数据吗?

使用特权

评论回复
20
cehuafan| | 2017-9-27 21:33 | 只看该作者
正常都是多维的数据保存数据格式。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

869

主题

13089

帖子

7

粉丝