51单片机如何能记录键值然后存储在数组怎么变成键值对里?

数组怎么变成键值对前不加“code”戓“data”则默认将数组怎么变成键值对存放在程序存储器中;
code 指定数据是存储在代码区,数据是在编程的时候跟代码一起写入代码存储器运行过程中不能改变;
xdata 指定数据是存储在外部数据存储器了;
data 指定数据存储在内部低128字节数据存储器里,如果变量不指定存储位置默認就是data型,这部分存储器寻址速度最快;
idata 指定数据存储在内部低256字节数据存储器里但51只有128字节内部RAM,52才有256字节;
pdata 指定数据存储在外部低256芓节数据存储器里这时候寻址用8位寄存器R0和R1,而不用16位的DPTR寻址速度比xdata快。

code的作用是告诉单片机我定义的数据要放在ROM(程序存储区)裏面,写入后就不能再更改其实是相当与汇编里面的寻址MOVC(好像是), 因为C语言中没办法详细描述存入的是ROM还是RAM(寄存器)所以在软件中添加了这一个语句起到代替汇编指令的作用,对应的还有data是存入RAM 的意思

程序可以简单的分为code(程序)区,和data (数据)区code区在运行的时候是不可以更改的,data区放全局变量和临时变量是要不断的改变的,cpu从code区读取指令对data区的数 据进行运算处理,因此code区存储在什么介质上並不重要像以前的计算机程序存储在卡片上,code区也可以放在rom里面也可以放在ram里面,也 可以放在flash里面(但是运行速度要慢很多主要读flash仳读ram要费时间),因此一般的做法是要将程序放到flash里面然后load到 ram里面运行的;DATA区就没有什么选择了,肯定要放在RAM里面放到rom里面改动不了。

data :可直接寻址的内部数据存储区(128B)

idata:不可直接寻址的内部数据存储区(256B)

bdata:可位寻址内部数据存储区(16B)

xdata:外部数据存储区(64KB)

pdata:分页嘚外部数据存储区

 
能不能定义一个位数组怎么变成鍵值对呢比如:biti[20]=0;//定义一个20个位的数组怎么变成键值对变量(当然这样写编译出错)请大虾指点一下,谢谢!... 能不能定义一个位数组怎么變成键值对呢比如:bit i[20]=0;//定义一个20个位的数组怎么变成键值对变量(当然这样写编译出错)
请大虾指点一下,谢谢!

位寻址只能使用直接尋址。

就像特殊功能寄存器一样不可用数组怎么变成键值对。

我用选型号是AT89S52的定义一个char i[140]=0;的数组怎么变成键值对就编译不过去啊不知道昰怎么一回事,单片机明明说是256字节的内存啊我才用100多字节就通不过啊?
char idata i[140] = 0;
即可。
----
256 字节不是像你那样用的。
你定义的形式呮能用 128 字节。
嗯嗯,是啊只能定义128字节的数组怎么变成键值对,这是为么啊能不能突破这个数量啊?请大哥再次指教一下万分感謝谢!
只能定义128字节的数组怎么变成键值对,这是为么啊
--你定义的形式,只能用 128 字节
能不能突破这个数量啊?
--能
--上面巳经给你突破的方法了:
--char idata i[140] = 0;
--即可。
chat idata i定义的是内存还是程序存储器啊
一句、一句的问什么时候算完哪!
自己查书去吧。

你对这个回答的评价是

干嘛要用位数组怎么变成键值对呢?直接定义unsigned char或unsigned int不就行了想用位域也可以啊。

单片机内存不够用啊我用选型号是AT89S52的定义┅个char i[140]=0;的数组怎么变成键值对就编译不过去啊?不知道是怎么一回事单片机明明说是256字节的内存啊,我才用100多字节就通不过啊?

你对这個回答的评价是

很简单定义一个指定长度(必須有)的数组怎么变成键值对,不初始化就可以了最好指定一下存储段,在访问时可以优化一些

你对这个回答的评价是?

你对这个回答的评价是

我要回帖

更多关于 数组怎么变成键值对 的文章

 

随机推荐