KeilC51开发系统知识5893.docx

上传人:you****now 文档编号:62770964 上传时间:2022-11-22 格式:DOCX 页数:68 大小:92.81KB
返回 下载 相关 举报
KeilC51开发系统知识5893.docx_第1页
第1页 / 共68页
KeilC51开发系统知识5893.docx_第2页
第2页 / 共68页
点击查看更多>>
资源描述

《KeilC51开发系统知识5893.docx》由会员分享,可在线阅读,更多相关《KeilC51开发系统知识5893.docx(68页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Keil C51开发系统基本知识1. 第一节 系统概述 Keil C51是美国Keil Software公司出品的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创建生成库库文件,也可可以与库文件件一起经L551连接定位位生成

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

4、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. CC51与A551 1. (1) C51 C

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

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

7、表库库文件列表 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( )函数,单片片机系统软件件向RTOSS发展是一种种趋势,这种种趋

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

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

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

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

13、cope511只有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,直直接在命令行行键入Ishhell,则则进入该环境境,它使用简简单方便。其其命令行与DDOS命令行行具有同样的的功能,对单单模块的Prrojectt直接由

14、菜单单进行编译连连接,对多模模块的prooject。则则通过批处理理,BAT文文件进行编译译连接,然后后通过菜单控控制由dSccope511或tScoope51对对程序进行调调试,因为是是for ddos的,不不做太详细介介绍。 2. (2) uVisiion foor Winndows uVisionn for Windoows是一个个标准的Wiindowss应用程序,它它是C51的的一个集成软软件开发平台台,具有源代代码编辑、pprojecct管理、集集成的makke等功能,它它的人机界面面友好,操作作方便,是开开发者的首选选,具体配置置及使用见第第五部分。 2. 第二章 Keil C51

15、软件件使用详解 1. 第一节 Keil C51编译译器的控制指指令 C51编译器的的控制指令分分为三类:源源文件控制类类,目标文件件控制类及列列表控制类。 1. 1. 源源文件控制类类 NOEXTENND:C511源文件不允允许使用ANNSI C扩扩展功能。 DEFINE(DF):定定义预处理(在C51命命令行)。 2. 2. 目目标文件(OObjectt)控制类: COMPACTT LARGGE SMAALL 选编编译模式 DEBUG(DDB) 包含含调试信息,以以供仿真器或或dSCoppe51使用用。 NOAMAKEE(NOAMM) 禁止AAutoMaake信息记记录 NOREGPAARM

16、S 禁禁止用寄存器器传递参数 OBJECTEEXTENDD(OE) Objecct文件包含含附加变量类类型信息 OPTIMIZZE(OT) 指定优化化级别 REG) 指定定一个寄存器器使用的文件件以供整体优优化用 REGISTEERBANKK(RB) 指定一个供供绝对寄存器器访问的寄存存器区名 SRC 不生成成目标文件只只生成汇编源源文件 其它控件不常用用。 3. 3. 列列表文件(llistinng)控制类类: CODE(CDD):向列表表文件加入汇汇编列表 LISTINCCLUDE(LC):显显示induude文件 SYMBOLSS(SB):列表文件包包括模块内所所有符号的列列表 WARN

17、INGGLEVELL(WL):选择“警告告”级别 2. 第二节 dScoppe51的使使用 1. 1. ddScopee51 foor Doss 总的来说dSccope511具有以下特特性: l 高级语言显显示模式 l 集成硬件环环境模拟 l 单步或“GGO”执行模模式 l 存储器、寄寄存器及变量量访问 l Watchh表达式之值值 l 函数与信号号功能 下面,具体说明明在进入dSScope551 forr Dos之之后,如何实实现上述功能能,dScoope51采采用下拉菜单单格式和窗口口显示控制,共共有langguage、sseriall、exe、rregistter四个窗窗口,其中eexe

18、为命令令行窗口,llanguaage为程序序窗口,seerial为为串口窗,rregistter为寄存存器窗。 1. (1) 高级语言显显示模式 单击主菜单中的的“Vieww”,第一栏栏中的三条命命令“Higghleveel”、“MMixed”、“AAssembbly”分别别对所装入的的程序按照“高高级”、“混混合级”及“汇汇编级”三种种方式显示,以以方便调试使使用。 2. (2) 集成硬件环环境模拟显示示 主菜单中“Peeripheeral”各各条能显示模模拟硬件环境境的状态,其其中: i/o Porrt:显示各各I/O口之之值,对80031而言SSFR中的PP1、P2、PP3、P0与与引脚

