说一说学51时候躺过的坑——bit和sbit的区别

发布时间:2023-01-06  

什么是bit和sbit?他们有什么区别?

在刚学51单片机的时候刚看到这个两个东西的时候就是一脸懵逼,脑子里面第一反应就是,这是什么鬼啊,C语言里面没说过啊,于是去B站看了51单片机视频教程,终于知道了这是一种数据类型,类似于int、float一样,但是某天自己写代码使用到的时候就一脸懵逼了,如下面函数返回值的类型应该怎么决定?为什么必须要这样?

函数返回值是应该这样写呢?

还是应该这样写?

于是,好奇的我两种情况都试了试,但是事实却是试试就逝世

试第二种的时候编译器报错了

这又是什么情况?难度两个不一样吗?

于是查了一下资料


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

bit

bit编译时分配空间

sfr(特殊功能寄存器)的bit。SFR是系统指定的内存地址。

bit 动态分配的,有编译器来指定内存地址。

bit 可以在外部或内部定义。

bit和int char之类的差不多,只不过char=8位, bit="1位而已"。都是变量,编译器在编译过程中分配地址。除非你指定,否则这个地址是随机的。这个地址是整个可寻址空间,RAM+FLASH+扩展空间。bit只有0和1两种值,意义有点像Windows下VC中的BOOL。

bit是编译器在的可寻址区分配的一个位变量,是不定的,不是绝对地址目标。

sbit

sbit 只能在外部定义全局变量。

sbit 要在最外面定义,就是说必须定义成外部变量.sbit定义的是SFR(特殊功能寄存器)的

bit

sbit更像是类型定义,不像是变量定义。

sbit: 指示说明性说明

所有可位寻址的位都可由sbit指定,这包括可位寻址区和SFR中的位。

sbit是对应可位寻址空间的一个位,可位寻址区:20H~2FH。一旦用了sbi xxx = REGE^6这样的定义,这个sbit量就确定地址了。sbit大部分是用在寄存器中的,方便对寄存器的某位进行操作的。

sbit位寄存器是可位寻址的绝对地址目标,定义后编译器是不会改变位置的。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    uboot启动流程(2024-08-16)
    仅对于开发人员才有意义。但从最终用户的角度看,Boot Loader 的作用就是用来加载操作系统,而并不存在所谓的启动加载模式与下载工作模式的区别。    启动加载(Boot loading)模式:这种模式也称为'自主......
    后期中止模型 B(bit[7]) 对于存储系统同时支持big-endianlittle-endian的ARM系统,本控制位配置系统的存储模式 0 : little endian   1 : big......
    存储系统同时支持big-endianlittle-endian的ARM系统,本控制位配置系统的存储模式 32      *                0 : little endian   33......
    说一说学51时候躺过的坑——bitsbit的区别;什么是bitsbit?他们有什么区别? 在刚学51单片机的时候刚看到这个两个东西的时候就是一脸懵逼,脑子里面第一反应就是,这是什么鬼啊,C语言......
    最多的应该是四种格式的文件,BIT、BIN、MCSHEX。那么这几个格式有啥区别呢? 在UG470中给了这几个格式的区别,如下图所示 图14:BIT、RBT、BIN、MCS......
    STM32开发中的位带操作机制;为了像51单片机一样能够对某个管脚单独操作,引入了位带操作这样的操作机制。 如下图,位带(Bit band)区就是就是你想单独操作的IO的区域,比如PA1、PA2......
    STM32开发中的位运算以及位带操作;为了像51单片机一样能够对某个管脚单独操作,引入了位带操作这样的操作机制。 如下图,位带(Bit band)区就是就是你想单独操作的IO的区域,比如PA1......
    -Endian)和小端(Little-Endian)字节序之间进行转换的函数。 位掩码(Bit Masks) #define BIT_MASK(bit) (1 << (bit)) 用于......
    *8bit.单片机AT89S52本身不具有I2C总线结口,所以可编写程序用并行端口模拟I2C总线协议读写AT24C04. 多个设备通信的重点(1.电平的区别,如串口通信中PC与单片机通信,PC机串......
    将逐一为大家解读。 UART与USART的区别 早期在开发8051的时候使用的都是UART,大家可能了解的比较多一些。UART的全称叫做通用异步串行收发器,Universal Asynchronous......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>