- 1、本文档共33页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章80C51单片机C语言程序设计单片机原理及应用(C51编程)李全利高教
函数返回值使用的寄存器 存储类型在R1,高字节在R2,低字节在R3 R1、R2、R3 通用指针 32位IEEE格式 R4、R5、R6、R7 float 最高字节在R4,最低字节在R7 R4、R5、R6、R7 long、unsigned long 高字节在R6,低字节在R7 R6、R7 int、unsigned int、2字节指针 R7 char、unsigned char、1字节指针 进位标志位 C bit 说 明 寄存器 返回数据的类型 * * 第4章 80C51单片机C语言程序设计 C51对标准C的扩展 4.1 C51的指针 4.2 C51的函数 4.3 C51与汇编程序的接口 4.4 * * 4.1 C51对标准C的扩展 4.1.1 C51的数据类型 数据是计算机操作的对象,包含常量和变量。 C51扩展了ANSI C,以适应单片机的结构和特点。 数据类型就是数据的格式,它决定数据的值域范围、占用存储单元的个数及能参与哪种运算。 编写C51程序,先要确定数据类型、储存分区 应尽可能采用无符号格式(unsigned) C51中,多字节数据采用“大端对齐”格式 数据起始字节置于高地址端 * * 数据类型 长度(位) 取值范围 字符型 signed char 8 -128~127 unsigned char 8 0~255 整 型 signed int 16 -32768~32767 unsigned int 16 0~65535 长整型 signed long 32 -21474883648~21474883647 unsigned long 32 0~4294967295 浮点型 float 32 ±1.75494E-38~±3.402823E+38 位 型 bit 1 0,1 sbit 1 0,1 访问SFR sfr 8 0~255 sfr16 16 0~65535 C51数据类型表 * * bit定义位变量名字,编译器在位寻址区自动分配该位变量; Sbit声明位变量的名字和地址,地址是确定的(SFR区确定位、位寻址区变量的某确定位)。 几点说明: unsigned char bdata ibase; sbit mybitf = ibase^0; sbit CY = 0xD7; bit flag1 = 0; 含义:赋值 含义:声明 * * 4.1.2 C51数据的存储分区 存储器类型 长度(位) 对应单片机存储器 bdata 1 片内 RAM 位寻址区,共128位。(亦能字节访问) data 8 直接寻址,共128字节。 idata 8 间接寻址,共256字节。 pdata 8 片外 RAM 分页间址,共256字节。(MOVX @Ri) xdata 16 间接寻址,共64k字节。(MOVX @DPTR) code 16 ROM 间接寻址,共64k字节。(MOVC A,@A+DPTR) 经常使用的变量应该置于片内RAM中,要用bdata、data、idata来定义 不常使用的变量或规模较大的变量应该置于片外RAM中,要用pdata、xdata来定义 bit bdata flags; //位变量flags定位在片内位寻址区 char data var; //字符变量var定位在片内RAM区 float idata x,y; //实型变量x,y定位在片内间址RAM区 unsigned char pdata z; //无符号字符变量z定位在片外分页间址RAM区 * * 编译模式 默认 存储分区 特 点 SMALL data 小模式。 变量默认在片内RAM。空间小,速度块。 COMPACT pdata 紧凑模式。变量默认在片外RAM的页(256字节,页号由P2口决定)。 LARGE xdata 大模式。 变量默认在片外RAM的64KB范围。空间大,速度慢。 编译模式默认的变量存储分区 4.1.3 C51的编译模式 未对变量存储分区定义时,C51编译器采用默认存储分区。例如: char var; //SMALL模式时,var定位于data存储区 //COMPACT模式时,var定位于pdata存储区 //LARGE模式时,var定位于xdata存储区 * * 4.1.4 用_at_定义变量绝对地址 用关键字“_at_”定义变量存放的首地址 idata int y _at_ 0x30; // idata区域整型变量y的首地址为0x30 例如: 又如: xdata char string[20] _at_ 0x3000; //xdata中字符型数组string的首地址为0x3000 注意,C51编程时不要轻易使
文档评论(0)