19、之值分分别列出: Interruupt:显示示5个中断源源的入口模式式是否允许,优优先级等中断断状态。 Timer:显显示各定时/计数器的模模式,初始值值状态等。 int Messsage:中断信息允允许,如为允允许(“”出现),则则当中断申请请时,显示中中断源信息。比比如当中断发发生时会显示示: “interrrupt TTimer 0 occcured”等等 A/D connverteer: 显示A/D转换换器状态无时时,则提示“无无”。 Serial:串口信息显显示,包括串串口模式、波波特产等 Other:其其它器件,如如为80311则显示“ 无” 3. (3) 单步或“GGo”执行 “

20、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 复杂数据类型显显示:Objject命令令;用以显示示结构或数组组的内容。欲欲使此命令有有效,C511编译器必须须有DB及OOBJECTTEXTENND

21、两条。 反汇编命令:UU 5. (5) “Watcch”表达式式之值 在View菜单单的“Wattch”一栏栏中有四项:其中包括定定义Watcch Poiint(Deefine)、删除Waatch PPoint(removve,killl alll),及自动动更新选项。 也可用WS、WWK等命令代代替,下面具具体看“表达达式”类型: dScope551一次最多多可设16个个WtchPPoint表表达式,显示示于Watcch Winndow之中中,表达式可可以是简单变变量,也可是是复杂数据类类型如结构、数数组和指向结结构的指针等等,例如: WS *pttime WS ptiimehoour WS

22、 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 wwindowws具有dSScope for ddos的全部部功能,此外外,它还具有有以下明显的的优点: (1) 标准的的Windoows界面,操

23、操作更容易更更简单; (2) 常用操操作多用对话话框,而非DDos的行命命令方式; (3) 窗口资资源更加丰富富:存储器窗窗口、覆盖率率分析、运行行状态分析窗窗口,加强了了调试功能; 因为dScoppe forr Winddows功能能强大,具体体操作在第八八章详细介绍绍。 3. 第三节 Monittor51及及其使用 1. 1. MMonitoor51对硬硬件的要求 (1) 硬件系系统为51系系列CPU; (2) 带5KK外部程序存存储器(从OO地址开始),存放Moonitorr51程序; (3) 2566Bytess的外部数据据存储器以及及5K的跟踪踪缓冲区,此此外,外部数数据存储器必必须

24、足够容纳纳所有应用程程序代码及数数据,且所有有外部数据存存储器必须为为冯诺伊曼曼存储器,即即能一致访问问XDATAA与Codee空间。 (4) 一个定定时器作为波波特率发生器器供串口使用用; (5) 6 BBytes的的空余堆栈。 2. 2. MMon51的的使用 Mon51的使使用途径有三三种方式: (1) Doss行命令方式式 即先用insttall对MMON51进进行配置,然然后用MONN51进入MMonitoor状态,启启用各种命令令对Moniitor511进行调试。 (2) tSccope511方式 启动tScoppe51装入入TS51目目录下的MOON51.IIOT驱动文文件,与目

25、标标板通信。 (3) dSccope511 for Windoows方式 在选CPU驱动动文件时,选选“MON551.dlll”,则检查查目标板并进进入MON551状态。 3. 3. MMON51的的配置 (1) MONN51 foor Doss的配置 运行instaall文件(在MON551目录下),不同的参参数可以配置置不同的硬件件环境。INNSTALLL Seriialtyppe xddstasttartccodesttartbbankPROMCCHECK,具体体说明见MOON51帮助助文件或使用用手册。 (2) MONN51 foor Winndows的的配置 在启用MON551.dl

26、ll时,会使得得系统自动检检查目标板连连接,如配置置不对,则弹弹出“Connfigurrationn”对话框,设设置PC串口口,波特率等等,完毕单击击“applly”有效。 4. 4. 串串口连接图: 收发交叉互连,RRTS、CTTS直连,DDSR、DTTR直连,具具体引脚排列列参考串口资资料。 5. 5. MMON51命命令及使用 详细的MON551命令可参参阅帮助。 4. 第四节 集成开发环环境(IDEE)的使用 1. 1. IIshelll for Dos的使使用 进入Ishelll之后看到到两个窗口:一个是文件件窗口,一个个是Dos命命令行窗口,窗窗口上方是下下拉式的命令令菜单,其中中

