51单片机---Keil C语言
sbit、sfr、sfr16属于C51的扩展数据类型;
1、sbit:定义可位寻址类型的变量,用于位寻址,从位寻址字节中定义位变量;sbit定义的变量属于特殊功能寄存器类型的位变量,存放在特殊功能寄存器区;
sbit的三种形式:
sbit 位变量名 = 位地址;
sbit 位变量名 = 特殊功能寄存器名 ^ 位位置;
sbit 位变量名 = 字节地址 ^ 位位置;
如:
sbit P1_0 = P1 ^ 0;
sbit P1_1 = P1 ^ 1;
sbit P1_2 = P2 ^ 2;
2、sfr/sfr16:分别定义8位和16位的特殊功能寄存器类型的变量,这种类型的变量存放的是硬件的物理地址码;
sfr/sfr16的形式:
sfr 特殊功能寄存器名 = 特殊功能寄存器地址常数(地址常数);
sfr16 特殊功能寄存器名 = 特殊功能寄存器地址常数(地址常数);
如:
sfr P1 = 0x90; //定义P0口的物理地址码;
sfr P2 = 0xA0; //定义P1口的物理地址码;
sfr16 T2 = 0xCC; //定义T2的物理地址码;
注意:sbit/sfr/sfr16定义的变量都存放在地址[80H,FFH]这16字节的地址范围内;
二、新增加的关键字
interrupt:定义一个中断服务函数;
reentrant:定义一个可再重入函数;
using:设定中断服务函数所使用的工作寄存器组;
三、存储类型
单片机的存储空间在物理上分为4个部分:
A、片内数据存储区;
B、片外数据存储区;
C、片内程序存储区;
D、片外程序存储区;
所以,存储类型就分为以下6种:
1、code:程序代码存储区ROM,共64K,由MOVC @DPTR访问;
2、data:可直接寻址的片内数据存储区,共128字节,访问速度比较快;
3、bdata:可位寻址的片内数据存储区,共16字节(128位),允许位与字节混合访问;sbit/sfr/sfr16;
4、idata:可间接寻址的片内数据存储区,共256字节,允许访问片内全部的RAM空间;
5、pdata:可分页寻址的片外数据存储区,共256字节,由MOVX @Ri访问;
6、xdata:可寻址的片外数据存储区,共64KB,由MOVX @DPTR访问;
使用code来定义变量的存储类型时,编译器会将其定义存放在程序代码存储区ROM中,这样的话,这种类型的变量的值就不能再被修改了;
51单片机KeilC语 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)