单片机数据存储类型和申明方法

合集下载

C51常用数据类型

C51常用数据类型

C51常用数据类型在C51单片机编程中,常用数据类型是指在程序中经常使用的数据类型。

了解和掌握这些数据类型对于编写高效、可读性强的代码是非常重要的。

本文将介绍C51常用的数据类型及其标准格式。

1. 位数据类型(bit):位数据类型用于表示单个位的数据,只能取0或1两个值。

在C51中,位数据类型可以使用关键字bit来声明。

例如:bit flag; // 声明一个位数据类型的变量flag2. 无符号整型数据类型(unsigned):无符号整型数据类型用于表示正整数,不包含负数。

在C51中,无符号整型数据类型可以使用关键字unsigned来声明。

例如:unsigned char num; // 声明一个无符号字符型变量num3. 有符号整型数据类型(signed):有符号整型数据类型用于表示正整数和负整数。

在C51中,有符号整型数据类型可以使用关键字signed来声明。

例如:signed int temperature; // 声明一个有符号整型变量temperature4. 字符型数据类型(char):字符型数据类型用于表示单个字符。

在C51中,字符型数据类型可以使用关键字char来声明。

例如:char ch; // 声明一个字符型变量ch5. 整型数据类型(int):整型数据类型用于表示整数,包括正整数、负整数和零。

在C51中,整型数据类型可以使用关键字int来声明。

例如:int count; // 声明一个整型变量count6. 单精度浮点型数据类型(float):单精度浮点型数据类型用于表示带有小数部分的数值。

在C51中,单精度浮点型数据类型可以使用关键字float来声明。

例如:float distance; // 声明一个单精度浮点型变量distance7. 双精度浮点型数据类型(double):双精度浮点型数据类型用于表示更高精度的带有小数部分的数值。

在C51中,双精度浮点型数据类型可以使用关键字double来声明。

单片机中的数据存储与读写技术

单片机中的数据存储与读写技术

单片机中的数据存储与读写技术作为现代电子设备的核心组成部分,单片机在各个领域中扮演着重要的角色。

而数据在单片机中的存储与读写技术更是关系到整个系统的运行效率和稳定性。

本文将介绍单片机中常用的数据存储与读写技术,旨在帮助读者更好地理解和应用单片机技术。

一、RAM随机存储器RAM(Random Access Memory)即随机存取存储器,是单片机中最常见的数据存储器之一。

它可以随机读写数据,具有读写速度快、容量大的特点。

RAM分为静态RAM(SRAM)和动态RAM(DRAM)两种类型。

1. SRAMSRAM是一种基于触发器的存储器,由多个触发器组成。

它的读写速度快,不需要刷新电路,在数据稳定性和可靠性方面表现出色。

SRAM常用于需要频繁读写数据的场景,如缓存存储器、寄存器等。

2. DRAMDRAM是一种基于电容的存储器,由字线和位线交错组成。

它的读写速度相对较慢,需要定时刷新电路来维持数据的稳定性。

DRAM常用于对存储容量要求较高的场景,如系统内存等。

二、EPROM和EEPROMEPROM(Erasable Programmable Read-Only Memory)和EEPROM (Electrically Erasable Programmable Read-Only Memory)是一种只读存储器,其内容可以通过特殊的擦除和编程操作进行修改。

EPROM使用紫外线擦除,而EEPROM使用电子擦除。

1. EPROMEPROM常用于存储固件和程序代码等不经常修改的数据。

编程EPROM需要提供高电压和较长的编程时间,同时擦除EPROM需要将芯片暴露在紫外线下。

由于操作复杂,EPROM一般不适用于需要频繁修改数据的场景。

2. EEPROMEEPROM相比于EPROM可以通过电子擦除来修改数据,操作更为灵活方便。

EEPROM具有非易失性的特点,即在断电情况下数据依然可以保持。

它广泛应用于单片机中存储配置参数、校准数据等需要经常修改的场景。

单片机内部存储器结构与数据存取方法详解

单片机内部存储器结构与数据存取方法详解

单片机内部存储器结构与数据存取方法详解单片机是一种集成了处理器、内存和外设等功能于一体的微电子器件,广泛应用于各种电子设备中。

其中,内部存储器是单片机的核心组成部分之一。

本文将详细介绍单片机内部存储器的结构和数据存取方法。

