1、Keil C51 中文使用手册Keil C51使用详解V1.0 第一章 Keil C51开发系统基本知识. 6第一节 系统概述. 6第二节 Keil C51单片机软件开发系统的整体结构. 6第三节 Keil C51工具包的安装. 7 1. C51 for Dos 7 2. C51 for Windows的安装及注意事项:. 7第四节 Keil C51工具包各部分功能及使用简介. 7 1. C51与A51. 7 2. L51和BL51. 8 3. DScope51,Tscope51及Monitor51. 8 4. Ishell及uVision. 9第二章 Keil C51软件使用详解. 10第一
2、节 Keil C51编译器的控制指令. 10 1. 源文件控制类. 10 2. 目标文件(Object)控制类:. 10 3. 列表文件(listing)控制类:. 10第二节 dScope51的使用. 11 1. dScope51 for Dos 11 2. dScope for Windows 12第三节 Monitor51及其使用. 13 1. Monitor51对硬件的要求. 13 2. Mon51的使用. 13 3. MON51的配置. 13 4. 串口连接图:. 13 5. MON51命令及使用. 14第四节 集成开发环境(IDE)的使用. 14 1. Ishell for Dos
3、的使用. 14 2. uVision for windows的使用. 15第三章 Keil C51 vs 标准C. 15第一节 Keil C51扩展关键字. 15第二节 内存区域(Memory Areas):. 16 1. Pragram Area:. 16 2. Internal Data Memory: 16 3. External Data Memory. 16 4. Speciac Function Register Memory. 16第三节 存储模式. 16 1. Small模式. 16 2. Compact模式. 17 3. large模式. 17第四节 存储类型声明. 17第五
4、节 变量或数据类型. 17第六节 位变量与声明. 17 1. bit型变量. 17 2. 可位寻址区说明20H2FH. 18第七节 Keil C51指针. 18 1. 一般指针. 18 2. 存储器指针. 18 3. 指针转换. 18第八节 Keil C51函数. 19 1. 中断函数声明:. 19 2. 通用存储工作区. 19 3. 选通用存储工作区由using x声明,见上例。. 19 4. 指定存储模式. 19 5. #pragma disable. 19 6. 递归或可重入函数指定. 19 7. 指定PL/M51函数. 20第四章 Keil C51高级编程. 20第一节 绝对地址访问.
5、 20 1. 绝对宏:. 20 2. _at_关键字. 21 3. 连接定位控制. 21第二节 Keil C51与汇编的接口. 21 1. 模块内接口. 21 2. 模块间接口. 21第三节 Keil C51软件包中的通用文件. 22 1. 动态内存分配. 22 2. C51启动文件STARTUP.A51. 22 3. 标准输入输出文件. 25 4. 其它文件. 25第四节 段名协定与程序优化. 25 1. 段名协定(Segment Naming Conventions) 25 2. 程序优化. 25第五章 Keil C51库函数参考. 26第一节 本征库函数(intrinsic routin
6、es)和非本征证库函数. 26第二节 几类重要库函数. 261. 专用寄存器include文件. 262. 绝对地址include文件absacc.h. 263. 动态内存分配函数,位于stdlib.h中. 274. 缓冲区处理函数位于“string.h”中. 275. 输入输出流函数,位于“stdio.h”中. 27第三节 Keil C51库函数原型列表. 271. CTYPE.H. 272. INTRINS.H. 273. STDIO.H. 284. STDLIB.H. 285. STRING.H. 28第六章 Keil C51例子:Hello.c. 29第一节 uVision for W
7、indows的使用步骤. 29第二节 Ishell for Dos使用步骤. 30第七章 Keil C51的代码效率. 30第一节 存储模式的影响. 30第二节 程序结构的影响. 31第八章 dScope for Windows使用详解. 32第一节 概述. 321. 主窗口(Mainframe Window). 322. 调试窗口(DEBUG Window). 323. 命令窗口(Command Window). 324. 观察窗口(Watch Window). 325. 寄存器窗口(Registe Window). 326. 串口窗口(Serical Windows). 327. 性能分析
8、窗口. 328. 内存窗口(Memory Window). 329. 符号浏览窗口(Symbol Browser Window). 3310. 调用线窗口(CallStack Window). 3311. 代码覆盖窗口. 3312. 外围设备窗口(peripherals) 33第二节 dScope for Windows基本操作. 331. 指定初始化文件. 332. 观察变量. 333. 显示RAM的值. 344. 观察堆栈. 345. 中断处理程序调试. 346. 性能分析(Performance Analyzer:PA). 34第三节 dScope for Windows命令文件的编制.
9、 341. 地址空间及地址空间类型. 342. 常量. 353. 变量. 364. 运算符. 385. 表达式. 386. 数组. 387. 结构和联合. 388. 指针:. 389. dScope命令语句. 3810. 函数. 43 第一章 Keil C51开发系统基本知识第一节 系统概述 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows
10、界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。 下面详细介绍Keil C51开发系统各部分功能和使用。第二节 Keil C51单片机软件开发系统的整体结构 C51工具包的整体结构,如图(1)所示,其中uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件
11、(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。 图(1) C51工具包整体结构图第三节 Keil C51工具包的安装1. C51 for Dos 在Windows下直接运行软件包中DOSC51DOS.exe然后选择安装目录即可。完毕后欲使系统正常工作须进行以下操作(设C:C51为安装目录):修改Autoexec.bat,加入path=C:C
12、51BinSet C51LIB=C:C51LIBSet C51INC=C:C51INC然后运行Autoexec.bat2. C51 for Windows的安装及注意事项: 在Windows下运行软件包中WINSetup.exe,最好选择安装目录与C51 for Dos相同,这样设置最简单(设安装于C:C51目录下)。然后将软件包中crack目录中的文件拷入C:C51Bin目录下。 第四节 Keil C51工具包各部分功能及使用简介1. C51与A51(1) C51C51是C语言编译器,其使用方法为:C51 sourcefile编译控制指令或者 C51 commandfile 其中source
13、file为C源文件(.C)。大量的编译控制指令完成C51编译器的全部功能。包控C51输出文件C.LST,.OBJ,.I和.SRC文件的控制。源文件(.C)的控制等,详见第五部分的具体介绍。 而Commandfile为一个连接控制文件其内容包括:.C源文件及各编译控制指令,它没有固定的名字,开发人员可根据自己的习惯指定,它适于用控制指令较多的场合。(2) A51A51是汇编语言编译器,使用方法为:A51 sourcefile编译控制指令或 A51 commandfile其中sourcefile为汇编源文件(.asm或.a51),而编译控制指令的使用与其它汇编如ASM语言类似,可参考其他汇编语言材
14、料。Commandfile同C51中的Commandfile类似,它使A51使用和修改方便。2. L51和BL51(1) L51 L51是Keil C51软件包提供的连接/定位器,其功能是将编译生成的OBJ文件与库文件连接定位生成绝对目标文件(.ABS),其使用方法为: L51 目标文件列表库文件列表 to outputfile 连接控制指令或 L51 Commandfile 源程序的多个模块分别经C51与A51编译后生成多个OBJ文件,连接时,这些文件全列于目标文件列表中,作为输入文件,如果还需与库文件(.LiB)相连接,则库文件也必须列在其后。outputfile为输文件名,缺少时为第一模
15、块名,后缀为.ABS。连接控制指令提供了连接定位时的所有控制功能。Commandfile为连接控制文件,其具体内容是包括了目标文件列表,库文件列表及输出文件、连接控制命令,以取代第一种繁琐的格式,由于目标模块库文件大多不止1个,因而第2种方法较多见,这个文件名字也可由使用者随意指定。(2) Bl51 BL51也是C51软件包的连接/定位器,其具有L51的所有功能,此外它还具有以下3点特别之处: a. 可以连接定位大于64kBytes的程序。 b. 具有代码域及域切换功能(CodeBanking & Bank Switching) c. 可用于RTX51操作系统 RTX51是一个实时多任务操作系
16、统,它改变了传统的编程模式,甚至不必用main( )函数,单片机系统软件向RTOS发展是一种趋势,这种趋势对于186和386及68K系列CPU更为明显和必须,对8051因CPU较为简单,程序结构等都不太复杂,RTX51作用显得不太突出,其专业版软件PK51软件包甚至不包括RTX51Full,而只有一个RTX51TINY版本的RTOS。RTX51 TINY适用于无外部RAM的单片机系统,因而可用面很窄,在本文中不作介绍。Bank switching技术因使用很少也不作介绍。3. DScope51,Tscope51及Monitor51(1) dScope51 dScope51是一个源级调试器和模拟
17、器,它可以调试由C51编译器、A51汇编器、PL/M-51编译器及ASM51汇编器产生的程序。它不需目标板(for windows也可通过mon51接目标板),只能进行软件模拟,但其功能强大,可模拟CPU及其外围器件,如内部串口,外部I/O及定时器等,能对嵌入式软件功能进行有效测试。其使用方法为: DS51debugfileINIT(initfile) 其中debugfile是一个Hex格式的8051文件,即待调试的文件其为可选的,可在进入dScope51后用load命令装入。 Initfile为一个初使化文件,它在启动dScope51后,在debugfile装入前装入,装有一些dScope的
18、初使化参数及常用调试函数等。下面是一个dScope.ini文件(for dos)的内容: Load .ds518051.iof Map 0,0xffffdScope51 for Windows则直接用鼠标进入,然后用load装入待调文件。(2) tScope51 与dScope51不同的是Scope51必须带目标板,目前它可以通过两种方式访问目标板。(1) 通过EMul51在线仿真器,tScope51为该仿真器准备了一个动态连接文件EMUL51.IOT,但该方法必须配合该仿真器。(2) 通过Monitov51监控程序,这种方法是可行的,tScope51为访问Monitor51专门带有MON51
19、.IOT连接程序,使用时可通过串口及监控程序来调试目标板。其使用方法为: TS51INIT(file_name.ini)其中file_name.ini为一个初使化文件。 进入TS51后,必须装入IOT文件,可用的有MON51.IOT及EMUL51.IOT两种,如装入MON51.IOT: Load.C:C51TS51MON51.IOT CPUTYPE(80517)可惜的是tScope51只有for Dos的版本。(3) Monitor 51 Monitor51是一个监控程序通过PC机的串口与目标板进行通信,Monitor操作需要MON51或dScope51 for Windows,后面部分将对M
20、onitor51做较为详细的介绍。4. Ishell及uVision(1) Ishell for Dos 这是一个for Dos的IDE,直接在命令行键入Ishell,则进入该环境,它使用简单方便。其命令行与DOS命令行具有同样的功能,对单模块的Project直接由菜单进行编译连接,对多模块的project。则通过批处理,BAT文件进行编译连接,然后通过菜单控制由dScope51或tScope51对程序进行调试,因为是for dos的,不做太详细介绍。(2) uVision for Windows uVision for Windows是一个标准的Windows应用程序,它是C51的一个集成软
21、件开发平台,具有源代码编辑、project管理、集成的make等功能,它的人机界面友好,操作方便,是开发者的首选,具体配置及使用见第五部分。第二章 Keil C51软件使用详解第一节 Keil C51编译器的控制指令 C51编译器的控制指令分为三类:源文件控制类,目标文件控制类及列表控制类。1. 源文件控制类 NOEXTEND:C51源文件不允许使用ANSI C扩展功能。 DEFINE(DF):定义预处理(在C51命令行)。2. 目标文件(Object)控制类: COMPACT LARGE SMALL 选编译模式 DEBUG(DB) 包含调试信息,以供仿真器或dSCope51使用。 NOAMA
22、KE(NOAM) 禁止AutoMake信息记录 NOREGPARMS 禁止用寄存器传递参数 OBJECTEXTEND(OE) Object文件包含附加变量类型信息 OPTIMIZE(OT) 指定优化级别 REGFILE(RF) 指定一个寄存器使用的文件以供整体优化用 REGISTERBANK(RB) 指定一个供绝对寄存器访问的寄存器区名 SRC 不生成目标文件只生成汇编源文件 其它控件不常用。3. 列表文件(listing)控制类: CODE(CD):向列表文件加入汇编列表 LISTINCLUDE(LC):显示indude文件 SYMBOLS(SB):列表文件包括模块内所有符号的列表 WARN
23、INGLEVEL(WL):选择“警告”级别第二节 dScope51的使用1. dScope51 for Dos 总的来说dScope51具有以下特性: 高级语言显示模式 集成硬件环境模拟 单步或“GO”执行模式 存储器、寄存器及变量访问 Watch表达式之值 函数与信号功能 下面,具体说明在进入dScope51 for Dos之后,如何实现上述功能,dScope51采用下拉菜单格式和窗口显示控制,共有language、serial、exe、register四个窗口,其中exe为命令行窗口,language为程序窗口,serial为串口窗,register为寄存器窗。(1) 高级语言显示模式 单
24、击主菜单中的“View”,第一栏中的三条命令“Highlevel”、“Mixed”、“Assembly”分别对所装入的程序按照“高级”、“混合级”及“汇编级”三种方式显示,以方便调试使用。(2) 集成硬件环境模拟显示 主菜单中“Peripheral”各条能显示模拟硬件环境的状态,其中: i/o Port:显示各I/O口之值,对8031而言SFR中的P1、P2、P3、P0与引脚之值分别列出: Interrupt:显示5个中断源的入口模式是否允许,优先级等中断状态。 Timer:显示各定时/计数器的模式,初始值状态等。 int Message:中断信息允许,如为允许(“”出现),则当中断申请时,显
25、示中断源信息。比如当中断发生时会显示: “interrupt Timer 0 occured”等 A/D converter: 显示A/D转换器状态无时,则提示“无”。 Serial:串口信息显示,包括串口模式、波特产等 Other:其它器件,如为8031则显示“ 无”(3) 单步或“Go”执行 “F8”单步执行,“F5”全速执行到断点。或选主菜单中Trace单步执行CPU中的Go全速执行。(4) 存储器寄存器及变量访问 外部存储器管理MAP菜单:设置(set)、取消(reset)、显示(Display)处理可用存储空间。修改Code代码:ASM命令存储器显示命令:D 类别为(X、D、I、B、
26、C)修改存储器命令:E 有以下几种命令EB、EC、EI、EL、EF、EP复杂数据类型显示:Object命令;用以显示结构或数组的内容。欲使此命令有效,C51编译器必须有DB及OBJECTEXTEND两条。反汇编命令:U(5) “Watch”表达式之值 在View菜单的“Watch”一栏中有四项:其中包括定义Watch Point(Define)、删除Watch Point(remove,kill all),及自动更新选项。 也可用WS、WK等命令代替,下面具体看“表达式”类型:dScope51一次最多可设16个WtchPoint表达式,显示于Watch Window之中,表达式可以是简单变量,
27、也可是复杂数据类型如结构、数组和指向结构的指针等,例如: WS *ptime WS ptimehour WS some_recordo,analog等等(6) 关于.IOF文件 启动DS51后必须装入.IOF文件才能使CPU及Peripheral各项起作用,这个函数的使用是依据8051系列CPU的不同特点,装入8051各CPU硬件设备模拟驱动文件,比如8031CPU就必须load DS51目录下的8051.IOF。2. dScope for Windows dScope for windows具有dScope for dos的全部功能,此外,它还具有以下明显的优点: (1) 标准的Window
28、s界面,操作更容易更简单; (2) 常用操作多用对话框,而非Dos的行命令方式; (3) 窗口资源更加丰富:存储器窗口、覆盖率分析、运行状态分析窗口,加强了调试功能; 因为dScope for Windows功能强大,具体操作在第八章详细介绍。第三节 Monitor51及其使用1. Monitor51对硬件的要求 (1) 硬件系统为51系列CPU; (2) 带5K外部程序存储器(从O地址开始),存放Monitor51程序; (3) 256Bytes的外部数据存储器以及5K的跟踪缓冲区,此外,外部数据存储器必须足够容纳所有应用程序代码及数据,且所有外部数据存储器必须为冯诺伊曼存储器,即能一致访问
29、XDATA与Code空间。 (4) 一个定时器作为波特率发生器供串口使用; (5) 6 Bytes的空余堆栈。2. Mon51的使用 Mon51的使用途径有三种方式: (1) Dos行命令方式 即先用install对MON51进行配置,然后用MON51进入Monitor状态,启用各种命令对Monitor51进行调试。 (2) tScope51方式 启动tScope51装入TS51目录下的MON51.IOT驱动文件,与目标板通信。 (3) dScope51 for Windows方式 在选CPU驱动文件时,选“MON51.dll”,则检查目标板并进入MON51状态。3. MON51的配置 (1)
30、 MON51 for Dos的配置 运行install文件(在MON51目录下),不同的参数可以配置不同的硬件环境。INSTALL Serialtype xdstastartcodestartbankPROMCHECK,具体说明见MON51帮助文件或使用手册。 (2) MON51 for Windows的配置 在启用MON51.dll时,会使得系统自动检查目标板连接,如配置不对,则弹出“Configuration”对话框,设置PC串口,波特率等,完毕单击“apply”有效。4. 串口连接图:收发交叉互连,RTS、CTS直连,DSR、DTR直连,具体引脚排列参考串口资料。5. MON51命令及使用详细的MON51命令可参阅帮助。第四节 集成开发环境(IDE)的使用1. Ishell for Dos的使用 进入Ishell之后看到两个窗口:一个是文件窗口,一个是Dos命令行窗口,窗口上方是下拉式的
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1