200 likes | 347 Views
第四讲 开发工具 KeilC51 介绍. 一、应用 C 语言开发单片机程序 二、熟悉 Keil 开发单片机 C 程序的流程 三、 C 关于 SFR 及位 的定义 四、掌握 Keil 与 Proteus 联合调试的方法 五、实训. 一、应用 C 语言开发单片机程序. 1 、单片机运行程序的流程 两种类型的语言 汇编语言 C 语言 2 、汇编语言 优点: 执行 效率高 ,运行 速度快 , 与硬件结合较好 ,能充分发挥程序员的优势。 缺点: 对编程人员要求高, 编程难度大 , 开发周期长 , 硬件更换后程序的可移植性差,可读性差。 不大适合专业人员开发程序 。.
E N D
第四讲 开发工具KeilC51介绍 一、应用C语言开发单片机程序 二、熟悉Keil开发单片机C程序的流程 三、C关于SFR及位的定义 四、掌握Keil与Proteus联合调试的方法 五、实训
一、应用C语言开发单片机程序 • 1、单片机运行程序的流程 • 两种类型的语言 • 汇编语言 • C语言 • 2、汇编语言 • 优点: • 执行效率高,运行速度快,与硬件结合较好,能充分发挥程序员的优势。 • 缺点: • 对编程人员要求高,编程难度大,开发周期长,硬件更换后程序的可移植性差,可读性差。不大适合专业人员开发程序。
3、C语言 • 具有以下优点: • 1)C语言是编译型语言,具有高级语言的特点,也具备汇编语言简洁、可以控制硬件的功能。 • 2)表达能力强,易于编程,可读性好。 • 3)可移植性好,C语言本身不依赖系统硬件,可以很容易移植到不同类型的单片机上。编译时要选择芯片,将同一条语句变成该芯片对应的指令。 • 4)有丰富的库函数可以调用。 • 5)寄存器的分配,由编译器完成,编程者可将精力集中到软件整体设计,有利于提高软件质量。(汇编语言编程者必须记住这些分配)
6)可以多人编写一个大程序,将各模块之间接口确定即可。6)可以多人编写一个大程序,将各模块之间接口确定即可。 • 7)有实时多任务操作系统(RTOS),可以合理的分配CPU的时间及单片机的资源。 • 8)开发周期短,适合工程技术人员开发应用软件。 • 存在的问题: • 1)代码长度, C语言向单片机移植,最大的困难之一“是高级语言产生的代码长,运行速度慢” 。 • 2)单片机种类多,结构不同。编译软件还不能全部适应。
二、熟悉Keil开发单片机C程序的流程 • 1、Keil编译器简介 • Keil是德国Keil公司开发的单片机编译器,是目前最好的51单片机开发工具之一。Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统。 • Keil C51 软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。 • Keil C51标准C编译器为8051微控制器的软件开发提供了C语言环境。C51已被完全集成到μVision3的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。
2、Keil C51 单片机软件开发系统的整体结构 • 可以完成编辑、编译、连接、调试、仿真等整个开发流程,该集成系统可以编译C源程序,也可以编译汇编语言源程序。 • C51工具包的整体结构如图所示
由C51及A51编译器编译生成目标文件(.OBJ); • 目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS) ; • 由OH51转换成标准的Hex文件。 HEX文件供调试器使用进行源代码级调试。 HEX文件也可由仿真器使用对目标板调试。 HEX文件是最后写入程序存贮器中的代码。
3、单片机C语言与一般C语言的异同 • 相同点: • 语法结构基本相同,也是采用函数结构;大部分函数相同。 • 不同点: • 1)输入、输出不同 • 2)数据类型不同 • 单片机增加了bit、sbit、sfr、sfr16等数据类型。 • 3)单片机C语言增加了存储类型。 • 4)不隐含支持递归调用,要递归调用前必须说明。 • 5)库函数不同。 • 如在CX51中没有fputs等库函数。在ANSIC中没有_NOP_,_crol_( )应用时查相关资料。
6)单片机C有自动覆盖技术 • 单片机的RAM和计算机相比少的可怜,所以在编译时会自动分析判断,将不再被用的变量占用的空间重新使用。 • 7)单片机C有优化技术,可以最大限度减少代码长度。 • 8)由于单片机C语言编程的目的是要将程序最后固化到单片机或者EPROM中,所以最后要生产后缀为.HEX的文件,该文件可以固化到单片机中。 • 用单片机C语言编程是要注意: • 1) 应用单片机的c更要注重对系统资源的理解 • 2) 对于程序上应用的各种算法要精简
三、C关于SFR及位的定义 • 1、 SFR • C51扩充的数据类型,用于访问MCS-51单片机中的特殊功能寄存器数据,它分sfr和sfr16两种类型。 • sfr为字节型特殊功能寄存器类型,占一个内存单元,利用它可以访问MCS-51内部的所有特殊功能寄存器; • sfr16为双字节型特殊功能寄存器类型,占用两个字节单元,利用它可以访问MCS-51内部的所有两个字节的特殊功能寄存器。 • 在C51中对特殊功能寄存器的访问必须先用sfr或sfr16进行声明。
格式如下: • sfr或sfr16 sfr_name=地址; • 例如: • sfr PSW=0xD0; • sfr P0=0x80; • sfr P1=0x90; • sfr P2=0xA0; • sfr P3=0xB0; • sfr16 DPTR=0x82; • DPTR低8位地址=0x82,高8位地址=0x83。 在0x80~0xFF之间。
2、位变量——bit、sbit • 在C51中,支持两种位类型:bit型和sbit型。它们在内存中都只占一个二进制位,其值可以是“1”或“0”。 • 用bit定义的位变量在C51编译器编译时,在不同的时候位地址是可以变化的 • 用sbit定义的位变量必须与MCS-51单片机的一个可以寻址位单元或可位寻址的字节单元中的某一位联系在一起,在C51编译器编译时,其对应的位地址是不可变化的。
(1)sbit位类型定义的方法: • 第一种方法:Sfr_name^int_constant(0~7) • 比如: • sfr PSW=0xD0; • sbit OV=PSW^2; • sbit CY=PSW^7; • sfr P2=0xA0; • sbit led_flash=P2^0; • sbit 7segment_display=P2^1; • sfr P3=0xB0; • sbit RXD=P3^0; • sbit TXD=P3^1; 在0x80~0xFF之间,并能位寻址。
第二种方法:int_constant^int_constant(0~7) • 比如: • PSW的地址为:0xD0; • sbit OV=0xD0^2; • sbit CY=0xD0^7; • P2的地址为: 0xA0; • sbit led_flash=0xA0^0; • sbit 7segment_display=0xA0^1; • P3的地址为: 0xB0; • sbit RXD=0xB0^0; • sbit TXD=0xB0^1; 在0x80~0xFF之间,并能位寻址。
第三种方法:int_constant • 比如: • PSW的地址为:0xD0; • sbit OV=0xD2; • sbit CY=0xD7; • P2的地址为: 0xA0; • sbit led_flash=0xA0; • sbit 7segment_display=0xA1; • P3的地址为: 0xB0; • sbit RXD=0xB0; • sbit TXD=0xB1; 在0x80~0xFF之间,并能位寻址。
(2)bit类型 • 定义一个位变量,例: • bit led_flash; • bit t_count; • bit status_flag; • 在程序编译时,编译器会把这些位变量安放在片内RAM的位寻址区,即片内的0x20~0x2F单元,共16字节,128个位。
C51编译器把MCS-51单片机的常用的特殊功能寄存器和特殊位进行了定义,放在一个“reg51.h”或“reg52.h”的头文件中。用一条预处理命令:C51编译器把MCS-51单片机的常用的特殊功能寄存器和特殊位进行了定义,放在一个“reg51.h”或“reg52.h”的头文件中。用一条预处理命令: • #include <reg51.h> • #include <reg52.h> • 然后就可使用殊功能寄存器名和特殊位名称。 • 头文件的位置: • C:\Keil\C51\INC
四、掌握Keil与Proteus联合调试的方法 • 1、安装Proteus; • 2、安装Keil; • 3、运行压缩包内 “\Keil驱动\vdmagdi.exe” ,安装完毕; • 4、把proteus安装目录下MODELS目录中的VDM51.dll(如果能找到,否则在网上找到它),文件复制到Keil安装目录的 \C51\BIN 目录中; • 5、修改keil安装目录下 Tools.ini文件,在C51字段加入 TDRV8=BIN\VDM51.DLL (“Proteus VSM Monitor-51 Driver”),保存; • 注意:不一定要用TDRV8,根据原来字段选用一个不重复的数值就可以了;
5、运行"ISIS 7 Professional,画出相应电,打开"菜单"Debug(调试)", 选中"Use Remote Debug Monitor(使用远程调试监控)"; • 6、每次新建Keil C的工程后,进入菜单“Project”->“Options for Target ‘Target 1’ ," 打开"Options for Target 'Target 1' "窗口后,选择"Debug"选项卡, 选择右边的Use:"Proteus VSM Simulators",确定; 再进入seting,如果同一台机IP 名为127.0.0.1,如不是同一台机则填另一 台的IP地址,端口号一定为8000 • 注意:可以在一台机器上运行keil,另一台中运行proteus进行远程仿真; • 7、在keil中编写MCU的程序,进行debug,同时在proteus中查看直观的结果。
五、实训 • 1、建立Keil与Proteus联合调试环境; • 2、应用C语言开发简单的应用程序,如下图所示: • 题目:闪烁的LED • 要求: • (1)采用C语言编写; • (2) LED闪烁; • (3)修改闪烁的频率