KeilC51语言软件开发系统基本知识_第1页
KeilC51语言软件开发系统基本知识_第2页
KeilC51语言软件开发系统基本知识_第3页
KeilC51语言软件开发系统基本知识_第4页
KeilC51语言软件开发系统基本知识_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Keil C51开发系统基本知识1. 第一节 系统概述 Keil C551是美国KKeil SSoftwaare公司出出品的51系系列兼容单片片机C语言软软件开发系统统,与汇编相相比,C语言言在功能上、结结构性、可读读性、可维护护性上有明显显的优势,因因而易学易用用。用过汇编编语言后再使使用C来开发发,体会更加加深刻。 Keil C551软件提供供丰富的库函函数和功能强强大的集成开开发调试工具具,全Winndows界界面。另外重重要的一点,只只要看一下编编译后生成的的汇编代码,就就能体会到KKeil CC51生成的的目标代码效效率非常之高高,多数语句句生成的汇编编代码很紧凑凑,容易理解解。在开

2、发大大型软件时更更能体现高级级语言的优势势。 下面详细介绍KKeil CC51开发系系统各部分功功能和使用。 2. 第二节 Keil C51单片片机软件开发发系统的整体体结构 C51工具包的的整体结构,如如图(1)所所示,其中uuVisioon与Ishhell分别别是C51 for WWindowws和forr Dos的的集成开发环环境(IDEE),可以完完成编辑、编编译、连接、调调试、仿真等等整个开发流流程。开发人人员可用IDDE本身或其其它编辑器编编辑C或汇编编源文件。然然后分别由CC51及A551编译器编编译生成目标标文件(.OOBJ)。目目标文件可由由LIB511创建生成库库文件,也可

3、可以与库文件件一起经L551连接定位位生成绝对目目标文件(.ABS)。AABS文件由由OH51转转换成标准的的Hex文件件,以供调试试器dScoope51或或tScoppe51使用用进行源代码码级调试,也也可由仿真器器使用直接对对目标板进行行调试,也可可以直接写入入程序存贮器器如EPROOM中。 图(1) C551工具包整整体结构图 3. 第三节 Keil C51工具具包的安装 1. 1. CC51 foor Doss 在Windowws下直接运运行软件包中中DOSCC51DOSS.exe然然后选择安装装目录即可。完完毕后欲使系系统正常工作作须进行以下下操作(设CC:C511为安装目录录):

4、修改Autoeexec.bbat,加入入 path=C:C51Bin Set C511LIB=CC:C511LIB Set C511INC=CC:C511INC 然后运行Auttoexecc.bat 2. 2. CC51 foor Winndows的的安装及注意意事项: 在Windowws下运行软软件包中WIINSettup.exxe,最好选选择安装目录录与C51 for DDos相同,这这样设置最简简单(设安装装于C:CC51目录下下)。然后将将软件包中ccrack目目录中的文件件拷入C:C51BBin目录下下。 4. 第四节 Keil C51工具具包各部分功功能及使用简简介 1. 1. C

5、C51与A551 1. (1) C51 C51是C语言言编译器,其其使用方法为为: C51 souurcefiile编译译控制指令 或者 C51 ccommanndfilee 其中sourccefilee为C源文件件(.C)。大大量的编译控控制指令完成成C51编译译器的全部功功能。包控CC51输出文文件C.LSST,.OBBJ,.I和和.SRC文文件的控制。源源文件(.CC)的控制等等,详见第五五部分的具体体介绍。 而Commanndfilee为一个连接接控制文件其其内容包括:.C源文件件及各编译控控制指令,它它没有固定的的名字,开发发人员可根据据自己的习惯惯指定,它适适于用控制指指令较多的场

6、场合。 2. (2) A51 A51是汇编语语言编译器,使使用方法为: A51 souurcefiile编译译控制指令 或A51 commaandfille 其中sourccefilee为汇编源文文件(.assm或.a551),而编编译控制指令令的使用与其其它汇编如AASM语言类类似,可参考考其他汇编语语言材料。 Commanddfile同同C51中的的Commaandfille类似,它它使A51使使用和修改方方便。 2. 2. LL51和BLL51 1. (1) L51 L51是Keiil C511软件包提供供的连接/定定位器,其功功能是将编译译生成的OBBJ文件与库库文件连接定定位生成绝对

7、对目标文件(.ABS),其使用方方法为: L51 目标文文件列表库库文件列表 to outpuutfilee 连接接控制指令 或 L51 Commaandfille 源程序的多个模模块分别经CC51与A551编译后生生成多个OBBJ文件,连连接时,这些些文件全列于于目标文件列列表中,作为为输入文件,如如果还需与库库文件(.LLiB)相连连接,则库文文件也必须列列在其后。ooutputtfile为为输文件名,缺缺少时为第一一模块名,后后缀为.ABBS。连接控控制指令提供供了连接定位位时的所有控控制功能。CCommanndfilee为连接控制制文件,其具具体内容是包包括了目标文文件列表,库库文件列

