单片机unsigned char code table[]是啥作用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机unsigned char code table[]是啥作用?相关的知识,希望对你有一定的参考价值。

如:uchar code table[]0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;
之后我要怎么调用第1个 或者第2第3个?

code的作用是告诉单片机,定义的数据要放在ROM(程序存储区)里面。

单片机code作用其实是相当于汇编里面的寻址MOVX,因为C语言中没办法详细描述存入的是ROM还是RAM(寄存器),所以在软件中添加了这一个语句起到代替汇编指令的作用,对应的还有data是存入RAM的意思。

锁存器就是把当前的状态锁存起来,使CPU送出的数据在接口电路的输出端保持一段时间锁存后状态不再发生变化,直到解除锁定。74hc573就是锁存器,锁存引脚高电平表示直通状态,为低电平表示锁存状态,可以通过控制锁存已经,控制74hc573后端数据。

扩展资料:

单片机函数是一个自我包含的完成一定相关功能的执行代码段。通常C语言的编译器会自带标准的函数库,这些都是一些常用的函数。标准函数已由编译器软件商编写定义,使用者直接调用就可以。

但是标准的函数不足以满足使用者的特殊要求,因此C语言允许使用者根据需要编写特定功能的函数,要调用必须要先对其进行定义。

参考技术A 你这是数码管显示吧,显示1-f一共16个字符数吧。首先unsigned char code table[]的意思是定义了一个无符号的字符数组放在code这个程序存储器即单片机rom里面。放在code的好出是节省单片机的ram。
然后你要依次显示出来这16个数字,你就从数组里面取这16个数字,定义一个num,用for循环叫,num<16,num++,然后就能显示了,比如说你用P0这个单片机的i/o口,那么就叫P0=temp[num]就可以了,num一直++就一直往下取值了,让后就能依次显示出来,不过要有延时函数,不然取值太快变得太快看不清呢,。而且上面说的这个for循环取值显示也要放在1个while(1)死循环里面里面才能不断循环显示,不然执行完一次循环显示后就完啦。 略略略略略,我是宇宙最帅
参考技术B   code的作用是告诉单片机,定义的数据要放在ROM(程序存储区)里面,其实是相当于汇编里面的寻址MOVX,因为C语言中没办法详细描述存入的是ROM还是RAM(寄存器),所以在软件中添加了这一个语句起到代替汇编指令的作用,对应的还有data是存入RAM的意思。 参考技术C 这就是无符号字符型表,存储在程序存储器(rom)中,不占用随机存储器(ram),这样用是因为令一些不用修改的常值不占用宝贵的ram。若将第一个值赋给i,就写i=table[0];,和普通的表的用法是一样的。本回答被提问者和网友采纳 参考技术D 定义一个uchar型的数组,用第一个就是table[0],第2个就是table[1],以此类推。

ARDUINO 中将一个unsigned char 的数组的数据转化为一个long 型的数

如将unsigned char code[]=2,3,3,'.',1,2,3,4,6,5
转为数223.123465
这是一个ARDUINO单片机方面的问题

用ARDUINO处理GPS数据遇到的问题
应该是数233.123465

如果unsigned char code[]=2,3,3,'.',1,2,3,4,6,5是unsigned char code[]='2','3','3','.','1','2','3','4','6','5';,那就很简单,如下——
#include "stdio.h"//
int main(void)
unsigned char code[]='2','3','3','.','1','2','3','4','6','5';
double x;
sscanf((char *)code,"%lf",&x);//转换
printf("%f\n",x);//打出来看看
return 0;

如果unsigned char code[]=2,3,3,'.',1,2,3,4,6,5中的数字不是字符,则——
#include "stdio.h"//
int main(void)
unsigned char code[]='2','3','3','.','1','2','3','4','6','5';
double x;
int i;//////////////////////////加上这4行调整一下
for(i=0;i<10;i++)
if(code[i]>=0 && code[i]<10)
code[i]+='0';//////
sscanf((char *)code,"%lf",&x);//转换
printf("%f\n",x);//打出来看看
return 0;

以上思路供参考。追问

好像不行啊

追答

用第二个代码的话,其中的unsigned char code[]='2','3','3','.','1','2','3','4','6','5';就应该是unsigned char code[]=2,3,3,'.',1,2,3,4,6,5;,我当时没有改过来。看我这里的执行结果——

追问

我是用ARDUINO 单片机来执行的,好像不行

参考技术A 可以帮你写

以上是关于单片机unsigned char code table[]是啥作用?的主要内容,如果未能解决你的问题,请参考以下文章

ARDUINO 中将一个unsigned char 的数组的数据转化为一个long 型的数

如何获取一个unsigned char*类型的字符串长度

什么是unsigned char;;?

unsigned char 与 char 有啥却别?何时适用

java jni 调用 c 代码, c 中 unsigned char* 数据 如何传给java?

关于unsigned char 型数据转换成十进制或者16进制的问题