一、单片机内部存储器的结构单片机的内部存储器主要包括随机存取存储器(RAM)和只读存储器(ROM)两部分。

1. 随机存取存储器(RAM)RAM是单片机内部的易失性存储器,用于存储数据、程序临时数据和运行时数据。

单片机内部的RAM可以根据存取速度和使用要求的不同,分为片内RAM 和片外RAM两种。

片内RAM是单片机芯片内部集成的存储器,速度较快。

它可以分为片内可读写RAM(RW-RAM)和片内只读RAM(RO-RAM)两种类型。

片内可读写RAM可以被程序读取和修改,存储媒介是电容或电子触发器。

而片内只读RAM则只能被程序读取,不能被修改。

片内RAM的容量相对较小,一般在几十到几百字节之间。

片外RAM是连接在单片机芯片外部的存储器,速度较慢。

它可以进一步分为静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM)两种类型。

SRAM是基于触发器构建的,数据存储在触发器中,读写速度快且无需刷新。

DRAM则是基于电容构建的,存储数据需要定期刷新,但容量较大。

2. 只读存储器(ROM)ROM是单片机内部的非易失性存储器,用于存储程序和常量数据。

ROM的内容在出厂时就被写入,一般无法被程序修改。

单片机内部的ROM可以分为只读存储器(ROM)和可编程只读存储器(PROM)两种类型。

ROM存储器内容固定不变,其中包含了单片机的初始化程序和系统代码。

PROM存储器则可以通过特殊的编程操作烧写程序和数据,但一旦写入后无法擦除和修改。

这类存储器在生产流程中被用于定制特殊功能的单片机。

二、单片机内部存储器的数据存取方法单片机内部存储器的数据存取方法根据存储器的类型和连接方式而有所不同。

1. RAM的数据存取方法对于片内RAM,数据的存取可以通过直接读写特定的RAM地址来实现。

单片机中数据存储与处理方法研究

单片机中数据存储与处理方法研究

单片机中数据存储与处理方法研究单片机(Microcontroller Unit, MCU)作为一种集成了处理器核、存储器、定时器、输入输出接口等多个功能电路的微型电子器件,广泛应用于各个领域。

在单片机的应用中,数据存储与处理是关键的环节。

本文将重点研究单片机中数据存储与处理的方法。

一、数据存储方法1. 寄存器存储寄存器是计算机体系结构中最快的数据存储部件。

在单片机中,寄存器用来存储临时数据、控制信号和中断相关的信息等。

由于寄存器与处理器核紧密相连,访问速度非常快速。

然而,单片机内部寄存器的数量有限,通常只有几十个,因此只适用于存储少量的数据。

2. RAM存储RAM(Random Access Memory,随机存取存储器)是一种易失性的存储设备,可以读取和写入数据。

单片机中的RAM用来存储数据、程序和中断向量等。

RAM的容量一般较大,可以存储较多的数据。

但由于其易失性特点,当断电或重启时,存储在RAM中的数据会丢失。

3. ROM存储ROM(Read-Only Memory,只读存储器)用于存储程序、常量数据和固件信息等。

与RAM不同,ROM是一种非易失性的存储设备,即使断电也能保持数据的稳定。

在单片机中,有多种ROM存储器的类型,包括闪存存储器、EPROM存储器和EEPROM存储器等。

这些存储器主要用来存储程序,但也可以用于存储一部分数据。

4. 外部存储器对于一些需要存储大量数据的应用,单片机的内部存储器可能无法满足需求,可以使用外部存储器扩展内存容量。

常见的外部存储器包括SD卡、EEPROM、Flash存储器等。

通过外部存储器,可以方便地扩展单片机的数据存储能力,存储更多的数据。

二、数据处理方法1. 位操作在单片机中,数据通常以二进制形式进行处理。

位操作是一种有效的数据处理方法。

通过位操作,可以对数据的每个位进行读取、设置和清零等操作,实现对数据的精确控制。

单片机中常用的位操作指令包括按位与(AND)、按位或(OR)、按位取反(NOT)等。

C51常用数据类型

C51常用数据类型

C51常用数据类型概述:C51是一种常用的单片机系列,广泛应用于嵌入式系统和微控制器领域。

在C51编程中,常用的数据类型对于程序的编写和数据处理至关重要。

