当前位置:机电之家首页 >> 电工园地>> 电工知识 >> 弱电系统工程 >> c51单片机的数据类型
c51单片机的数据类型

c51支持c语言的所有标准数据类型,除此之外,还加入了用于专门访问80c51硬件的数据类型,如:bit、sbit、sfr和sfrl6。这些数据类型在ansic中是没有的。

bit:声明位变量,其值为0或1。

sbit:声明可位寻址变量中的某个位变量,其值为0或1

sfr:声明特殊功能寄存器,地址范围为:0~255。

sfr16:同上,地址范围为0~65535。

c51编译器支持表5-1列出的数据类型。除了这些变量类型外,变量能被组合到结构、联合和数组中。兼容ansic标准的数据类型可通过指针访问,但扩展的bit、sbit、sfr和sfrl6数据类型专用于访问80c51的特殊功能寄存器,故不能通过指针进行访问。

表5-1 c51数据类型

数据类型字节值的范围
char81-128~127
unsigned char810~255
enum162-32768~32767
short162-32768~32767
unsigned short1620~65535
int162-32768~32767
unsigned int1620~65535
long324-2147483648~2147483647
unsigned long3240~4294967295
float324±1.175494e-38~±3.402823e+38
bit10,1
sbit10,1
sfr810~255
sfr161620~65535
80c51有21个特殊功能寄存器,它们在片内ram安排了绝对地址,80c51的芯片说明中已经为它们用预定义标识符起了名字。c51要做的就是承认这些标识符并将其与绝对地址联系起来。可以用sfr与sfr16两种标识符。

例5.1用sfr数据类型定义特殊功能寄存器示例。

sfr scon = 0x98;/*声明scon为串口控制器,地址为0x98*/

sfr p0 = 0x80;/*声明p0为特殊功能寄存器,地址为0x80*/

sfr tmod = 0x89;/*声明tmod为定时器/计数器的模式寄存器,地址为0x89*/

sfr psw = 0xd0;/*声明psw为特殊功能寄存器,地址为0xd0*/

说明:sfr之后的寄存器名称必须大写,定义之后可以直接对这些寄存器赋值。

在许多80c51派生系列中可用两个连续地址的特殊功能寄存器指定一个16位值,如:

sfr16 t2 = 0xcdcc/*声明t2为16位特殊功能寄存器,地址为0cch(低字节)和0cdh(高字节)*/

例5.2用sbit的数据类型定义位变量示例。

sbitcy = psw^7;/*从已声明的psw中,指定psw.7为cy*/

sbitcy = 0xd0^7;/*整数0xd0为基地址,指定0xd0的第七位为cy*/

在sbit声明中,“^”号右边的表达式定义特殊位在寄存器中的位置,值必须是0~7。

作者:未知 点击:3205次 [打印] [关闭] [返回顶部]
本文标签:c51单片机的数据类型
* 由于无法获得联系方式等原因,本网使用的文字及图片的作品报酬未能及时支付,在此深表歉意,请《c51单片机的数据类型》相关权利人与机电之家网取得联系。
电子样本

SN系列样册
:巩经理
:13915946763
:南京塞姆泵业有限公司
个人求购

吴小姐 【求购】  粉碎机  2025-12-5
 【求购】  冶炼用的重...  2025-12-5
柳女士 【求购】  断路器  2025-12-5
林志扬 【求购】  无石棉垫片  2025-12-4
张一帆 【求购】  首件测试仪  2025-12-4
王飞 【求购】  gf流量计  2025-12-4
 【求购】  全自动印刷...  2025-12-4
 【求购】  LED屏  2025-12-3
VIP公司推荐