c语言中的sfr16,Keil C51对C语言的关键词扩展之十六:sfr16
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相关推荐
- Keil C51对C语言的关键词扩展之十五: reentrant
reentrant声明的函数为可重入函数.可重入的函数能够被多个进程同时调用.可重入函数在执行时,另外的进程可以中断当前执行的函数,并且调用同一个函数.正常情况下,C51程序中的函数不能被递归地调用, ...
- c语言关键字 interrupt,Keil C51对C语言的关键词扩展之十四: interrupt
8051/8052系列单片机标准向量表: 中断号描述地址 0外部中断00003h 1定时/计数器0000Bh 2外部中断10013h 3定时计数器1001Bh 4串口0023h 5定时计数器2(805 ...
- c语言定义92bit位变量,Keil C51对C语言的关键词扩展之四: bit
bit关键词可定义位变量,可用于函数参数.返回值类型. static bit done_flag = 0; /* 位变量*/ bit testfunc ( /* 返回 ...
- keil p0 0c语言不了,Keil C51对C语言的关键词扩展之十三: sfr
sfr用来定义特殊功能寄存器.用法如下: sfr name = address; name 为寄存器名字 address 为寄存器的地址 示例: sfr P0 = 0x80; /* P0口,地址为0x ...
- c语言中point的用法_关于C语言Switch语句,先学这些技巧够不够?
一.C语言中switch的用法 1.switch后面括弧内的[表达式],ANSI标准允许它为任何类型: 2.当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,否则,就 ...
- c语言中int的取值范围_c语言入门(1)
c语言入门 C语言一经出现就以其功能丰富.表达能力强.灵活方便.应用面广等特点迅速在全世界普及和推广.C语言不但执行效率高而且可移植性好,可以用来开发应用软件.驱动.操作系统等.C语言也是其它众多高级 ...
- c语言中3%3e2%3e1的值,C语言--ch2--数据类型和表达式.ppt
C语言--ch2--数据类型和表达式 第二章 数据类型和表达式 2.1 数据类型 在C语言中,数据类型可分为:基本数据类型,构造数据类型,指针类型,空类型四大类. 其中基本数据类型可分为: 整型:整数 ...
- c语言中eles后面分号的作用,C语言 if else 语句详细讲解
前面我们看到的代码都是顺序执行的,也就是先执行第一条语句,然后是第二条.第三条--一直到最后一条语句. 但是对于很多情况,顺序结构的代码是远远不够的,比如一个程序限制了只能成年人使用,儿童因为年龄不够 ...
- c语言中什么函数可以作为虚函数,C++语言中的“虚函数”就像C语言中的指针,必须要弄懂的...
上一节较为详细的讨论了C++语言中基类被派生类继承过程中的内存模型,尤其较为详细的分析了虚函数及其虚表.虚表指针在内存中是如何分布,如何存储的,这对于理解C++语言中的"动态绑定" ...
最新文章
- .NET : 再谈谈XML中的命名空间问题
- 你的 Redis 为什么变慢了?
- ua获取手机型号_取证人员为什么很难从移动设备上获取电子数据证据?
- boost::test模块装饰器数据测试用例测试
- Windows10安装TeXlive和TeXstudio
- mysql 异步复制建立过程_mysql生产环境高可用---基于GTID异步复制项目实施
- 《大数据》杂志——大数据容灾备份技术挑战和增量备份解决方案
- 【JAVASCRIPT】处理表单事件
- java代码实际_Java 8会给你的代码带来什么:一个实际的例子
- OpenShift 4 - 通过设置SDN的NetworkPolicy定义Pod访问策略
- Python学习笔记(五)—LOOP 循环
- Android的onCreateOptionsMenu()创建菜单Menu详解
- Feed系统架构资料收集
- 阻止计算机访问注册表,电脑中毒了,注册表打不开了,提示注册表已被管理员禁止,这该怎么办...
- linux下自动删除文件夹,如何在Linux中自动删除或清理/tmp文件夹内容?
- 《用户至上:用户研究方法与实践(原书第2版)》一2.1 概述
- [聊天机器人]:开源ChatterBot工作原理
- vue接收后台返回的验证码图片
- Java实现 LeetCode 152 乘积最大子序列
- Spring Batch之读数据—读混合记录文件(三十)