keilc51开发系统 (2008-06-19 14:56:19)

hegangben
2025-07-14 / 0 评论 / 0 阅读 / 正在检测是否收录...

keilc51开发系统基本知识(1)(工具软件学习)

 

       1. 第一节 系统概述

       keil c51是美国keil
       software公司出品的51系列兼容单片机c语言软件开发系统,与汇编相比,c语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用c来开发,体会更加深刻。

       keil
       c51软件提供丰富的库函数和功能强大的集成开发调试工具,全windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到keil
       c51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。

       下面详细介绍keil c51开发系统各部分功能和使用。

       2. 第二节 keil c51单片机软件开发系统的整体结构

       c51工具包的整体结构,如图(1)所示,其中uvision与ishell分别是c51 for windows和for
       dos的集成开发环境(ide),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用ide本身或其它编辑器编辑c或汇编源文件。然后分别由c51及a51编译器编译生成目标文件(.obj)。目标文件可由lib51创建生成库文件,也可以与库文件一起经l51连接定位生成绝对目标文件(.abs)。abs文件由oh51转换成标准的hex文件,以供调试器dscope51或tscope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如eprom中。

       图(1) c51工具包整体结构图

       3. 第三节 keil c51工具包的安装

       1. 1. c51 for dos

       在windows下直接运行软件包中dosc51dos.exe然后选择安装目录即可。完毕后欲使系统正常工作须进行以下操作(设c:c51为安装目录):

       修改autoexec.bat,加入

       path=c:c51bin

       set c51lib=c:c51lib

       set c51inc=c:c51inc

       然后运行autoexec.bat

       2. 2. c51 for windows的安装及注意事项:

       在windows下运行软件包中winsetup.exe,最好选择安装目录与c51 for
       dos相同,这样设置最简单(设安装于c:c51目录下)。然后将软件包中crack目录中的文件拷入c:c51bin目录下。

       4. 第四节 keil c51工具包各部分功能及使用简介

       1. 1. c51与a51

       1. (1) c51

       c51是c语言编译器,其使用方法为:

       c51 sourcefile[编译控制指令]

       或者

       c51 @ commandfile

       其中sourcefile为c源文件(.c)。大量的编译控制指令完成c51编译器的全部功能。包控c51输出文件c.lst,.obj,.i和.src文件的控制。源文件(.c)的控制等,详见第五部分的具体介绍。

       而commandfile为一个连接控制文件其内容包括:.c源文件及各编译控制指令,它没有固定的名字,开发人员可根据自己的习惯指定,它适于用控制指令较多的场合。

       2. (2) a51

       a51是汇编语言编译器,使用方法为:

       a51 sourcefile[编译控制指令]

       或a51 @ commandfile

       其中sourcefile为汇编源文件(.asm或.a51),而编译控制指令的使用与其它汇编如asm语言类似,可参考其他汇编语言材料。

       commandfile同c51中的commandfile类似,它使a51使用和修改方便。

       2. 2. l51和bl51

       1. (1) l51

       l51是keil
       c51软件包提供的连接/定位器,其功能是将编译生成的obj文件与库文件连接定位生成绝对目标文件(.abs),其使用方法为:

       l51 目标文件列表[库文件列表] [to outputfile] [连接控制指令]

       或 l51 @commandfile

       源程序的多个模块分别经c51与a51编译后生成多个obj文件,连接时,这些文件全列于目标文件列表中,作为输入文件,如果还需与库文件(.lib)相连接,则库文件也必须列在其后。outputfile为输文件名,缺少时为第一模块名,后缀为.abs。连接控制指令提供了连接定位时的所有控制功能。commandfile为连接控制文件,其具体内容是包括了目标文件列表,库文件列表及输出文件、连接控制命令,以取代第一种繁琐的格式,由于目标模块库文件大多不止1个,因而第2种方法较多见,这个文件名字也可由使用者随意指定。

       2. (2) bl51

       bl51也是c51软件包的连接/定位器,其具有l51的所有功能,此外它还具有以下3点特别之处:

       a. 可以连接定位大于64kbytes的程序。

       b. 具有代码域及域切换功能(codebanking & bank switching)

       c. 可用于rtx51操作系统

       rtx51是一个实时多任务操作系统,它改变了传统的编程模式,甚至不必用main(
       )函数,单片机系统软件向rtos发展是一种趋势,这种趋势对于186和386及68k系列cpu更为明显和必须,对8051因cpu较为简单,程序结构等都不太复杂,rtx51作用显得不太突出,其专业版软件pk51软件包甚至不包括rtx51full,而只有一个rtx51tiny版本的rtos。rtx51
       tiny适用于无外部ram的单片机系统,因而可用面很窄,在本文中不作介绍。bank switching技术因使用很少也不作介绍。

       3. 3. dscope51,tscope51及monitor51

       1. (1) dscope51

       dscope51是一个源级调试器和模拟器,它可以调试由c51编译器、a51汇编器、pl/m-51编译器及asm-51汇编器产生的程序。它不需目标板(for
       windows也可通过mon51接目标板),只能进行软件模拟,但其功能强大,可模拟cpu及其外围器件,如内部串口,外部i/o及定时器等,能对嵌入式软件功能进行有效测试。

       其使用方法为:

       ds51[debugfile][init(initfile)]

       其中debugfile是一个hex格式的8051文件,即待调试的文件其为可选的,可在进入dscope51后用load命令装入。

       initfile为一个初使化文件,它在启动dscope51后,在debugfile装入前装入,装有一些dscope的初使化参数及常用调试函数等。下面是一个dscope.ini文件(for
       dos)的内容:

       load ....ds518051.iof

       map 0,0xffff

       dscope51 for windows则直接用鼠标进入,然后用load装入待调文件。

       2. (2) tscope51

       与dscope51不同的是scope51必须带目标板,目前它可以通过两种方式访问目标板。(1)
       通过emul51在线仿真器,tscope51为该仿真器准备了一个动态连接文件emul51.iot,但该方法必须配合该仿真器。(2)
       通过monitov51监控程序,这种方法是可行的,tscope51为访问monitor51专门带有mon51.iot连接程序,使用时可通过串口及监控程序来调试目标板。

       其使用方法为:

       ts51[init(file_name.ini)]

       其中file_name.ini为一个初使化文件。

       进入ts51后,必须装入iot文件,可用的有mon51.iot及emul51.iot两种,如装入mon51.iot:

       load.c:c51ts51mon51.iot cputype(80517)

       可惜的是tscope51只有for dos的版本。

       3. (3) monitor 51

       monitor51是一个监控程序通过pc机的串口与目标板进行通信,monitor操作需要mon51或dscope51 for
       windows,后面部分将对monitor51做较为详细的介绍。

       4. 4. ishell及uvision

       1. (1) ishell for dos

       这是一个for
       dos的ide,直接在命令行键入ishell,则进入该环境,它使用简单方便。其命令行与dos命令行具有同样的功能,对单模块的project直接由菜单进行编译连接,对多模块的project。则通过批处理,bat文件进行编译连接,然后通过菜单控制由dscope51或tscope51对程序进行调试,因为是for
       dos的,不做太详细介绍。

       2. (2) uvision for windows

       uvision for
       windows是一个标准的windows应用程序,它是c51的一个集成软件开发平台,具有源代码编辑、project管理、集成的make等功能,它的人机界面友好,操作方便,是开发者的首选,具体配置及使用见第五部分。

       2. 第二章 keil c51软件使用详解

       1. 第一节 keil c51编译器的控制指令

       c51编译器的控制指令分为三类:源文件控制类,目标文件控制类及列表控制类。

       1. 1. 源文件控制类

       noextend:c51源文件不允许使用ansi c扩展功能。

       define(df):定义预处理(在c51命令行)。

       2. 2. 目标文件(object)控制类:

       compact large small 选编译模式

       debug(db) 包含调试信息,以供仿真器或dscope51使用。

       noamake(noam) 禁止automake信息记录

       noregparms 禁止用寄存器传递参数

       objectextend(oe) object文件包含附加变量类型信息

       optimize(ot) 指定优化级别

       regfile(rf) 指定一个寄存器使用的文件以供整体优化用

       registerbank(rb) 指定一个供绝对寄存器访问的寄存器区名

       src 不生成目标文件只生成汇编源文件

        其它控件不常用。

       3. 3. 列表文件(listing)控制类:

       code(cd):向列表文件加入汇编列表

       listinclude(lc):显示indude文件

       symbols(sb):列表文件包括模块内所有符号的列表

       warninglevel(wl):选择“警告”级别

       2. 第二节 dscope51的使用

       1. 1. dscope51 for dos

       总的来说dscope51具有以下特性:

       l 高级语言显示模式

       l 集成硬件环境模拟

       l 单步或“go”执行模式

       l 存储器、寄存器及变量访问

       l watch表达式之值

       l 函数与信号功能

       下面,具体说明在进入dscope51 for
       dos之后,如何实现上述功能,dscope51采用下拉菜单格式和窗口显示控制,共有language、serial、exe、register四个窗口,其中exe为命令行窗口,language为程序窗口,serial为串口窗,register为寄存器窗。

       1. (1) 高级语言显示模式

       单击主菜单中的“view”,第一栏中的三条命令“highlevel”、“mixed”、“assembly”分别对所装入的程序按照“高级”、“混合级”及“汇编级”三种方式显示,以方便调试使用。

       2. (2) 集成硬件环境模拟显示

       主菜单中“peripheral”各条能显示模拟硬件环境的状态,其中:

       i/o port:显示各i/o口之值,对8031而言sfr中的p1、p2、p3、p0与引脚之值分别列出:

       interrupt:显示5个中断源的入口模式是否允许,优先级等中断状态。

       timer:显示各定时/计数器的模式,初始值状态等。

       int message:中断信息允许,如为允许(“>>”出现),则当中断申请时,显示中断源信息。比如当中断发生时会显示:

       “interrupt timer 0 occured”等

       a/d converter:

        显示a/d转换器状态无时,则提示“无”。

       serial:串口信息显示,包括串口模式、波特产等

       other:其它器件,如为8031则显示“ 无”

       3. (3) 单步或“go”执行

       “f8”单步执行,“f5”全速执行到断点。或选主菜单中trace单步执行cpu中的go全速执行。

       4. (4) 存储器寄存器及变量访问

       外部存储器管理map菜单:设置(set)、取消(reset)、显示(display)处理可用存储空间。

       修改code代码:asm命令

       存储器显示命令:d 类别为(x、d、i、b、c)

       修改存储器命令:e 有以下几种命令eb、ec、ei、el、ef、ep

       复杂数据类型显示:object命令;用以显示结构或数组的内容。欲使此命令有效,c51编译器必须有db及objectextend两条。

       反汇编命令:u

       5. (5) “watch”表达式之值

       在view菜单的“watch”一栏中有四项:其中包括定义watch point(define)、删除watch
       point(remove,kill all),及自动更新选项。

       也可用ws、wk等命令代替,下面具体看“表达式”类型:

       dscope51一次最多可设16个wtchpoint表达式,显示于watch
       window之中,表达式可以是简单变量,也可是复杂数据类型如结构、数组和指向结构的指针等,例如:

       >ws *ptime

       >ws ptime→hour

       >ws some_record[o],analog等等

       6. (6) 关于.iof文件

       启动ds51后必须装入.iof文件才能使cpu及peripheral各项起作用,这个函数的使用是依据8051系列cpu的不同特点,装入8051各cpu硬件设备模拟驱动文件,比如8031cpu就必须load
       ds51目录下的8051.iof。

       2. 2. dscope for windows

       dscope for windows具有dscope for dos的全部功能,此外,它还具有以下明显的优点:

       (1) 标准的windows界面,操作更容易更简单;

       (2) 常用操作多用对话框,而非dos的行命令方式;

       (3) 窗口资源更加丰富:存储器窗口、覆盖率分析、运行状态分析窗口,加强了调试功能;

       因为dscope for windows功能强大,具体操作在第八章详细介绍。

       3. 第三节 monitor51及其使用

       1. 1. monitor51对硬件的要求

       (1) 硬件系统为51系列cpu;

       (2) 带5k外部程序存储器(从o地址开始),存放monitor51程序;

       (3)
       256bytes的外部数据存储器以及5k的跟踪缓冲区,此外,外部数据存储器必须足够容纳所有应用程序代码及数据,且所有外部数据存储器必须为冯·诺伊曼存储器,即能一致访问xdata与code空间。

       (4) 一个定时器作为波特率发生器供串口使用;

       (5) 6 bytes的空余堆栈。

       2. 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. 3. mon51的配置

       (1) mon51 for dos的配置

       运行install文件(在mon51目录下),不同的参数可以配置不同的硬件环境。install serialtype
       [xdstastart[codestart[bank][promcheck]]],具体说明见mon51帮助文件或使用手册。

       (2) mon51 for windows的配置

       在启用mon51.dll时,会使得系统自动检查目标板连接,如配置不对,则弹出“configuration”对话框,设置pc串口,波特率等,完毕单击“apply”有效。

       4. 4. 串口连接图:

       收发交叉互连,rts、cts直连,dsr、dtr直连,具体引脚排列参考串口资料。

       5. 5. mon51命令及使用

       详细的mon51命令可参阅帮助。

       4. 第四节 集成开发环境(ide)的使用

       1. 1. ishell for dos的使用

       进入ishell之后看到两个窗口:一个是文件窗口,一个是dos命令行窗口,窗口上方是下拉式的命令菜单,其中的files控制文件窗口的显隐。

       使用ishell,第一步就是配置系统,即要学习两个文件的修改与创建:

       1. (1) ishell.cfg文件

       每一个project都有一个ishell.cfg,其中存放有“option菜单和setup菜单下的部分信息;bell
       enabled、monochrome enabled、editor selected、crt lines、target
       enviroment、name of user edit、automatic load for configuration
       enabled、file window enabled、file specification for file
       window、translate command line controls、project name等。

       对每个project都必须设置以上信息,然后存盘“setup”的的“save”,这样才可正式开始下面工作。

       2. (2) ishell.col文件

       对ide颜色设置,如不改动,可以缺省为主。

       3. (3) cdf文件

       该文件位于bin目录下,每一文件定义一组外部函数工具包,即定义外部环境如8051.cdf,user.cdf等,开发者可修改cdf文件,供自己使用,至于cdf文件内容可查看一下8051.cdf即可知道。注意.cdf文件是ishell系统的核心所在,不同的cdf文件可使本ide适用于不同的编译、连接系统,即本ide并不仅适于c51。

       下面谈一谈automake工具:

       c51的automake是一个project管理器,在8051工具包中以object文件形式保留了一个project的信息,automake用这些信息来进行project管理,一旦手工建立一个project,automake可生成一个新的object,automake利用此文件来编译那些修改过的文件。

       automake支持c51、a51、l51/bl51、c166、a166、l166等编译连接器。点中主菜单中的automake即运行本工具。

       ishell for dos使用比较繁琐,推荐使用uvision for windows。

       2. 2. uvision for windows的使用

       uvision是一个标准的windows应用程序,其编译功能、文件处理功能、project处理功能、窗口功能以及工具引用功能(如a51、c51、pl/m41、bl51
       dscope等)等都较ishell for dos要强得多。

       uvision采用bl51作连接器,因为bl51兼容l51,所以一切能在dos下工作的project都可以到uvision中进行连接调试。

       uvision采用dscope for windows作调试器,该调试器支持mon51及系统模拟两种方式,功能较for
       dos要强大好用,调试功能强大。

       注意:

       (1)
       option菜单下的各项要会使用,其中a51、c51、pl/m51、bl51定义各文件所使用的编译、连接控制指令,dscope定义一个dscope初始化文件。make则是定义一个make文件。

       (2) 进入调试是在run菜单下运行dscope。

       (3) project中包括新建、打开、修改、更新、编译、连接等poject处理,具体使用可参考后面的例子。

       3. 第三章 keil c51 vs 标准c

       深入理解并应用c51对标准ansic的扩展是学习c51的关键之一。因为大多数扩展功能都是直接针对8051系列cpu硬件的。大致有以下8类:

       l 8051存储类型及存储区域

       l 存储模式

       l 存储器类型声明

       l 变量类型声明

       l 位变量与位寻址

       l 特殊功能寄存器(sfr)

       l c51指针

       l 函数属性

       具体说明如下(8031为缺省cpu)。

       1. 第一节 keil c51扩展关键字

       c51 v4.0版本有以下扩展关键字(共19个):

       _at_ idata sfr16 alien interrupt small

       bdata large _task_ code bit pdata

       using reentrant xdata compact sbit data sfr

       2. 第二节 内存区域(memory areas):

       1. 1. pragram area:

       由code说明可有多达64kbytes的程序存储器

       2. 2. internal data memory:

       内部数据存储器可用以下关键字说明:

       data:直接寻址区,为内部ram的低128字节 00h~7fh

       idata:间接寻址区,包括整个内部ram区 00h~ffh

       bdata:可位寻址区,  20h~2fh

       3. 3. external data memory

       外部ram视使用情况可由以下关键字标识:

       xdata:可指定多达64kb的外部直接寻址区,地址范围0000h~0ffffh

       pdata:能访问1页(25bbytes)的外部ram,主要用于紧凑模式(compact model)。

       4. 4. speciac function register memory

       8051提供128bytes的sfr寻址区,这区域可位寻址、字节寻址或字寻址,用以控制定时器、计数器、串口、i/o及其它部件,可由以下几种关键字说明:

       sfr:字节寻址 比如 sfr p0=0x80;为po口地址为80h,“=”后h~ffh之间的常数。

       sfr16:字寻址,如sfr16 t2=0xcc;指定timer2口地址t2l=0xcc t2h=0xcd

       sbit:位寻址,如sbit ea=0xaf;指定第0xaf位为ea,即中断允许

       还可以有如下定义方法:

       sbit 0v=psw^2;(定义0v为psw的第2位)

       sbit 0v=0xdo^2;(同上)

       或bit 0v-=0xd2(同上)。
0

评论 (0)

取消