8、表及及输出文件、连连接控制命令令,以取代第第一种繁琐的的格式,由于于目标模块库库文件大多不不止1个,因因而第2种方方法较多见,这这个文件名字字也可由使用用者随意指定定。 2. (2) Bl51 BL51也是CC51软件包包的连接/定定位器,其具具有L51的的所有功能,此此外它还具有有以下3点特特别之处: a. 可以连接接定位大于664kByttes的程序序。 b. 具有代码码域及域切换换功能(CoodeBannking & Bannk Swiitchinng) c. 可用于RRTX51操操作系统 RTX51是一一个实时多任任务操作系统统,它改变了了传统的编程程模式,甚至至不必用maain( )

9、函数,单片片机系统软件件向RTOSS发展是一种种趋势,这种种趋势对于1186和3886及68KK系列CPUU更为明显和和必须,对88051因CCPU较为简简单,程序结结构等都不太太复杂,RTTX51作用用显得不太突突出,其专业业版软件PKK51软件包包甚至不包括括RTX511Full,而而只有一个RRTX51TTINY版本本的RTOSS。RTX551 TINNY适用于无无外部RAMM的单片机系系统,因而可可用面很窄,在在本文中不作作介绍。Baank swwitchiing技术因因使用很少也也不作介绍。 3. 3. DDScopee51,Tsscope551及Monnitor551 1. (1)

10、 dScoppe51 dScope551是一个源源级调试器和和模拟器,它它可以调试由由C51编译译器、A511汇编器、PPL/M-551编译器及及ASM551汇编器产产生的程序。它它不需目标板板(for windoows也可通通过mon551接目标板板),只能进进行软件模拟拟,但其功能能强大,可模模拟CPU及及其外围器件件,如内部串串口,外部II/O及定时时器等,能对对嵌入式软件件功能进行有有效测试。 其使用方法为: DS51deebugfiileIINIT(iinitfiile) 其中debuggfile是是一个Hexx格式的80051文件,即即待调试的文文件其为可选选的,可在进进入dSco

11、ope51后后用loadd命令装入。 Initfille为一个初初使化文件,它它在启动dSScope551后,在ddebugffile装入入前装入,装装有一些dSScope的的初使化参数数及常用调试试函数等。下下面是一个ddScopee.ini文文件(forr dos)的内容: Load .dds5188051.iiof Map 0,00 xfffff dScope551 forr Winddows则直直接用鼠标进进入,然后用用load装装入待调文件件。 2. (2) tScoppe51 与dScopee51不同的的是Scoppe51必须须带目标板,目目前它可以通通过两种方式式访问目标板板。(

12、1) 通过EMuul51在线线仿真器,ttScopee51为该仿仿真器准备了了一个动态连连接文件EMMUL51.IOT,但但该方法必须须配合该仿真真器。(2) 通过Moonitovv51监控程程序,这种方方法是可行的的,tScoope51为为访问Monnitor551专门带有有MON511.IOT连连接程序,使使用时可通过过串口及监控控程序来调试试目标板。 其使用方法为: TS51INNIT(fiile_naame.inni) 其中file_name.ini为一一个初使化文文件。 进入TS51后后,必须装入入IOT文件件,可用的有有MON511.IOT及及EMUL551.IOTT两种,如装装入

13、MON551.IOTT: Load.C:C51TS51MON511.IOT CPUTYYPE(800517) 可惜的是tSccope511只有forr Dos的的版本。 3. (3) Monittor 511 Monitorr51是一个个监控程序通通过PC机的的串口与目标标板进行通信信,Moniitor操作作需要MONN51或dSScope551 forr Winddows,后后面部分将对对Monittor51做做较为详细的的介绍。 4. 4. IIshelll及uVission 1. (1) Ishelll forr Dos 这是一个forr Dos的的IDE,直直接在命令行行键入Ishhe

14、ll,则则进入该环境境,它使用简简单方便。其其命令行与DDOS命令行行具有同样的的功能,对单单模块的Prrojectt直接由菜单单进行编译连连接,对多模模块的prooject。则则通过批处理理,BAT文文件进行编译译连接,然后后通过菜单控控制由dSccope511或tScoope51对对程序进行调调试,因为是是for ddos的,不不做太详细介介绍。 2. (2) uVisiion foor Winndows uVisionn for Windoows是一个个标准的Wiindowss应用程序,它它是C51的的一个集成软软件开发平台台,具有源代代码编辑、pprojecct管理、集集成的makke

