当前位置:首页 > 单片机 > 单片机
[导读]1.RAM keil C语言编程RAM是程序运行中存放随机变量的数据空间。在keil中编写程序,如果当前模式为small模式,如果总的变量大小未超过128B,则未初始化的变量的初值默认为0.如果所有的变量超过单片机small模式下的128

1.RAM keil C语言编程

RAM是程序运行中存放随机变量的数据空间。在keil中编写程序,如果当前模式为small模式,如果总的变量大小未超过128B,则未初始化的变量的初值默认为0.如果所有的变量超过单片机small模式下的128B大小,则必须对变量进行初始化,否则超过RAM大小变量的值是不确定的,在small模式下超过128B大小的变量也必须在编译器中重新设定存储器的存储模式。

在keil中,可选择small,compact,large三种方式存储数据变量:

在keil中可以用“TargetOptions”来配置这一项:

图1 选择数据存储模式

2.片内数据存储区

(1) 工作寄存器区

工作寄存器区位于片内数据存储器中的00H~1FH单元,共32字节( 如此说来每个单元是一个字节了 ),分成四组。每组8个字节,分别记为R0~R7.

程序默认在0区工作寄存器组存放中间运算数据。等待中断来时,中断数据工作寄存器组由0区切换到其它区域。

选择四组工作寄存器区的哪一组作为R0~R7由位于PSW寄存器的两位RS1,RS0来确定.

RS1,RS0称为区开关或组开关,两位就可决定四种状态.

(2)位寻址区

用户存储区位于片内数据存储器中的020H~02FH单元,共16个字节,共128位,每个字节单元的位都有一个单独的地址,分别为00H-07H,如020H.1表示020H单元的bit[1]位。020H~02FH单元可作为位寻址区。这个范围内的存储单元最大的用处就是能进行位操作,在C语言中,只能用位操作运算符(&、|、^、~、<<、>>)来对字节数据进行位操作运算。如果用汇编指令就可以直接对此片存储单片进行位操作。

如 SETB, 020H.1 就将020H的bit[1]置为了1.

除了RAM此片能进行位寻址的用户存储区以外,还有一些特殊的功能寄存器( SFR )也能进行位寻址。

(3)数据缓冲区

51系列数据缓冲区地址为30H-7FH,共80字节。只能字节寻址,不能位寻址。由于工作寄存器和位寻址区,数据缓冲区是统一编址的,所以这三者都可以用作数据缓冲区。

(4)堆栈

栈:由系统自动分配释放,存局部值。

堆:一般由程序员分配和释放。

堆栈指针SP:8位寄存器,堆栈最大可达128单元,只可在片内RAM中进行堆栈操作。

堆栈作用:用来保存地址、数据信息、具有先进后出特性,也是一种能存放二进制数据的空间。

MC51堆栈采用满顶法向上生成的软件堆栈。

软件堆栈:借助SP进行控制操作。

堆栈向上生长:新压栈的数据成为堆栈顶。

堆栈向下生长:新压入的数据远离堆栈顶。

地址大小还得看存储方式。

(5)专用寄存器区

专用寄存器区,也称特殊功能寄存器区 SFR

SPECIAL FUNCTIONREGISTER

寻址地址离散地分布在80H~FFH,共128字节的空间.而实际有用的只有21个字节,即在这一空间里只有18个专用功能寄存器,其中有3个专用功能寄存器占用了两个字节.SFR主要用于片内硬件的管理,通常只能以字节为单位借助于MOV指令直接寻址,但也有一些专用功能寄存器可以位寻址。

包含程序状态字PSW、数据指针寄存器DPTR、端口地址P0-P0、其它专用寄存器(累加器A、B)

3.片外数据存储

片外RAM区:可寻空间为共64K 0000H~FFFFH,

总是使用MOVX类指令寻址

借助于工作寄存器R0或R1间接寻址时,可寻256字节

从片外RAM区取数据: MOVX A,@Ri i=0-1

向片外RAM区存数据: MOVX @Ri,A

借助16位的数据指针DPTR间接寻址,可寻64K字节:

从片外RAM区取数据: MOVX A,@DPTR

向片外RAM区存数据: MOVX @DPTR,A

<此段摘抄,防后会使用>

区分是访问内部存储器还是外部存储器地址靠指令来区分。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