3. 第三节 存储模式 存储模式决定了没有明确指定存储类型的变量,函数参数等的缺省存储区域,共三种: 1. 1. Small 模式 所有缺省变量参数均装入内部RAM,优点是访问速度快,缺点是空间有限,只适用于小程序。 2. 2. Compact 模式 所有缺省变量均位于外部RAM 区的一页(256Bytes),具体哪一页可由P2 口指定,在STARTUP.A51 文件中说明,也可用pdata 指定,优点是空间较Small 为宽裕速度较Small 慢,较large 要快,是一种中间状态。 3. 3. large 模式 所有缺省变量可放在多达64KB 的外部RAM 区,优点是空间大,可存变量多,缺点是速度较慢。 提示:存储模式在C51 编译器选项中选择。 4. 第四节 存储类型声明 变量或参数的存储类型可由存储模式指定缺省类型,也可由关键字直接声明指定。各类型分别用:code,data,idata,xdata,pdata说明,例: data uar1 char code array[ ]=“hello!”; unsigned char xdata arr[10][4][4]; 5. 第五节 变量或数据类型 C51 提供以下几种扩展数据类型: bit 位变量值为0 或1 sbit 从字节中定义的位变量 0 或1 sfr sfr 字节地址 0~255 sfr16 sfr 字地址 0~65535 其余数据类型如:char,enum,short,int,long,float 等与 ANSI C 相同。 6. 第六节 位变量与声明 1. 1. bit 型变量 bit 型变量可用变量类型,函数声明、函数返回值等,存贮于内部RAM20H~2FH。 注意: (1) 用#pragma disable 说明函数和用“usign”指定的函数,不能返回 bit 值。 (2) 一个 bit 变量不能声明为指针,如 bit *ptr;是错误的 (3) 不能有bit 数组如:bit arr[5];错误。 2. 2. 可位寻址区说明20H-2FH 可作如下定义: int bdata i; char bdata arr[3], 然后: sbit bito=in0;sbit bit15=I^15; sbit arr07=arr[0]^7;sbit arr15=arr[i]^7; 7. 第七节 Keil C51 指针 C51 支持一般指针(Generic Pointer)和存储器指针(Memory_Specific Pointer). 1. 1. 一般指针 一般指针的声明和使用均与标准 C 相同,不过同时还可以说明指针的存储类型,例如: long * state;为一个指向 long 型整数的指针,而 state 本身则依存储模式存放。 char * xdata ptr;ptr 为一个指向 char 数据的指针,而 ptr 本身放于外部RAM 区,以上的long,char 等指针指向的数据可存放于任何存储器中。 一般指针本身用3...