15、等功能,它它的人机界面面友好,操作作方便,是开开发者的首选选,具体配置置及使用见第第五部分。 2. 第二章 Keil C51软件件使用详解 1. 第一节 Keil C51编译译器的控制指指令 C51编译器的的控制指令分分为三类:源源文件控制类类,目标文件件控制类及列列表控制类。 1. 1. 源源文件控制类类 NOEXTENND:C511源文件不允允许使用ANNSI C扩扩展功能。 DEFINE(DF):定定义预处理(在C51命命令行)。 2. 2. 目目标文件(OObjectt)控制类: COMPACTT LARGGE SMAALL 选编编译模式 DEBUG(DDB) 包含含调试信息,以以供仿

16、真器或或dSCoppe51使用用。 NOAMAKEE(NOAMM) 禁止AAutoMaake信息记记录 NOREGPAARMS 禁禁止用寄存器器传递参数 OBJECTEEXTENDD(OE) Objecct文件包含含附加变量类类型信息 OPTIMIZZE(OT) 指定优化化级别 REGFILEE(RF) 指定一个寄寄存器使用的的文件以供整整体优化用 REGISTEERBANKK(RB) 指定一个供供绝对寄存器器访问的寄存存器区名 SRC 不生成成目标文件只只生成汇编源源文件 其它控件不常用用。 3. 3. 列列表文件(llistinng)控制类类: CODE(CDD):向列表表文件加入汇汇编列

17、表 LISTINCCLUDE(LC):显显示induude文件 SYMBOLSS(SB):列表文件包包括模块内所所有符号的列列表 WARNINGGLEVELL(WL):选择“警告告”级别 2. 第二节 dScoppe51的使使用 1. 1. ddScopee51 foor Doss 总的来说dSccope511具有以下特特性: l 高级语言显显示模式 l 集成硬件环环境模拟 l 单步或“GGO”执行模模式 l 存储器、寄寄存器及变量量访问 l Watchh表达式之值值 l 函数与信号号功能 下面,具体说明明在进入dSScope551 forr Dos之之后,如何实实现上述功能能,dScoope

18、51采采用下拉菜单单格式和窗口口显示控制,共共有langguage、sseriall、exe、rregistter四个窗窗口,其中eexe为命令令行窗口,llanguaage为程序序窗口,seerial为为串口窗,rregistter为寄存存器窗。 1. (1) 高级语言显显示模式 单击主菜单中的的“Vieww”,第一栏栏中的三条命命令“Higghleveel”、“MMixed”、“AAssembbly”分别别对所装入的的程序按照“高高级”、“混混合级”及“汇汇编级”三种种方式显示,以以方便调试使使用。 2. (2) 集成硬件环环境模拟显示示 主菜单中“Peeripheeral”各各条能显示模

19、模拟硬件环境境的状态,其其中: i/o Porrt:显示各各I/O口之之值,对80031而言SSFR中的PP1、P2、PP3、P0与与引脚之值分分别列出: Interruupt:显示示5个中断源源的入口模式式是否允许,优优先级等中断断状态。 Timer:显显示各定时/计数器的模模式,初始值值状态等。 int Messsage:中断信息允允许,如为允允许(“”出现),则则当中断申请请时,显示中中断源信息。比比如当中断发发生时会显示示: “interrrupt TTimer 0 occcured”等等 A/D connverteer: 显示A/D转换换器状态无时时,则提示“无无”。 Serial:

20、串口信息显显示,包括串串口模式、波波特产等 Other:其其它器件,如如为80311则显示“ 无” 3. (3) 单步或“GGo”执行 “F8”单步执执行,“F55”全速执行行到断点。或或选主菜单中中Tracee单步执行CCPU中的GGo全速执行行。 4. (4) 存储器寄存存器及变量访访问 外部存储器管理理MAP菜单单:设置(sset)、取取消(resset)、显显示(Dissplay)处理可用存存储空间。 修改Code代代码:ASMM命令 存储器显示命令令:D 类别别为(X、DD、I、B、CC) 修改存储器命令令:E 有以以下几种命令令EB、ECC、EI、EEL、EF、EEP 复杂数据类型

21、显显示:Objject命令令;用以显示示结构或数组组的内容。欲欲使此命令有有效,C511编译器必须须有DB及OOBJECTTEXTENND两条。 反汇编命令:UU 5. (5) “Watcch”表达式式之值 在View菜单单的“Wattch”一栏栏中有四项:其中包括定定义Watcch Poiint(Deefine)、删除Waatch PPoint(removve,killl alll),及自动动更新选项。 也可用WS、WWK等命令代代替,下面具具体看“表达达式”类型: dScope551一次最多多可设16个个WtchPPoint表表达式,显示示于Watcch Winndow之中中,表达式可可以

