Keil C51 关键字sfr sbit相关知识

2024-04-07  

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引脚。


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