KeilC51开发系统知识_第1页
KeilC51开发系统知识_第2页
KeilC51开发系统知识_第3页
KeilC51开发系统知识_第4页
KeilC51开发系统知识_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

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

2、生成的的汇编代码码很紧凑,容容易理解。在开发大大型软件时时更能体现现高级语言言的优势。 下面详细介介绍Keiil C551开发系系统各部分分功能和使使用。 2. 第二二节 Keeil CC51单片片机软件开开发系统的的整体结构构 C51工具具包的整体体结构,如如图(1)所示,其其中uViisionn与Ishhell分分别是C551 foor Wiindowws和foor Doos的集成成开发环境境(IDEE),可以以完成编辑辑、编译、连接、调调试、仿真真等整个开开发流程。开发人员员可用IDDE本身或或其它编辑辑器编辑CC或汇编源源文件。然然后分别由由C51及及A51编编译器编译译生成目标标文件

3、(.OBJ)。目标文文件可由LLIB511创建生成成库文件,也也可以与库库文件一起起经L511连接定位位生成绝对对目标文件件(.ABBS)。AABS文件件由OH551转换成成标准的HHex文件件,以供调调试器dSScopee51或ttScoppe51使使用进行源源代码级调调试,也可可由仿真器器使用直接接对目标板板进行调试试,也可以以直接写入入程序存贮贮器如EPPROM中中。 图(1) C51工工具包整体体结构图 3. 第三三节 Keeil CC51工具具包的安装装 1. 1. C511 forr Doss 在Winddows下下直接运行行软件包中中DOSC51DDOS.eexe然后后选择安装装

4、目录即可可。完毕后后欲使系统统正常工作作须进行以以下操作(设C:C51为为安装目录录): 修改Auttoexeec.baat,加入入 path=C:CC51BBin Set CC51LIIB=C:C511LIBB Set CC51INNC=C:C511INCC 然后运行AAutoeexec.bat 2. 2. C511 forr Winndowss的安装及及注意事项项: 在Winddows下下运行软件件包中WIINSeetup.exe,最最好选择安安装目录与与C51 for Dos相相同,这样样设置最简简单(设安安装于C:C511目录下)。然后将将软件包中中cracck目录中中的文件拷拷入C:

5、C51Bin目目录下。 4. 第四四节 Keeil CC51工具具包各部分分功能及使使用简介 1. 1. C511与A511 1. (11) C551 C51是CC语言编译译器,其使使用方法为为: C51 ssourccefille编译译控制指令令 或者 C51 commmanddfilee 其中souurceffile为为C源文件件(.C)。大量的的编译控制制指令完成成C51编编译器的全全部功能。包控C551输出文文件C.LLST,.OBJ,.I和.SSRC文件件的控制。源文件(.C)的的控制等,详详见第五部部分的具体体介绍。 而Commmandffile为为一个连接接控制文件件其内容包包括

6、:.CC源文件及及各编译控控制指令,它它没有固定定的名字,开开发人员可可根据自己己的习惯指指定,它适适于用控制制指令较多多的场合。 2. (22) A551 A51是汇汇编语言编编译器,使使用方法为为: A51 ssourccefille编译译控制指令令 或A51 coommanndfille 其中souurceffile为为汇编源文文件(.aasm或.a51),而编译译控制指令令的使用与与其它汇编编如ASMM语言类似似,可参考考其他汇编编语言材料料。 Commaand中的的Commmandffile类类似,它使使A51使使用和修改改方便。 2. 2. L511和BL551 1. (11) L

7、551 L51是KKeil C51软软件包提供供的连接/定位器,其其功能是将将编译生成成的OBJJ文件与库库文件连接接定位生成成绝对目标标文件(.ABS),其使用用方法为: L51 目目标文件列列表库文文件列表 too outtputffile 连接接控制指令令 或 L511 Coommanndfille 源程序的多多个模块分分别经C551与A551编译后后生成多个个OBJ文文件,连接接时,这些些文件全列列于目标文文件列表中中,作为输输入文件,如如果还需与与库文件(.LiBB)相连接接,则库文文件也必须须列在其后后。outtputffile为为输文件名名,缺少时时为第一模模块名,后后缀为.AA

8、BS。连连接控制指指令提供了了连接定位位时的所有有控制功能能。Commmanddfilee为连接控控制文件,其其具体内容容是包括了了目标文件件列表,库库文件列表表及输出文文件、连接接控制命令令,以取代代第一种繁繁琐的格式式,由于目目标模块库库文件大多多不止1个个,因而第第2种方法法较多见,这这个文件名名字也可由由使用者随随意指定。 2. (22) Bll51 BL51也也是C511软件包的的连接/定定位器,其其具有L551的所有有功能,此此外它还具具有以下33点特别之之处: a. 可以以连接定位位大于644kByttes的程程序。 b. 具有有代码域及及域切换功功能(CoodeBaankinn

9、g & Bankk Swiitchiing) c. 可用用于RTXX51操作作系统 RTX511是一个实实时多任务务操作系统统,它改变变了传统的的编程模式式,甚至不不必用maain( )函数,单单片机系统统软件向RRTOS发发展是一种种趋势,这这种趋势对对于1866和3866及68KK系列CPPU更为明明显和必须须,对80051因CCPU较为为简单,程程序结构等等都不太复复杂,RTTX51作作用显得不不太突出,其其专业版软软件PK551软件包包甚至不包包括RTXX51Fuull,而而只有一个个RTX551TINNY版本的的RTOSS。RTXX51 TTINY适适用于无外外部RAMM的单片机机系

10、统,因因而可用面面很窄,在在本文中不不作介绍。Bankk swiitchiing技术术因使用很很少也不作作介绍。 3. 3. DSccope551,Tsscopee51及MMonittor511 1. (11) dSScopee51 dScoppe51是是一个源级级调试器和和模拟器,它它可以调试试由C511编译器、A51汇汇编器、PPL/M-51编译译器及ASSM511汇编器产产生的程序序。它不需需目标板(ffor wwindoows也可可通过moon51接接目标板),只只能进行软软件模拟,但但其功能强强大,可模模拟CPUU及其外围围器件,如如内部串口口,外部II/O及定定时器等,能能对嵌入式

11、式软件功能能进行有效效测试。 其使用方法法为: DS51debuugfilleIINIT(inittfilee) 其中debbugfiile是一一个Hexx格式的88051文文件,即待待调试的文文件其为可可选的,可可在进入ddScoppe51后后用loaad命令装装入。 Initffile为为一个初使使化文件,它它在启动ddScoppe51后后,在deebugffile装装入前装入入,装有一一些dSccope的的初使化参参数及常用用调试函数数等。下面面是一个ddScoppe.inni文件(for dos)的内容: Load .dss5188051.iof Map 00,0 xfffff dSc

12、oppe51 for Winddows则则直接用鼠鼠标进入,然然后用looad装入入待调文件件。 2. (22) tSScopee51 与dScoope511不同的是是Scoppe51必必须带目标标板,目前前它可以通通过两种方方式访问目目标板。(1) 通通过EMuul51在在线仿真器器,tSccope551为该仿仿真器准备备了一个动动态连接文文件EMUUL51.IOT,但但该方法必必须配合该该仿真器。(2) 通过Moonitoov51监监控程序,这这种方法是是可行的,ttScoppe51为为访问Moonitoor51专专门带有MMON511.IOTT连接程序序,使用时时可通过串串口及监控控程序

13、来调调试目标板板。 其使用方法法为: TS51INITT() 其中为一个个初使化文文件。 进入TS551后,必必须装入IIOT文件件,可用的的有MONN51.IIOT及EEMUL551.IOOT两种,如如装入MOON51.IOT: Load.C:CC51TTS51MON551.IOOT CPPUTYPPE(800517) 可惜的是ttScoppe51只只有forr Doss的版本。 3. (33) Moonitoor 511 Monittor511是一个监监控程序通通过PC机机的串口与与目标板进进行通信,MMonittor操作作需要MOON51或或dScoope511 forr Winndow

14、ss,后面部部分将对MMonittor511做较为详详细的介绍绍。 4. 4. Ishhell及及uVission 1. (11) Isshelll forr Doss 这是一个ffor DDos的IIDE,直直接在命令令行键入IIshelll,则进进入该环境境,它使用用简单方便便。其命令令行与DOOS命令行行具有同样样的功能,对对单模块的的Projject直直接由菜单单进行编译译连接,对对多模块的的projject。则通过批批处理,BBAT文件件进行编译译连接,然然后通过菜菜单控制由由dScoope511或tSccope551对程序序进行调试试,因为是是for dos的的,不做太太详细介绍绍

15、。 2. (22) uVVisioon foor Wiindowws uVisiion ffor WWindoows是一一个标准的的Winddows应应用程序,它它是C511的一个集集成软件开开发平台,具具有源代码码编辑、pprojeect管理理、集成的的makee等功能,它它的人机界界面友好,操操作方便,是是开发者的的首选,具具体配置及及使用见第第五部分。 2. 第二二章 Keeil CC51软件件使用详解解 1. 第一一节 Keeil CC51编译译器的控制制指令 C51编译译器的控制制指令分为为三类:源源文件控制制类,目标标文件控制制类及列表表控制类。 1. 1. 源文件件控制类 NOE

16、XTTEND:C51源源文件不允允许使用AANSI C扩展功功能。 DEFINNE(DFF):定义义预处理(在C511命令行)。 2. 2. 目标文文件(Obbjectt)控制类类: COMPAACT LLARGEE SMAALL 选选编译模式式 DEBUGG(DB) 包含调调试信息,以以供仿真器器或dSCCope551使用。 NOAMAAKE(NNOAM) 禁止AAutoMMake信信息记录 NOREGGPARMMS 禁止止用寄存器器传递参数数 OBJECCTEXTTEND(OE) Objeect文件件包含附加加变量类型型信息 OPTIMMIZE(OT) 指定优化化级别 REG) 指定一个个

17、寄存器使使用的文件件以供整体体优化用 REGISSTERBBANK(RB) 指定一个个供绝对寄寄存器访问问的寄存器器区名 SRC 不不生成目标标文件只生生成汇编源源文件 其它控件不不常用。 3. 3. 列表文文件(liistinng)控制制类: CODE(CD):向列表文文件加入汇汇编列表 LISTIINCLUUDE(LLC):显显示inddude文文件 SYMBOOLS(SSB):列列表文件包包括模块内内所有符号号的列表 WARNIINGLEEVEL(WL):选择“警警告”级别别 2. 第二二节 dSScopee51的使使用 1. 1. dSccope551 foor Doos 总的来说dd

18、Scoppe51具具有以下特特性: l 高级语语言显示模模式 l 集成硬硬件环境模模拟 l 单步或或“GO”执行模式式 l 存储器器、寄存器器及变量访访问 l Wattch表达达式之值 l 函数与与信号功能能 下面,具体体说明在进进入dSccope551 foor Doos之后,如如何实现上上述功能,ddScoppe51采采用下拉菜菜单格式和和窗口显示示控制,共共有lannguagge、seeriall、exee、reggisteer四个窗窗口,其中中exe为为命令行窗窗口,laanguaage为程程序窗口,sseriaal为串口口窗,reegistter为寄寄存器窗。 1. (11) 高级级

19、语言显示示模式 单击主菜单单中的“VView”,第一栏栏中的三条条命令“HHighllevell”、“MMixedd”、“AAssemmbly”分别对所所装入的程程序按照“高级”、“混合级级”及“汇汇编级”三三种方式显显示,以方方便调试使使用。 2. (22) 集成成硬件环境境模拟显示示 主菜单中“Periipherral”各各条能显示示模拟硬件件环境的状状态,其中中: i/o PPort:显示各II/O口之之值,对88031而而言SFRR中的P11、P2、P3、PP0与引脚脚之值分别别列出: Interrruptt:显示55个中断源源的入口模模式是否允允许,优先先级等中断断状态。 Timer

20、r:显示各各定时/计计数器的模模式,初始始值状态等等。 int MMessaage:中中断信息允允许,如为为允许(“”出出现),则则当中断申申请时,显显示中断源源信息。比比如当中断断发生时会会显示: “inteerruppt Tiimer 0 occcureed”等 A/D cconveerterr: 显示A/DD转换器状状态无时,则则提示“无无”。 Seriaal:串口口信息显示示,包括串串口模式、波特产等等 Otherr:其它器器件,如为为80311则显示“ 无” 3. (33) 单步步或“Goo”执行 “F8”单单步执行,“F5”全速执执行到断点点。或选主主菜单中TTracee单步执行行

21、CPU中中的Go全全速执行。 4. (44) 存储储器寄存器器及变量访访问 外部存储器器管理MAAP菜单:设置(sset)、取消(rresett)、显示示(Dissplayy)处理可可用存储空空间。 修改Codde代码:ASM命命令 存储器显示示命令:DD 类别为为(X、DD、I、BB、C) 修改存储器器命令:EE 有以下下几种命令令EB、EEC、EII、EL、EF、EEP 复杂数据类类型显示:Objeect命令令;用以显显示结构或或数组的内内容。欲使使此命令有有效,C551编译器器必须有DDB及OBBJECTTEXTEEND两条条。 反汇编命令令:U 5. (55) “WWatchh”表达式

22、式之值 在Vieww菜单的“Watcch”一栏栏中有四项项:其中包包括定义WWatchh Poiint(DDefinne)、删删除Wattch PPointt(remmove,killl alll),及自自动更新选选项。 也可用WSS、WK等等命令代替替,下面具具体看“表表达式”类类型: dScoppe51一一次最多可可设16个个WtchhPoinnt表达式式,显示于于Watcch Wiindoww之中,表表达式可以以是简单变变量,也可可是复杂数数据类型如如结构、数数组和指向向结构的指指针等,例例如: WS *ptimme WS pptimeehouur WS ssome_recoordoo,

23、annalogg等等 6. (66) 关于于.IOFF文件 启动DS551后必须须装入.IIOF文件件才能使CCPU及PPerippheraal各项起起作用,这这个函数的的使用是依依据80551系列CCPU的不不同特点,装装入80551各CPPU硬件设设备模拟驱驱动文件,比比如80331CPUU就必须lload DS511目录下的的80511.IOFF。 2. 2. dSccope for Winddows dScoppe foor wiindowws具有ddScoppe foor doos的全部部功能,此此外,它还还具有以下下明显的优优点: (1) 标标准的Wiindowws界面,操操作更容

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

25、据存储器器必须足够够容纳所有有应用程序序代码及数数据,且所所有外部数数据存储器器必须为冯冯诺伊曼曼存储器,即即能一致访访问XDAATA与CCode空空间。 (4) 一一个定时器器作为波特特率发生器器供串口使使用; (5) 66 Byttes的空空余堆栈。 2. 2. Monn51的使使用 Mon511的使用途途径有三种种方式: (1) DDos行命命令方式 即先用innstalll对MOON51进进行配置,然然后用MOON51进进入Monnitorr状态,启启用各种命命令对Moonitoor51进进行调试。 (2) ttScoppe51方方式 启动tSccope551装入TTS51目目录下的M

26、MON511.IOTT驱动文件件,与目标标板通信。 (3) ddScoppe51 for Winddows方方式 在选CPUU驱动文件件时,选“MON551.dlll”,则则检查目标标板并进入入MON551状态。 3. 3. MONN51的配配置 (1) MMON511 forr Doss的配置 运行insstalll文件(在在MON551目录下下),不同同的参数可可以配置不不同的硬件件环境。IINSTAALL SSeriaaltyppe xxdstaastarrtcoodesttartbankkPRROMCHHECK,具具体说明见见MON551帮助文文件或使用用手册。 (2) MMON511

27、 forr Winndowss的配置 在启用MOON51.dll时时,会使得得系统自动动检查目标标板连接,如如配置不对对,则弹出出“Connfiguuratiion”对对话框,设设置PC串串口,波特特率等,完完毕单击“applly”有效效。 4. 4. 串口连连接图: 收发交叉互互连,RTTS、CTTS直连,DDSR、DDTR直连连,具体引引脚排列参参考串口资资料。 5. 5. MONN51命令令及使用 详细的MOON51命命令可参阅阅帮助。 4. 第四四节 集成成开发环境境(IDEE)的使用用 1. 1. Ishhell for Dos的的使用 进入Ishhell之之后看到两两个窗口:一个是

28、文文件窗口,一一个是Doos命令行行窗口,窗窗口上方是是下拉式的的命令菜单单,其中的的Filees控制文文件窗口的的显隐。 使用Ishhell,第第一步就是是配置系统统,即要学学习两个文文件的修改改与创建: 1. (11) Isshelll.CFGG文件 每一个prrojecct都有一一个Ishhell.CFG,其其中存放有有“Opttion菜菜单和Seetup菜菜单下的部部分信息;Belll enaabledd、Monnochrrome enabbled、Edittor SSeleccted、CRT Linees、taargett envviromment、namee of userr ed

29、iit、Auutomaatic loadd forr connfiguuratiion eenablled、 enabbled、 forr 、trransllate commmand linee conntrolls、prrojecct naame等。 对每个prrojecct都必须须设置以上上信息,然然后存盘“setuup”的的的“savve”,这这样才可正正式开始下下面工作。 2. (22) ISShelll.coll文件 对IDE颜颜色设置,如如不改动,可可以缺省为为主。 3. (33) CDDF文件 该文件位于于BIN目目录下,每每一文件定定义一组外外部函数工工具包,即即定义外部部环境

30、如88051.CDF,UUSER.CDF等等,开发者者可修改CCDF文件件,供自己己使用,至至于CDFF文件内容容可查看一一下80551.CDDF即可知知道。注意意.CDFF文件是IIshelll系统的的核心所在在,不同的的CDF文文件可使本本IDE适适用于不同同的编译、连接系统统,即本IIDE并不不仅适于CC51。 下面谈一谈谈Autoomakee工具: C51的AAutommake是是一个prrojecct管理器器,在80051工具具包中以OOBJECCT文件形形式保留了了一个prrojecct的信息息,AuttoMakke用这些些信息来进进行proojectt管理,一一旦手工建建立一个p

31、projeect,AAutommake可可生成一个个新的OBBJECTT,AuttoMakke利用此此文件来编编译那些修修改过的文文件。 Autommake支支持C511、A511、L511/BL551、C1166、AA166、L1666等编译连连接器。点点中主菜单单中的Auutomaake即运运行本工具具。 Ishelll foor Doos使用比比较繁琐,推推荐使用uuVisiion ffor wwindoows。 2. 2. uViisionn forr winndowss的使用 uVisiion是一一个标准的的winddows应应用程序,其其编译功能能、文件处处理功能、projject

32、处处理功能、窗口功能能以及工具具引用功能能(如A551、C551、PLL/M411、BL551 dSScopee等)等都都较Ishhell for Dos要要强得多。 uVisiion采用用BL511作连接器器,因为BBL51兼兼容L511,所以一一切能在DDos下工工作的prrojecct都可以以到uViisionn中进行连连接调试。 uVisiion采用用dScoope ffor wwindoows作调调试器,该该调试器支支持MONN51及系系统模拟两两种方式,功功能较foor DOOS要强大大好用,调调试功能强强大。 注意: (1) OOptioon菜单下下的各项要要会使用,其其中A51

33、1、C511、PL/M51、BL511定义各文文件所使用用的编译、连接控制制指令,ddScoppe定义一一个dSccope初初始化文件件。Makke则是定定义一个mmake文文件。 (2) 进进入调试是是在RUNN菜单下运运行dSccope。 (3) pprojeect中包包括新建、打开、修修改、更新新、编译、连接等ppojecct处理,具具体使用可可参考后面面的例子。 3. 第三三章 Keeil CC51 vvs 标准准C 深入理解并并应用C551对标准准ANSIIC的扩展展是学习CC51的关关键之一。因为大多多数扩展功功能都是直直接针对88051系系列CPUU硬件的。大致有以以下8类: l

34、 80551存储类类型及存储储区域 l 存储模模式 l 存储器器类型声明明 l 变量类类型声明 l 位变量量与位寻址址 l 特殊功功能寄存器器(SFRR) l C511指针 l 函数属属性 具体说明如如下(80031为缺缺省CPUU)。 1. 第一一节 Keeil CC51扩展展关键字 C51 VV4.0版版本有以下下扩展关键键字(共119个): _at_ idatta sffr16 alieen innterrrupt smalll bdataa larrge _taskk_ Coode bbit ppdataa usingg reeentraant xxdataa commpactt sb

35、iit daata ssfr 2. 第二二节 内存存区域(MMemorry Arreas): 1. 1. Praagramm Areea: 由Codee说明可有有多达644kByttes的程程序存储器器 2. 2. Intternaal Daata MMemorry: 内部数据存存储器可用用以下关键键字说明: data:直接寻址址区,为内内部RAMM的低1228字节 00H7FH idataa:间接寻寻址区,包包括整个内内部RAMM区 000HFFFH bdataa:可位寻寻址区, 20H2FH 3. 3. Extternaal Daata MMemorry 外部RAMM视使用情情况可由以以下

36、关键字字标识: xdataa:可指定定多达644KB的外外部直接寻寻址区,地地址范围00000HH0FFFFFH pdataa:能访问问1页(225bByytes)的外部RRAM,主主要用于紧紧凑模式(Comppact Modeel)。 4. 4. Speeciacc Funnctioon Reegistter MMemorry 8051提提供1288Bytees的SFFR寻址区区,这区域域可位寻址址、字节寻寻址或字寻寻址,用以以控制定时时器、计数数器、串口口、I/OO及其它部部件,可由由以下几种种关键字说说明: sfr:字字节寻址 比如 ssfr PP0=0 xx80;为为PO口地地址为80

37、0H,“”后HFFH之之间的常数数。 sfr166:字寻址址,如sffr16 T2=00 xcc;指定Tiimer22口地址TT2L=0 xxcc TT2H=00 xCD sbit:位寻址,如如sbitt EA=0 xAFF;指定第第0 xAFF位为EAA,即中断断允许 还可以有如如下定义方方法: sbit 0V=PPSW22;(定义义0V为PPSW的第第2位) sbit 0V00XDO2;(同同上) 或bit 0V-0 xD22(同上)。 3. 第三三节 存储储模式 存储模式决决定了没有有明确指定定存储类型型的变量,函函数参数等等的缺省存存储区域,共共三种: 1. 1. Smaall模式式

38、所有缺省变变量参数均均装入内部部RAM,优优点是访问问速度快,缺缺点是空间间有限,只只适用于小小程序。 2. 2. Commpactt模式 所有缺省变变量均位于于外部RAAM区的一一页(2556Byttes),具具体哪一页页可由P22口指定,在在STARRTUP.A51文文件中说明明,也可用用pdatta指定,优优点是空间间较Smaall为宽宽裕速度较较Smalll慢,较较largge要快,是是一种中间间状态。 3. 3. larrge模式式 所有缺省变变量可放在在多达644KB的外外部RAMM区,优点点是空间大大,可存变变量多,缺缺点是速度度较慢。 提示:存储储模式在CC51编译译器选项中中

39、选择。 4. 第四四节 存储储类型声明明 变量或参数数的存储类类型可由存存储模式指指定缺省类类型,也可可由关键字字直接声明明指定。各各类型分别别用:coode,ddata,idatta,xddata,pdatta说明,例例: data uar11 char codee arrray “hhelloo!”; unsiggned charr xdaata aarr110444; 5. 第五五节 变量量或数据类类型 C51提供供以下几种种扩展数据据类型: bit 位位变量值为为0或1 sbit 从字节中中定义的位位变量 00或1 sfr ssfr字节节地址 002555 sfr166 sfrr字地址

40、 0655535 其余数据类类型如:cchar,enumm,shoort,iint,llong,floaat等与AANSI C相同。 6. 第六六节 位变变量与声明明 1. 1. bitt型变量 bit型变变量可用变变量类型,函函数声明、函数返回回值等,存存贮于内部部RAM220H22FH。 注意: (1) 用用praagma disaable说说明函数和和用“ussign”指定的函函数,不能能返回biit值。 (2) 一一个bitt变量不能能声明为指指针,如bbit *ptr;是错误的的 (3) 不不能有biit数组如如:bitt arrr5;错误。 2. 2. 可位寻寻址区说明明20H2F

41、H 可作如下定定义: int bbdataa i; char bdatta arrr3, 然后: sbit bitooin00;sbiit biit15=I155; sbit arr007=arrr07;ssbit arr115=arrri7; 7. 第七七节 Keeil CC51指针针 C51支持持一般指针针(Gennericc Poiinterr)和存储储器指针(Memoory_SSpeciific Poinnter). 1. 1. 一般指指针 一般指针的的声明和使使用均与标标准C相同同,不过同同时还可以以说明指针针的存储类类型,例如如: long * sttate;为一个指指向lonng

42、型整数数的指针,而而statte本身则则依存储模模式存放。 char * xddata ptr;ptr为为一个指向向charr数据的指指针,而pptr本身身放于外部部RAM区区,以上的的longg,chaar等指针针指向的数数据可存放放于任何存存储器中。 一般指针本本身用3个个字节存放放,分别为为存储器类类型,高位位偏移,低低位偏移量量。 2. 2. 存储器器指针 基于存储器器的指针说说明时即指指定了存贮贮类型,例例如: char dataa * sstr;sstr指向向dataa区中chhar型数数据 int xxdataa * ppow; pow指指向外部RRAM的iint型整整数。 这种

43、指针存存放时,只只需一个字字节或2个个字节就够够了,因为为只需存放放偏移量。 3. 3. 指针转转换 即指针在上上两种类型型之间转化化: l 当基于于存储器的的指针作为为一个实参参传递给需需要一般指指针的函数数时,指针针自动转化化。 l 如果不不说明外部部函数原形形,基于存存储器的指指针自动转转化为一般般指针,导导致错误,因因而请用“inccludee”说明所所有函数原原形。 l 可以强强行改变指指针类型。 8. 第八八节 Keeil CC51函数数 C51函数数声明对AANSI C作了扩扩展,具体体包括: 1. 1. 中断函函数声明: 中断声明方方法如下: void seriial_IISR

44、 () innterrrupt 4 uusingg 1 /* ISSR */ 为提高代码码的容错能能力,在没没用到的中中断入口处处生成irret语句句,定义没没用到的中中断。 /* deefinee nott useed innterrrupt, so geneeratee IRRET in ttheirr enttrancce */ void exteern0_ISR() innterrrupt 0 /* nnot uused */ void timeer0_IISR () innterrrupt 1 /* nnot uused */ void exteern1_ISR() innterrr

45、upt 2 /* nnot uused */ void timeer1_IISR () innterrrupt 3 /* nnot uused */ void seriial_IISR () innterrrupt 4 /* nnot uused */ 2. 2. 通用存存储工作区区 3. 3. 选通用用存储工作作区由ussing x声明,见见上例。 4. 4. 指定存存储模式 由smalll coompacct 及llargee说明,例例如: void fun11(voiid) ssmalll 提示:smmall说说明的函数数内部变量量全部使用用内部RAAM。关键键的经常性性的耗时的的地方可

46、以以这样声明明,以提高高运行速度度。 5. 5. #prragmaa dissablee 在函数前声声明,只对对一个函数数有效。该该函数调用用过程中将将不可被中中断。 6. 6. 递归或或可重入函函数指定 在主程序和和中断中都都可调用的的函数,容容易产生问问题。因为为51和PPC不同,PPC使用堆堆栈传递参参数,且静静态变量以以外的内部部变量都在在堆栈中;而51一一般使用寄寄存器传递递参数,内内部变量一一般在RAAM中,函函数重入时时会破坏上上次调用的的数据。可可以用以下下两种方法法解决函数数重入: a、在相应应的函数前前使用前述述“#prragmaa dissablee”声明,即即只允许主主

47、程序或中中断之一调调用该函数数; b、将该函函数说明为为可重入的的。如下: void funcc(parram) rreenttrantt; KeilCC51编译译后将生成成一个可重重入变量堆堆栈,然后后就可以模模拟通过堆堆栈传递变变量的方法法。 由于一般可可重入函数数由主程序序和中断调调用,所以以通常中断断使用与主主程序不同同的R寄存存器组。 另外,对可可重入函数数,在相应应的函数前前面加上开开关“#ppragmma nooareggs”,以以禁止编译译器使用绝绝对寄存器器寻址,可可生成不依依赖于寄存存器组的代代码。 7. 7. 指定PPL/M51函数数 由alieen指定。 4. 第四四章

48、 Keeil CC51高级级编程 本章讨论以以下内容: l 绝对地地址访问 l C与汇汇编的接口口 l C511软件包中中的通用文文件 l 段名转转换与程序序优化 1. 第一一节 绝对对地址访问问 C51提供供了三种访访问绝对地地址的方法法: 1. 1. 绝对宏宏: 在程序中,用用“inncludde”即可使用用其中定义义的宏来访访问绝对地地址,包括括: CBYTEE、XBYYTE、PPWORDD、DBYYTE、CCWORDD、XWOORD、PPBYTEE、DWOORD 具体使用可可看一看aabsaccc.h便便知 例如: rval=CBYTTE0 xx00022;指向向程序存贮贮器的0000

49、2h地地址 rval=XWORRD 00 x00002;指指向外RAAM的00004h地地址 2. 2. _att_关键字字 直接在数据据定义后加加上_att_ coonst即即可,但是是注意: (1)绝对对变量不能能被初使化化; (2)biit型函数数及变量不不能用_aat_指定定。 例如: idataa strruct linkk lisst _aat_ 00 x40;指定liist结构构从40hh开始。 xdataa chaar teext225b _at_0 xE0000;指指定texxt数组从从0E0000H开始始 提示:如果果外部绝对对变量是II/O端口口等可自行行变化数据据,需要

50、使使用vollatille关键字字进行描述述,请参考考absaacc.hh。 3. 3. 连接定定位控制 此法是利用用连接控制制指令coode xxdataa pdaata dataa bdaata对“段”地址址进行,如如要指定某某具体变量量地址,则则很有局限限性,不作作详细讨论论。 2. 第二二节 Keeil CC51与汇汇编的接口口 1. 1. 模块内内接口 方法是用praggma语句句具体结构构是: #praggma aasm 汇编行 #praggma eendassm 这种方法实实质是通过过asm与与ndassm告诉CC51编译译器中间行行不用编译译为汇编行行,因而在在编译控制制指令中

51、有有SRC以以控制将这这些不用编编译的行存存入其中。 2. 2. 模块间间接口 C模块与汇汇编模块的的接口较简简单,分别别用C511与A511对源文件件进行编译译,然后用用L51将将obj文文件连接即即可,关键键问题在于于C函数与与汇编函数数之间的参参数传递问问题,C551中有两两种参数传传递方法。 (1) 通通过寄存器器传递函数数参数 最多只能有有3个参数数通过寄存存器传递,规规律如下表表: 参数数目 charr intt lonng,flloat 一般指针针 123 RR7R5RR3 R66 & RR7R4 & R55R2 & R3 R4RR7R4R7 RR1R33R1RR3R1R3 (2

52、) 通通过固定存存储区传递递(fixxed mmemorry) 这种方法将将bit型型参数传给给一个存储储段中: ?funcctionn_namme?BIIT 将其它类型型参数均传传给下面的的段:?ffuncttion_namee?BYTTE,且按按照预选顺顺序存放。 至于这个固固定存储区区本身在何何处,则由由存储模式式默认。 (3) 函函数的返回回值 函数返回值值一律放于于寄存器中中,有如下下规律: returrn tyype RRegisstev 说明 bit 标标志位 由由具体标志志位返回 char/unsiignedd chaar 1_bytee指针 RR7 单字字节由R77返回 in

53、t/uunsiggned int 2_byyte指针针 R6 & R77 双字节节由R6和和R7返回回,MSBB在R6 long&unsiignedd lonng R44R7 MSB在在R4, LSB在在R7 floatt R4R7 332Bitt IEEEE格式 一般指针 R1RR3 存储储类型在RR3 高位位R2 低低R1 (4) SSRC控制制 该控制指令令将C文件件编译生成成汇编文件件(.SRRC),该该汇编文件件可改名后后,生成汇汇编.ASSM文件,再再用A511进行编译译。 3. 第三三节 Keeil CC51软件件包中的通通用文件 在C51LiB目目录下有几几个C源文文件,这几几

54、个C源文文件有非常常重要的作作用,对它它们稍事修修改,就可可以用在自自己的专用用系统中。 1. 1. 动态内内存分配 init_mem.C:此文文件是初始始化动态内内存区的程程序源代码码。它可以以指定动态态内存的位位置及大小小,只有使使用了innit_mmem( )才可以以调回其它它函数,诸诸如mallloc callloc,rreallloc等。 callooc.c:此文件是是给数组分分配内存的的源代码,它它可以指定定单位数据据类型及该该单元数目目。 mallooc.c:此文件是是mallloc的源源代码,分分配一段固固定大小的的内存。 reallloc.cc:此文件件是reaallocc.

55、c源代代码,其功功能是调整整当前分配配动态内存存的大小。 2. 2. C511启动文件件STARRTUP.A51 启动文件SSTARTTUP.AA51中包包含目标板板启动代码码,可在每每个proojectt中加入这这个文件,只只要复位,则则该文件立立即执行,其其功能包括括: l 定义内内部RAMM大小、外外部RAMM大小、可可重入堆栈栈位置 l 清除内内部、外部部或者以此此页为单元元的外部存存储器 l 按存储储模式初使使化重入堆堆栈及堆栈栈指针 l 初始化化80511硬件堆栈栈指针 l 向maain( )函数交交权 开发人员可可修改以下下数据从而而对系统初初始化 常数名 意意义 IDATAAL

56、EN 待清内部部RAM长长度 XDATAA STAART 指指定待清外外部RAMM起始地址址 XDATAALEN 待清外部部RAM长长度 IBPSTTACK 是否小模模式重入堆堆栈指针需需初始化标标志,1为为需要。缺缺省为0 IBPSTTACKTTOP 指指定小模式式重入堆栈栈顶部地址址 XBPSTTACK 是否大模模式重入堆堆栈指针需需初始化标标志,缺省省为0 XBPSTTACKTTOP 指指定大模式式重入堆栈栈顶部地址址 PBPSTTACK 是否Coompacct重入堆堆栈指针,需需初始化标标志,缺省省为0 PBPSTTACKTTOP 指指定Commpactt模式重入入堆栈顶部部地址 PP

57、AGEEENABBLE PP2初始化化允许开关关 PPAGEE 指定PP2值 PDATAASTARRT 待清清外部RAAM页首址址 PDATAALEN 待清外部部RAM页页长度 提示:如果果要初始化化P2作为为紧凑模式式高端地址址,必须:PPAGGEENAAGLE1,PPPAGE为为P2值,例例如指定某某页10000H110FFHH,则PPPAGE10H,而而且连接时时必须如下下: L51 PDDATA(10800H),其其中10880H是11000HH10FFFH中的的任一个值值。 以下是STTARTUUP.A551代码片片断,红色色是经常可可能需要修修改的地方方: ; ; Thiis pp

58、art of tthe CC51 CCompiiler packkage ; Coppyrigght KKEIL ELEKKTRONNIK GGmbH 19900 ; ; STAARTUPP.A511: Thhis ccode is eexecuuted afteer prrocesssor reseet. ; ; To trannslatte thhis A51 withh thee folllowiing iinvoccatioon: ; ; A511 STAARTUPP.A511 ; ; To linkk thee moddifieed STTARTUUP.OBBJ yyour appl

59、licattion use the folllowinng ; L511 invvocattion: ; ; L511 , STAARTUPP.OBJJ ; ; ; ; Useer-deefineed Poower-On IInitiializzatioon off Memmory ; ; Witth thhe foollowwing EQU stattemennts tthe iinitiializzatioon off memmory ; at proccessoor reeset can be ddefinned: ; ; ; tthe aabsollute starrt-adddres

60、ss off IDAATA mmemorry iss alwways 0 IDATAALEN EQU 80H ; thhe leengthh of IDATTA meemoryy in bytees. ; XDATAASTARRT EQQU 0HH ; tthe aabsollute starrt-adddresss off XDAATA mmemorry XDATAALEN EQU 0H ; thee lenngth of XXDATAA memmory in bbytess. ; PDATAASTARRT EQQU 0HH ; tthe aabsollute starrt-adddress

温馨提示

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

评论

0/150

提交评论