今天继续51单片机的启动代码里有那些东西。

51预先列出单片机启动代码的第二部分原文。

原文

; ————-请参见

; h再现堆栈初始化

; thefollowingequstatementsdefinethestackpointerforreentrant

; 功能和初始化it :

; hstackspaceforreentrantfunctionsinthesmallmodel。

; qibpstack :启用模块中继堆栈

; istackspaceforreentrantfunctionsinthesmallmodel。

IBPSTACK EQU 0; set to1if小型再现is用户使用。

; oibpstacktop : Endaddressofsmallmodelstack0x0-0x ff

; isetthetopofthestacktothehighestlocation。

IBPSTACKTOP EQU0xFF 1; 默认值0f FH 1

; /h

; hstackspaceforreentrantfunctionsinthelargemodel。

; qbpstack :启用程序模型中继堆栈

; istackspaceforreentrantfunctionsinthelargemodel。

XB堆栈第0区; 设置为1 if大规模再现is用户。

; oxbpstacktop : Endaddressoflargemodelstack0x0-0x ffff

; isetthetopofthestacktothehighestlocation。

XBPSTACKTOP EQU0xFFFF 1; 默认0 FFFFH 1

; /h

; hstackspaceforreentrantfunctionsinthecompactmodel。

; qpb堆栈:启用压缩模型中继堆栈

; istackspaceforreentrantfunctionsinthecompactmodel。

pbp堆栈第0区; set to1if紧凑型再现is用户使用。

; opbpstacktop : Endaddressofcompactmodelstack0x0-0x ffff

; isetthetopofthestacktothehighestlocation。

PBPSTACKTOP EQU0xFF 1; 默认值0f FH 1

; /h

; (h原文均为伪指令、宏定义等东东。 你确实好像头疼啊。 简单翻译一下吧。

翻译

再入函数模拟初始化;

再入函数模拟堆栈指针的初始化由以下EQU指令定义:

使用SMALL存储器模式时再入函数的堆栈区域

IBPSTACK EQU 0; 使用SMALL存储器模式再入函数时设定为1;

IBPSTACKTOP EQU 0FFH 1; 将堆栈顶部设置为最高地址1;

使用LARGE存储器模式时再入函数的堆栈区域

XB堆栈第0区; 使用LARGE存储器模式再入函数时设定为1;

xbpstacktop equ 0光纤通道1; 将堆栈顶部设置为最高地址1;

使用COMPACT内存模式时再入函数的堆栈区域

pbp堆栈第0区; 使用COMPACT存储器模式再入函数时设定为1;

pbpstacktop equ 0光纤通道1; 将堆栈顶部设置为最高地址1。

划重点

在这里,我们提到了三种模式:小型、大型和紧凑。 这三种模式有什么意义呢? 那么,让我们来看一下。

不同内存模式下的堆栈。 Eil编译器有三种模式设置。 这起因于51处理器的许多寻址模式,根据寻址模式的不同效率也不同。

small模式

small模式下,所有默认变量都加载到单片机内部的RAM中,51单片机的默认内部RAM只有128B; 52单片机的缺省256B。 该模式的优点是访问速度快,缺点是空间有限。

compact模式

compact模式下,所有默认变量都位于单片机的256B RAM中,与在small模式下使用关键字pdata定义数据变量的效果相同。 在此模式下,程序的总变量空间不能超过256B。

large模式

large模式下,所有默认变量都可以位于最多64KB的RAM中,包括内部和外部RAM。 这与使用关键字xdata定义变量的效果相同。

Small:变量存储在内部ram中。

Compact:变量存储在外部ram中,使用页8位间接寻址。

Large:变量存储在外部Ram中,使用16位间接寻址。

我们一般使用Small保存变量。 也就是说,单片机优先将变量保存在内部ram中,内部ram不够时保存在外部。 Compact方式需要自己用程序指定页面的高位地址,编程很复杂。 如果外部ram少,只有256字节,则读取该256字节会更快。

如果超过256字节,就很难不断切换。 Compact模式适用于相对较少的外部ram。 Large模式将变量优先分配给外部ram,3种内存方式均支持内部256字节和外部64k字节的ram。 区别在于变量的优先级(或缺省值)存储在哪里。 除非不想将变量存储在内部ram中,否则请使用后面的Compact,Large模式。 由于变量存储在内部ram中,因此运算速度远远快于存储在外部ram中,大多数APP应用程序选择Small模式。

51单片机示例程序大全(51单片机编程代码-编程之家