处于SMALL模式下函数的参数和局部变量位于8051单片机的内部RAM中,处于COMPACT和LARGE模式下函数的参数和局部变量则使用8051单片机的外部RAM。定义一个函数时可以明确指定函数的内存模式,一般形式如下:函数类型 函数名[存储器模式]其中,“存储器模式”是Keil Cx51编译器扩展的一个选项。不用该选项时即没有明确指定函数的存储器模式,这时该函数按编译时的默认存储区模式处理。......
2023-11-17
图5-7 变量的存储种类图
函数变量按其有效作用范围可以划分为局部变量和全局变量,还可以按变量的存储方式为其划分存储种类。在C语言中,变量有4种存储种类,即自动变量(auto)、外部变量(extern)、静态变量(static)和寄存器变量(register)。这4种存储种类与全局变量之间的关系如图5-7所示。
1)自动变量是C语言中使用最为广泛的一类变量。按照默认规则,在函数体内部或复合语句内部定义的变量,如果省略存储种类说明,该变量即为自动变量。习惯上通常采用默认形式。(www.chuimin.cn)
2)使用存储种类说明符“extern”定义的变量称为外部变量。按照默认规则,凡是在所有函数之前,在函数外部定义的变量都是外部变量,定义时可以不写extern说明符。但是,在一个函数体内说明一个已在该函数体外或者别的程序模块中定义过的外部变量时,则必须使用extern说明符。
3)使用存储种类说明符“static”定义的变量称为静态变量。
4)为了提高程序的执行效率,C语言允许将一些使用频率最高的那些变量定义为能够直接使用硬件寄存器的所谓寄存器变量。定义一个变量时,在变量名前面冠以存储种类符号“register”即将该变量定义成了寄存器变量。寄存器变量可以被认为是自动变量的一种,它的有效作用范围也与自动变量相同。由于计算机中寄存器是有限的,因此不能将所有变量都定义成寄存器变量。通常在程序中定义寄存器变量时只是给编译器一个建议,该变量是否能真正称为寄存器变量,要由编译器根据实际情况来确定。另一方面,Cx51编译器能够识别程序中使用频率最高的变量,在可能的情况下,即使程序中并未将该变量定义为寄存器变量,编译器也会自动将其作为寄存器变量来处理。
有关单片机基础及应用的文章
处于SMALL模式下函数的参数和局部变量位于8051单片机的内部RAM中,处于COMPACT和LARGE模式下函数的参数和局部变量则使用8051单片机的外部RAM。定义一个函数时可以明确指定函数的内存模式,一般形式如下:函数类型 函数名[存储器模式]其中,“存储器模式”是Keil Cx51编译器扩展的一个选项。不用该选项时即没有明确指定函数的存储器模式,这时该函数按编译时的默认存储区模式处理。......
2023-11-17
所谓函数的调用就是在一个函数体中引用另外一个已经定义了的函数,前者称为主调用函数,后者称为被调用函数。实际参数的作用是将它的值传递给被调用函数中的形式参数。2)函数表达式。这种在调用一个函数的过程中又调用了另一个函数的方式,称为嵌套函数调用,在输出一个函数的值时经常采用这种方法。例如:其中,函数funtion1(i,j)是作为printf()函数的一个实际参数处理的,它也属于嵌套函数调用方式。......
2023-11-17
程序存储器以程序计数器PC作为地址指针,通过16位地址总线,可寻址的地址空间为64KB,片内/外统一编址。根据单片机的类型及引脚的电平,CPU可从内部也可从外部程序存储器开始执行。而当EA=0时,内部程序存储器被忽略,程序直接从外部程序存储器的0000H开始执行。64KB程序存储器中有一些特殊的单元,在使用时应加以注意。0023H——串行口的中断服务子程序入口地址。......
2023-11-17
2)片外程序存储空间,简称片外ROM。C51的6种存储类型与存储空间的对应关系如表5-2所示。表5-2C51的存储类型与存储空间的对应关系表5-3C51的存储类型及其数据长度和值域当使用存储类型data、bdata定义常量和变量时,C51编译器会将它们定位在片内数据存储空间中,这个存储区根据单片机的型号不同,其长度也不同。整型变量var的存储类型是pdata,C51编译器将该变量定位在片外RAM中,并用指令MOVX@Ri访问。......
2023-11-17
8255共有3种工作方式,即方式0、方式1以及方式2。8255的“选通”是通过信号的“问”与“答”,以联络方式来实现的,所以这种数据传送方式是有条件的,适用于以查询或中断方式进行控制。3.方式2方式2是在方式1的基础上加上双向传送功能,但只有A口才能选择这种工作方式,这时A口既能输入数据又能输出数据。如果把A口置于方式2下,则B口只能工作于方式0。表8-7C口联络信号定义......
2023-11-17
当CPU执行完任何能使PD置1的指令后,就使单片机进入掉电工作方式。退出掉电工作方式的唯一方法是硬件复位。在掉电工作方式期间,VCC可以降低到2V,但在进入掉电工作方式之前,VCC不能降低。而在准备退出掉电工作方式之前,VCC必须恢复正常的工作电压值,并维持一段时间,使振荡器重新启动并稳定。......
2023-11-17
1.片内数据存储器片内数据存储器可分为两个不同的块,除内部RAM块外,还有特殊功能寄存器块。由于访问它们所用的指令不同,并不会引起混乱,片内数据存储器的编址如图2-4所示。1)工作寄存器区。表2-3工作寄存器组与RS1、RS0的关系及地址2)位寻址区。2.片外数据存储器当内部RAM不够用时,最多可以外扩64KB的外部数据存储器,即CPU可以寻址64KB的外部数据存储器。......
2023-11-17
在程序运行过程中,常量的值保持不变,而变量的值可以发生变化。常量和变量有多种形式和大小,也有多种不同的存储形式。const默认常量在内存中,而flash强制常量存储在程序存储器Flash中。非寄存器变量:用volatile关键字定义,强制变量不存储在32个工作寄存器中;EEPROM变量:用eeprom关键字定义,强制变量存储在EEPROM中。......
2023-11-26
相关推荐