1. 程式人生 > >C語言控制51微控制器 sbit 與 sfr 的用法(keil擴充套件指令 )

C語言控制51微控制器 sbit 與 sfr 的用法(keil擴充套件指令 )

1. SBIT Assembler Statement

(keil 中 help 的說明)

Arguments sbit sfr_symbol = bit-address;

Description The sbit statement defines a special function register bit:

  • Where

    *sfr_symbol is the name of the Special Function Register (SFR) symbol to define.
    bit-address is the address of the SFR bit in the format address^bit_position.*

The sbit statement allows you to define SFR bit data in a consistent manner with the Cx51 compiler. With this statement you may use a generic SFR register definition file for the Cx51 compiler and the Ax51 assembler.

Example
sbit P0_0 = P0^0;
sbit P0_1 = 0x90^1;

理解

sbit 用於特殊功能暫存器中可位定址的位地址。類似於C語言中的巨集定義,對選定位地址進行某特殊功能的命名。

格式為:sbit 命名功能 = 位地址

2. SFR Assembler Statement

Arguments sfr sfr_symbol = address;

Description The sfr statement defines a special function register:

  • Where

*sfr_symbol is the name of the Special Function Register (SFR) symbol to define.
address is the address of the SFR.*

The sfr statement allows you to define SFR data in a consistent manner with the Cx51 compiler. With this statement you may use a generic SFR register definition file for the Cx51 compiler and the Ax51 assembler.

Example
sfr P0 = 0x80;
sfr P1 = 0x90;

理解

sfr 定義特殊功能暫存器中的位元組。類似於C語言中的巨集定義,對選定位元組地址進行某特殊功能的命名。

格式為:sfr 功能命名 = 地址(位地址首位)

3. 51中可位定址區域

1)位定址區
位元組地址範圍為 20H~2FH,
這16個單元(共計128位)的每一位都有一個對應位地址,
位地址範圍為 00H~7FH。

2)SFR區
位元組地址範圍為80H~FFH,
位元組地址30H~7FH為資料緩衝區,使用者RAM區,
位地址範圍緊接上述位定址區位地址範圍,SFR區位地址範圍為 80H~FFH。

  • 注:凡是SFR中位元組地址能被8整除的單元均能位定址。