第3章__MCS-51单片机程序设计.ppt

  1. 1、本文档共61页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
10.3.3 变量说明举例 data char var; /*字符变量var定位在片内数据存贮区*/ char code MSG[]=″PARAMETER:″; /*字符数组MSG[ ]定位在程序存 贮区*/ unsigned long xdata array[100]; /*无符号长型数组定位在片外RAM区, 每元素占4bytes*/ float idata x,y,z; /*实型变量x,y,z,定位在片内用间址访问的内部 RAM区*/ bit lock; /*位变量Lock定位在片内RAM可位寻址区*/ unsigned int pdata sion; /*无符号整型变量sion定位在分页的外部RAM*/ unsigned char xdata vector[10][4][4] /*无符号字符型三维数组, 定 位在片外RAM区*/ sfr P0=0x80; /*定义P0口,地址为80H*/ char bdata flags; /*字符变量flags定位在可位寻址内部RAM区*/ sbit flag0=flags^0; /*定义flag0为flags.0 */ 如果在变量说明时略去存贮器类型标志符,编译器会自动选择默认的存贮器类型。默认的存贮器类型由控制指令SMALL、COMPACT和LARGE限制。例如如果声明char var,则默认的存贮器模式为SMALL,var放在data存贮区;如果使用COMPACT模式,var放入idata存贮区 ;在使用LARGE模式的情况下,var被放入外部数据存贮区(xdata存贮区)。 ? 10.3.4指针变量说明举例 long xdata *px; /*指针px指向long型xdata区(每个数据占四个单元,指针自身在默认存贮器(如不指定编译模式在data区),指针长度为2个字节*/ char xdata *data pd;/*指针pd指向字符型xdata区,自身在data区,长度2字 节*/ data char xdata *pd; /*与上例等效*/ data int *pn;(和int *data pn及intr*pn等效) /*定义一个类型为int型的通 用型指针,指针自身在data区长度为3字节*/ 在上例的指针声明中包含如下几个内容: 1) 指针变量名(如px)前面冠以“*”,表示px为指针型变量,此处*不带取内容之意。 2) 指针指向的存贮类型,即指向哪个存贮区,它决定了指针本身的长度(见表10.1)。存贮类型声明的位置在数据类型和指针名(如*px)之间,如无次项声明,则此指针型变量为通用型。 ??? 3) 指针指向的存贮区的数据类型,即被指向的存贮区以多少个单元作一个数据单位,当程序通过指针对该区操作时,将按此规定的单元个数的内容作为一个数据操作。 4) 指针变量自身的存贮类型,即指针处于什么区与自身的长度无关,该声明可位于声明语句的开头,也可在“*”和变量名之间。此项由编译模式放在默认区,如无规定编译模式,通常在data区。 10.4 C51对SFR、可寻址位、存储器和I/O口的定义 10.4.1 特殊功能寄存器SFR定义 C51提供了一种自主形式的定义方式,使用特定关键字sfr 如 sfr SCON=0x98; /*串行通信控制寄存器地址98H*/ sfr TMOD=0x89; /*定时器模式控制寄存器地址89H*/ sfr ACC=0xe0; /*A累加器地址E0H*/ sfr P1=0x90; /*P1端口地址90H*/ 定义了以后,程序中就可以直接引用寄存器名。 C51也建立了一个头文件reg51.h (增强型为reg52.h),在该文件中对所有的特殊功能寄存器的进行了sfr定义, 对特殊功能寄存器

文档评论(0)

考试资料文库 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档