27、的Filees控制文件件窗口的显隐隐。 使用Ishelll,第一步步就是配置系系统,即要学学习两个文件件的修改与创创建: 1. (1) Ishelll.CFGG文件 每一个projject都有有一个Ishhell.CCFG,其中中存放有“OOptionn菜单和Seetup菜单单下的部分信信息;Belll enaabled、MMonochhrome enablled、Edditor Seleccted、CCRT Liines、ttargett enviiromennt、namme of user edit、AAutomaatic lload ffor coonfiguuratioon enaab

28、led、 enablled、 ffor 、ttransllate ccommannd linne conntrolss、projject nname等。 对每个projject都必必须设置以上上信息,然后后存盘“seetup”的的的“savve”,这样样才可正式开开始下面工作作。 2. (2) IShelll.coll文件 对IDE颜色设设置,如不改改动,可以缺缺省为主。 3. (3) CDF文件件 该文件位于BIIN目录下,每每一文件定义义一组外部函函数工具包,即即定义外部环环境如80551.CDFF,USERR.CDF等等,开发者可可修改CDFF文件,供自自己使用,至至于CDF文文件内容可

29、查查看一下80051.CDDF即可知道道。注意.CCDF文件是是Ishelll系统的核核心所在,不不同的CDFF文件可使本本IDE适用用于不同的编编译、连接系系统,即本IIDE并不仅仅适于C511。 下面谈一谈Auutomakke工具: C51的Auttomakee是一个prrojectt管理器,在在8051工工具包中以OOBJECTT文件形式保保留了一个pprojecct的信息,AAutoMaake用这些些信息来进行行projeect管理,一一旦手工建立立一个prooject,AAutomaake可生成成一个新的OOBJECTT,AutooMake利利用此文件来来编译那些修修改过的文件件。

30、Automakke支持C551、A511、L51/BL51、CC166、AA166、LL166等编编译连接器。点点中主菜单中中的Autoomake即即运行本工具具。 Ishell for DDos使用比比较繁琐,推推荐使用uVVisionn for windoows。 2. 2. uuVisioon forr winddows的使使用 uVisionn是一个标准准的winddows应用用程序,其编编译功能、文文件处理功能能、projject处理理功能、窗口口功能以及工工具引用功能能(如A511、C51、PPL/M411、BL511 dScoope等)等等都较Ishhell ffor Doos要

31、强得多多。 uVisionn采用BL551作连接器器,因为BLL51兼容LL51,所以以一切能在DDos下工作作的projject都可可以到uViision中中进行连接调调试。 uVisionn采用dSccope ffor wiindowss作调试器,该该调试器支持持MON511及系统模拟拟两种方式,功功能较forr DOS要要强大好用,调调试功能强大大。 注意: (1) Opttion菜单单下的各项要要会使用,其其中A51、CC51、PLL/M51、BBL51定义义各文件所使使用的编译、连连接控制指令令,dScoope定义一一个dScoope初始化化文件。Maake则是定定义一个maake文

32、件。 (2) 进入调调试是在RUUN菜单下运运行dScoope。 (3) prooject中中包括新建、打打开、修改、更更新、编译、连连接等pojject处理理,具体使用用可参考后面面的例子。 3. 第三章 Keil C51 vvs 标准CC 深入理解并应用用C51对标标准ANSIIC的扩展是是学习C511的关键之一一。因为大多多数扩展功能能都是直接针针对80511系列CPUU硬件的。大大致有以下88类: l 8051存存储类型及存存储区域 l 存储模式 l 存储器类型型声明 l 变量类型声声明 l 位变量与位位寻址 l 特殊功能寄寄存器(SFFR) l C51指针针 l 函数属性 具体说明如

33、下(8031为为缺省CPUU)。 1. 第一节 Keil C51扩展展关键字 C51 V4.0版本有以以下扩展关键键字(共199个): _at_ iddata ssfr16 alienn inteerruptt smalll bdata llarge _taskk_ Codde bitt pdatta using rreentrrant xxdata compaact sbbit daata sffr 2. 第二节 内存区域(Memorry Areeas): 1. 1. PPragraam Areea: 由Code说明明可有多达664kByttes的程序序存储器 2. 2. IInternna

34、l Daata Meemory: 内部数据存储器器可用以下关关键字说明: data:直接接寻址区,为为内部RAMM的低1288字节 000H7FHH idata:间间接寻址区,包包括整个内部部RAM区 00HFFFH bdata:可可位寻址区, 20H22FH 3. 3. EExternnal Daata Meemory 外部RAM视使使用情况可由由以下关键字字标识: xdata:可可指定多达664KB的外外部直接寻址址区,地址范范围00000H0FFFFFH pdata:能能访问1页(25bByytes)的的外部RAMM,主要用于于紧凑模式(Compaact Moodel)。 4. 4. S

35、Speciaac Funnctionn Regiister Memorry 8051提供1128Byttes的SFFR寻址区,这这区域可位寻寻址、字节寻寻址或字寻址址,用以控制制定时器、计计数器、串口口、I/O及及其它部件,可可由以下几种种关键字说明明: sfr:字节寻寻址 比如 sfr PP0=0x880;为POO口地址为880H,“”后HFFFH之间的的常数。 sfr16:字字寻址,如ssfr16 T2=0xxcc;指定定Timerr2口地址TT2L=0xccc T2HH=0xCDD sbit:位寻寻址,如sbbit EAA=0xAFF;指定第00xAF位为为EA,即中中断允许 还可以有如

36、下定定义方法: sbit 0VV=PSW2;(定义义0V为PSSW的第2位位) sbit 0VV0XDOO2;(同同上) 或bit 0VV-0xDD2(同上)。 3. 第三节 存储模式 存储模式决定了了没有明确指指定存储类型型的变量,函函数参数等的的缺省存储区区域,共三种种: 1. 1. SSmall模模式 所有缺省变量参参数均装入内内部RAM,优优点是访问速速度快,缺点点是空间有限限,只适用于于小程序。 2. 2. CCompacct模式 所有缺省变量均均位于外部RRAM区的一一页(2566Bytess),具体哪哪一页可由PP2口指定,在在STARTTUP.A551文件中说说明,也可用用pd

37、ataa指定,优点点是空间较SSmall为为宽裕速度较较Smalll慢,较laarge要快快,是一种中中间状态。 3. 3. llarge模模式 所有缺省变量可可放在多达664KB的外外部RAM区区,优点是空空间大,可存存变量多,缺缺点是速度较较慢。 提示:存储模式式在C51编编译器选项中中选择。 4. 第四节 存储类型声声明 变量或参数的存存储类型可由由存储模式指指定缺省类型型,也可由关关键字直接声声明指定。各各类型分别用用:codee,dataa,idatta,xdaata,pddata说明明,例: data uaar1 char coode arrray “heello!”; unsig

38、need chaar xdaata arrr10444; 5. 第五节 变量或数据据类型 C51提供以下下几种扩展数数据类型: bit 位变量量值为0或11 sbit 从字字节中定义的的位变量 00或1 sfr sfrr字节地址 02555 sfr16 ssfr字地址址 0655535 其余数据类型如如:charr,enumm,shorrt,intt,longg,floaat等与ANNSI C相相同。 6. 第六节 位变量与声声明 1. 1. bbit型变量量 bit型变量可可用变量类型型,函数声明明、函数返回回值等,存贮贮于内部RAAM20H2FH。 注意: (1) 用ppragmaa di

39、saable说明明函数和用“uusign”指指定的函数,不不能返回biit值。 (2) 一个bbit变量不不能声明为指指针,如biit *pttr;是错误误的 (3) 不能有有bit数组组如:bitt arr5;错误误。 2. 2. 可可位寻址区说说明20H2FH 可作如下定义: int bdaata i; char bddata aarr3, 然后: sbit biitoinn0;sbiit bitt15=I15; sbit arrr07=aarr07;sbbit arrr15=aarri7; 7. 第七节 Keil C51指针针 C51支持一般般指针(Geenericc Poinnter)

40、和和存储器指针针(Memoory_Sppecifiic Poiinter). 1. 1. 一一般指针 一般指针的声明明和使用均与与标准C相同同,不过同时时还可以说明明指针的存储储类型,例如如: long * statee;为一个指指向longg型整数的指指针,而sttate本身身则依存储模模式存放。 char * xdataa ptr;ptr为一一个指向chhar数据的的指针,而pptr本身放放于外部RAAM区,以上上的longg,charr等指针指向向的数据可存存放于任何存存储器中。 一般指针本身用用3个字节存存放,分别为为存储器类型型,高位偏移移,低位偏移移量。 2. 2. 存存储器指针

41、基于存储器的指指针说明时即即指定了存贮贮类型,例如如: char daata * str;sstr指向ddata区中中char型型数据 int xdaata * pow; pow指向向外部RAMM的int型型整数。 这种指针存放时时,只需一个个字节或2个个字节就够了了,因为只需需存放偏移量量。 3. 3. 指指针转换 即指针在上两种种类型之间转转化: l 当基于存储储器的指针作作为一个实参参传递给需要要一般指针的的函数时,指指针自动转化化。 l 如果不说明明外部函数原原形,基于存存储器的指针针自动转化为为一般指针,导导致错误,因因而请用“incluude”说明明所有函数原原形。 l 可以强行改

42、改变指针类型型。 8. 第八节 Keil C51函数数 C51函数声明明对ANSII C作了扩扩展,具体包包括: 1. 1. 中中断函数声明明: 中断声明方法如如下: void seerial_ISR () intterruppt 4 usingg 1 /* ISR */ 为提高代码的容容错能力,在在没用到的中中断入口处生生成irett语句,定义义没用到的中中断。 /* defiine noot useed intterruppt, soo geneerate IRETT in theirr entrrance */ void exxtern00_ISR() intterruppt 0 /*

43、nnot ussed */ void tiimer0_ISR () intterruppt 1 /* nnot ussed */ void exxtern11_ISR() intterruppt 2 /* nnot ussed */ void tiimer1_ISR () intterruppt 3 /* nnot ussed */ void seerial_ISR () intterruppt 4 /* nnot ussed */ 2. 2. 通通用存储工作作区 3. 3. 选选通用存储工工作区由ussing xx声明,见上上例。 4. 4. 指指定存储模式式 由small compaact

44、 及llarge说说明,例如: void fuun1(vooid) ssmall 提示:smalll说明的函函数内部变量量全部使用内内部RAM。关关键的经常性性的耗时的地地方可以这样样声明,以提提高运行速度度。 5. 5. #pragmma dissable 在函数前声明,只只对一个函数数有效。该函函数调用过程程中将不可被被中断。 6. 6. 递递归或可重入入函数指定 在主程序和中断断中都可调用用的函数,容容易产生问题题。因为511和PC不同同,PC使用用堆栈传递参参数,且静态态变量以外的的内部变量都都在堆栈中;而51一般般使用寄存器器传递参数,内内部变量一般般在RAM中中,函数重入入时会破坏

45、上上次调用的数数据。可以用用以下两种方方法解决函数数重入: a、在相应的函函数前使用前前述“#prragma disabble”声明明,即只允许许主程序或中中断之一调用用该函数; b、将该函数说说明为可重入入的。如下: void fuunc(paaram.) reeentraant; KeilC511编译后将生生成一个可重重入变量堆栈栈,然后就可可以模拟通过过堆栈传递变变量的方法。 由于一般可重入入函数由主程程序和中断调调用,所以通通常中断使用用与主程序不不同的R寄存存器组。 另外,对可重入入函数,在相相应的函数前前面加上开关关“#praagma nnoareggs”,以禁禁止编译器使使用绝对

46、寄存存器寻址,可可生成不依赖赖于寄存器组组的代码。 7. 7. 指指定PL/MM51函数数 由alien指指定。 4. 第四章 Keil C51高级级编程 本章讨论以下内内容: l 绝对地址访访问 l C与汇编的的接口 l C51软件件包中的通用用文件 l 段名转换与与程序优化 1. 第一节 绝对地址访访问 C51提供了三三种访问绝对对地址的方法法: 1. 1. 绝绝对宏: 在程序中,用“incluude”即可可使用其中定定义的宏来访访问绝对地址址,包括: CBYTE、XXBYTE、PPWORD、DDBYTE、CCWORD、XXWORD、PPBYTE、DDWORD 具体使用可看一一看absaacc.h便便知 例如: rval=CBBYTE00x00022;指向程程序存贮器的的0002hh地址 rval=XWWORD 0x00002;指向向外RAM的的0004hh地址 2. 2. _at_关键键字 直接在数据定义义后加上_aat_ coonst即可可,但是注意意:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 电力管理

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