22、是简单变变量,也可是是复杂数据类类型如结构、数数组和指向结结构的指针等等,例如: WS *pttime WS ptiimehoour WS somme_reccordoo,anaalog等等等 6. (6) 关于.IOOF文件 启动DS51后后必须装入.IOF文件件才能使CPPU及Perripherral各项起起作用,这个个函数的使用用是依据80051系列CCPU的不同同特点,装入入8051各各CPU硬件件设备模拟驱驱动文件,比比如80311CPU就必必须loadd DS511目录下的88051.IIOF。 2. 2. ddScopee for Windoows dScope for wwin

23、dowws具有dSScope for ddos的全部部功能,此外外,它还具有有以下明显的的优点: (1) 标准的的Windoows界面,操操作更容易更更简单; (2) 常用操操作多用对话话框,而非DDos的行命命令方式; (3) 窗口资资源更加丰富富:存储器窗窗口、覆盖率率分析、运行行状态分析窗窗口,加强了了调试功能; 因为dScoppe forr Winddows功能能强大,具体体操作在第八八章详细介绍绍。 3. 第三节 Monittor51及及其使用 1. 1. MMonitoor51对硬硬件的要求 (1) 硬件系系统为51系系列CPU; (2) 带5KK外部程序存存储器(从OO地址开始)

24、,存放Moonitorr51程序; (3) 2566Bytess的外部数据据存储器以及及5K的跟踪踪缓冲区,此此外,外部数数据存储器必必须足够容纳纳所有应用程程序代码及数数据,且所有有外部数据存存储器必须为为冯诺伊曼曼存储器,即即能一致访问问XDATAA与Codee空间。 (4) 一个定定时器作为波波特率发生器器供串口使用用; (5) 6 BBytes的的空余堆栈。 2. 2. MMon51的的使用 Mon51的使使用途径有三三种方式: (1) Doss行命令方式式 即先用insttall对MMON51进进行配置,然然后用MONN51进入MMonitoor状态,启启用各种命令令对Moniito

25、r511进行调试。 (2) tSccope511方式 启动tScoppe51装入入TS51目目录下的MOON51.IIOT驱动文文件,与目标标板通信。 (3) dSccope511 for Windoows方式 在选CPU驱动动文件时,选选“MON551.dlll”,则检查查目标板并进进入MON551状态。 3. 3. MMON51的的配置 (1) MONN51 foor Doss的配置 运行instaall文件(在MON551目录下),不同的参参数可以配置置不同的硬件件环境。INNSTALLL Seriialtyppe xddstasttartccodesttartbbankPROMCCHE

26、CK,具体体说明见MOON51帮助助文件或使用用手册。 (2) MONN51 foor Winndows的的配置 在启用MON551.dlll时,会使得得系统自动检检查目标板连连接,如配置置不对,则弹弹出“Connfigurrationn”对话框,设设置PC串口口,波特率等等,完毕单击击“applly”有效。 4. 4. 串串口连接图: 收发交叉互连,RRTS、CTTS直连,DDSR、DTTR直连,具具体引脚排列列参考串口资资料。 5. 5. MMON51命命令及使用 详细的MON551命令可参参阅帮助。 4. 第四节 集成开发环环境(IDEE)的使用 1. 1. IIshelll for D

27、os的使使用 进入Ishelll之后看到到两个窗口:一个是文件件窗口,一个个是Dos命命令行窗口,窗窗口上方是下下拉式的命令令菜单,其中中的Filees控制文件件窗口的显隐隐。 使用Ishelll,第一步步就是配置系系统,即要学学习两个文件件的修改与创创建: 1. (1) Ishelll.CFGG文件 每一个projject都有有一个Ishhell.CCFG,其中中存放有“OOptionn菜单和Seetup菜单单下的部分信信息;Belll enaabled、MMonochhrome enablled、Edditor Seleccted、CCRT Liines、ttargett enviirom

28、ennt、namme of user edit、AAutomaatic lload ffor coonfiguuratioon enaabled、ffile wwindoww enabbled、ffile sspecifficatiion foor fille winndow、ttransllate ccommannd linne conntrolss、projject nname等。 对每个projject都必必须设置以上上信息,然后后存盘“seetup”的的的“savve”,这样样才可正式开开始下面工作作。 2. (2) IShelll.coll文件 对IDE颜色设设置,如不改改动,可以缺

29、缺省为主。 3. (3) CDF文件件 该文件位于BIIN目录下,每每一文件定义义一组外部函函数工具包,即即定义外部环环境如80551.CDFF,USERR.CDF等等,开发者可可修改CDFF文件,供自自己使用,至至于CDF文文件内容可查查看一下80051.CDDF即可知道道。注意.CCDF文件是是Ishelll系统的核核心所在,不不同的CDFF文件可使本本IDE适用用于不同的编编译、连接系系统,即本IIDE并不仅仅适于C511。 下面谈一谈Auutomakke工具: C51的Auttomakee是一个prrojectt管理器,在在8051工工具包中以OOBJECTT文件形式保保留了一个ppr

