<meta name="keywords" content="必胜时时彩开户,keywords" /> 第三课 C51数据类型 联系我们

第三课 C51数据类型

每写一个法式模范模范,总离不开数据的应用,在学习 c51 语言的历程当中控制明确数据类型也是 很要害的。先看表 3-1,表中列出了 KEIL  uVision2  单片机c语言编译器所支持的数据类型。在尺度C语言中基本的数据类型为 char,int,short,long,float 和 double,而在c51编译器中int 和 short 类似,float 和 double 类似,这里就不列出说清晰了了。下面来看看它们的详细定 义:

 

数据类型

长    度

值    域

unsigned  char

单字节

0~255

signed  char

单字节

-128~+127

unsigned  int

双字节

0~65535

signed  int

双字节

-32768~+32767

unsigned  long

四字节

0~4294967295

signed  long

四字节

-2147483648~+2147483647

float

四字节

±1.175494E-38~±3.402823E+38

*

1~3 字节

工具的地址

bit

0 或 1

sfr

单字节

0~255

sfr16

双字节

0~65535

sbit

0 或 1

表 3-1    KEIL  uVision2  单片机c语言编译器所支持的数据类型

1. char 字符类型

char  类型的长度是一个字节,通常用于界说处置赏罚赏罚字符数据的变量或常量。分无符号字 符类型 unsigned  char 和有符号字符类型 signed  char,默许值为 signed  char 类型。 unsigned  char 类型用字节中一切的位来体现数值,所能表达的数值规模是 0~255。 signed char 类型用字节中最高位字节体现数据的符号,“0”体现正数,“1”体现正数, 正数用补码体现。所能体现的数值规模是-128~+127。unsigned char 经常应用于处置赏罚赏罚 ASCII 字符或用于处置赏罚赏罚小于或即是 255 的整型数。

*正数的补码与原码类似,负二进制数的补码即是它的相对值按位取反后加 1。

2. int 整型

int 整型长度为两个字节,用于存放一个双字节数据。分有符号 int 整型数 signed int 和无符号整型数 unsigned int,默许值为 signed int 类型。signed int 体现的数值范 围是-32768~+32767,字节中最高位体现数据的符号,“0”体现正数,“1”体现正数。 unsigned  int 体现的数值规模是 0~65535。

先停一上去写个小法式模范模范看看 unsigned  char 和 unsigned  int 用于延时的纷歧样效果,说 明它们的长度是纷歧样的,学习它们的应用措施。照旧用上一篇的最小化系统做实验,不外要加多 一个电阻和 LED,如图 3-1。实验中用 D1 的点亮注解正在用 unsigned  int 数值延时,用

D2 点亮注解正在用 unsigned  char 数值延时。


图 3-1    第 3 课实验用电路 把这个项目称为 TwoLED,实验法式模范模范以下:

#include  <AT89X51.h>  //预处置赏罚赏罚敕令

void  main(void)  //主函数名

{

unsigned  int  a;  //界说变量 a 为 unsigned  int 类型

unsigned  char  b;  //界说变量 b 为 unsigned  char 类型

do

{  //do  while 组成循环

for  (a=0;  a<65535;  a++)

P1_0  =  0;  //65535 次设 P1.0 口为低电平,点亮 LED P1_0  =  1;  //设 P1.0 口为高电平,熄灭 LED

for  (a=0;  a<30000;  a++);  //空循环

for  (b=0;  b<255;  b++)

P1_1  =  0;  //255 次设 P1.1 口为低电平,点亮 LED P1_1  =  1;  //设 P1.1 口为高电平,熄灭 LED


for  (a=0;  a<30000;  a++);  //空循环

}

while(1);

}

异常编译烧写,上电运转您便可以看到效果了。很显着 D1 点亮的时间善于 D2 点亮的时间。

这里必须要讲的是,当界说一个变量为特定的数据类型时,在法式模范模范应用该变量不应使它的值 逾越数据类型的值域。如本例中的变量 b 不克不及赋超出 0~255 的值,如 for (b=0; b<255; b++) 改成 for  (b=0;  b<256;  b++),编译是能经由历程的,但运转时就会有用果泛起,就是说 b 的 值永世都是小于 256 的,以是没法跳出循环推行下一句 P1_1 = 1,从而组成去世循环。同理 a 的值不应超出 0~65535。

3. long 长整型

long 长整型长度为四个字节,用于存放一个四字节数据。分有符号 long 长整型 signed long 和无符号长整型 unsigned  long,默许值为 signed  long 类型。signed  int 体现 的数值规模是-2147483648~+2147483647,字节中最高位体现数据的符号,“0”体现正 数,“1”体现正数。unsigned  long 体现的数值规模是 0~4294967295。

4. float 浮点型

float 浮点型在十进制中具有 7 位有用数字,是切合 IEEE-754 尺度的单精度浮点型数 据,占用四个字节。因浮点数的结构较严重年夜在以后的章节中再做详细的议论辩说。

5.*    指针型 指针型自己就是一个变量,在这个变量中存放的指向此外一个数据的地址。这个指针变量 要占领一定的内存单元,对纷歧样的处置赏罚赏罚器长度也不尽类似,在 c51 中它的长度浅易为 1~

3 个字节。指针变量也具有类型,在以后的课程中有专门一课做探讨,这里就不多说了。

6. bit 位标量

bit 位标量是 c51 编译器的一种扩年夜数据类型,应用它可界说一个位标量,但不克不及界说 位指针,也不克不及界说位数组。它的值是一个二进制位,不是 0 就是 1,类似一些高等语 言中的 Boolean 类型中的 True 和 False。

7. sfr 特殊功效存放器

sfr 也是一种扩年夜数据类型,点用一个内存单元,值域为 0~255。应用它能会见 51 单片机外部的一切特殊功效存放器。如用 sfr P1 = 0x90 这一句定 P1 为 P1 端口在片内 的存放器,在前面的语句中用以用 P1 = 255(对 P1 端口的一切引脚置高电平)之类的 语句来操作特殊功效存放器。

8.sfr16  16 位特殊功效存放器

sfr16 占用两个内存单元,值域为 0~65535。sfr16 和 sfr 一样用于操作特殊功效存放 器,所纷歧样的是它用于操作占两个字节的存放器,如准时器 T0 和 T1。

9. sbit 可录址位

sbit 异常是 单片机c语言 中的一种扩年夜数据类型,应用它能会见芯片外部的 RAM 中的可寻址


位或特殊功效存放器中的可寻址位。如先前界说了

sfr  P1  =  0x90;  //因 P1 端口的存放器是可位寻址的,以是能界说

sbit  P1_1  =  P1^1;    //P1_1 为 P1 中的 P1.1 引脚

//异常我们能用 P1.1 的地址去写,如 sbit  P1_1  =  0x91; 这样在以后的法式模范模范语句中便可以用 P1_1 来对 P1.1 引脚阻拦读写操作了。通常这些能 直接应用系统供应的预处置赏罚赏罚文件,外面已界说好各特殊功效存放器的质朴名字,直接引 用能省去一点时间,我自己是一直用的。虽然您也能自己写自己的界说文件,用您 以为好记的名字。