51单片机程序如何把数组放在程序存储空间

51单片机程序如何把数组放在程序存储空间,第1张

定义的前面加个code就可以了

code unsigned char X[100] = {};

如果是汇编语言,用DB伪指令

DB 00H,01H

楼上已经介绍得很清楚了。

补充一点:如果你的任务切换是在中断服务函数中直接进行的(跳转到中断向量之后,修改SP到指定任务栈并直接切换),那么记得要用 RETI 来进行任务切换,否则这个过程中产生的其它中断请求会丢失。

8051片内有4kB的程序存储单元,其地址为0000H—0FFFH,其中一组特殊是0000H—0002H单元,系统复位后,PC为0000H,单片机从0000H单元开始执行程序 ,另一组特殊单元是0003H—002AH,这40个单元各有用途,它们被均匀地分为五段,它们的定义如下:

0003H—000AH 外部中断0中断地址区。

000BH—0012H 定时/计数器0中断地址区。

0013H—001AH 外部中断1中断地址区。

001BH—0022H 定时/计数器1中断地址区。

0023H—002AH 串行中断地址区。

可见以上的40个单元是专门用于存放中断处理程序的地址单元

二、数据存储器

MCS-51内部RAM有128或256个字节的用户数据存储(不同的型号有分别),它们是用于存放执行的中间结果和过程数据的。MCS-51的数据存储器均可读写,部分单元还可以位寻址。

1、 8051内部RAM共有256个单元,这256个单元共分为两部分。其一是地址从00H—7FH单元(共128个字节)为用户数据RAM。从80H—FFH地址单元(也是128个字节)为特殊寄存器(SFR)单元。从图1中可清楚地看出它们的结构分布。

在00H—1FH共32个单元中被均匀地分为四块,每块包含八个8位寄存器,均以R0—R7来命名,我们常称这些寄存器为通用寄存器。

内部RAM的20H—2FH单元为位寻址区,既可作为一般单元用字节寻址,也可对它们的位进行寻址。位寻址区共有16个字节,128个位,位地址为00H—7FH。。

程序存储器用来存放编制好的始终保留的固定程序和表格常数;数据存储器用以存放数据或中间运行结果。

8051单片机内部设置有256字节的RAM,其中有128字节的内部RAM数据存储器和128字节的专用(特殊功能)寄存器。128字节的内部RAM数据存储器可分为三个部分:通用工作寄存器区、位寻址区、用户数据缓冲区。128字节专用寄存器寻址空间离散地分布着19个特殊功能寄存器。

先看你用的什么单片机,现在流行的单片机如C8051F等都有Flash存储器,可掉电保存数据,这样就不需要外扩存储器。经典的MCS-51很古老,没有Flash,所以一般单片机教材上的都没讲怎样保存数据。具体有没有Flash可以查看单片机的数据手册。

往单片机的Flash里存数据一般有特殊的编程步骤,各种单片机都不一样,也要查看数据手册。

单片机没有Flash的话,就需要扩展存储器了。EPROM是紫外线擦除的,不能用。EEPROM是电擦除的。看你需要多大空间、什么接口,再去查型号,AT24C01,AT29C020等。下面的网址可以参考:

>

以上就是关于51单片机程序如何把数组放在程序存储空间全部的内容,包括:51单片机程序如何把数组放在程序存储空间、跪求51单片机的栈帧格式,在压栈时保存程序断点到底是栈区中的哪两个字节、MCS-51单片机内部程序存储器是如何分配的哪些地址用于保留区有何作用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存