当前位置: 首页 > news >正文

bit sbit sfr的区别

1.bit 和 sbit 都是 C51 扩展的变量类型。

bit 和 int char 之类的差不多,只不过 char=8 位, bit=1 位而已。都是变量,编译器在编译过程中分配地址。除非你指定,否则这个地址是随机的
这个地址是整个可寻址空间,RAM+FLASH+扩展空间。bit 只有 0 和 1 两种值。
sbit 是对应可位寻址空间的一个位,可位寻址区:20H~2FH。一旦用了 sbit  xxx = REGE^6 这样的定义,这个 sbit 量就确定地址了。sbit 大部分是
用在寄存器中的,方便对寄存器的某位进行操作的。

3.sfr 特殊功能寄存器

sfr 也是一种扩充数据类型,点用一个内存单元,值域为 0~255。利用它可以访问 51 单片机内部的所有特殊功能寄存器。如用 sfr P1 = 0x90 这一句
定 P1 为 P1 端口在片内的寄存器,在后面的语句中我们用以用 P1 = 255(对 P1端口的所有引脚置高电平)之类的语句来操作特殊功能寄存器。

 sfr 是定义 8 位的特殊功能寄存器. 

sfr16 则是用来定义 16 位特殊功能寄存器,

如 8052 的 T2 定时器,可以定义为:sfr16 T2 = 0xCC;  //这里定义 8052 定时器 2,地址为 T2L=CCH,T2H=CDH
用 sfr16 定义 16 位特殊功能寄存器时,等号后面是它的低位地址,高位地址一定要位于物理低位地址之上.注意的是不能用于定时器 0 和 1 的定义.


sbit 的用法有三种:
第一种方法:sbit 位变量名=地址值
第二种方法:sbit 位变量名=SFR 名称^变量位地址值
第三种方法:sbit 位变量名=SFR 地址值^变量位地址值


data 表明数据在片内数据存储区;
xdata 表明数据在片外数据存储区;
code 表明数据在程序存储区;
extern 定义的数据是在另外一个模块,当引用其它文件中的变量时要加上 extern。extern的重要意义在于表明要定义的数据已经在其他地方定义过, 此处只是引用, 所以编译器不会另外开辟内存。
 

相关文章:

  • 【Pandas】pandas DataFrame squeeze
  • RISC-V物联网关,支持鸿蒙,T-Thread实时系统
  • Android 中 解析 XML 字符串的几种方式
  • 如何使用 Dockerfile 创建自定义镜像
  • 轻量级web开发框架之Flask web开发框架学习:get请求数据的发送
  • 国产芯片能在服务器领域替代Intel(经验总结贴)
  • phpstudy无法启动mysql,一启动就关闭,完美解决
  • WIFI原因造成ESP8266不断重启的解决办法
  • 【Linux驱动开发 ---- 4.2_平台设备(Platform Devices)概述】
  • 电影感户外柔和光线人像街拍摄影后期Lr调色教程,手机滤镜PS+Lightroom预设下载!
  • 【内存】Linux 内核优化实战 - vm.max_map_count
  • Java枚举类如何避免反射攻击和序列化攻击
  • 零基础RT-thread第四节:电容按键
  • 自动化性能回退机制——蓝绿部署与灰度发布
  • Electron (02)集成 SpringBoot:服务与桌面程序协同启动方案
  • 回文链表C++
  • 设计模式精讲 Day 8:组合模式(Composite Pattern)
  • Transformer实战——Hugging Face环境配置与应用详解
  • 什么是seata
  • node.js在vscode的配置
  • 南宁新站seo/百度高级检索入口
  • 网站建设管理专员/360提交网站收录入口
  • 如何做网站建设方案/哪里做网站便宜
  • 黑客零基础入门/seo优化服务价格
  • 常州网站建设公司排名/长沙seo招聘
  • 手机开发安卓app/合肥seo招聘