单片机程序设计实践教程_第05章_Keil_C51程序设计基础

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数的范围 即-215~(215-1) 即0~(216-1)
-2147483648~2147483647即-231~ (231-1) 0~4294967295 即0~(232-1) 10-37~1038 10-307~10308 10-4931~104932 -128~+127 1 0~255 0,1
9
类型说明符 signed int unsigned int signed long unsigned long float double long double signed char unsigned char bit或sbit
位数 字节数 16 16 32 32 32 64 128 8 8 - 2 2 4 4 4 8 16 1 1 - -32768~32767 0~65535
11
5.2.1.2整型变量 5.2.1.2整型变量
根据表5 ,加上不同的修饰符, 根据表5-1,加上不同的修饰符, 整型数有以下几种类型: signed int(有符号短整型数)、signed long(有符号长整型数 int(有符号短整型数)、signed long(有符号长整型数 说明)、unsigned int(无符号短整型数)和unsigned long(无 说明)、unsigned int(无符号短整型数)和unsigned long(无 符号长整型数),字长和数的取值范围已在表5 符号长整型数),字长和数的取值范围已在表5-1中列出。 整型数在内存中是以补码方式存放的,应遵循以下原则: ·正数的补码和原码相同。 ·负数的补码应将该数的绝对值的二进制形式按位取反再加1。 负数的补码应将该数的绝对值的二进制形式按位取反再加1 例如,101的原码为1100101B,反码为 例如,101的原码为1100101B,反码为 1111111110011010B,补码为1111111110011011B,由反码 1111111110011010B,补码为1111111110011011B,由反码 加1求得。
8
5.2 C51的数据类型 C51的数据类型
在C语言中,每个变量在使用之前必须先定义其数据 类型。C语言中有以下几种数据类型:整型(int)、浮点型 类型。C语言中有以下几种数据类型:整型(int)、浮点型 (float)、字符型(char)、指针型(*)、无值型 (void)以及结 (float)、字符型(char)、指针型(*)、无值型 (void)以及结 构(struct)和联合(union)。为了充分利用MCS-51单片机 (struct)和联合(union)。为了充分利用MCS-51单片机 的资源特点,C51 的资源特点,C51 在C语言的数据类型基础上增设了位型 变量sbit,取消了布尔变量,其实两者的使用方法基本类 变量sbit,取消了布尔变量,其实两者的使用方法基本类 似。表5 列出了C51 似。表5-1列出了C51 的基本数据类型。
7
例如,C语言语句int 例如,C语言语句int double; 是错误的,因为 double 是关键字,不能做变量名。下面列出了C语言的 是关键字,不能做变量名。下面列出了C 所有关键字,读者在使用中应慎用这些关键字,不要将其 作为标识符来使用。 Auto、enum、restrict、 Auto、enum、restrict、unsigned 、break、 break、 extern、return、void、case、float、 extern、return、void、case、float、short volatile、char、for、signed、while、const、goto、 volatile、char、for、signed、while、const、goto、 sizeof、Bool、continue、if、 static、default、inline、 sizeof、Bool、continue、if、 static、default、inline、 struct、_Imaginary、do、int、switch、double、 struct、_Imaginary、do、int、switch、double、 long、typedef、else、register和union等。 long、typedef、else、register和union等。
6
在使用标识符时还必须注意以下几点: (1)、标准C语言不限制标识符的长度,但它受各种版本的C (1)、标准C语言不限制标识符的长度,但它受各种版本的C语言 编译系统的限制,同时也受到具体机器的限制。例如,在某版本C 编译系统的限制,同时也受到具体机器的限制。例如,在某版本C 语言中规定标识符前八位有效,当两个标识符前八位相同时,则被 认为是同一个标识符。 (2)、在标识符中,大小写是有区别的。例如,SEA和sea是两个 (2)、在标识符中,大小写是有区别的。例如,SEA和sea是两个 不同的标识符。 (3)、标识符虽然可由程序员随意定义,但标识符是用于标识某个 (3)、标识符虽然可由程序员随意定义,但标识符是用于标识某个 量的符号。因此,命名应尽量有相应的意义,以便于理解。 (4)、不应该使用C (4)、不应该使用C语言中的保留标识符来做自定义的变量或者函 数等的标识符。使用保留标识符来做自定义变量或者函数等的标识 符不是语法错误,可以通过编译,因为保留标识符是合法的标识符, 符合标识符命名法则。但是,因为这些标识符已经被C 符合标识符命名法则。但是,因为这些标识符已经被C语言使用或 者保留了,所以使用保留标识符来做自定义变量或者函数等的标识 符可能会引起意想不到的问题。
表5-1 C51 的基本数据类型
10
5.2.1整型 5.2.1整型(int) 整型(int) 5.2.1.1整型常量 5.2.1.1整型常量
整型常量就是整常数。在C51中,使用的整常数有八进制、 整型常量就是整常数。在C51中,使用的整常数有八进制、 十六进制和十进制三种。 十进制整常数:十进制整常数没有前缀。其数码为0 1、十进制整常数:十进制整常数没有前缀。其数码为0~9。 八进制整常数:八进制整常数必须以0开头,即以0 2、八进制整常数:八进制整常数必须以0开头,即以0作为八进 制数的前缀。数码取值为0 制数的前缀。数码取值为0~7。八进制数通常是无符号数。 如以下各数是八进制数:015(十进制为13)、0101(十进制为 如以下各数是八进制数:015(十进制为13)、0101(十进制为 65)、0177777(十进制为65535); 65)、0177777(十进制为65535); 3、十六进制整常数:十六进制整常数的前缀为0X或0x。其数码 十六进制整常数:十六进制整常数的前缀为0X或0x。其数码 取值为0~9,A~F或a~f。 取值为0~9,A~F或a~f。 如以下各数是十六进制整常数:0X2A(十进制为42)、 如以下各数是十六进制整常数:0X2A(十进制为42)、0XA0 (十进制为160)、0XFFFF (十进制为65535)。 十进制为160)、 (十进制为65535)。
4
针对汇编语言可以更好的针对硬件进行控制的特点,很多单 片机设计和生产公司开发了MCS-51单片机的增强型衍生产品,这 片机设计和生产公司开发了MCS-51单片机的增强型衍生产品,这 些产品在内部的主要功能部件上未作出任何变化,只是增加了程序 存储器Flash和数据存储器RAM的容量,使其更适合运用C 存储器Flash和数据存储器RAM的容量,使其更适合运用C语言开 发代码更长的复杂程序。如,表4 给出的STC单片机RC/RD+ 发代码更长的复杂程序。如,表4-1给出的STC单片机RC/RD+ (+5V)系列选型一览表中,就是根据这两个因素进行型号区分的。 (+5V)系列选型一览表中,就是根据这两个因素进行型号区分的。 因此,用C 因此,用C语言进行单片机程序设计是单片机开发与应用的 必然趋势。所以,作为一个致力于单片机系统开发的开发人员来说, 最好能够掌握基本的C 最好能够掌握基本的C语言编程。 基于以上原因,本书的所有项目都是采用Keil C51下的C 基于以上原因,本书的所有项目都是采用Keil C51下的C语 言进行开发的,本章就对C51的一些基本知识进行简要介绍,读者 言进行开发的,本章就对C51的一些基本知识进行简要介绍,读者 可以结合后面的具体项目,加深对这部分知识的理解和掌握。关于 MCS-51单片机利用汇编进行编程方面的知识,有兴趣的读者也可 MCS-51单片机利用汇编进行编程方面的知识,有兴趣的读者也可 以查阅相关的资料自行学习。 5
3
(2)、C语言可以提供良好的人机开发接口 )、C C语言是一种编译型程序设计语言,它兼顾了多种高级语言 的特点,并具备汇编语言的功能,可以实现结构更为复杂的单片机 系统功能。C 系统功能。C语言有功能丰富的库函数,运算速度快、编译效率高、 有良好的可移植性,而且可以直接实现对系统硬件的控制。 C语言是一种结构化程序设计语言,它支持当前程序设计中 广泛采用的由顶向下结构化程序设计技术。此外,C 广泛采用的由顶向下结构化程序设计技术。此外,C语言程序还具 有完善的模块程序结构,从而为软件开发中采用模块化程序设计方 法提供了有力的保障。 因此,使用C 因此,使用C语言进行程序设计已成为软件开发的一个主流。 用C语言来编写目标系统软件,会大大缩短开发周期,并且明显地 增加软件的可读性,便于对已编制好的程序进行改进和扩充,从而 研制出规模更大、性能更完备的系统。
第五讲Keil C51程序 第五讲Keil C51程序 设计基础
1
Keil C51程序设计基础 C51程序设计基础
单片机程序既Байду номын сангаас以用汇编语言也可以用C 单片机程序既可以用汇编语言也可以用C语言进行 编写,两者都可以在C51的环境下进行开发,这两者之间 编写,两者都可以在C51的环境下进行开发,这两者之间 既有区别也有联系。 C51是一种特殊的C编译器,它扬弃了C C51是一种特殊的C编译器,它扬弃了C语言的一些 不适合MCS-51单片机的特性,针对MCS-51单片机的特 不适合MCS-51单片机的特性,针对MCS-51单片机的特 性做了适应性保留,使其更适合对单片机底层硬件进行直 接控制。 汇编语言则是一种用文字助记符来表示机器指令的 符号语言,是最接近机器码的一种语言。其主要优点是占 用资源少、程序执行效率高。但是,不同的CPU其汇编语 用资源少、程序执行效率高。但是,不同的CPU其汇编语 言可能有所差异,所以不易相互之间进行移植。
5.1 标识符和关键字
C语言中的标识符是设计人员在程序中自己定义的一种字符 序列,用来命名程序中需要辨认的对象,包括符号常量、变量、数 组及函数等对象。标识符具有以下一些特征: (1)、由字母、数字、下划线构成。 (1)、由字母、数字、下划线构成。 (2)、开头必须是字母或下划线。 (2)、开头必须是字母或下划线。 (3)、长度不得大于32个字符,而通常是前8 (3)、长度不得大于32个字符,而通常是前8个字符有效。 (4)、区分大、小写字母。 (4)、区分大、小写字母。 例如,以下标识符是合法的: A,x,x_3,BOOK 1,sum5 x_3, 1, 以下标识符是非法的: 3s(以数字开头),s*T(出现非法字符*),-3x(以减号开 3s(以数字开头),s*T(出现非法字符*),-3x(以减号开 头),bowy- (出现非法字符-(减号) 头),bowy-1(出现非法字符-(减号))
2
用这两种语言进行单片机系统开发,存在各自的优 缺点,主要体现在以下几点。 (1)、汇编语言可以更好地针对硬件进行控制 )、汇编语言可以更好地针对硬件进行控制 汇编语言的一条指令就对应一个机器码,每一步执 行什么动作都很清楚,并且程序大小和堆栈调用情况都容 易控制,调试起来也比较方便。而用C语言进行编写,一 易控制,调试起来也比较方便。而用C 条C语言指令编译后,会变成很多条机器码,很容易出现 ROM空间不够、堆栈溢出等问题。 ROM空间不够、堆栈溢出等问题。
相关文档
最新文档