Keil C51 关键字sfr sbit相关知识
读头文件的意义-20220619
SFR 不是标准C 语言的关键字,而是Keil 为能直接访问80C51而提供了一个新的关键词。
功能:
用来定义硬件寄存器地址的关键字,具有定义硬件特性。
举个例子:
sfr P0 =0x80;
sfr P1 = 0x90;
(C语言,这样就定义了51系列MCU中0x80地址,在编程时可以用P0符号代替地址0x80,具有定义硬件特性,一般在SFR的定义在头文件reg51.h或reg52.h或者stc8g.h内。
经过定义之后,编程的时候可以直接使用p0=0xff p1=0xff来实现控制端口IO。
===============================================================================================================================
在C51里,利用sbit可访问RAM中可寻址位或SFR中可寻址位。
如果直接写P1.0,C 编译器并不能识别,而且P1.0也不是一个合法的C语言变量名,所以得给它另起一个名字,比如P1_0,可是P1_0 是不是就是P1.0呢?
C编译器可不这么认为,所以必须给它们建立联系,这里使用了Keil C的关键字sbit 来定义,sbit 的用法有三种:
第一种方法:sbit 位变量名=地址值
第二种方法:sbit 位变量名=SFR 名称^变量位地址值
第三种方法:sbit 位变量名=SFR 地址值^变量位地址值
例如,
定义P1 中的P1.1脚可以用以下三种方法:
sbit P1_1=0x92 //(1)说明:0x92是P1.1的位地址值
sbit P1_1=P1^1 //(2)说明:其中P1必须先用sfr定义好
sbit P1_1=0x90^2 //(3)说明:0x90就是P1的地址值
因此这里用sfr P1_0=P1^0;就是定义用符号P1_0 来表示P1.0引脚。
————————————————
版权声明:本文为CSDN博主「Tsy.H」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42131443/article/details/112050819
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2021-06-19 工控主板对ISO7816智能卡标准的支持
2021-06-19 英创嵌入式Linux工控主板如何实现ISO7816协议
2021-06-19 ISO7816协商模式和特定模式