-第2?来单片如的官应用程秀设计 带存储类型的变量的定义的一般格式为 数据类型存储类型变量名 带存储类型的变量定义举例: char data var1 bit bdata flags float idata x, y, Z; unsigned int pdata var 2; unsigned char vector 3][14]
第7章 单片机的C语言应用程序设计 带存储类型的变量的定义的一般格式为 数据类型 存储类型 变量名 带存储类型的变量定义举例: char data var1; bit bdata flags; float idata x,y,z; unsigned int pdata var2; unsigned char vector[3][4];
-第单片如的官应用程秀设计 表74存储模式说明 存储模式 说明 默认的存储类型是data,参数及局部变量放入可直接寻址片内 RAM的用户区中(最大128字节)。另外所有对象(包括堆栈) SMALL都必须嵌入片内RAM。栈长很关键,因为实际栈长依赖于函 数嵌套调用层数 默认的存储类型是 pdata,参数及局部变量放入分页的外部数 COMPA据存储区,通过@R或@R间接访问,栈空间位于片内数据 CT 存储区中 默认的存储类型是 xdata,参数及局部变量直接放入片外数据 存储区,使用数据指针DPTR来进行寻址。用此数据指针进行 LARGE访问效率较低,尤其对两个或多个字节的变量,这种数据类 型的访问机制直接影响代码的长度
第7章 单片机的C语言应用程序设计 表 7.4 存储模式说明 存储模式 说 明 SMALL 默认的存储类型是data,参数及局部变量放入可直接寻址片内 RAM的用户区中(最大128字节)。另外所有对象(包括堆栈), 都必须嵌入片内RAM。栈长很关键,因为实际栈长依赖于函 数嵌套调用层数 COMPA CT 默认的存储类型是pdata,参数及局部变量放入分页的外部数 据存储区,通过@R0或@R1间接访问,栈空间位于片内数据 存储区中 LARGE 默认的存储类型是xdata,参数及局部变量直接放入片外数据 存储区,使用数据指针DPTR来进行寻址。用此数据指针进行 访问效率较低,尤其对两个或多个字节的变量,这种数据类 型的访问机制直接影响代码的长度
-第2?来单片如的官应用程秀设计 74MCS-51特殊功能寄存器(SFR)的C5定义 MCS-51单片机中,除了程序计数器PC和4组工作寄存器组 外,其它所有的寄存器均为特殊功能寄存器(SFR),分散在片内 RAM区的高128字节中,地址范围为80H-OFFH。SFR中有11个 寄存器具有位寻址能力,它们的字节地址都能被8整除,即字节 地址是以8或0为尾数的。 为了能直接访问这些SFR, Franklin c51提供了一种自主形式 的定义方法,这种定义方法与标准C语言不兼容,只适用于对 MCS-51系列单片机进行C语言编程。特殊功能寄存器C51定义的 般语法格式如下: sfr sfr -name int constant
第7章 单片机的C语言应用程序设计 7.4 MCS-51特殊功能寄存器(SFR)的C51定义 MCS-51单片机中,除了程序计数器PC和4组工作寄存器组 外,其它所有的寄存器均为特殊功能寄存器(SFR),分散在片内 RAM区的高128字节中,地址范围为80H~0FFH。SFR中有11个 寄存器具有位寻址能力,它们的字节地址都能被8整除,即字节 地址是以8或0为尾数的。 为了能直接访问这些SFR,Franklin C51提供了一种自主形式 的定义方法,这种定义方法与标准C语言不兼容,只适用于对 MCS-51系列单片机进行C语言编程。特殊功能寄存器C51定义的 一般语法格式如下: sfr sfr-name = int constant;
-第2?来单片如的官应用程秀设计- "sf"是定义语句的关键字,其后必须跟一个MSC-51单片机 真实存在的特殊功能寄存器名,"="后面必须是一个整型常数, 不允许带有运算符的表达式,是特殊功能寄存器"sf-name"的字 节地址,这个常数值的范围必须在SFR地址范围内,位于 0x80~0xFF。 例如: sfr scon=0x98;/徠*串口控制寄存器地址98H* sir tmod=0x89;/*定时器计数器方式控制寄存器地址89H*
第7章 单片机的C语言应用程序设计 "sfr"是定义语句的关键字,其后必须跟一个MSC-51单片机 真实存在的特殊功能寄存器名,"="后面必须是一个整型常数, 不允许带有运算符的表达式,是特殊功能寄存器"sfr-name"的字 节地址,这个常数值的范围必须在SFR地址范围内,位于 0x80~0xFF。 例如: sfr SCON=0x98; /* 串口控制寄存器地址98H */ sfr TMOD=0x89; /* 定时器/计数器方式控制寄存器地址89H */
-第2?来单片如的官应用程秀设计- MCS-51系列单片机的特殊功能寄存器的数量与类型不尽相同, 因此建议将所有特殊的"sf"定义放入一个头文件中,该文件应包括 MCS-51单片机系列机型中的SFR定义。C51编译器的"reg51.h"头文 件就是这样一个文件 在新的MCS-51系列产品中,SFR在功能上经常组合为16位值, 当SFR的高字节地址直接位于低字节之后时,对16位SFR的值可以 直接进行访问。例如52子系列的定时器/计数器2就是这种情况。为 了有效地访问这类SFR,可使用关键字"sf16"来定义,其定义语句 的语法格式与8位SFR相同,只是"="后面的地址必须用16位SFR的 低字节地址,即低字节地址作为"sf16"的定义地址
第7章 单片机的C语言应用程序设计 MCS-51系列单片机的特殊功能寄存器的数量与类型不尽相同, 因此建议将所有特殊的"sfr"定义放入一个头文件中,该文件应包括 MCS-51单片机系列机型中的SFR定义。C51编译器的"reg51.h"头文 件就是这样一个文件。 在新的MCS-51系列产品中,SFR在功能上经常组合为16位值, 当SFR的高字节地址直接位于低字节之后时,对16位SFR的值可以 直接进行访问。例如52子系列的定时器/计数器2就是这种情况。为 了有效地访问这类SFR,可使用关键字"sfr16"来定义,其定义语句 的语法格式与8位SFR相同,只是"="后面的地址必须用16位SFR的 低字节地址,即低字节地址作为"sfr16"的定义地址