一、变量的界说准则:
其一、总是运用尽或许最小的数据类型;
对8位机,明显对“char”类型的目标的操作比对“int”或“long”类型的目标便利得多。C51编译器直接支撑一切字符操作。例如:两个“char”类型目标相乘与“MUL AB”8051指令相符合。假如用“int”型完结相同运算,则需求调用库函数。
其二、只需有或许,运用“unsigned”数据类型。
8051系列单片机不直接支撑有符号数的运算,为此,编译器有必要发生与之相关的更多的代码以解决问题。若运用无符号数据类型,发生的代码要少得多。
在头文件reg51.h中有8051一切SFR及可位寻址位的界说,如:
#include //源文件开端写
//………….
P1=0x10; //在编程中可运用
TMOD=0x1;
TR0=1;
EA=1;
削减变量占有的空间的方法:
# 运用#define 界说只读的常量
# 运用位域
# 运用联合
1、存储空间中的目标定位
8051单片机的存储器是哈佛结构,即程序存储器和数据存储器分隔,并有各自的寻址组织和方法。由于Franklin C51是面向8051系列单片机及硬件控制系统的开发工具。它界说的任何数据类型有必要以必定的数据方法定位在8051 的某一存储区中。该编译器将变量、常量界说成不同的存储类型,把它们定位在不同的存储区中。类型和区域的对照如下:
code :程序存储区(64KB),由MOVC A, @A+DPTR拜访
xdata: 外部数据存储区 (64KB), 由MOVX A, @DPTR拜访
pdata: 分页(256B)外部数据存储区, 由MOVX A,@Ri拜访
data: 直接寻址内部数据存储区(128B), 拜访变量速度快
bdata: 可位寻址的内部数据存储区, 答应位与字节混合拜访(16B).
idata: 直接寻址内部数据存储区(128B)
例:
#include
#define uchar unsigned char
#define uint unsigned int
bit flag;布尔值
code uchar table[]={1,2,3,”help”,oxff};
idata uint temp;
data char vra; /char data var ; 等价,尽量用后一种
static unsigned long xdata array[100]; 静态变量
extern float idata x,y,z; 外部变量
uint pdata dimension;
uchar xdata vector[10][4];
char bdata flags;
sbit flag_0=flags^0;
sbit p_1=p1^1;
界说时假如省掉存储类型,存储形式将主动决议变量的默许类型如下:
一般指针”SMALL:参数和局部变量放入可直接寻址的内部数据存储区(默许data)
COMPACT:参数和局部变量放入分页外部数据存储区(默许pdata)
LARGE:参数和局部变量放入外部数据存储区(默许xdata)
在C语言中变量和函数的存储特点关系到它们的可见性和生存期(即效果域和时限)。存储特点分三类:auto主动 extern外部 static静态。
Franklin C51支撑“根据存储器的指针”和“一般指针”。
根据存储器的指针:由C源程序中的存储类型决议它的存储单元数。用这种指针可高效拜访目标,且只需1~2个字节。
一般指针:需求3个字节(2个字节偏移,1个字节存储类型)。
各类指针变量:
float
p 3字节长 指向8051存储区中的“float”
char data
dp 1字节 —— “data”存储区中的“char”
int idata
ip 1字节 —— “idata” 存储区中的“int”
long pdata
pp 1字节 ——
char xdata
xp 2字节 ——
int code
cp 2字节 ——-
2、 动态和静态变量
动态变量:主动变量
静态变量:外部变量(extern),静态变量(static)
3、大局和局部变量
静态局部变量
主动变量(说明符auto可缺省)
静态大局变量
外部变量
例:
char xdata
px;指针自身在默许区(取决于存储形式)
char xdata
data pdx ;指针清晰坐落内部数据存储区(data)
data char xdata
pdx ;同上
单片机的高档言语编程FranklinC51简介
一、变量的定义原则:其一、总是使用尽可能最小的数据类型;对8位机,显然对char类型的对象的操作比对int或long类型的对象方便得多。C51编
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/xinwen/256653.html