30、ojecct的信息,AAutoMaake用这些些信息来进行行projeect管理,一一旦手工建立立一个prooject,AAutomaake可生成成一个新的OOBJECTT,AutooMake利利用此文件来来编译那些修修改过的文件件。 Automakke支持C551、A511、L51/BL51、CC166、AA166、LL166等编编译连接器。点点中主菜单中中的Autoomake即即运行本工具具。 Ishell for DDos使用比比较繁琐,推推荐使用uVVisionn for windoows。 2. 2. uuVisioon forr winddows的使使用 uVisionn是一个标准

31、准的winddows应用用程序,其编编译功能、文文件处理功能能、projject处理理功能、窗口口功能以及工工具引用功能能(如A511、C51、PPL/M411、BL511 dScoope等)等等都较Ishhell ffor Doos要强得多多。 uVisionn采用BL551作连接器器,因为BLL51兼容LL51,所以以一切能在DDos下工作作的projject都可可以到uViision中中进行连接调调试。 uVisionn采用dSccope ffor wiindowss作调试器,该该调试器支持持MON511及系统模拟拟两种方式,功功能较forr DOS要要强大好用,调调试功能强大大。 注意

32、: (1) Opttion菜单单下的各项要要会使用,其其中A51、CC51、PLL/M51、BBL51定义义各文件所使使用的编译、连连接控制指令令,dScoope定义一一个dScoope初始化化文件。Maake则是定定义一个maake文件。 (2) 进入调调试是在RUUN菜单下运运行dScoope。 (3) prooject中中包括新建、打打开、修改、更更新、编译、连连接等pojject处理理,具体使用用可参考后面面的例子。 3. 第三章 Keil C51 vvs 标准CC 深入理解并应用用C51对标标准ANSIIC的扩展是是学习C511的关键之一一。因为大多多数扩展功能能都是直接针针对805

33、11系列CPUU硬件的。大大致有以下88类: l 8051存存储类型及存存储区域 l 存储模式 l 存储器类型型声明 l 变量类型声声明 l 位变量与位位寻址 l 特殊功能寄寄存器(SFFR) l C51指针针 l 函数属性 具体说明如下(8031为为缺省CPUU)。 1. 第一节 Keil C51扩展展关键字 C51 V4.0版本有以以下扩展关键键字(共199个): _at_ iddata ssfr16 alienn inteerruptt smalll bdata llarge _taskk_ Codde bitt pdatta using rreentrrant xxdata compa

34、act sbbit daata sffr 2. 第二节 内存区域(Memorry Areeas): 1. 1. PPragraam Areea: 由Code说明明可有多达664kByttes的程序序存储器 2. 2. IInternnal Daata Meemory: 内部数据存储器器可用以下关关键字说明: data:直接接寻址区,为为内部RAMM的低1288字节 000H7FHH idata:间间接寻址区,包包括整个内部部RAM区 00HFFFH bdata:可可位寻址区, 20H22FH 3. 3. EExternnal Daata Meemory 外部RAM视使使用情况可由由以下关键字字

35、标识: xdata:可可指定多达664KB的外外部直接寻址址区,地址范范围00000H0FFFFFH pdata:能能访问1页(25bByytes)的的外部RAMM,主要用于于紧凑模式(Compaact Moodel)。 4. 4. SSpeciaac Funnctionn Regiister Memorry 8051提供1128Byttes的SFFR寻址区,这这区域可位寻寻址、字节寻寻址或字寻址址,用以控制制定时器、计计数器、串口口、I/O及及其它部件,可可由以下几种种关键字说明明: sfr:字节寻寻址 比如 sfr PP0=0 x880;为POO口地址为880H,“”后HFFFH之间的的常

36、数。 sfr16:字字寻址,如ssfr16 T2=0 xxcc;指定定Timerr2口地址TT2L=0 xccc T2HH=0 xCDD sbit:位寻寻址,如sbbit EAA=0 xAFF;指定第00 xAF位为为EA,即中中断允许 还可以有如下定定义方法: sbit 0VV=PSW2;(定义义0V为PSSW的第2位位) sbit 0VV0XDOO2;(同同上) 或bit 0VV-0 xDD2(同上)。 3. 第三节 存储模式 存储模式决定了了没有明确指指定存储类型型的变量,函函数参数等的的缺省存储区区域,共三种种: 1. 1. SSmall模模式 所有缺省变量参参数均装入内内部RAM,优

