面向51单片机的Keil uVision4基本数据类型简介

发布者:WhisperingLight最新更新时间:2012-08-15 来源: 51hei关键字:数据类型  51单片机  Keil  uVision4 手机看文章 扫描二维码
随时随地手机看文章

    熟悉基本数据类型是使用C语言编绎器编写程序的基本前提之一,使用keil uVision4开发51单片机C程序当然也不例外。本文将系统地介绍Keil uVision4的各种基本数据类型,希望对读者有益。

    注:此为初稿,如有错误和疏漏之处,恳请读者批评指正。

    在标准C语言中,存在着如下六种基本数据类型:
    1、char:字符型;
    2、short = short int:短整型
    3、int:整型
    4、long = long int:长整型
    5、float:单精度浮点型
    6、double:双精度浮点型

    而面向51单片机的Keil uVision4对此进行了简化, 因此,可以理解为只存在如下四种基本数据类型:
    1、char:字符型
    2、int = short = short int:整型
    3、long = long int:长整型
    4、float = double:单精度浮点型

    其中,基本整型数据类型又可以通过signed关键词扩展为有符号的signed char、signed int、signed long类型,或通过unsigned关键词扩展为无符号的unsigned char、unsigned int、unsigned long类型;而对于不加关键词扩展的char、int、long本身,Keil uVision4则一律认为是signed类型。

    应对51单片机硬件的一些特点,Keil uVision4还扩展了bit、sbit、sfr、sfr16等四种特殊基本数据类型,它们都是标准C中所没有的。其中:
    1、bit:声明一个普通的位变量。例如:"bit flag;"。
    2、sbit:声明特殊功能寄存器中的某一位。例如,使用"sbit TI = SCON^0;",就声明了TI为特殊功能寄存器SCON的第0位。
    3、sfr:声明一个8位寄存器为特殊功能寄存器。例如,将51单片机内存地址0x98处的存储单元声明为8位特殊功能寄存器SCON,可以使用"sfr SCON = 0x98;"语句。
    4、sfr16:声明一个16位的寄存器为特殊功能寄存器。为了将51单片机内存地址0xCC处开始的连续两个存储单元声明为一个统一的16位特殊功能寄存器T2,可以使用"sfr16 T2 = 0xCC;"语句。
    需要注意的是,在Keil uVision4中,用sbit、sfr、sfr16声明特殊功能寄存器变量或特殊功能寄存器位变量时,其声明语句都只能放在函数外,而不能放在函数内,否则出现语法错误;而用bit声明普通位变量时,声明语句既可放在函数外,也可放在函数内。此外,bit、sbit、sfr、sfr16都不支持指针和数组扩展,因此,不能定义bit、sbit、sfr、sfr16型指针和数组。当然,根据C语言标准,无论是sbit、sfr、sfr16还是bit,变量必须在使用之前(至少在使用之时)声明:这一点是显然的。

    对于初学者来说,其实没有必要深究sbit、sfr、sfr16的用法,它们通常用在51单片机的系统自带头文件中,一般情况下无需用户关心。

    表1整理了Keil uVision4支持的各种基本数据类型和属性,希望读者认真理解和领会。

    表1 Keil uVision4面向51单片机的基本数据类型各种属性一览表


      ╭════════════════════════════════╮
       ║类  别║  数  据  类  型  ║长 度║           值  域            ║
       ║════════════════════════════════║
       ║      ║unsigned char     ║1字节║0~255                       ║
       ║字符型║signed char       ║1字节║-128~+127                   ║
       ║      ║char              ║1字节║-128~+127                   ║
       ║════════════════════════════════║
       ║      ║unsigned short int║2字节║0~65535                     ║
       ║      ║signed short int  ║2字节║-32768~+32767               ║
       ║      ║short int         ║2字节║-32768~+32767               ║
       ║      ║════════════════════════════║
       ║      ║unsigned short    ║2字节║0~65535                     ║
       ║整  型║signed short      ║2字节║-32768~+32767               ║
       ║      ║short             ║2字节║-32768~+32767               ║
       ║      ║════════════════════════════║
       ║      ║unsigned int      ║2字节║0~65535                     ║
       ║      ║signed int        ║2字节║-32768~+32767               ║
       ║      ║int               ║2字节║-32768~+32767               ║
       ║════════════════════════════════║
       ║      ║unsigned long int ║4字节║0~4294967295                ║
       ║      ║signed long int   ║4字节║-2147483648~+2147483647     ║
       ║      ║long int          ║4字节║-2147483648~+2147483647     ║
       ║长整型║════════════════════════════║
       ║      ║unsigned long     ║4字节║0~4294967295                ║
       ║      ║signed long       ║4字节║-2147483648~+2147483647     ║
       ║      ║long              ║4字节║-2147483648~+2147483647     ║
       ║════════════════════════════════║
       ║      ║float             ║4字节║±1.75494E-38~±3.402823E+38║
       ║浮点型║double            ║4字节║±1.75494E-38~±3.402823E+38║
       ║════════════════════════════════║
       ║      ║bit               ║1位  ║0,1                         ║
       ║位  型║sbit              ║1位  ║0,1                         ║
       ║════════════════════════════════║
       ║      ║sbit              ║1位  ║0,1                         ║
       ║SFR 型║sfr               ║1字节║0~255                       ║
       ║      ║sfr16             ║2字节║0~65535                     ║
       ╰════════════════════════════════╯