本文将介绍C51常用的数据类型,包括整型、字符型、浮点型和数组类型,并提供详细的说明和示例。

整型数据类型:在C51中,整型数据类型用于存储整数值。

常用的整型数据类型有char、int、unsigned char和unsigned int。

1. char类型:char类型用于存储一个字节的整数值,范围为-128到127。

可以用关键字"char"声明char类型的变量。

示例代码如下:```cchar myChar = 'A';```2. int类型:int类型用于存储两个字节的整数值,范围为-32768到32767。

可以用关键字"int"声明int类型的变量。

示例代码如下:```cint myInt = 100;```unsigned char类型用于存储一个字节的无符号整数值,范围为0到255。

可以用关键字"unsigned char"声明unsigned char类型的变量。

示例代码如下:```cunsigned char myUnsignedChar = 200;```4. unsigned int类型:unsigned int类型用于存储两个字节的无符号整数值,范围为0到65535。

可以用关键字"unsigned int"声明unsigned int类型的变量。

示例代码如下:```cunsigned int myUnsignedInt = 5000;```字符型数据类型:在C51中,字符型数据类型用于存储单个字符。

常用的字符型数据类型有char 和unsigned char。

1. char类型:char类型用于存储一个字节的字符,可以存储ASCII码对应的字符。

C51常用数据类型

C51常用数据类型

C51常用数据类型在C51单片机编程中,常用数据类型是编写程序时必不可少的基本元素。

了解和正确使用这些数据类型是编程的基础。

本文将详细介绍C51常用的数据类型及其使用方法。

1. 位数据类型(bit):位数据类型是最基本的数据类型之一,用于表示一个二进制位。

在C51中,位数据类型使用关键字bit进行声明。

位数据类型只能取0或者1的值。

例如:bit flag; //声明一个位变量flag2. 逻辑数据类型(bit):逻辑数据类型是C51中的另一种位数据类型,用于表示逻辑值。

逻辑数据类型可以取0或者1的值,分别表示假和真。

例如:bit isTrue = 1; //声明一个逻辑变量isTrue,并将其赋值为真3. 字符数据类型(char):字符数据类型用于表示一个字符,它是由ASCII码表中的字符集合组成的。

在C51中,字符数据类型使用关键字char进行声明。

例如:char ch = 'A'; //声明一个字符变量ch,并将其赋值为字符'A'4. 无符号整数数据类型(unsigned char、unsigned int、unsigned long):无符号整数数据类型用于表示正整数,不包含负数。

在C51中,无符号整数数据类型分为无符号字符(unsigned char)、无符号整数(unsigned int)和无符号长整数(unsigned long)。

例如:unsigned char num1 = 255; //声明一个无符号字符变量num1,并将其赋值为255unsigned int num2 = 65535; //声明一个无符号整数变量num2,并将其赋值为65535unsigned long num3 = 4294967295; //声明一个无符号长整数变量num3,并将其赋值为42949672955. 有符号整数数据类型(signed char、signed int、signed long):有符号整数数据类型用于表示正整数和负整数。

单片机参数保存方法

单片机参数保存方法

单片机参数保存方法单片机参数保存是指将单片机的配置参数以某种方式保存起来,以便下次重新启动时能够快速加载并恢复之前的配置。

单片机参数是指一些影响程序运行和电路功能的设置,如时钟频率、外设配置、中断向量、IO口配置等。

常见的单片机参数保存方法有以下几种:1.外部电路存储:使用EEPROM、Flash、FRAM等非易失性存储器进行保存。

这些存储器通常可以通过I2C、SPI等接口与单片机进行通信,单片机在程序中通过读写对应地址的数据来实现参数的保存与加载。

如ST公司的STM32系列单片机内部集成了Flash存储器,可以方便地保存和加载参数。

2.内部存储器存储:一些单片机内部集成了特定的存储器,如电子可擦除只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM),可以直接将参数保存在其中。

单片机在程序中通过读写特定地址的数据来实现参数的保存与加载。

例如ATMEGA16系列单片机内部集成了EEPROM,可以直接使用其API函数读写数据。

3.引脚状态保存:将参数保存在引脚的电平状态中。

通过将不同的参数映射到不同的引脚电平状态(高电平、低电平、悬空等),单片机在启动时读取引脚的电平状态来加载参数。

这种方法简单直接,但需要额外的硬件支持,并且可保存的参数数量有限。