37、优点是访问速速度快,缺点点是空间有限限,只适用于于小程序。 2. 2. CCompacct模式 所有缺省变量均均位于外部RRAM区的一一页(2566Bytess),具体哪哪一页可由PP2口指定,在在STARTTUP.A551文件中说说明,也可用用pdataa指定,优点点是空间较SSmall为为宽裕速度较较Smalll慢,较laarge要快快,是一种中中间状态。 3. 3. llarge模模式 所有缺省变量可可放在多达664KB的外外部RAM区区,优点是空空间大,可存存变量多,缺缺点是速度较较慢。 提示:存储模式式在C51编编译器选项中中选择。 4. 第四节 存储类型声声明 变量或参数的存存储类

38、型可由由存储模式指指定缺省类型型,也可由关关键字直接声声明指定。各各类型分别用用:codee,dataa,idatta,xdaata,pddata说明明,例: data uaar1 char coode arrray “heello!”; unsigneed chaar xdaata arrr10444; 5. 第五节 变量或数据据类型 C51提供以下下几种扩展数数据类型: bit 位变量量值为0或11 sbit 从字字节中定义的的位变量 00或1 sfr sfrr字节地址 02555 sfr16 ssfr字地址址 0655535 其余数据类型如如:charr,enumm,shorrt,int

39、t,longg,floaat等与ANNSI C相相同。 6. 第六节 位变量与声声明 1. 1. bbit型变量量 bit型变量可可用变量类型型,函数声明明、函数返回回值等,存贮贮于内部RAAM20H2FH。 注意: (1) 用ppragmaa disaable说明明函数和用“uusign”指指定的函数,不不能返回biit值。 (2) 一个bbit变量不不能声明为指指针,如biit *pttr;是错误误的 (3) 不能有有bit数组组如:bitt arr5;错误误。 2. 2. 可可位寻址区说说明20H2FH 可作如下定义: int bdaata i; char bddata aarr3, 然

40、后: sbit biitoinn0;sbiit bitt15=I15; sbit arrr07=aarr07;sbbit arrr15=aarri7; 7. 第七节 Keil C51指针针 C51支持一般般指针(Geenericc Poinnter)和和存储器指针针(Memoory_Sppecifiic Poiinter). 1. 1. 一一般指针 一般指针的声明明和使用均与与标准C相同同,不过同时时还可以说明明指针的存储储类型,例如如: long * statee;为一个指指向longg型整数的指指针,而sttate本身身则依存储模模式存放。 char * xdataa ptr;ptr为一一

41、个指向chhar数据的的指针,而pptr本身放放于外部RAAM区,以上上的longg,charr等指针指向向的数据可存存放于任何存存储器中。 一般指针本身用用3个字节存存放,分别为为存储器类型型,高位偏移移,低位偏移移量。 2. 2. 存存储器指针 基于存储器的指指针说明时即即指定了存贮贮类型,例如如: char daata * str;sstr指向ddata区中中char型型数据 int xdaata * pow; pow指向向外部RAMM的int型型整数。 这种指针存放时时,只需一个个字节或2个个字节就够了了,因为只需需存放偏移量量。 3. 3. 指指针转换 即指针在上两种种类型之间转转化

42、: l 当基于存储储器的指针作作为一个实参参传递给需要要一般指针的的函数时,指指针自动转化化。 l 如果不说明明外部函数原原形,基于存存储器的指针针自动转化为为一般指针,导导致错误,因因而请用“incluude”说明明所有函数原原形。 l 可以强行改改变指针类型型。 8. 第八节 Keil C51函数数 C51函数声明明对ANSII C作了扩扩展,具体包包括: 1. 1. 中中断函数声明明: 中断声明方法如如下: void seerial_ISR () intterruppt 4 usingg 1 /* ISR */ 为提高代码的容容错能力,在在没用到的中中断入口处生生成irett语句,定义义

43、没用到的中中断。 /* defiine noot useed intterruppt, soo geneerate IRETT in theirr entrrance */ void exxtern00_ISR() intterruppt 0 /* nnot ussed */ void tiimer0_ISR () intterruppt 1 /* nnot ussed */ void exxtern11_ISR() intterruppt 2 /* nnot ussed */ void tiimer1_ISR () intterruppt 3 /* nnot ussed */ void se

44、erial_ISR () intterruppt 4 /* nnot ussed */ 2. 2. 通通用存储工作作区 3. 3. 选选通用存储工工作区由ussing xx声明,见上上例。 4. 4. 指指定存储模式式 由small compaact 及llarge说说明,例如: void fuun1(vooid) ssmall 提示:smalll说明的函函数内部变量量全部使用内内部RAM。关关键的经常性性的耗时的地地方可以这样样声明,以提提高运行速度度。 5. 5. #pragmma dissable 在函数前声明,只只对一个函数数有效。该函函数调用过程程中将不可被被中断。 6. 6. 递递

