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

posted @   流水江湖  阅读(1344)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 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协商模式和特定模式
点击右上角即可分享
微信分享提示