下载后可任意编辑第三章 Keil C 语言及其程序设计C51 是在标准 C 的基础上,根据单片机存储器硬件结构及内部资源,扩展了相应的数据类型和变量,而 C51 在语法规定、程序结构与设计方法上,都与标准 C 基本相同。Keil C 语言的编译器及编译过程如图 3-1 所示。图 3-1 Keil C 语言的编译器及编译过程C 语言是美国国家标准协会(ANSI)制定的编程语言标准,1987 年 ANSI公布 87 ANSI C,即标准 C 语言。Keil C51 语言是在 ANSI C 的基础上针对 51 单片机的硬件特点进行的扩展,并向 51 单片机上移植,经过多年努力,C51 语言已经成为公认的高效、简洁而又贴近 51 单片机硬件的有用高级编程语言。目前大多数的 51 单片机用户都在使用 C51 语言来进行程序设计。用 C51 进行单片机软件开发,有如下优点:(1)可读性好。C51 语言程序比汇编语言程序的可读性好,因而编程效率高,程序便于修改。(2)模块化开发与资源共享。用 C51 开发出来的程序模块可以不经修改,直接被其他项目所用,这使得开发者能够很好地利用已有的大量的标准 C 程序资源与丰富的库函数,减少重复劳动。(3)可移植性好。为某种型号单片机开发的 C 语言程序,只需将与硬件相关之处和编译连接的参数进行适当修改,就可以方便地移植到其他型号的单片机上。例如,为 51 单片机编写的程序通过改写头文件以及少量的程序行,就可以方便地移植到 PIC 单片机上。下载后可任意编辑(4)代码效率高。当前较好的 C51 语言编译系统编译出来的代码效率只比直接使用汇编语言低 10%~20%左右,假如使用优化编译选项,效果会更好。【例】 利用单片机的 P1 口接 8 个发光二极管,P0 口接 8 个开关,编程实现,当开关动作时,对应的发光二极管亮或灭。只须把 P0 口的内容读入后,通过 P1 口输出即可。汇编程序: ORG 0100H MOV P0,#0FFHLOOP: MOV A,P0 MOV P1,A SJMP LOOPC51 语言程序:#include void main(void){unsigned char i;P0=0xFF;while(1) { i=P0;P1=i; }}3.1.2 Keil C51 的开发环境Keil C51 是德国 Keil Software 公司开发的用于 51 系列单片机的 C51 语言开发软件。Keil C51 在兼容 ANSI C 的基础上,又增加很多与 51 单片机硬件相关的编译特性,使得开发 51 系列单片机程序更为方便和快捷,程序代码运行速度快,所需存储器空间小,完全可以和汇编语言相...