单片机C语言关于查表的提问,新人

单片机C语言关于查表的提问,新人,第1张

for(i=0;i<8;i++),这是一个循环语句,循环中变量i是变化的,从初始值i=0开始,每次都加1,由i++决定的,而末值是i=7,由条件i<8决定的。循环过程中,每次循环执行一次{ }内的语句。

for(i=0;i<8;i++)跟for( i=0;i<10000;i++);都是循环语句,只是循环的次数不同,即结束值是不同的。而for( i=0;i<10000;i++);的下而没有{ }语句了,那就只是循环而已了,就是为了延时的,没有实质性的什么 *** 作。

估计楼主想查“大表”吧,你可以把大表分割为每个不大于255个字节的小表,然后依据条件查某个小表:const

unsigned

char

Tab0[200]

={

赋值语句};const

unsigned

char

Tab1[200]

={

赋值语句};const

unsigned

char

Tab2[200]

={

赋值语句};unsigned

char

GetData(unsigned

int

Index){

switch

(Index

>>8)

{

case

0:

return

Tab0[(unsighed

char)Index];

case

1:

return

Tab1[(unsighed

char)Index];

}

return

Tab2[(unsighed

char)Index];}数组元素如果是其它数据结构,如

int

long

等,可依此类推,但必须保证每个数组的最大尺寸不超过

255,这是由

PIC

单片机特殊的查表方式决定的。

先说第一个问题:

比如用查表法将结果保存到变量i中,查表变量为x,则i = table[x],记住C语言里面数组是从0开始的,比如说上面的0x01就是table[0],0x02是table[1],以此类推。

再说第二个问题:

比如说从P10口发送出去,则可以写为

sbit OUT = P1^0;//定义OUT为P10口,这样今后好写程序

char i;

for(i = 0;i < 8;i++)

{

OUT = data & 0x80;//因为高位在前,将它写成二进制就明白了

data <<= 1;

}

上面的程序就能搞定了;

应该是所有的单片机都有CY位(不知道浮点DSP有没有);

C语言中左移和右移之后低位或高位自动补零,CY位也保持为零(视编译器而定,这个得看编译器手册),有些编译器提供了循环移位的函数;

还有什么不明白的补充问题就是

以上就是关于单片机C语言关于查表的提问,新人全部的内容,包括:单片机C语言关于查表的提问,新人、C语言查表 在表中实现跳转 有没办法实现、单片机中用C语言查表和移位问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9832787.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存