本书重点阐述在Windows集成开发环境µVision 2下,使用C51高级语言开发和调试C语言程序,帮助读者达到熟练掌握二使用州µVision 2。书中所有的例子都经过认真审核,以确保无技术问题。
本书可作为从事嵌入式应用系统和单片机开发的技术人员的参考书,也可供高等学校工科电子类专业师生参考。
第1章KeilC51的简单回顾
1.151单片机的特点
1.1.1AT89C51的引脚功能
1.1.2AT89C2051简介
1.2C51程序的基本结构
1.3C51的标识符与关键字
1.4C51的数据类型
1.5C51的常量和变量
1.5.1C51的常量
1.5.2C51的变量
1.6C51的函数
1.6.1函数的说明
1.6.2函数的定义
1.6.3函数的调用
1.7C51的数组与指针
1.7.1C51的数组
1.7.2C51的指针
1.8C51的结构与联合
1.8.1C51的结构
1.8.2C51的联合
1.9C51类型定义
1.10C51的编译预处理
1.10.1宏定义
1.10.2文件包含
1.10.3条件编译
第2章KeilC51开发工具简介
2.1单片机应用系统设计的基本步骤
2.2DOS下的C51开发工具
2.2.1C51开发工具介绍
2.2.2KeilC51的C编译器
2.2.3KeilC51的A51宏汇编器
2.2.4KeilC51的BL51代码连接器/定位器
2.2.5KeilC51的OC51目标文件转换器
2.2.6KeilC51的OH51目标十六进制转换器
2.2.7KeilC51的LIB51库文件管理器
2.3Windows下的C51开发工具
2,3.1gVisionl版本
2.3.2~Vision2版本
2.41xVision2的安装
2.4.1系统需求
2.4.2安装步骤及注意事项
2.4.3p.Vision2的具体安装过程
2.5巾sion2安装后的文件组织结构
2.6一个完整的应用实例
第3章µVision2的集成开发环境
3.1µVision2项目管理窗口
3.1.1目标、文件组和文件的管理
3,1.2项目窗口中的文件和文件组的属性
3.2µVision2的菜单栏—
3.3µVision2工具栏的使用
3.4µVision2快捷键的使用
3.5µVision2的各种窗口
3.5.1设置窗口属性
3.5.2源代码编辑窗口
3.5.3反汇编窗口
3.5.4Watch&CallStack窗口
3.5.5Memo~窗口
3.5.6CPU寄存器窗口
3.5.7串行窗口
3.5.8性能分析窗口
3,5.9代码覆盖窗口
3.5.10符号观察窗口
第4章用µVision2建立项目
4.1启动µVision2并创建一个项目
4.1.1创建一个新的项目
4.1.2新建一个源文件
4.2增加和配置启动代码
4.3µVision2的CPU和程序启动代码详解
4.4为目标设置工具选项
4.4.1配置对话框介绍
4.4.2例子项目的设置
4.5编译项目并生成HEX文件
4.6代码分块
4.7使用资源浏览器
4.8KeUC51与汇编语言的接口
4.8.1模块内接口
4.8.2模块间接口
4.9列表文件的使用
4.9.1C语言列表文件
4.9.2汇编语言列表文件
4.10μVision2的使用技巧
4.10.1导入μVision2的项目到μVision2
4.10.2为列表文件和目标文件指定单独的文件夹
4.10.3复制工具设置到一个新的目标中
4.10.4使用μVision2器件库中没有的微控制器
4.11μVision2的高级编程技巧
第5章用μVision2调试项目
5.1用μVision2调试项目
5.1.1设置调试参数
5.1.2指定调试器初始化文件
5.1.3启动代码调试模式
5.1.4使用反汇编窗口
5.1.5使用断点
5.1.6使用变量和函数观察窗口
5.1.7使用CPU寄存器观察窗口
5.1.8·使用内存观察窗口
5.1.9使用串口观察窗口
5.1.10使用执行效果观察窗口
5.1.11使用内存标记窗口
5.1.12使用符号观察窗口
5.1.13程序的运行
5.2在Command窗口中使用调试命令
5.2.1调试命令概述
5.2.2调试命令详解
5.3μVision2调试器表达式
5.3.1地址空间及地址空间类型
5.3.2调试常量
5.3.3调试变量
5.3.4调试符号
5.3.5调试表达式
5.4μVision2的调试函数
5.4.1函数分类
5.4.2创建和调用函数
5.4.3μVision2调试器的特点
5.5一些调试技巧
5.5.1仿真I/O端口
5.5.2仿真中断和时钟输入
5.5.3仿真外部I/O设备
5.5.4从PC串口输入到8051串口
5.5.5检查非法内存使用
5.5.6从文件读入调试命令
5.5.7预置I/O端口和内存的值
5.5.8调试结果输出文件
5.5.9使用快捷键
5.5.10内核调试
第6章μVision2的实耐操作系统RTX—51
6.1RTX.51简介
6.2RTX—51的任务
6.2.1RTX-51单任务程序
6.2.2RTX-51循环任务切换
6.2.3RTX-51循环多任务切换
6.2.4RTX-51事件和延时
6.2.5使用RTX-51信号
6.2.6抢先任务切换
6.2.7RTX-51的其他特性
6.3RTX-51的系统函数
6.3.1函数一览
6.3.2函数详解
6.4使用.RTX-51Tiny的要求和限定
6.5RTX-51Tiny的任务管理
6.6RTX—51Tiny的配置文件
6.7RTX-51应用实例
6.7.1项目介绍
·6.7.2源代码注释
6.7.3交通灯控制器命令
6.7.4TRAFFIC.Uv2项目调试
第7章在μVision2中使用片上外设
7.1特殊功能寄存器
7.2通用寄存器组
7.3中断服务程序
7.4并行I/O口
7.5定时器/记数器
7.6串行接口
7.7看门狗定时器
7.8数/模转换(D/A)和模擞转换(A/D)
7.9低功耗模式
第8章使用μVision2内嵌的MOnitor-51
8.1使用Monitor-51的硬软件要求
8.2Monitor-51的使用方法
8.3配置Monitor-51
8.4一个实例
8.5使用Monitor-51的限制
8.6故障诊断
附录
附录AC51的库函数
A.1字符函数(CTYPE.H)
A.2一般I/O函数STDIO.H
A.3字符串函数STRING.H
A.4标准函数STDLIB.H
A.5数学函数MATH.H
A.6绝对地址访问ABSACC.H.
A.7内部函数INTRINS.H(本征函数)
A.8变量参数表STDARG.H-
A.9全程跳转SETJMP.H
A.10访问SFR和SFRbitd地址的REGXXX.H
附录BKeilC51与ANSIC的差别
附录CKeilC51不同版本的差别
附录DgVision2支持的8051CPU派生器件
附录EgVision2的错误信息
主要参考文献
805i系列微处理器被广泛应用于类产品中,很多制造商都提供8051系列单片机,例如Intel、Philips和Siemens等。这些制造商给51系列单片机加入了大量新的性能和外部功能,例如12C总线接口、模拟量和数字量的转换、看门狗、PWM输出等。这些功能使得8051单片机很适合作为厂家产品的基本构架,方便进行各种开发应用。
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统。与汇编语言相比,C语言在功能、结构性、可读性、可维护性上有明显的优势,并且易学易用。KeilC51提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,生成的目标代码效率非常高,多数语句生成的汇编代码很紧凑,且容易理解,在开发大型软件时更能体现高级语言的优势。
单片机系统的开发和应用非常广泛,传统的单片机方面的书籍主要介绍内部结构、工作原理、指令系统和硬、软件开发,而C语言的书籍主要介绍语法和程序设计方面的知识。本书不是介绍Keil C51语言和单片机硬件方面的知识,而是指导读者如何使用µVision 2开发和调试单片机的C语言程序。本书采用实例方式进行阐述,循序渐进,简洁明了。读者只要按照实例步骤去实践,就能在最短的时间内达到使用wvision2开发和调试程序的中、高级能力。
本书的章节安排如下:
第1章KeilC51的简单回顾,让读者在最短的时间内具备单片机的C语言编程能力。
第2章Keil C51开发工具简介,介绍单片机C语言开发工具的发展历程和各种开发工具的特点。
第3章wvision2的集成开发环境,详细介绍Keil C51的Windows集成开发环境µVision 2的菜单命令、工具、窗口及其使用。
第4章用µVision 2建立项目,介绍项目程序的建立、设置和编译等,是本书的重点章节。
第5章用µVision 2调试项目,介绍如何用Keil C51的Windows集成开发环境µVision 2调试项目程序,包括调试工具的使用、调试命令和函数的建立以及各种调试技巧,是本书的重点章节。
第6章µVision 2的实时操作系统RTX-51,介绍8051单片机系列的多任务处理内核程序,并给出了一个详细的实例。
第7章在µVision 2中使用片上外设,介绍包括特殊功能寄存器、中断服务寄存器、 并行I/O端口、串行接口、定时器材数器和数/模转换器等外设模块的使用。
第8章使用µVision 2内嵌的Monitor-51,介绍ixVision2内嵌的目标系统调试、模块Monitor-51的配置、使用以及疑难解答,并给出一个实例。
本书由尹勇和李宇执笔,参与本书编写的还有关荣锋、李洪杰、范良志、张超勇和朱传军。本书在编写过程中受到连燕波和柯艳青的鼎力帮助,特表感谢。
由于作者水平有限,难免出现错误和不妥之处,恳请广大读者批评指正。
作 者
2004年2月23日
于华中科技大学