45、归或可重入入函数指定 在主程序和中断断中都可调用用的函数,容容易产生问题题。因为511和PC不同同,PC使用用堆栈传递参参数,且静态态变量以外的的内部变量都都在堆栈中;而51一般般使用寄存器器传递参数,内内部变量一般般在RAM中中,函数重入入时会破坏上上次调用的数数据。可以用用以下两种方方法解决函数数重入: a、在相应的函函数前使用前前述“#prragma disabble”声明明,即只允许许主程序或中中断之一调用用该函数; b、将该函数说说明为可重入入的。如下: void fuunc(paaram) reeentraant; KeilC511编译后将生生成一个可重重入变量堆栈栈,然后就可可以

46、模拟通过过堆栈传递变变量的方法。 由于一般可重入入函数由主程程序和中断调调用,所以通通常中断使用用与主程序不不同的R寄存存器组。 另外,对可重入入函数,在相相应的函数前前面加上开关关“#praagma nnoareggs”,以禁禁止编译器使使用绝对寄存存器寻址,可可生成不依赖赖于寄存器组组的代码。 7. 7. 指指定PL/MM51函数数 由alien指指定。 4. 第四章 Keil C51高级级编程 本章讨论以下内内容: l 绝对地址访访问 l C与汇编的的接口 l C51软件件包中的通用用文件 l 段名转换与与程序优化 1. 第一节 绝对地址访访问 C51提供了三三种访问绝对对地址的方法法:

47、 1. 1. 绝绝对宏: 在程序中,用“incluude”即可可使用其中定定义的宏来访访问绝对地址址,包括: CBYTE、XXBYTE、PPWORD、DDBYTE、CCWORD、XXWORD、PPBYTE、DDWORD 具体使用可看一一看absaacc.h便便知 例如: rval=CBBYTE00 x00022;指向程程序存贮器的的0002hh地址 rval=XWWORD 0 x00002;指向向外RAM的的0004hh地址 2. 2. _at_关键键字 直接在数据定义义后加上_aat_ coonst即可可,但是注意意: (1)绝对变量量不能被初使使化; (2)bit型型函数及变量量不能用_a

48、at_指定。 例如: idata sstructt linkk listt _at_ 0 x400;指定liist结构从从40h开始始。 xdata cchar ttext225b _at_0 xxE000;指定texxt数组从00E000HH开始 提示:如果外部部绝对变量是是I/O端口口等可自行变变化数据,需需要使用voolatille关键字进进行描述,请请参考abssacc.hh。 3. 3. 连连接定位控制制 此法是利用连接接控制指令ccode xxdata pdataa datta bdaata对“段段”地址进行行,如要指定定某具体变量量地址,则很很有局限性,不不作详细讨论论。 2.

49、第二节 Keil C51与汇汇编的接口 1. 1. 模模块内接口 方法是用prragma语语句具体结构构是: #pragmaa asm 汇编行 #pragmaa endaasm 这种方法实质是是通过asmm与ndassm告诉C551编译器中中间行不用编编译为汇编行行,因而在编编译控制指令令中有SRCC以控制将这这些不用编译译的行存入其其中。 2. 2. 模模块间接口 C模块与汇编模模块的接口较较简单,分别别用C51与与A51对源源文件进行编编译,然后用用L51将oobj文件连连接即可,关关键问题在于于C函数与汇汇编函数之间间的参数传递递问题,C551中有两种种参数传递方方法。 (1) 通过寄寄

50、存器传递函函数参数 最多只能有3个个参数通过寄寄存器传递,规规律如下表: 参数数目 chhar innt lonng,flooat 一般般指针 123 R7RR5R3 RR6 & RR7R4 & R5R22 & R33 R4RR7R4RR7 R1R3R1R3R1R3 (2) 通过固固定存储区传传递(fixxed meemory) 这种方法将biit型参数传传给一个存储储段中: ?functiion_naame?BIIT 将其它类型参数数均传给下面面的段:?ffunctiion_naame?BYYTE,且按按照预选顺序序存放。 至于这个固定存存储区本身在在何处,则由由存储模式默默认。 (3) 函

51、数的的返回值 函数返回值一律律放于寄存器器中,有如下下规律: return type Regisstev 说说明 bit 标志位位 由具体标标志位返回 char/unnsigneed chaar 1_bbyte指针针 R7 单单字节由R77返回 int/unssignedd int 2_bytte指针 RR6 & RR7 双字节节由R6和RR7返回,MMSB在R66 long&unnsigneed lonng R4R7 MSSB在R4, LSB在在R7 float RR4R7 32Bitt IEEEE格式 一般指针 R11R3 存存储类型在RR3 高位RR2 低R11 (4) SRCC控制 该

