注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Leo

笑:胸怀,傲:实力,才能笑傲江湖。

 
 
 

日志

 
 

8051特殊功能寄存器(SFR)及其Cx51的定义  

2011-03-19 21:12:53|  分类: 大学留笔 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1、为了能直接访问这些特殊功能寄存器SFR、KEIL 51提供了一种自主形式的定义法,这种定义方法与标准C语言不兼容,只适用于51单片机系列的C语言编程。

8051特殊功能寄存器(SFR)及其Cx51的定义 - leo - Leo

 

  定义关键字“sfr”,

     sfr  sfr_name ' = ' int constant ' ; '

    例如: sfr SCOM = 0X98;

                sfr TMOD = 0X89;

   注意:sfr后面必须跟一个特殊功能寄存器名,“=”后面的地址必须是常数,不允许带有运算符的表达式,这个的范围必须在寄存器的地址范围内,位于0x80~~~0xFF之间。

2、在SFR的16为数据的访问时,在新的51系列中SFR在功能上经常组合为16位值,但SFR的高端地址直接位于其低端地址之后时,对SFR16位可以直接访问。这时要定义关键字“sfr16”.。

      如:sfr16  T2=0xCC,                         //定时器2:T2第八位地址=0CCH; 高八位地址=0CDH;

3、在特殊为(sbit)的定义,像SFR一样不与标准C兼容,使用关键字“sbit ” 可以访问位寻址对象。与SFR定义一样,用关键字“sbit ”定义某些特殊位,并接受任何符号名,“=”号后将绝对地址赋予变量名。有三种方法:

   (1)、第一种方法:sfr_mane ' ^ ‘ int_constant

                当特殊功能寄存器的地址为字节(8位)时,可以使用这种方法。sfr_name必须为已定义的SFR的名字,。‘ ^ ’后的语句定义了基地址上的特殊位的位置。如:

                 sfr PSW=0XD0;

                 sfr OV = PSW^2;

                 sfr  CY = PSW^7;                (定义CY 位地址。)

     ( 2)、第二种方法:sfr_constant ^ int_constant

            这种方法以一个整常数作为基地址,该值必须在0x80~~~~0xFF之间,并能被8整除,确定位置的方法如上:

             sbit OV = 0XD0 ^ 2;

             sbit CY = 0xD0 ^ 7;

     (3)、第三种方法:int_constant

                这种方法是将绝对的地址赋给变量,地址必须位于0x80~~~0xFF之间。

                 如:sbit OV = 0xD2;

                        sbit  CY = 0xD7;

特殊功能位代表了一个独立的定义类,不能与其他的定义和位域互换。

 

          

  评论这张
 
阅读(2126)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017