预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共27页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

MCS51单片机的C语言简介 在单片机应用系统开发过程中,应用程序设计是整个应用系统开发的重要组成部分,它直接决定着应用系统开发周期的长短、性能。以前单片机应用系统程序主要是用汇编语言编写的。采用汇编语言编写的应用程序可直接操纵系统的硬件资源,能编写出高运行效率的程序代码,程序运行速度快。但因汇编语言难学、可读性差、修改调式困难,且编写比较复杂的数值计算程序非常困难。为了提高编制单片机系统和其应用程序的效率,改善程序的可读性和可移植性,最好采用高级语言编程。这里介绍MCS51单片机C语言的基本技术和方法,这里只介绍C语言在MCS51中的特殊用途,与标准C语言相同的内容从略。 一、MCS51与C语言 C语言是一种结构化的高级程序设计语言,且能直接对计算机的硬件进行操作,与汇编语言相比,它有如下优点: 对单片机的指令系统不要求了解,仅要求对MCS51的存贮器结构有初步了解; 寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理; 程序有规范的结构,可分为不同的函数,这种方式可使程序结构化; 采用自然描述语言、以近似人的思维过程方式使用,改善了程序的可读性; 编程及程序调式时间显著缩短,大大提高效率; 提供的库包含许多标准子程序,且具有较强的数据处理能力; 程序易于移植。 用高级语言编程时,不必考虑计算机的硬件特性与接口结构。事实上,任何高级语言程序最终要转换成计算机可识别、并能执行的机器指令代码,定位于存贮器。程序中的数据也必须以一定的存贮结构定位于存贮器中。这种转换定位是由高级语言编译器来实现的。在高级语言程序中,对不同类型数据的存贮及引用是通过不同类型的变量来实现的。即高级语言的变量就代表存贮单元,变量的类型结构就表示了数据的存贮、引用结构。 用C语言编写单片机应用程序与编写标准的C语言程序的不同之处就在于根据单片机存贮结构及内部资源定义相应的数据类型和变量。所以用C语言设计单片机应用程序基本就是如何定义与单片机相对应的数据类型和变量,其它的语法规定、程序结构及程序设计方法都与标准C语言程序设计相同。 不管是高级语言程序还是汇编语言程序都不是计算机能直接运行的程序,只有机器码程序计算机才能直接运行。国内在MCS51中使用的C高级语言基本上都是采用Keil/FranklinC语言,简称C51语言。 二、C51数据类型与MCS51的存贮方式 1、C51数据类型 数据类型是数据的不同格式,数据按一定的数据类型进行的排列、组合、架构称为数据结构。C51提供的数据结构是以数据类型的形式出现的,FranklinC51编译器支持的数据类型有:位型(bit)、无符号字符型(unsignedchar)、有符号字符型(signedchar)、无符号整型(unsignedint)、有符号整型(signedint)、无符号长整型(unsignedlong)、有符号长整型(signedlong)、浮点型(float)、双精度浮点型(double)以及指针类型等。 FranklinC51编译器支持的数据类型、长度和数据表示域如表1所示。 表1FranklinC51编译器的数据类型 数据类型长度(bit)长度(byte)数据表示域bit10,1unsignedchar810~255signedchar81128~127unsignedint1620~65535signedint16232768~32767unsignedlong3240~4294967295signedlong3242147483648~2147483647float324±1.176E38~±3.40E+38(6位数字)double648±1.176E38~±3.40E+38(10位数字)指针类型243存贮空间0~65536FranklinC51还支持构造数据类型。构造的数据类型(如结构、联合等)可以包括表1中所列的所有数据变量类型。 在C语言程序中的表达式或变量赋值运算中,有时会出现与运算对象的数据类型不一致的情况,FranklinC51允许任何标准数据类型之间的自动隐式转换。隐式转换按以下优先级别自动进行: bit→char→int→long→float signed→unsigned 其中箭头方向表示数据类型级别的高低,转换时由低向高进行,而不是数据转换时的顺序。一般来说,如果有几个不同类型的数据同时参加运算,先将低级别类型的数据转换成高级别类型,再作运算处理,并且运算结果为高级别类型数据。 2、C51数据变量在MCS51中的存贮方式  0x12 0x34  地址 +0 +1 +2 图1整型变量在内存的保存方式 对于C这样的高级语言,不管使用何种数据类型,虽然在程序中好象操作十分简单,实际上C51编译器要用一系列机器指令对其进行复杂的数