52、控制指令将CC文件编译生生成汇编文件件(.SRCC),该汇编编文件可改名名后,生成汇汇编.ASMM文件,再用用A51进行行编译。 3. 第三节 Keil C51软件件包中的通用用文件 在C51LiiB目录下有有几个C源文文件,这几个个C源文件有有非常重要的的作用,对它它们稍事修改改,就可以用用在自己的专专用系统中。 1. 1. 动动态内存分配配 init_meem.C:此此文件是初始始化动态内存存区的程序源源代码。它可可以指定动态态内存的位置置及大小,只只有使用了iinit_mmem( )才可以调回回其它函数,诸诸如mallloc caalloc,reallloc等。 calloc.c:此文件

53、件是给数组分分配内存的源源代码,它可可以指定单位位数据类型及及该单元数目目。 malloc.c:此文件件是mallloc的源代代码,分配一一段固定大小小的内存。 reallocc.c:此文文件是reaalloc.c源代码,其其功能是调整整当前分配动动态内存的大大小。 2. 2. CC51启动文文件STARRTUP.AA51 启动文件STAARTUP.A51中包包含目标板启启动代码,可可在每个prrojectt中加入这个个文件,只要要复位,则该该文件立即执执行,其功能能包括: l 定义内部RRAM大小、外外部RAM大大小、可重入入堆栈位置 l 清除内部、外外部或者以此此页为单元的的外部存储器器

54、l 按存储模式式初使化重入入堆栈及堆栈栈指针 l 初始化80051硬件堆堆栈指针 l 向mainn( )函数数交权 开发人员可修改改以下数据从从而对系统初初始化 常数名 意义 IDATALEEN 待清内内部RAM长长度 XDATA SSTART 指定待清外外部RAM起起始地址 XDATALEEN 待清外外部RAM长长度 IBPSTACCK 是否小小模式重入堆堆栈指针需初初始化标志,11为需要。缺缺省为0 IBPSTACCKTOP 指定小模式式重入堆栈顶顶部地址 XBPSTACCK 是否大大模式重入堆堆栈指针需初初始化标志,缺缺省为0 XBPSTACCKTOP 指定大模式式重入堆栈顶顶部地址 P

55、BPSTACCK 是否CCompacct重入堆栈栈指针,需初初始化标志,缺缺省为0 PBPSTACCKTOP 指定Commpact模模式重入堆栈栈顶部地址 PPAGEENNABLE P2初始化化允许开关 PPAGE 指指定P2值 PDATASTTART 待待清外部RAAM页首址 PDATALEEN 待清外外部RAM页页长度 提示:如果要初初始化P2作作为紧凑模式式高端地址,必必须:PPAAGEENAAGLE11,PPAGGE为P2值值,例如指定定某页10000H100FFH,则则PPAGEE10H,而而且连接时必必须如下: L51 PDAATA(10080H),其其中10800H是10000H

56、100FFH中的的任一个值。 以下是STARRTUP.AA51代码片片断,红色是是经常可能需需要修改的地地方: ; ; This file is paart off the C51 CCompiller paackagee ; Copyrright KEIL ELEKTTRONIKK GmbHH 19900 ; ; STARTTUP.A551: Thhis coode iss execcuted afterr proccessorr reseet. ; ; To trranslaate thhis fiile usse A511 withh the folloowing invoccation

57、n: ; ; A51 SSTARTUUP.A511 ; ; To liink thhe moddifiedd STARRTUP.OOBJ fiile too yourr appllicatiion usse thee folllowingg ; L51 iinvocaation: ; ; L51 , SSTARTUUP.OBJJ ; ; ; ; User-definned Poower-OOn Iniitialiizatioon of Memorry ; ; With the ffollowwing EEQU sttatemeents tthe innitiallizatiion off me

58、moory ; at prrocesssor reeset ccan bee defiined: ; ; ; thee absoolute startt-addrress oof IDAATA meemory is allways 0 IDATALEEN EQUU 80H ; thee lenggth off IDATTA memmory iin byttes. ; XDATASTTART EEQU 0HH ; thhe abssolutee starrt-adddress of XDDATA mmemoryy XDATALEEN EQUU 0H ; the lengtth of XDATAA

59、 memoory inn bytees. ; PDATASTTART EEQU 0HH ; thhe abssolutee starrt-adddress of PDDATA mmemoryy PDATALEEN EQUU 0H ; the lengtth of PDATAA memoory inn bytees. ; ; Notess: Thee IDATTA spaace ovverlapps phyysicallly thhe DATTA andd BIT areass of tthe ; 8051 CPU. At miinimumm the memorry spaace occcupi

60、eed froom thee C51 ; run-ttime rroutinnes muust bee set to zeero. ; ; ; Reenttrant Stackk Inittilizaation ; ; The ffollowwing EEQU sttatemeents ddefinee the stackk poinnter ffor reeentraant ; functtions and iinitiaalizedd it: ; ; Stackk Spacce forr reenntrantt funcctionss in tthe SMMALL mmodel. IBPS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论