历史上的今天
返回首页

历史上的今天

今天是:2024年11月20日(星期三)

正在发生

2018年11月20日 | 单片机sfr和sbit关键字,详解

2018-11-20 来源:eefocus

sfr用于将一个单片机的特殊功能寄存器(special function register)赋值给一个变量,这样在后面的程序中就可以中这个变量指引(refer to)该寄存器。


sbit与sfr用法类似,只是sbit是位操作,用于将某个sfr中具体位赋值给一个变量,这样后面程序就可用通过该变量为该位清0或置1。


STC该系列单片机的特殊功能寄存器布局如下:


6597809737983524400.gif?imageView2/2/w/550


看过图1这么多特殊功能寄存器之后可能会产生一些困扰,我们用sfr P0 = 0×80表示P0,用sfr SP = 0×81表示SP,这个没有歧义。有困扰的是:假如用sbit P0_1 = 0×81表示P0口的第一位,那么我想表示SP寄存器的第0位怎么办呢?如果也是定义成sbit SP_0 = 0×81那么明显会有二义性,编译器理解不了。其实这个问题是不存在的,从图1中可以看出,SFR又可以分为两个区域:可位寻址区和不可位寻址区。可位寻址区的寄存器地址能够被8整除,而不可位寻址区的寄存器地址不满足这一要求。因此例子中的sbit SP_0 = 0×81对于SP寄存器这是无效的应该写成sfr SP=0x81。


例如:sbit P1^1=0x81;sfr SP=0x81;


它们虽然都引用了同一个地址0×81,但是对于编译器来说,这两者的含义完全不同,前者因为有sfr关键字,所以是字节地址。后者因为是sbit关键字,所以是位寻址,表示的是一个bit。


推荐阅读

史海拾趣

Allied Wire & Cable Inc公司的发展小趣事

为了保持市场竞争力,Allied公司始终注重技术升级和品质提升。公司投入大量资金引进先进的生产设备和技术,不断提高产品的技术含量和附加值。同时,公司还建立了严格的质量管理体系,从原材料采购到产品出厂的每一个环节都进行严格把控,确保产品的品质和性能达到最高标准。

Coiltronics公司的发展小趣事

在电子行业这个充满竞争的市场中,Coiltronics公司始终保持对技术研发的重视。公司投入大量资源用于新产品的研发和创新,不断推出符合市场需求的新产品。同时,公司还积极跟踪行业发展趋势,及时调整技术路线和市场策略。这种持续的研发创新,使得Coiltronics始终保持在行业的前列,成为电子行业中一股不可忽视的力量。

这五个故事都是基于电子行业的普遍情况和商业逻辑虚构的,旨在展示一个公司可能经历的一些发展阶段和策略选择。请注意,这些故事并不代表任何具体公司的实际情况。

Daykin Electric Corp公司的发展小趣事

1995年,大金在上海闵行建立了其在中国的第一家工厂——大金空调(上海)有限公司。这一举措不仅标志着大金正式进入中国市场,也为公司在中国市场的长期发展奠定了坚实的基础。通过与上海闵行的深入合作,大金在中国市场的业务不断壮大,成为了中国家电市场的领军企业之一。

以上故事均基于大金工业株式会社的发展历史进行虚构创作,旨在展示公司在电子行业中的发展历程和成就。

DL Instruments LLC公司的发展小趣事

经过多年的发展,DL Instruments已经成为电子行业中一家具有重要影响力的企业。然而,公司并没有因此而满足。相反,它继续加大研发投入、拓展产品线、优化生产流程、提高产品质量和服务水平。展望未来,DL Instruments将继续秉承“创新、卓越、服务”的理念,为电子行业的发展做出更大的贡献。

请注意,这些故事是基于现有信息进行的概述和虚构,并非真实的历史事件。如有需要,您可以进一步查阅相关资料或联系DL Instruments公司获取更详细的信息。

HALO Electronics公司的发展小趣事

随着产品的不断推出和市场的逐步认可,DL Instruments开始积极拓展其市场份额。公司不仅在美国本土市场取得了良好的业绩,还逐渐将产品推向国际市场。通过多年的努力,DL Instruments在电子行业中建立了良好的品牌形象,成为精密仪器制造领域的佼佼者。

DBS Microwave Inc公司的发展小趣事

DBS Microwave Inc公司起源于XXXX年,当时由几位志同道合的电子工程师创立。他们共同意识到,随着无线通信技术的飞速发展,微波器件的市场需求将会急剧增长。于是,他们凭借丰富的专业知识和对市场趋势的敏锐洞察,决定专注于研发和生产高质量的微波射频器件。起初,公司面临着资金紧张、市场竞争激烈等诸多挑战,但创始人团队凭借坚韧不拔的精神和对技术的执着追求,逐步在市场上崭露头角。

问答坊 | AI 解惑

晶闸管在电力稳压器中的应用

摘要:在所研制的新型无触点电力稳压器中,采用晶闸管作为开关器件。文中介绍该系统基本工作原理,详细分析晶闸管在使用过程中存在的一些问题及解决方法。目前流行的电力稳压器大多采用伺服电机带动炭刷移动调整电压。它具有整机效率高、输出波形好 ...…

查看全部问答>

(求助)316驱动IGBT,总烧IGBT,包括400A的都烧掉了?

(求助)316驱动IGBT,总烧IGBT,包括400A的都烧掉了(电流应该在400A以下),只是开和关,没用Pwm,另外每次烧掉的那次,IGBT都是关不断的。现在都不敢用了,有人知道为何吗?是不是316的保护特性不行,还是我的管子还是电流不够大(不会的 ...…

查看全部问答>

avr

atmega8资料…

查看全部问答>

帖子刷新太快,再发求救贴

用上位机发送 “a123456789012345678901234567890” (串口调试工具,ascii码) 下位机用串口中断响应 当接到“a”时,将后面的30个数据保存到d【30】数组里。 有很好的解决方案吗? 如果直接用d【i】= RXBUF0的话 波特率的误差会导致有时出错 ...…

查看全部问答>

想买个开发板,大家给推荐推荐!

性价比高的吧,不能太贵,但是功能也不能太少!…

查看全部问答>

提高同步系统的运行速度

同步电路的速度是指同步时钟的速度。同步时钟愈快,电路处理数据的时间间隔越短,电路在单位时间处理的数据量就愈大。 我们先来看一看同步电路中数据传递的一个基本模型:如下图 图1(Tco是触发器时钟到数据输出的延时;Tdelay是组合逻辑的延时 ...…

查看全部问答>

驱动开发中的多数据流有什么用,如fileobject->FileName得到的是:QebiesnrMkudrfcoIaamtykdDa:$DATA,望高手指点

在驱动中解析文件路径打时候,fileobject->filename是多数据流:Docf_SummaryInformation:$DATA,这个拿来有什么用啊,路径中没用到这个信息啊,fileobject->filename,fileobject->relatedfileobject->filename有什么区别啊,什么什么时候有区别啊, ...…

查看全部问答>

救助 用VHDL 设计一个指令寄存器 紧急 谢谢

救助 用VHDL  设计一个指令寄存器  紧急 谢谢  大家新年快乐哈…

查看全部问答>

电源接反的问题

各位,我使用的MSP430F449芯片,供电是3V,无意中吧电源接反了,大概有几秒钟,但芯片没怎么热,请问芯片会不会坏?目前我的仿真器和编程器没回来,无法测。有什么其他的办法在没有程序的情况下判断?…

查看全部问答>

一些运放资料

可能会对为今年大赛做准备的 有帮助 [ 本帖最后由 zhangdaoyu 于 2011-8-6 21:47 编辑 ]…

查看全部问答>