单片机C51数据类型

这篇具有很好参考价值的文章主要介绍了单片机C51数据类型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C51数据类型

C语言的基本数据类型:char、int、short、long、float、double。

1、 Keil C51 编译器支持的数据类型。

   对于Keil C51编译器,short型与int型相同,double型与float型相同。

Keil C51支持的数据类型表

数据类型

长度

值域

unsigned char

单字节

0~255

signed char

单字节

-128~+127

unsigned int

双字节

0~65535

 signed int

双字节

-32768~+32767

unsigned long

4 字节

0~4294967295

signed long

4 字节

-2147483648~+2147483647

 float

4 字节

士1.175494E-38~±3.402823E+38

*

1~3 字节

对象的地址

bit

0或1

sfr

单字节

0~255

sfr16

双字节

0~65535

sbit

0或1

2 数据类型分析

2.1 char 字符类型

char 字符类型有 unsigned char和 signed char之分,默认值为 signed char,长度为1个字节,用以存放1个单字节数据。对于 signed char 型数据,其字节的最高位表示该数据的符号,“0”表示正数,“1”表示负数,数据格式为补码形式,所能表示的数值范围为 -128~+127;而unsigned char型数据是无符号字符型数据,所能表示的数值范围为0~255。

2.2  int整型

int 整型有 unsigned int 和 signed int之分,默认值为 signed int,长度为2个字节,用以存放双字节数据。signed int 是有符号整型数,unsignedint 是无符号整型数。

2.3 long 长整型

long 长整型有 unsigned long 和 signed long 之分,默认值为signed long,长度为4个字节。signed long 是有符号长整型数,unsigned long 是无符号长整型数。

2.4 float 浮点型

float 浮点型是符合 IEEE 754标准的单精度浮点型数据。float 浮点型数据占用4个字节(32 位二进制数),其存放格式见下表

float 浮点型数据存放格式

字节(偏移)地址

+3

+3

+1

+0

浮点数内容

SEEEEEEE

EMMMMMMM

MMMMMMMM

MMMMMMMM

S为符号位,存放在最高字节的最高位。“1”表示负,“0”表示正。E为阶码,占用8位二进制数,E值是以2为底的指数再加上偏移量127,这样处理的目的是避免出现负的阶码值,而指数是可正可负的。阶码E的正常取值范围是1~254,而实际指数的取值范围为-126~+127。M为尾数的小数部分,用23 位二进制数表示。尾数的整数部分永远为1,因此不予保存,但它是隐含存在的。小数点位于隐含的整数位“1”的后面,一个浮点数的数值表示是(-1)Sx2E-127x(1.M)。

2.5 指针型

指针型数据不同于以上4种基本数据类型,它本身是一个变量。但在这个变量中存放的不是普通的数据而是指向另一个数据的地址。指针变量也要占据一定的内存单元。在 Keil C51 中,指针变量的长度一般为 1~3 字节。指针变量也具有类型,其表示方法是在指针符号“*”的前面冠以数据类型符号,如“char*point”是一个字符型指针变量。指针变量的类型表示该指针所指向地址中数据的类型。

2.6 bit 位标量

bit位标量是 C51 编译器的一种扩充数据类型,利用它可以定义一个位标量。

2.7 sfr 定义特殊功能寄存器

sfr定义特殊功能寄存器是C51编译器的一种扩充数据类型,利用它可以访问8051单片机的所有内部的特殊功能寄存器。它占用一个内存单元,其取值范围是0~255

2.8  sfr16 定义 16 位特殊功能寄存器

sfr16定义16位特殊功能寄存器占用两个内存单元,其取值范围是0~65535

2.9 sbit 定义可寻址位

sbit 定义可寻址位也是C51 编译器的一种扩充数据类型,利用它可以访问 8051单片机内部 RAM 中的可寻址位和特殊功能寄存器的可寻址位。

3、变量的数据类型选择

变量的数据类型选择的基本原则如下。

(1)若能预算出变量的变化范围,则可根据变量长度来选择变量的类型,则尽量减少变量的长度。

(2)如果程序中不需使用负数,则选择无符号数类型的变量,

(3)如果程序中不需使用浮点数,则要避免使用浮点数变量。

4、数据类型之间的转换

