⑴ 51单片机code存储区是片内的存储区还是扩展的存储区
data bdata idata,这些,肯定都是片内的。
其它部分:codepdata xdata,就要看你买到的单片机芯片,是什么型号。
⑵ 51单片机code的问题(RAM和ROM)+50
1,把段码放在code里,是为了节省RAM。如果放在前256字节内,查表时只要八位地址即可,所以会快些。ROM读取不会慢。单片机执行的每一条指令都是从ROM区读取的。
ROM区的内容是只读的,所以你不能将改变(程序运行中改变)的数组放进去。
2,单片机源程序首先要经过编译,生成机器码,下载到单片机中才可以运行,编译C程序时,从main()开始编译,如果main()程序中用到main()前面的程序,就会编译进去。然后下载到单片机ROM区。也就是烧到ROM区,在单片机运行中用到的变量,会放在RAM区。
3,局部就量或全局就量,都是放在RAM区的,因为RAM区可以读写,这样才可以保存临时数据。for(i=1;i<9;i++)前面肯定会有定义i,如 char i;单片机碰到char i;就会在RAM区分配一个字节,8bit给i用。然后再执行for(i=1;i<9;i++),这时i是可变的,因为执行的是RAM区的i地址内放的数据。
4,你理解的对,补充一下。全局变量一般占用RAM区较高位,如从32H开始,根据编译器不同而不同。且所占用RAM一直占用。局部变量一般临时存放在REGISTER中,执行速度较快。且当子程序执行完毕,资源回收。
上例是那个for循环就是用的局部变量,存放在寄存器中的,子程序执行完毕,寄存器可用作他用。
希望能回答你的问题。
⑶ 51单片机中能不能创建一个链表在code区
一般的51单片机的CODE区是唯读的,所以只能在编译的时候先创建好链表,但有些支持IAP的51则可以动态的创建,不过对CODE区来说,写入速度没有DATA区快,而且有寿命问题。
⑷ 求助51单片机C程序code问题
如果定义在code也就是rom区(硬盘),数组里的个数就跟硬盘的大小有关系,如果说你的ROM足够大,可以存很多个。
至于为什么读到255就回到开始,那么这个取决于你读取数据的方法。可能定义的变量为unsigned char型。那么刚好最大就是255.
⑸ 51单片机code地址范围为
地址范围是8751,89X51,一般是EPROM,EEPROM:4K,0000H~0FFFH。
⑹ C51单片机中code有什么用
你说的是在定义一组数组时,可以作为数据表格时,就用code 语句,意思是这些数据放在程序存储器中。
如下:
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
这就是典型的用法,这是定义一组数据,即为数码管的段码表,因都是常数,就可以放在程序存储区。
如果没有code 就放在数据存储区了,但是,因单片机的内部RAM容量比较小,像这样的常数就不必放在RAM数据区,以节省RAM数据区的使用。
⑺ 对51单片机进行编程时,定义数组前面加code的作用是什么
1、你可以通过外接RAM来扩展,最多可扩展到64KByte,外存使用MOVX指令或者是使用xdata进行强制申明为外部RAM。
2、购买新型的单片机,例如STC的89C51系列的单片机都已经内部扩展了RAM,可以有1KB
⑻ 51单片机code类型 数组式指针
这个要理清楚加不加code的区别。
不加code,变量是存在片内RAM里面,就是通常意义上的变量,是运行时才从RAM里面分配的,可以在代码中修改变量的值。
加code,虽然写法上是变量,实际上是存储在ROM里面的,就是在程序烧写到单片机时已经分配好了,就是固定的常量,不能在代码中对其值进行修改的。
加不加code区分以后就很好解释了,语句4加code,在烧写进去时是必须定好的常量,语句 1 2 3就必须加code,因为不能在烧写程序时的ROM空间的指针指向尚未初始化的RAM内容。语句4不加code,在运行后分配的RAM指针指向不加code的RAM空间也行,指向加code的ROM空间也行。
⑼ 这是51单片机编程语言。这个code是什么作用在C语言中怎么没有
因为单片机RAM很有限,这些数组里的内容是不变的,所以将他们保存到ROM中,CODE关键字的作用就是告诉编译器把这些内容写到ROM中