本篇目录:
- 1、80c51+单片机的RAM+分为几部分?各有什么特点和功能?|
- 2、关于c51存储类型和其数据长度,有点不懂,求指点
- 3、C51编译器支持的存储器类型有哪些?
- 4、c51单片机怎样存储大量数据
- 5、c51中怎么样实现储存时间和回放时间
- 6、c51查表操作使用的数组存放在
80c51+单片机的RAM+分为几部分?各有什么特点和功能?|
C51内RAM可以分成三个物理空间:工作寄存器区、位寻址区和数据缓冲区。1)工作寄存器区:00H~1FH共32字节。
内部数据存储器RAM 物理上分为两大区:00H ~ 7FH即128B内RAM 和 SFR区。数据存储器空间(低128单元);特殊功能寄存器空间(高128单元);这两个空间是相连的,从用户角度而言,低128单元才是真正的数据存储器。
位寻址就是对每一位寻址,一个字节可以有8位,位地址可以从0-7F,一共是16个字节30-7FH有80个字节单元,可以采用字节字节寻址的方法访问堆栈区及堆栈指示区 堆栈是在片内RAM中数据先进后出的一个存储区域。
有两部份!!一是数据存储器,二是特殊寄存器 8051片内数据存储器除RAM(00-7fh)之外,还有特殊功能寄存其SFR(80H-FFH),两者合起来共有256字节,但是能够真正用来当数据寄存器的只有128字节,也就是RAM。
关于c51存储类型和其数据长度,有点不懂,求指点
1、float固定32位长度,即四个字节 double ,固定64位长度,即8个字节,但是在C51里,是32位,因为C51是把double转换成float来编译的。另外还有union和struct,长度是不固定的。
2、简化数据类型:C51函数中的数据类型较为简化,主要包括整数类型(int)、字符类型(char)、浮点类型(float)等。
3、data xdata bdata pdata sfr code等,可能不全面有遗漏 对应的物理存储器是:bit,即位数据:数据存储器位寻址区,即20h~2fh的范围,共16个字节,16*8=128个位,位地址00h~7fh,连续的。
4、不同型号的数据存储空间不同。基本型号一般有128或256字节,某些扩展型号片内具有51761024乃至更多的SRAM。另外通过片外扩展,51单片机可以实现64kB乃至理论上无穷大的外部数据访问空间。
5、是三个字节,第一个字节表示存储器类型,第二,三个字节是指向数据地址的高字节和低字节。
C51编译器支持的存储器类型有哪些?
1、外部数据存储区,xdata 类型。 程序存储区,code 类型。
2、在C51里扩展了bit类型,1个位的长度 长度,只取决与以上类型,与data,idata,bdata,xdata,pdata没有关系,所以,你上面的表格是错误的。而那些data,idata,bdata,xdata,pdata等等,是变量或者常量的存储空间。
3、与MOV @Ri 对应 pdata 分页寻址片外数据区的256字节,与MOVX @Ri 对应,P2不变 xdata 片外数据区的全空间,64KB code 全部程序存储空间,64KB 绝对定位关键字_at_ ,指针,库函数的绝对定位宏。
4、本例说明,C51编译器允许采用所谓的存储器混合模式,即允许在一个程序中将一些函数使用一种存储模式,而其它一些则按另一种存储器模式,采用存储器混合模式编程,可以充分利用8051系列单片机中有限的存储器空间,同时还可以加快程序的执行速度。
5、默认变量在外部分页的256字节RAM中,即pdata\x0d\x0alarge:默认变量在外部64KRAM中,即xdata\x0d\x0a 如果,char Xdata i这样显式地规定了变量的存放区,则以定义为准。不受存储模式影响。
c51单片机怎样存储大量数据
现在流行的c51单片机如c51等都有Flash存储器,可掉电保存数据,这样就不需要外扩存储器。经典的MCS-51很古老,没有Flash,所以一般单片机教材上的都没讲怎样保存数据。具体有没有Flash可以查看单片机的数据手册。
还有一种方法是存在外置的eeprom里面,这种芯片保存数据比较安全可靠,容量也大,但是价格比较贵,一般是用SPI通讯来实现的!纯手打,望采纳!楼主还有什么不明白的可以追问。
可以用定时器控制,同时每50ms就将数据保存一次。在主程序的开始再将数据读取出来就可以了,51单片机内部没有EEPROM,所以不能够实现该功能,可以用52。或者是用外部芯片,用24c02,也可以实现这个功能。
c51中怎么样实现储存时间和回放时间
1、用定时器,设置定时时间为20毫秒,50次累加=1秒,累加秒数据60次=1分,依次类推。
2、通过修改基本延时函数和适当的组合调用,上述方法可以实现不同时间的延时。 \x0d\x0a\x0d\x0a2 在C51中嵌套汇编程序段实现延时 \x0d\x0a\x0d\x0a 在C51中通过预处理指令#pragma asm和#pragma endasm可以嵌套汇编语言语句。
3、其三:对于要求精确延时时间更长,这时就要采用循环嵌套的方法来实现,因此,循环嵌套的方法常用于达到ms级的延时。对于循环语句同样可以采用for,do…while,while结构来完成,每个循环体内的变量仍然采用无符号字符变量。
4、先打开我们熟悉的单片机c51编程软件——keil,先把主方法写好。然后,我们要定义两个变量。接着,设定好定时器的工作方式。设置中断发生的机制。最后,我们要加进这几行代码进行初值的重装。
5、本程序中假设使用频率为12 MHz的晶振。最长的延时时间可达216=65 536 μs。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。
6、建议你去下载个《单片机小精灵》小软件里面有计算器可以直接计算出你要的时间并生成C代码或汇编代码。
c51查表操作使用的数组存放在
1、如果是定义在全局下的全局变量,这个数组就在数据段里。始终有效。如果定义在函数下的局部变量,这个数组就在函数调用栈里。
2、数组是可以存在FLASH中的,但是这样并不可行,8051单片机主要是片内没有EEPROM,一般在FLASH中存储一些掉点不丢的东西,如果存数组的话,首先得写一个读写FLASH的函数专门去存放它,这样本身就比较小的RAM,更加不够用了。
3、,把段码放在code里,是为了节省RAM。如果放在前256字节内,查表时只要八位地址即可,所以会快些。ROM读取不会慢。单片机执行的每一条指令都是从ROM区读取的。
4、在C51中,CODE表示把数据存储到代码区。是定义只读数据的一种方法。这样,数据就只可读取,不能修改了。
5、code 为关键字,表示asbp[]数组是存在在ROM空间中,是不可改变的(只读),主程序或函数可以读取里面的值但不能写。这是用于存放一些常量数据、字表一类所使用的。
到此,以上就是小编对于c51的储存类型的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位老师在评论区讨论,给我留言。