4.嵌入式文件系统存储:在一些资源丰富的单片机上,可以使用嵌入式文件系统,如FAT文件系统,将配置参数保存在文件中。

单片机在启动时读取文件系统中的配置文件来加载参数。

这种方法需要额外的存储空间和文件系统的支持,相对复杂。

在选择单片机参数保存方法时,需要考虑以下几个因素:1.存储空间:不同的存储方法所需要的存储空间不同,例如使用外部存储器可能需要占用额外的封装空间;使用内部存储器可能会占用部分程序存储空间;使用引脚电平保存可能对引脚资源有要求等。

2.速度:不同的存储方法读写速度有所差别,例如使用非易失性存储器比使用嵌入式文件系统更快。

C51常用数据类型

C51常用数据类型

C51常用数据类型引言概述:在C51单片机编程中,数据类型是非常重要的概念,不同的数据类型决定了数据在内存中的存储方式和范围。

了解C51常用数据类型对于编写高效、可靠的程序至关重要。

一、基本数据类型1.1 位类型(bit)- 位类型是C51中最基本的数据类型,只能存储0或者1,用于表示逻辑状态。

- 位类型在C51中占用1位的存储空间,通常用于控制寄存器的位操作。

- 位类型的声明方式为bit,例如:bit flag = 1;1.2 无符号整型(unsigned int)- 无符号整型用于表示非负整数,范围为0到65535。

- 无符号整型在C51中占用2个字节的存储空间,通常用于存储计数器、计时器等变量。

- 无符号整型的声明方式为unsigned int,例如:unsigned int count = 100;1.3 有符号整型(int)- 有符号整型用于表示带符号的整数,范围为-32768到32767。

- 有符号整型在C51中同样占用2个字节的存储空间,通常用于存储温度、速度等带符号的数据。

- 有符号整型的声明方式为int,例如:int temperature = -20;二、扩展数据类型2.1 无符号长整型(unsigned long)- 无符号长整型用于表示较大的非负整数,范围为0到4294967295。

- 无符号长整型在C51中占用4个字节的存储空间,通常用于存储较大的计数值。

- 无符号长整型的声明方式为unsigned long,例如:unsigned long total = 100000;2.2 有符号长整型(long)- 有符号长整型用于表示较大的带符号整数,范围为-2147483648到2147483647。

- 有符号长整型在C51中同样占用4个字节的存储空间,通常用于存储较大的带符号数据。

- 有符号长整型的声明方式为long,例如:long distance = -50000;2.3 浮点型(float)- 浮点型用于表示带小数点的数值,范围和精度较高。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

.51 的存储器结构笼统来说单片机片内存储器分为CODE区和data区,cpu从code区读取指令,对data 区的数据进行运算处理。

前者在程序运行中为只读,一般为FLASH,用来放置程序代码和一些只读的数据(如字模表之类),后者可以随机读写,用来存放程序运行中的临时数据,如局部变量或全局变量,全局变量一直占用着RAM内存,而局部变量在使用完后会自动清除RAM空间。

当然在片外,可以外扩FLASH和RA(此时称为XRAM因为寻址方式不一样),外扩的大小与单片机寻址能力有关。

有的单片机将外扩RAM封装在片内,如AT89C51所以有了所谓的片内XRAM。

.变量的存储模式变量是一种在程序执行过程中能不断变化的量。

它有数据类型、存储类型、存储器模式和有效范围四种属性。

C语言规定每个变量必须有一个标识符作为变量名,在使用一个变量前,必须先对变量进行定义,指出其数据类型和存储模式。

以便编译系统为其分配存储单元。

在C51中对变量进行定义的格式如下:[ 存储类型] 数据类型[ 存储器类型] 变量名表, 如auto char data i;存储类型指明变量的存储区域,而变量的存储类型和变量在程序中说明的位置决定了它的作用范围。

存储类型含义与C语言相同。

存储类型有四种:auto型、extern 型、static 型、register 型,缺省为auto型(看来我一直都是凹凸型啊)。

其区别如下:auto:自动变量。

存储在内存的堆栈区,属于临时性存储变量,并不长期占用内存,可以被多次覆盖。

register:寄存器变量。

register与auto一样属于自动类别。

区别在于register 的值保存在CPU 的寄存器中。

