文档介绍:第4章
C51高级语言程序设计
C语言高级编程
C语言的特点
C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,能直接对计算机硬件进行操作。既有高级语言的特点,也具有汇编语言的特点。
语言简洁、紧凑,使用方便、灵活 。
运算符丰富。
数据结构丰富,拥有现代语言的各种数据结构。
可进行结构化程序设计。
可以直接对计算机硬件进行操作。
生成的目标代码质量高,程序执行效率高。
可移植性好。
C语言与MCS-51单片机
汇编语言优点:执行效率高、速度快、与硬件结合紧密;I/O端口操作时,使用汇编语言快捷、直观。
缺点:编程难度大,可读性差,不便于移植,开发周期长。
C语言优点:程序设计相对比较容易,支持多种数据类型,可移植性强,也能够对硬件直接访问,能够按地址方式访问存储器或I/O端口。
故目前有较多的开发者用C语言开发单机应用系统软件。。
C51编译器
C51编译器的作用是将C语言源程序翻译成51系列单片机可执行的代码,并且为程序调试提供必要的符号信息。
目前使用最广泛的是德国Keil公司的Keil μVision C51编译器
Keil C51 编译器在代码生成方面领先,可产生最少的代码。它支持浮点数和长整型、重入和递归。
keil 8051开发工具
采用C51编写的应用程序结构清楚、模块化程度高、可读性强。
应用C51进行软件开发,用户可以不必具体考虑寄存器、存储器的分配等工作,而把这部分工作交给编译、连接软件,用户只需了解MCS-51的存储器结构。
C51开发环境一般都提供了数学计算等子程序库,为程序开发带来方便。
对于相对复杂的系统开发或复杂运算,比用汇编语言容易的多,有利于系统的维护和升级。
在实时要求较高的场合,可采用C51汇编混合编程。
C51程序结构
C51程序结构与标准的C语言程序结构相同,采用函数结构,一个程序由一个或多个函数组成。
有一个且只有一个为main( )函数。
在main( )函数中可调用库函数和用户定义的函数。
程序的开始部分一般是预处理命令、函数说明和变量定义等。
预处理命令#include<>
函数说明 long fun1( ) ;
float fun2( );
变量定义 int x ,y;
float z;
主函数 main( )
{
…
fun1( ); /*调用功能函数 1*/
…
fun2( ); /*调用功能函数 2*/
…}
功能函数1 fun1( );
{
函数体1
…
}
功能函数2 fun2( );
{
函数体2
…
}
C51程序的结构实例:
C51对标准C语言的扩展
存储区域
51系列单片机的内存区域被分为两大类。一类是程序存储区,即ROM;另一类是数据存储区,包括内部数据存储区和外部数据存储区。内部数据存储区中又包含了51的特殊功能寄存器。
程序存储区由关键字code进行说明。
在C51中可以用以下关键字对变量进行内部存储区的定位。
Data:直接寻址区,内部RAM的低128B,即00H~7FH
Idata:间接寻址区,整个RAM区,即00H~0FFH
Bdata:可位寻址区,从20H开始的16个可以位寻址的字节,即20H~2FH
存储区域
C51中,可以用以下关键字对变量进行内部存储区的访问。
xdata:可指定多达64KB的外部直接寻址区,地址范围0000H~0FFFFH
pdata:能访问1页(256B)的外部RAM,pact Modle)
存储区域