关键字:数据类型  51单片机  Keil  uVision4 引用地址:面向51单片机的Keil uVision4基本数据类型简介

上一篇:keil C51语言编程如何缩减编译代码长度
下一篇:51单片机控制的微波炉定时程序

推荐阅读最新更新时间:2024-03-16 13:05

51单片机分频、机器周期、时钟周期、状态周期
​​​​(1)振荡周期=时钟周期:是指为单片机提供时钟脉冲信号的振荡源的周期。即晶振 (2)状态周期:每个状态周期为时钟周期的2倍,是振荡周期经二分频后得到的。 ​​详解:在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示) (3)机器周期:一个机器周期包含6个状态周期S1~S6,也就是12个时钟周期。在一个机器周期内,CPU可以完成一个独立的操作 机器周期 在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干
[单片机]
基于51单片机的红外电子密码锁的设计
本设计包含两个51单片机和一个proteus自带的红外组件IRLINK来模拟实现红外通信:1)一个单片机模拟发送密码信号; 2)一个单片机接收密码信号并通过电磁线圈控制锁的开或者关; 3)使用proteus自带的红外组件IRLINK的发射端模拟第一个单片机发射红外信号; 4)使用proteus自带的红外组件IRLINK的接收端模拟接红外信号并经过光电转换成电信号送入第二个单片机(红外电子密码锁的控制器) 以下是电路图的设计: 电路图设计 以下是红外通信的部分程序 #include reg52.h //此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16
[单片机]
基于<font color='red'>51单片机</font>的红外电子密码锁的设计
MCS-51单片机控制跑马灯的三种方法
  在MCS一51单片机的控制系统中,它的四个并行8位输入输出端口P0一P3是我们经常使用的。在并行端口的编程学习中,“跑马灯”是单片机并行端口输出控制的典型实例。所谓跑马灯,是指将八个发光二极管分别连接到单片机的某一并行端口的八根线上,通过编程控制这八个发光二极管从低到高或从高到低依次点亮。      图1 跑马灯电路图   如图1所示,将8个发光二极管阴极接到MCS一51单片机P1端口的8根端口线上,阳极通过限流电阻接+5V电源。要让发光二极管点亮,则对应的端口线应该为低电平(‘’0’);而要让其熄灭,对应的端I=I线应该为高电平(“1”)。由此,我们假定“跑马灯”由端I=1的低位向高位轮流点亮.可以得到如下状态:   表
