C51支持的数据类型分为基本数据类型、构造数据类型和指针类型。C51的基本数据类型如表5-1所示,表中下面的5种数据类型是C51有的而标准C没有的。在MCS-51系列单片机中选择合适的数据类型,对提高运行效率具有特殊的意义。如果在编写C51程序时使用大量的、不必要的数据类型变量,就会导致C51编译器相应地增加了所调用的库函数的数量,以处理大量增加的数据类型变量,会使编译后的程序变得过于庞大。......
2023-11-17
1)片内程序存储空间,简称片内ROM。
2)片外程序存储空间,简称片外ROM。
3)片内数据存储空间,简称片内RAM。
4)片外数据存储空间,简称片外RAM。
变量的存储类型就是指该变量存放在以上4个存储空间中的哪一个空间。
C51的6种存储类型与存储空间的对应关系如表5-2所示。各种存储类型所占的位数、字节数如表5-3所示。
表5-2 C51的存储类型与存储空间的对应关系
表5-3 C51的存储类型及其数据长度和值域
当使用存储类型data、bdata定义常量和变量时,C51编译器会将它们定位在片内数据存储空间(片内RAM)中,这个存储区根据单片机的型号不同,其长度也不同。这个存储区不是很大,但它能快速收发各种数据,是存放临时性传递变量或使用频率较高的变量的理想场所。
当使用code存储类型定义数据时,C51编译器会将其定义在程序存储区(ROM)中,这里存放着指令代码和其他非易变信息,如常量表格数据等。
当使用xdata存储类型定义常量、变量时,C51编译器会将其定义在外部数据存储空间(片外RAM),该空间的最大可寻址范围为64KB。
pdata存储类型属于xdata类型,它的一个字节(高8位)由P2口提供,用于外部I/O操作。(www.chuimin.cn)
idata存储类型可以间接寻址数据存储器。
访问片内数据存储器(data,bdata,idata)比访问片外数据存储器相对要快些,因此可将经常使用的变量定义于片内RAM,而将规模较大或不常使用的数据定义在片外RAM中。
带存储类型变量的定义的一般格式为
数据类型 存储类型 变量名
C51允许在定义变量类型之前先指定存储类型,如
存储类型 数据类型 变量名
建议使用前一种方法,即先定义变量的数据类型,后定义变量的存储类型。
例如,带存储类型的变量定义
字符变量char var1被定义为data存储类型,C51编译器将该变量定位在片内RAM中(地址:00H~7FH)。
位变量flags被定义为bdata存储类型,C51编译器将该变量定位在片内RAM中的位寻址区(地址:20H~2FH)。
浮点变量x,y,z的存储类型是idata,C51编译器将该变量定位在片内RAM中,并只能使用间接寻址的方法进行访问。
整型变量var的存储类型是pdata,C51编译器将该变量定位在片外RAM中,并用指令MOVX@Ri访问。
有关单片机基础及应用的文章
C51支持的数据类型分为基本数据类型、构造数据类型和指针类型。C51的基本数据类型如表5-1所示,表中下面的5种数据类型是C51有的而标准C没有的。在MCS-51系列单片机中选择合适的数据类型,对提高运行效率具有特殊的意义。如果在编写C51程序时使用大量的、不必要的数据类型变量,就会导致C51编译器相应地增加了所调用的库函数的数量,以处理大量增加的数据类型变量,会使编译后的程序变得过于庞大。......
2023-11-17
程序存储器以程序计数器PC作为地址指针,通过16位地址总线,可寻址的地址空间为64KB,片内/外统一编址。根据单片机的类型及引脚的电平,CPU可从内部也可从外部程序存储器开始执行。而当EA=0时,内部程序存储器被忽略,程序直接从外部程序存储器的0000H开始执行。64KB程序存储器中有一些特殊的单元,在使用时应加以注意。0023H——串行口的中断服务子程序入口地址。......
2023-11-17
图5-7变量的存储种类图函数变量按其有效作用范围可以划分为局部变量和全局变量,还可以按变量的存储方式为其划分存储种类。按照默认规则,在函数体内部或复合语句内部定义的变量,如果省略存储种类说明,该变量即为自动变量。另一方面,Cx51编译器能够识别程序中使用频率最高的变量,在可能的情况下,即使程序中并未将该变量定义为寄存器变量,编译器也会自动将其作为寄存器变量来处理。......
2023-11-17
流程控制语句不论对汇编语言还是C51都是程序设计中最重要的部分,C51同C语言一样是结构化程序设计语言。C51的结构化程序由若干个函数构成,函数由若干个基本结构构成,基本结构由若干条语句构成。结构化的C51程序设计语言有3种基本结构,即顺序结构、选择结构和循环结构。另外,在C51中还支持多分支结构,多分支结构既可以通过if和else if语句嵌套实现,也可用switch/case语句实现。......
2023-11-17
单片机C51语言是由C语言继承而来的。和C语言不同的是,C51语言运行于单片机平台,而C语言则运行于普通的桌面平台。对于具有C语言编程基础的读者,能够轻松地掌握单片机C51语言的程序设计。自1985年第一个C51编译器诞生以来,有众多公司推出了各自的C51编译器,其中最著名的是德国的Keil Cx51编译器。本章首先介绍C51的基本知识,然后通过C51语言实例编程,使读者快速掌握C51程序设计的思路和方法。......
2023-11-17
◎内容提要本章讲述MCS-51单片机的C51程序的基础知识,主要包括C51数据类型及存储类型、C51运算符及其表达式、C51流程控制语句、C51构造数据类型、C51指针的定义及使用、C51函数的定义及使用和预编译的用法。◇C51函数的定义、调用及使用时应注意的事项。※重点及难点◇C51存储类型和存储模式的区别。◇C51函数中参数的传递问题。教学目标:掌握MCS-51单片机的C51程序设计的基础知识。通过编程实例,快速掌握C51程序设计的思路和方法。......
2023-11-17
1.片内数据存储器片内数据存储器可分为两个不同的块,除内部RAM块外,还有特殊功能寄存器块。由于访问它们所用的指令不同,并不会引起混乱,片内数据存储器的编址如图2-4所示。1)工作寄存器区。表2-3工作寄存器组与RS1、RS0的关系及地址2)位寻址区。2.片外数据存储器当内部RAM不够用时,最多可以外扩64KB的外部数据存储器,即CPU可以寻址64KB的外部数据存储器。......
2023-11-17
通过这些通用指针,C51库函数可访问片内外RAM空间、ROM空间中的所有数据。定义通用指针变量的语法如下:数据类型标识符*存储类型标识符指针变量名;其中,存储类型标识符指的是指针自身的存储位置。通用指针的定义举例如下:2.指定存储区指针指定存储区指针又称为指定存储类型指针,也称为基于内存的指针。若没有说明指针变量的存储类型,则由C51的存储模式决定,具体可参考5.2.3节的内容。......
2023-11-17
相关推荐