KeilC特殊功能寄存器和位定义.ppt

上传人:tia****nde 文档编号:11496885 上传时间:2020-04-25 格式:PPT 页数:8 大小:201.46KB
返回 下载 相关 举报
KeilC特殊功能寄存器和位定义.ppt_第1页
第1页 / 共8页
KeilC特殊功能寄存器和位定义.ppt_第2页
第2页 / 共8页
KeilC特殊功能寄存器和位定义.ppt_第3页
第3页 / 共8页
点击查看更多>>
资源描述
使用关键字sfr和sfr16可以直接对51单片机的特殊寄存器进行定义,格式如下:sfr定义的名字=特殊功能寄存器地址;Sfr16定义的名字=特殊功能寄存器地址;例如:sfrP1=0 x90;/定义P1I/O口,其地址90Hsfr关键字后面是一个要定义的名字,可任意选取,但要符合标识符的命名规则。等号后面必须是地址常数,不允许有带运算符的表达式,而且该常数必须在特殊功能寄存器的地址范围之内(80HFFH)。,一、sfr和sfr16的使用,在单片机的C语言程序设计中,可以通过关键字sfr来定义所有特殊功能寄存器,从而在程序中直接访问它们,例如:sfrP1=0 x90;/特殊功能寄存器P1的地址是90H对应P1口的8个I/O引脚在程序中就可以直接使用P1这个特殊功能寄存器了,如:P1=0 x00;/将P1口的8位I/O口全部清0C语言中,还可以通过关键字sbit来定义特殊功能寄存器中的可寻址位,如:sbitP1_0=P10;通常情况下,这些特殊功能寄存器已经在头文件reg51.h中定义了,只要在程序中包含了该头文件,就可以直接使用已定义的特殊功能寄存器。如果没有头文件reg51.h,或者该文件中只定义了部分特殊功能寄存器和位,用户也可以在程序中自行定义。,sfr16用来定义16位特殊功能寄存器,如8052的T2定时器,可以定义为:sfr16T2=0 xCC;/这里定义8052定时器2,地址为T2L=CCH,T2H=CDH用sfr16定义16位特殊功能寄存器时,等号后面是它的低位地址,高位地址一定要位于物理低位地址之上。注意的是不能用于定时器0和1的定义。?sfr16占用两个内存单元,值域为065535。sfr16和sfr一样用于操作特殊功能寄存器,所不一样的是它用于操作占两个字节的寄存器,如定时器T0和T1。,二、sbit和bit的使用,51单片机的内部RAM中,20H2FH为位操作区域,20H的最低位为00H,2FH的最高位为7FH,位地址的范围是00H07FH,共16*8=128位,可以对每一位进行独立操作。特殊功能寄存器中,对于字节地址能被8整除的寄存器,也可进行位寻址的地址,其位地址从80H开始。特殊功能寄存器的地址和最低位的位地址相同,比如P0口的地址是80H,那么P0口的最低位的位地址也是80H,次低位是81H,最高位的地址是87H,所以P0口的口地址80H与最低位的位地址80H,在物理结构上是完全不同的。,1、bit和intchar差不多,只不过char=8位,bit=1位。都是变量,编译器在编译过程中自动分配地址。除非你指定,否则这个地址是随机的。这个地址是位寻址区。bit只有0和1两种值2、sbit(静态地址位定义)是单片机c语言中的一种扩充数据类型,利用它能访问芯片内部的RAM中的可寻址位(20H2FH)或特殊功能寄存器中的可寻址位。一旦用了sbitxxx=REGE6这样的定义,这个sbit变量就确定地址了。sbit大部分是用在专用寄存器中的,方便对寄存器的某位进行操作。3、bit位标量bit位标量同样是C51编译器的一种扩充数据类型,利用它可定义一个位标量,但不能定义位指针,也不能定义位数组。它的值是一个二进制位,不是0就是1,类似一些高级语言中的Boolean类型中的True和False。,sbit可定义位寻址对象,用sbit定义的位地址必须是专用寄存器,字节地址必须位于80H-FFH之间,方法如下:(1)sbit位变量名位地址sbitP1_1=0 x91;是把位的绝对地址赋给位变量(2)sbit位变量名特殊功能寄存器名位位置sftP1=0 x90;先定义一个特殊功能寄存器名sbitP1_1=P11;再指定位变量名所在的位置(3)sbit位变量名字节地址位位置如:sbitP1_1=0 x901;(3)和(2)其实是一样的,只是把特殊功能寄存器的位址直接用常数表示。,在C51存储器类型中提供一个bdata的存储器类型,是指可位寻址的数据存储器,位于单片机的可位寻址区中,可以将要求可位寻址的数据定义为bdata,如:ucharbdataib;/在位寻址区定义无符号字符变量ibsbitib7=ib7/用关键字sbit定义位变量ib7Intbdataab2;/在可位寻址区定义数组ab2sbitab12=ab112;/定义ab12为数组ab1中的第12位操作符“”后面的位位置的最大值取决于指定的基址类型,char0-7,int0-15,long0-31。,sfrP1=0 x90;/这里没有使用预定义文件,而是自己定义特殊寄存器。sbitP1_0=P10;sbitP1_1=0 x91;sbitP1_7=0 x907;/这里分别定义P1端口和P10,P11,P17引脚,之前我们使用的预定义文件其实就是这个作用。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!