[单片机]
MCS-<font color='red'>51单片机</font>控制跑马灯的三种方法
51单片机-闪烁的LED
延时是单片机入门必学的应用! 1.序 上一讲我们已经实现点亮一盏灯,但是很多时候程序的执行都是要死循环的,不能让程序像是停在那里不执行了。所以这一讲在前面的原理图基础上实现让LED2从点亮一段时间到熄灭一段时间再点亮一段时间如此循环下去,实现闪烁LED2的功能。 2.代码普及 我们知道CPU执行一条语句是很快的,如果我们这样写程序来实现灯的闪烁: #include reg52.h sbit LED2 = P0^0; sbit ADDR2 = P1^2; sbit ADDR1 = P1^1; sbit ADDR0 = P1^0; sbit ENLED = P1^4; sbit ADDR3 = P1^3;
[单片机]
微机基础与89C51单片机部分知识
1,微机基础知识 微机: 具有完整运算及控制能力的计算机。包括微处理器,储存器,接口适配器,输入输出设备。 微处理器: 控制器:由程序计数器,指令寄存器,指令译码器,时序发生器,操作控制器等组成,是发布命令,协调指挥计算机系统的器件。①从内存取出指令,并指向下一个指令。②对命令进行译码或测试。③指挥并控制CPU,内存和输入输出的数据流。 运算器:由算数逻辑单元(ALU)可完成来自累加器和数据寄存器数据的加减运算,累加器,数据寄存器组成。 寄存器: 累加器(A):用运算前于保存操作数。运算后保存所得的和,差,逻辑运算结果 数据寄存器(DR):保存译码指令和数据字节。 指令寄存器(
[单片机]
微机基础与89C<font color='red'>51单片机</font>部分知识
基于51单片机的无线供电模块的无线传输系统效率检测
1引言 无线供电是一种方便、安全的供电装置,之间不需要任何物理连接,当发送端产生的振荡磁场 频率 和接收端的固有频率相同时,接收端就产生共振,从而实现了能量的传输。现在已经用于一些小的家电中,也许在不久的将来将用于室内供电和城市的供电,彻底代替电线,应用前景广泛。本文主要阐述近距离无线供电,具有低功耗、安全等特点,通过单片机检测 更好的增加了它的可靠性。 2系统方案设计 无线供电演示装置的设计制作。该电路由电源发射电路、接收电路、检测显示电路三部分组成 。 2.1方案论证与选择 方案1:震荡电路 发射电路用NE555产生可以调节频率的对称方波,接L298放大和恒流源模块产生 电压 12v、频率20M
[单片机]
基于<font color='red'>51单片机</font>的无线供电模块的无线传输系统效率检测
玖:中断系统的原理与应用
基本概念 1、什么是“中断”? 顾名思义,中断就是中断当前工作去处理一些临时发生的时间,处理完后,则继续原工作过程。例如:你在看书,电话响了,你在书上做好记号后去接电话,接完之后再原记号处继续往下看书。 2、51单片机也需要“中断”? 通常单片机中只有一个CPU,但却要应对诸如:运行程序、数据输入、数据输出、以及特殊情况处理等多项任务,为此单片机必须具备中断处理的功能,以应对特殊情况的紧急处理。 3、“中断过程”是怎样的? 中断的目的是为了暂停主程序的运行,先去执行中断服务程序,其功能是为了提高CPU工作效率。在中断源提出中断请求后,处理器执行完当前指令便进行中断响应,一旦中断服务程序执行完毕后,仍须返回到主程序被中断处(断点处)
[单片机]
玖:中断系统的原理与应用
51单片机外扩ROM方法
51单片机外扩ROM方法 强烈建议用户尽可能不要考虑外扩程序存储器,如果非扩不可,可以仿照下图所示电路进行扩展 图中P0口输出外部ROM的低8位地址信号,P2口输出高8位地址信号;ALE端输出地址锁存信号,/PSEN输出程序存储器输出使能信号。 两个模块 P89V51RD2单片机内部有64K用户ROM区和8K BOOT ROM区两个模块 两个模块在物理上是分开的,尽管地址重合,但一般不会发生冲突。 用户程序存储区 P89V51RD2内部有64K Flash ROM,不需要用户再进行ROM扩展 地址范围:0000H~FFFFH 其内部分配和其他51系列单片机是相同的 Fl
[单片机]
<font color='red'>51单片机</font>外扩ROM方法
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved