sfr16定义一个16位的特殊功能寄存器:

sfr16 name = address;

name

16位特殊功能寄存器名称

address

16位特殊功能寄存器地址 一些8051系列产品拥有16位的特殊功能寄存器,比如8052使用地址0XCC、0XCD表示定时/计数器2的低字节、高字节。C51编译器提供sfr16数据类型以便将两个8位特殊功能寄存器当做一个16位寄存器来访问。

sfr16只能在小端模式下使用,低字节的地址作为16位特殊功能寄存器的地址:

sfr16 T2 = 0xCC; /* Timer 2: T2L 0CCh, T2H 0CDh */

sfr16 RCAP2 = 0xCA; /* RCAP2L 0CAh, RCAP2H 0CBh */ sfr16在使用时遵循与sfr相同的规则,任意符号名称都能在声明时使用,=后面的地址必须为数字常量,不允许使用符号操作表达式来指定地址。

大部分的16位特殊功能寄存器是有两个连续的地址组成的。

一个16位的特殊功能寄存器有4种可能的配置:

LSB 最先读, LSB 最后写 (sfr16 采用此种).

MSB 最先读,LSB 最后写

LSB 最先读 ,MSB 最后写

MSB 最先读 ,MSB最后写 sfr16声明的16位特殊功能寄存器,其低字节位于低地址,高字节位于高地址,比如低字节地址为0X9E,高字节地址为0X9F。

C51编译器生成的代码在对16位特殊功能寄存器执行写操作时,总是先写高地址,再写低地址。实际使用时,须注意这种写的次序,是否符合我们的要求。

sfr16类型的定义必须在函数体外部。

我们可以使用sfr来分别定义一个16位特殊功能寄存器的两个字节,这样在写的时候,我们就不用考虑sfr16那种谁先谁后的次序了。

c语言中的sfr16,Keil C51对C语言的关键词扩展之十六:sfr16相关推荐

  1. Keil C51对C语言的关键词扩展之十五: reentrant

    reentrant声明的函数为可重入函数.可重入的函数能够被多个进程同时调用.可重入函数在执行时,另外的进程可以中断当前执行的函数,并且调用同一个函数.正常情况下,C51程序中的函数不能被递归地调用, ...

  2. c语言关键字 interrupt,Keil C51对C语言的关键词扩展之十四: interrupt

    8051/8052系列单片机标准向量表: 中断号描述地址 0外部中断00003h 1定时/计数器0000Bh 2外部中断10013h 3定时计数器1001Bh 4串口0023h 5定时计数器2(805 ...

  3. c语言定义92bit位变量,Keil C51对C语言的关键词扩展之四: bit

    bit关键词可定义位变量,可用于函数参数.返回值类型. static bit done_flag = 0;    /* 位变量*/ bit testfunc (               /* 返回 ...

  4. keil p0 0c语言不了,Keil C51对C语言的关键词扩展之十三: sfr

    sfr用来定义特殊功能寄存器.用法如下: sfr name = address; name 为寄存器名字 address 为寄存器的地址 示例: sfr P0 = 0x80; /* P0口,地址为0x ...

  5. c语言中point的用法_关于C语言Switch语句,先学这些技巧够不够?

    一.C语言中switch的用法 1.switch后面括弧内的[表达式],ANSI标准允许它为任何类型: 2.当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,否则,就 ...

  6. c语言中int的取值范围_c语言入门(1)

    c语言入门 C语言一经出现就以其功能丰富.表达能力强.灵活方便.应用面广等特点迅速在全世界普及和推广.C语言不但执行效率高而且可移植性好,可以用来开发应用软件.驱动.操作系统等.C语言也是其它众多高级 ...

  7. c语言中3%3e2%3e1的值,C语言--ch2--数据类型和表达式.ppt

    C语言--ch2--数据类型和表达式 第二章 数据类型和表达式 2.1 数据类型 在C语言中,数据类型可分为:基本数据类型,构造数据类型,指针类型,空类型四大类. 其中基本数据类型可分为: 整型:整数 ...

  8. c语言中eles后面分号的作用,C语言 if else 语句详细讲解

    前面我们看到的代码都是顺序执行的,也就是先执行第一条语句,然后是第二条.第三条--一直到最后一条语句. 但是对于很多情况,顺序结构的代码是远远不够的,比如一个程序限制了只能成年人使用,儿童因为年龄不够 ...

  9. c语言中什么函数可以作为虚函数,C++语言中的“虚函数”就像C语言中的指针,必须要弄懂的...

    上一节较为详细的讨论了C++语言中基类被派生类继承过程中的内存模型,尤其较为详细的分析了虚函数及其虚表.虚表指针在内存中是如何分布,如何存储的,这对于理解C++语言中的"动态绑定" ...

最新文章

  1. .NET : 再谈谈XML中的命名空间问题
  2. 你的 Redis 为什么变慢了?
  3. ua获取手机型号_取证人员为什么很难从移动设备上获取电子数据证据?
  4. boost::test模块装饰器数据测试用例测试
  5. Windows10安装TeXlive和TeXstudio
  6. mysql 异步复制建立过程_mysql生产环境高可用---基于GTID异步复制项目实施
  7. 《大数据》杂志——大数据容灾备份技术挑战和增量备份解决方案
  8. 【JAVASCRIPT】处理表单事件
  9. java代码实际_Java 8会给你的代码带来什么:一个实际的例子
  10. OpenShift 4 - 通过设置SDN的NetworkPolicy定义Pod访问策略
  11. Python学习笔记(五)—LOOP 循环
  12. Android的onCreateOptionsMenu()创建菜单Menu详解
  13. Feed系统架构资料收集
  14. 阻止计算机访问注册表,电脑中毒了,注册表打不开了,提示注册表已被管理员禁止,这该怎么办...
  15. linux下自动删除文件夹,如何在Linux中自动删除或清理/tmp文件夹内容?
  16. 《用户至上:用户研究方法与实践(原书第2版)》一2.1 概述
  17. [聊天机器人]:开源ChatterBot工作原理
  18. vue接收后台返回的验证码图片
  19. Java实现 LeetCode 152 乘积最大子序列
  20. Spring Batch之读数据—读混合记录文件(三十)

热门文章

  1. 中科创达怎么样-融合智能工业视觉平台再获奖项
  2. Java知识点总结《努力篇上》
  3. AtCoder Beginner Contest 172 总结
  4. bugku{web writeup笔记}
  5. OpenLayers基础:多方底图
  6. 2019年二季度书单
  7. 华为鲲鹏HCIA考试-练习03
  8. 【区块链与密码学】第9-4讲:基于PKI的群签名算法 I
  9. 目录打开显示提示文件或目录损坏且无法读取、文件或目录损坏且无法读取的破解之道
  10. linux ftp 解压缩命令,常用五种Linux环境中的压缩和解压命令示范 | OPS技术联盟