【内容概要】本章介绍C51语言编程的基础知识,比较C51语言和8051汇编语言编程,了解C51语言与标准C语言的区别,介绍C51语言的数据类型和存储类型,基础知识还介绍了C51语言的操作、分支和循环结构、数组、指针、函数等。
随着单片机应用系统越来越复杂,对程序可读性、升级维护、模块化的要求也越来越高。 对软件编程的要求也越来越高,这就要求程序员能够在短时间内编写出程序。 产生执行效率高、运行可靠的程序代码。 同时,还应该方便多个程序员进行协作开发。
C51语言是当前8051单片机应用开发中常用的编程语言。 C51语言可以直接操作8051单片机硬件。 它兼有高级语言和汇编语言的特点。 因此,C51语言广泛应用于8051单片机编程中。
3.1 C51编程语言简介
C51语言是在标准C语言的基础上,根据8051单片机的硬件特点进行了扩展,并移植到8051单片机上。 经过多年的努力,C51语言已成为公认的高效、简洁的8051单片机实用高级编程语言。 与8051汇编语言相比,C51语言在功能、结构、可读性、可维护性等方面具有明显的优势,并且易学易用。
3.1.1 C51语言与8051汇编语言的比较
与8051单片机汇编语言相比,C51语言具有以下优点。
(1)可读性好。 C51语言程序比汇编语言程序可读性强,编程效率高,易于修改、维护和升级。
(2)模块化开发,资源共享。 使用C51语言开发的程序模块无需修改就可以直接被其他项目使用,让开发者能够很好地利用现有的大量标准C程序资源和丰富的库函数,从而减少重复工作,也让很多开发者受益。 程序员协同开发。
(3)便携性好。 针对某种类型的单片机开发的AC语言程序,只需修改硬件相关的头文件和编译链接参数,就可以方便地移植到其他类型的单片机上。 例如,为8051单片机编写的程序可以通过重写头文件和几行程序轻松移植到PIC单片机上。
(4)生成的代码效率高。 目前比较好的C51语言编译系统编译出来的代码,只比直接使用汇编语言低20%左右的效率。 如果使用优化的编译选项,最高效率可以达到90%。
3.1.2 C51语言与标准C语言的比较
C51语言与标准C语言有很多相似之处,但也有自己的一些特点。 不同的嵌入式C语言编译系统之所以与标准C语言不同,主要是因为它们针对的硬件系统不同。 对于8051单片机来说,目前广泛使用的是C51语言。
C51语言的基本语法与标准C语言相同,只是它是在标准C语言的基础上进行扩展的,适用于8051内核的单片机硬件。 深入理解C51语言对标准C语言的扩展及其差异是掌握C51语言的关键之一。
C51 语言与标准 C 语言之间的一些区别如下。
(1)库函数的差异。 标准C语言中不适合嵌入式控制器系统的库函数被排除在C51语言之外,例如字符屏幕和图形函数。 一些库函数必须根据8051单片机的硬件特点进行相应的开发。 。 例如,库函数printf和scanf在标准C语言中通常用于屏幕打印和接收字符,但在C51语言中,它们主要用于发送和接收串口数据。
(2)数据类型存在一定差异。 C51语言中增加了8051单片机特有的几种数据类型,并在标准C语言的基础上扩展了四种类型。 例如8051单片机就含有一定的位操作空间和丰富的位操作指令。 因此,C51语言与标准C语言相比增加了位类型。
(3)C51语言的变量存储方式与标准C语言的变量存储方式数据不同。 标准C语言最初是为通用计算机设计的。 在通用计算机中,只有一个内存空间,程序和数据被统一寻址。 C51语言中变量的存储方式与8051单片机的各个存储区域密切相关。
(4)数据存储类型的差异。 8051单片机存储区可分为内部数据存储区、外部数据存储区和程序存储区。 内部数据存储区可分为3种不同的C51存储类型:data、idata和bdata。 外部数据存储分为2种不同的C51存储类型:xdata和pdata。 程序存储区只能读不能写。 它可能位于 8051 微控制器内部或外部。 使用C51语言提供的代码存储类型来访问程序存储区域。