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

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

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

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

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

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

第9章单片机C语言程序设计 9.1KeilC简介与环境设置 9.2Cx51简介 9.3Cx51开发工具简介 9.4Cx51应用程序设计举例随着单片机应用的深入发展和强盛的社会需求,应用高级语言进行单片机程序设计正在逐渐增多,本章主要介绍如何用C语言开发单片机应用程序。 一般情况下单片机常用的程序设计语言有两种: ●汇编语言: 汇编语言具有执行速度快、占存储空间少、对硬件可直接编程等特点,因而特别适合在对实时性能要求比较高的情况下使用。 ●C语言: C语言克服了汇编语言的不足之处,同时又增加了代码的可读性,C语言大多数代码被翻译成目标代码后,其效率和汇编语言相当。特别是C语言的内嵌汇编功能,使C语言对硬件操作更加方便。 9.1KeilC简介与环境设置 KeilCμVision2开发环境是德国KeilSoftware,Inc.andKeilElektronikGmbH开发的微处理器开发平台,可以开发多种8051兼容单片机程序。其界面如图9-1所示。图9-1:KeilCμVision2Cx51有两种使用方式。第一种方式是在μVision2IDE中使用,不用进行设置;第二种方式是在命令提示符下使用。如果使用命令方式,需要设置如下变量: ①PATH=E:\Keilc\C51\BIN ②TMP=E:\Keilc\Tmp ③C51INC=E:\Keilc\C51\INC ④C51LIB=E:\Keilc\C51\LIB 在WindowsNT环境下设置方式为:我的电脑->属性->高级->环境变量->新建 设置好运行环境后就可以在命令提示符下编译C语言源程序,其格式如下: C51源文件名[控制命令...] 9.2Cx51简介 9.2.1Cx51的扩展 Cx51编译器兼容ANSIC标准,又扩展支持了8051微处理 器,其扩展内容如下: ①存储区; ②存储区类型; ③存储模型; ④存储类型说明符; ⑤变量数据类型说明符; ⑥位变量和位可寻址数据; ⑦SFR; ⑧指针; ⑨函数属性。 9.2.2存储区 8051单片机支持程序存储器和数据存储器的分离,存储器根据读写情况可以分为:程序存储区(ROM)、快速读写存储器(内部RAM)、随机读写存储器(外部RAM)。1.程序存储器(code) 在8051中程序存储器是只读存储器,其空间为64K。 2.内部数据存储器 在8051单片机中,内部数据存储器属于快速可读写存储器,与51兼容的扩展型单片机最多有256字节内部数据存储区。 3.外部数据存储器 外部数据存储器又称随机读写存储器,访问存储空间为64KB。其访问速度要比内部RAM慢。访问外部RAM的数据要使用指针进行间接访问。 9.2.3存储模式 在Cx51中,存储器模式可以确定一些变量在缺省情况下的存储器类型。程序中可用编译器控制命令SMALL、COMPACT、LARGE指定存储器模式。 1.SMALL模式 SMALL模式中所有的变量在缺省的情况下位于单片机的内部数据区,这和用data存储类型标识符声明的变量是相同的。在本模式中变量访问非常有效,然而所有对象和堆栈必须适和内部RAM。 2.COMPACT模式 COMPACT模式中所有变量在缺省的情况下都存放在外部数据区的一页(256B)中,这和用pdata存储类型标识符声明的变量是相同的。 3.Large模式 LARGE模式下所有变量在缺省情况下存放在外部数据存储区(范围为64k字节),这和用xdata存储类型标识符声明的变量是一致的,该模式使用数据指针DPTR寻址。 9.2.4数据类型 在Cx51中不仅支持所有的C语言标准数据类型,而且还对其进行了扩展,增加了专用于访问8051硬件的数据类型,使其对单片机的操作更加灵活。1.bit类型 bit用于声明位变量,其值为1或0。 2.sbit类型 sbit类型用于声明可位寻址变量中的某个位变量,其值为1或0。 3.sfr类型 sfr类型用于声明特殊功能寄存器(8位),位于内部RAM地址为0x80-0xFF的128字节存储单元,这些存储器一般用作对计时器、计数器、串口、并口和外围使用。 4.sfr16类型 sfr16类型用于声明两个连续地址的特殊功能寄存器(地址范围为0~65535)。 9.2.5指针 所谓指针就是存储单元的地址,指针变量就是存放地址的变量。 在Cx51编译器中指针可以分为两种类型:通用指针和指定存储区地址指针。1.通用指针 所谓通用指针是指未对指向的对象(变量)存储空间进行说明的指针。通用指针可以访问8051存储空间中与位置无关的任何变量。 2.存储区域的指针 所谓存储区域的指针是指在指针声明中包含存储器类型。 程序中使用指定存储区域的指针速度要比通用指针快(指定存储区域指针在编译时Cx51编译器已知道其存储区域,而通用指针直到运行时才确定存储区域