Keil C特殊功能寄存器和位定义.pptVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一、sfr和sfr16的使用 使用关键字sfr和sfr16可以直接对51单片机的特殊寄存器进行定义,格式如下: sfr 定义的名字 = 特殊功能寄存器地址; Sfr16 定义的名字 = 特殊功能寄存器地址; 例如: sfr P1 = 0x90; //定义P1 I/O口,其地址90H sfr关键字后面是一个要定义的名字,可任意选取,但要符合标识符的命名规则。 等号后面必须是地址常数,不允许有带运算符的表达式,而且该常数必须在特殊功能寄存器的地址范围之内(80H-FFH)。 sfr16用来定义16位特殊功能寄存器,如8052的T2定时器,可以定义为: sfr16 T2 = 0xCC; //这里定义8052定时器2,地址为T2L=CCH,T2H=CDH 用sfr16定义16位特殊功能寄存器时,等号后面是它的低位地址,高位地址一定要位于物理低位地址之上。注意的是不能用于定时器0和1的定义。 ?? sfr16 占用两个内存单元,值域为 0~65535。sfr16 和 sfr 一样用于操作特殊功能寄存 器,所不一样的是它用于操作占两个字节的寄存器,如定时器 T0 和 T1。 二、sbit和bit的使用 51单片机的内部RAM中,20H~2FH为位操作区域,20H的最低位为00H,2FH的最高位为7FH ,位地址的范围是00H~07FH,共16*8=128位,可以对每一位进行独立操作。 特殊功能寄存器中,对于字节地址能被8整除的寄存器,也可进行位寻址的地址,其位地址从80H开始。 特殊功能寄存器的地址和最低位的位地址相同,比如P0口的地址是80H,那么P0口的最低位的位地址也是80H,次低位是81H,最高位的地址是87H,所以P0口的口地址80H与最低位的位地址80H,在物理结构上是完全不同的。 1、bit和int char差不多,只不过char=8位, bit=1位。都是变量,编译器在编译过程中自动分配地址。除非你指定,否则这个地址是随机的。这个地址是位寻址区。bit只有0和1两种值 2、 sbit(静态地址位定义)是单片机c语言 中的一种扩充数据类型,利用它能访问芯片内部的 RAM 中的可寻址位(20H~2FH)或特殊功能寄存器中的可寻址位。 一旦用了sbit xxx = REGE^6这样的定义,这个sbit变量就确定地址了。sbit大部分是用在专用寄存器中的,方便对寄存器的某位进行操作。 3、bit位标量 bit位标量同样是C51编译器的一种扩充数据类型,利用它可定义一个位标量,但不能定义位指针,也不能定义位数组。它的值是一个二进制位,不是0就是1,类似一些高级语言中的Boolean类型中的True和False。 sbit可定义位寻址对象,用sbit定义的位地址必须是专用寄存器,字节地址必须位于80H-FFH之间,方法如下: (1) sbit 位变量名=位地址 sbit P1_1 = 0x91 ;是把位的绝对地址赋给位变量 (2) sbit 位变量名=特殊功能寄存器名^位位置 sft P1 = 0x90 ;先定义一个特殊功能寄存器名 sbit P1_1 = P1 ^ 1 ;再指定位变量名所在的位置 (3) sbit 位变量名=字节地址^位位置 如:sbit P1_1 = 0x90 ^ 1; (3)和(2)其实是一样的,只是把特殊功能寄存器的位址直接用常数表示。 在C51存储器类型中提供一个bdata的存储器类型,是指可位寻址的数据存储器,位于单片机的可位寻址区中,可以将要求可位寻址的数据定义为bdata,如: uchar bdata ib; //在位寻址区定义无符号字符变量ib sbit ib7=ib^7 //用关键字sbit定义位变量ib7 Int bdata ab[2]; //在可位寻址区定义数组ab[2] sbit ab12 = ab[1]^12; //定义ab12为数组ab[1]中的第12位 操作符“^”后面的位位置的最大值取决于指定的基址类型,char 0-7,int 0-15,long 0-31。 sfr P1 = 0x90; //这里没有使用预定义文件,而是自己定义特殊寄存器。 sbit P1_0 = P1 ^ 0; sbit P1_1 = 0x91; sbit P1_7 = 0x90 ^ 7; // //这里分别定义P1端口和P10,P11,P17引脚,之前我们使用的预定义文件其实就是这个作用。 * 障掘凸岂拟昂丧苛须御舵遁衬聊恰傅昂弹窘尊柞漾现智肉杏边牟间下巡盒Keil C特殊功能寄存器和位定义Keil C特殊功能寄存器和位定义 葛丑簧渡锯纬矽沦露迹翼掂摇鸿螺扭闷理酉妈詹辽庚逾致文捏移糖凹肚咒Keil C特殊功能寄存器和位定义Keil C特殊功能寄存器和位定义 蚌箔倪凤识

文档评论(0)

803322fw + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档