在C语言程序的表达式或变量的赋值运算中,有时会出现运算对象的数据类型不一样的情况,C语言程序允许在标准数据类型之间隐式转换,隐式转换按以下优先级别(由低到高)自动进行:

bit→char →int→long →float→signed→unsigned

一般来说,如果有几个不同类型的数据同时运算,先将低级别类型的数据转换成高级别类型,再做运算处理,并且运算结果为高级别类型数据。文章来源地址https://www.toymoban.com/news/detail-472599.html

到了这里,关于单片机C51数据类型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • c51单片机串口通信(中断方式接收数据)(单片机--单片机通信)示例代码 附proteus图

         单片机一般采用中断方式接受数据,这样便于及时处理 其中发送数据段采用的是查询方式,接收端采用了中断方式, 要注意的地方有: 在中断处理函数int_0()内,处理数据前要先关闭中断,否则中断可能会不断传过来, EA=0; 然后退出中断处理函数前恢复中断处理能力:

    2024年02月13日
    浏览(60)
  • 自用纯C语言实现任务调度(可用于STM32、C51等单片机)

      这个任务调度模块的实现是形成于毕设项目中的,用在 STM32 中,断断续续跨度2个月实现了一些基本功能,可能后面再做其他项目时会一点点完善起来,也会多学习相关知识来强化模块的实用性和高效性,毕竟用自己自主实现出来的功能还是蛮舒心的。   整体上的结构

    2023年04月09日
    浏览(43)
  • AT89C51单片机红绿灯控制源代码(C语言版)附带Proteus电路图

    这个代码需要稍微改一下才能运行,看得懂的不超过1分钟应该能够搞好。看不懂的无法运行

    2024年02月07日
    浏览(40)
  • 初识C51单片机(详解)

    前言: 单片机是一种我们常见的开发板,我们经常会在一些项目中使用到它。而今天我们要介绍的是C51单片机,下面来介绍一下今天的”主角“:STC89C52RC40I-LQFP44单片机(后面将用到它做一些项目)。 1.了解命名规则一张图搞定: 2.学会看单片机电路原理图 只是一些初中的电

    2024年02月10日
    浏览(59)
  • c51单片机(预备知识)

            单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备(小键盘、LED显示器)。 0)  无源晶振:12MHZ 1) 振荡周期 :也称时钟周期,是指为单片机提供

    2024年02月08日
    浏览(95)
  • C51单片机实现呼吸灯

         呼吸灯的效果是灯的亮度由暗缓慢变亮再缓慢变暗。      实现思路是改变小灯亮与暗在单位周期的占空比。如下图 具体代码如下:

    2024年02月11日
    浏览(48)
  • C51单片机实验——中断实验

    实验环境:普中实验系统;Keil μVision 4软件; 实验目的: (1)掌握单片机中断原理和中断响应过程。 (2)设计自己的中断程序具体实验内容,并通过程序设计控制实验箱上的2个按键,实现对应的中断内容。 硬件连线: 按键k3连接P3.2口 按键k4连接P3.3口 LED灯连接P2口 实验主

    2024年02月05日
    浏览(63)
  • 【C51】10-基础51单片机的小车项目(51完结)

    10.1小车的安装 10.2电机模块的开发(L9110S) 接通 VCC , GND 模块电源指示灯亮, 以下资料来源官方,但是不对,根据下节课实际调试 IA1 输入高电平, IA1 输入低电平,【 OA1 OB1 】电机正转; IA1 输入低电平, IA1 输入高电平,【 OA1 OB1 】电机反转; IA2 输入高电平, IA2 输入低

    2024年02月08日
    浏览(50)
  • 第二十二天 c51单片机

    136.语音识别切换小车循迹跟随避障且Oled显示状态

    2024年02月08日
    浏览(46)
  • C51单片机基础之4G模块

    EC03-DNC是亿佰特公司推出的 LTE CAT1 数传模块产品, 该产品软件功能完善, 覆盖绝大多数常规应用场景, EC03-DNC 是为实现串口设备与网络服务,通过网络相互传输数据而开发的产品 , 该产品是一款带分集接收功能 的LTE-FDD/LTE-TDD 无线通信数传模块, 支持 LTE-FDD , LTE-TDD 网络

    2023年04月08日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包