C51编程:声明SFR寄存器与位变量
需积分: 16 40 浏览量
更新于2024-08-16
收藏 381KB PPT 举报
"这篇文档主要介绍了在Keil C51编程环境下声明和使用特殊功能寄存器(SFR)的方法,以及对标准C语言的扩展,包括声明位SFR、16位SFR、sbit变量和不同存储空间类型的变量。"
在Keil C51中,针对8051单片机的特性,程序员可以使用特定的语法来声明和操作特殊功能寄存器。SFR是微控制器硬件中的专用寄存器,用于控制和管理硬件功能。例如,`sfr P0 = 0x80;` 声明了P0口的地址为0x80,这使得程序员可以直接通过P0进行IO操作。
1. **C51对标准C语言的扩展**
- **数据类型**:C51增加了对位(bit)变量的支持,如`bitcrc_ok, flg_err;`,这些变量可以被分配到8051的可位寻址区。
- **sfr特殊功能寄存器**:使用`sfr`关键字声明SFR,如`sfr SP = 0x81;`,声明堆栈指针SP的地址。这允许直接访问和修改这些寄存器的值。
- **sfr16声明16位SFR**:如`sfr16 T2 = 0xCC;`声明定时器2的低8位(TL2)和高8位(TH2),可以通过`T2 = 0XF567;`直接赋值。
- **sbit声明位变量**:使用`sbit`声明SFR中的单一位,如`sbit CY = PSW^7;`声明标志位CY,可以通过`CY = 0;`设置其值。
2. **位变量和位地址**
- 在包含的头文件中,如`REG51.H`,可以定义`sbit`变量,如`sbit mybit0 = ibase^0;`,这允许直接访问和修改指定地址的位。
3. **存储空间类型**
- **变量存储类型**:包括`code`、`data`、`idata`、`bdata`、`pdata`、`xdata`、`auto`、`extern`和`static`等,用于指定变量的存储位置。
- **内部数据存储器**:如`int bdata ibase;`,`bdata`用于声明位于片内RAM可位寻址区的变量。
- **外部数据存储器**:如`xdata`用于声明位于片外RAM的变量。
- **程序存储器**:如`code`用于声明位于程序存储器的变量。
4. **存储空间的地址范围和说明**
- **DATA**:直接寻址区,地址范围0X00~0X7F。
- **BDATA**:可位寻址区,地址范围0X20~0X2F。
- **IDATA**:寄存器间接寻址区,地址范围0X00~0XFF。
- **PDATA**:分页寻址的256字节区域。
通过这些扩展,C51使得编写针对8051单片机的程序更加方便,能够直接操作硬件寄存器,提高了代码的效率和可读性。理解这些扩展对于8051的程序设计至关重要。
2009-08-31 上传
2011-04-02 上传
2009-06-04 上传
2023-06-11 上传
2023-03-31 上传
2023-05-28 上传
2023-05-12 上传
2023-04-24 上传
2024-10-27 上传
白宇翰
- 粉丝: 29
- 资源: 2万+
最新资源
- 探索AVL树算法:以Faculdade Senac Porto Alegre实践为例
- 小学语文教学新工具:创新黑板设计解析
- Minecraft服务器管理新插件ServerForms发布
- MATLAB基因网络模型代码实现及开源分享
- 全方位技术项目源码合集:***报名系统
- Phalcon框架实战案例分析
- MATLAB与Python结合实现短期电力负荷预测的DAT300项目解析
- 市场营销教学专用查询装置设计方案
- 随身WiFi高通210 MS8909设备的Root引导文件破解攻略
- 实现服务器端级联:modella与leveldb适配器的应用
- Oracle Linux安装必备依赖包清单与步骤
- Shyer项目:寻找喜欢的聊天伙伴
- MEAN堆栈入门项目: postings-app
- 在线WPS办公功能全接触及应用示例
- 新型带储订盒订书机设计文档
- VB多媒体教学演示系统源代码及技术项目资源大全