计算机中只有寄存器中的数据才能直接参与运算,而一般变量是放在内存中的,变量参加运算是,需要先把变量从内存中取到寄存器中,然后计算。

所以一般把使用最频繁的变量定义成register变量。

register变量只能在函数中定义,并只能是int和char型。

static:静态变量。

声明静态变量的,也就是C语言中的私有成员•如果在一个函数中声明一个静态变量,静态变量的空间不在栈里面,而是存储在静态空间里,这个函数结束后,静态变量的值依旧存在,内存不会收会此变量占用的内存空间,而是等整个程序都结果后才收回静态变量空间。

extern:外部类型。

extern用来声明外部变量,可以用于此程序外的程序中(可在两个C文件间交叉使用),类型要一致。

变量在数据运行时被分配了一定的内存空间,该空间在整个运行程序中,只要程序存在,自始自终都被该变量使用,即其值始终不变。

数据类型就不用多说了,bit ,byte,char 什么的。

存储器类型与单片机的寻址方式有关,影响程序的执行效率。

下表是传统C51 的存储器类型,不同单片机类型有所差别。

简单解释一下:data: 低128字节,可直接寻址,可以用acc 直接读写的,速度最快,生成的 代码也最小。

bdata : 16字节位寻址区(当然也可以按字节寻址),一般很小。

的256个RAM 其中前128和data 的128完全相 idata 是用类似C 中的指针方式访问的。

汇编中 xdata:外部扩展RAM —般指外部0x0000-0xffff 空间,有的集成于片内,用 DPTR?问。

pdata:外部扩展RAM 的低256个字节,用movx ACC,@R M 写。

这个比较特殊, 而且C51好象有对此BUG 建议少用。

如果要指定存储地址可用如: uchar bdata LED _at_ 0x20;sbit led_7=led A 7;//用关键字sbit 定义位变量来独立访问可寻址位对象 int bdata ab[2];〃 在可位寻址区定义数组 ab[2]sbit ab12=as[1]A12; 操作符“ A ”后面的位位置的最大值取决于指定的基址类 型 char 0-7,int 0-15,long 0-31 。

定义变量时如果省略了“存储器类型”,则按编译模式 SAMLL,COMPACT,LARGB 规定的默认存储器类型确定变量的存储区域,倂pragma 预编 译命令,可以指定函数的默认存储器模式。

)C51编译器的三种存储器模式(默认 的存储器类型)对变量的影响如下:1. SMALL 变量被定义在8051单片机的内部数据存储器中,因此对这种变 量的访问速度最快。

另外,所有的对象,包括堆栈,都必须嵌入内部数据存储器, 而堆栈idata: 固定指前面OxOO-Oxff 同,只是因为访问的方式不同。

的语句为:MOVXACC,@<Rx的长度是很重要的,实际栈长取决于不同函数的嵌套深度。

2. COMPACT变量被定义在分页外部数据存储器中,外部数据段的长度可达256字节。

这时对变量的访问是通过寄存器间接寻址(MOV〉@Ri)进行的,堆栈位于8051单片机内部数据存储器中。

采用这种编译模式时,变量的高8 位地址由P2 口确定。

3. LARGE:变量被定义在外部数据存储器中(最大可达64K字节),使用数据指针DPTR来间接访问变量,访问数据速度慢,增加程序代码的长度。

存储器模式决定了缺省变量的存储空间,而访问各空间变量的汇编代码的繁简程度决定了代码率的高低。

例如:一个整形变量i,如放于内存18H 19H空间,则++ i的操作编译成四条语句:INC 0x19MOV A,0x19JNZ 0x272DINC 0x180x272D:而如果放于外存空间0000H 0001H则++i的操作编译成九条语句:MOV DPT,R0001MOVX A,@ DPTRINC AMOVX @ DPTR,AJNz #5MOV OPTR,#0000MOVX A,@DPTRINC AMOVX @ DPTR,A对于函数而言,一个函数的存储器模式确定了函数的参数和局部变量在内存中的地址空间,规则与变量定义一致。

在定义一个函数时可以明确制定该函数的存储器模式,一般的形式如下:函数类型函数名(形式参数表)[ 存储器模式]其中的存储器模式是选项,未说明时则按该函数编译时的默认存储器模式处理。

例如:#pragma largeint func1(int a1, int a2) small{int c;int func2(int b1, int b2) {int c;}#pragma预编译命令,可以指定函数的默认存储器模式。

C51允许采用存储器的混合模式编程,充分利用单片机中有限的存储器空间,同时还可以加快程序运行的速度。

三、网友的一点经验1. data 区空间小, 所以只有频繁用到或对运算速度要求很高的变量才放到data区内, 比如for 循环中的计数值。

2. data 区内最好放局部变量。

因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放, 由别的函数的局部变量覆盖), 可以提高内存利用率。

当然静态局部变量除外, 其内存使用方式与全局变量相同;3. 确保你的程序中没有未调用的函数。

在Keil C 里遇到未调用函数, 编译器就将其认为可能是中断函数。

函数里用的局部变量的空间是不释放,也就是同全局变量一样处理。

这一点Keil C做得很愚蠢, 但也没办法。

4. 程序中遇到的逻辑标志变量可以定义到bdata 中, 可以大大降低内存占用空间。

在51 系列芯片中有16 个字节位寻址区bdata, 其中可以定义8*16=128 个逻辑变量。

定义方法是:bdata bit LedState; 但位类型不能用在数组和结构体中。

5. 其他不频繁用到和对运算速度要求不高的变量都放到xdata 区。

6. 如果想节省data 空间就必须用large 模式, 将未定义内存位置的变量全放到xdata 区。

当然最好对所有变量都要指定内存类型。

7. 当使用到指针时, 要指定指针指向的内存类型。

在C51 中未定义指向内存类型的通用指针占用 3 个字节; 而指定指向data 区的指针只占 1 个字节; 指定指向xdata 区的指针占 2 个字节。

如指针p 是指向data 区, 则应定义为:char data *p; 。

还可指定指针本身的存放内存类型, 如:char data * xdata p; 。

其含义是指针p 指向data 区变量, 而其本身存放在xdata 区。

四. 关于STARTUP.A51用 C 语言编程时,开机时执行的代码并非是从main() 函数的第一句语句开始的,在main() 函数的第一句语句执行前要先执行一段起始代码, 这段起始代码的源程序名为STARTUP.A5。

其作用可以看看源代码,简单来说就是进行变量的初始化,设置SP指针、堆栈空间等。

如果考虑冷复位和热复位时的数据保存问题可以通过修改它实现(貌似不推荐)。

BTW冷复位用英文来表示是Restart,热复位用英文来表示是Reset。

我们把单片机从没加电到加上电源, 而自动产生的复位称为冷复位; 单片机在已经通电的情况下, 给它一个复位信号, 称为热复位。

冷复位会使单片机的特殊功能寄存器和数据存储器的内容都改变; 而热复位只是特殊功能寄存器的内容改变而单片机的内部数据存储器的内容不变。

六. 关于中断我都困了,坚持做完吧,难得这么整理一回。

中断时很好用的,与查询方式分半边天。

C51编译器支持在C语言程序中直接编写51 单片机的中断服务程序,C51 编译对函数定义进行了扩展,增加了一个关键字interrupt ,interrupt 是函数定义时的一个选项,加上它函数将函数定义成中断服务函数。

函数类型函数名( 形式参数表) [interrupt n][using n]interrupt 后面的n 为中断号,n 的取值范围为0~31,编译器从8n+3 处产生中断向量。

C51 编译器还扩展了一个关键字using, 专门用来选择单片机的寄存器组,缺省时由编译器选择一个寄存器组作为绝对寄存器组访问。

对于这个using ,多说几句,普通函数也可以用。

任何时候,单片机只能用到四组寄存器中的一组,一般情况下keil 来自动分配,用USING 来选择其中的一组,目的是提高效率减少出入栈次数。

编写8051 单片机中断函数时应遵循以下规则:(1) 中断函数不能进行参数传递,如果中断函数中包含任何参数声明都将导致编译出错。

(2) 中断函数没有返回值,如果企图定义一个返回值将得到不正确的结果。

因此建议在定义中断函数时将其定义为void 类型,以明确说明没有返回值。

(3) 在任何情况下都不能直接调用中断函数,否则会产生编译错误。

因为中断函数的返回是由8051单片机指令RETI完成的,RETI指令影响8051单片机的硬件中断系统。

如果在没有实际中断调求的情况下直接调用中断函数,RETI 指令的操作结果会产生一个致命的错误。

相关文档
最新文档