京卓电子嵌入式学习9keil c51中文_第1页
京卓电子嵌入式学习9keil c51中文_第2页
京卓电子嵌入式学习9keil c51中文_第3页
京卓电子嵌入式学习9keil c51中文_第4页
京卓电子嵌入式学习9keil c51中文_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

该手册是Keil软件公司8051单片机软件开发工具的介绍是为新用户和有 指南只需要阅读本书就可以正确地运行和使用该软件这本用户指南包括以下章节的内容第一章介 第二章安 第三章8051产品系列8051单片机提供的不同产品品第四章8051开发工具8051开发工具的主要特征C编译器汇编器第五章使用8051工具第六章硬件产品介绍辅助开发和调试的硬件工 还有80C517A和80C520评估板以第七章实时内核讲述RTX 51实时操作系统该章还提供多任务处理系统的概述第八章命令参考简要讲述了8051开发工具令及控制符第一 介Keil80518051派生器件以实现嵌入式应用开发C51C8051工具连接器目标文件转换器Windows版dScope源程序级调试器/这些工具都集合在一个套件内见第三章独立的工具在第四章详细介绍除了以上的开发工具以外还提供实时内核评估板和调试硬件这些内容详见第六章和第七章的讲述这套工具是为专业软件开发者设计的但任何水平的编程者都可使用 8051开发工具运行演示程序见第五章如果想要马上开始使用应当安装软件并运行演示程序C51演示套件是开发工具的示范版本 表文件可通过列表文件查看编译器和其它工具产生的代码C512K的应用程序可使用该套件评估开发工具的效用并可用于产生小型的目标应用系统 在开始安装之前必须进行以为了保证编译器和工具的正常工作系统必须满足软件和硬件的最低配置Windows版工具必须满足以下条件 IBM3864MDOS版工具 IBM兼容386或以上 带640K内C编译器及工具要求CONFIG.SYS文件中至少定义20个文件及20个缓冲区 环境空间供编译器和工具的环境变量使用见 环境设置章节 /e:如果在DOS下收到信息Outofenvironmentspace 就需要通过增加示例中1024的值以增加环境空间数量详情参考DOS用户指南 然后用备份磁盘来安装软件将原磁盘妥善保存要安装DOS版将第一个安装盘插入驱动器 Windows版产品要安装Windows将第一个安装盘插入驱动器在程序管理器的文件菜单中选择 选择 后安装程序将开发工 子 tScope-51DOSIOT定义产生暂存文件的路径要得到最佳性能的路径应当是RAM磁盘路径必须存在否则定义标准C51定义标准C51AUTOEXEC.BAT文件中如果想将这些设置放入一个单独的批处理文件中必须写入如下的环境设置

PATH 使用磁盘高速缓冲区diskcache 使用RAM磁盘如果计算机有足够的扩展或扩充器可以考虑使用RAM磁盘由于RAM磁盘的内容保存在RAM中的速度将会非常快如果使用RAM磁盘可以将环境变量TMP设成RAM磁盘的名称RAM磁盘存放暂存文件这样可加速许多工具软件的执行RAM磁盘的软件可用RAMDRIVE.SYSVDISK.SYSDOS最常装载的RAM磁盘程序名参考DOS手册学习如何安装这些程序磁盘高速缓冲区利用巨大的区来暂存从磁盘的信息当计算机磁盘时先检查所要的信息是否已在高速缓冲区内如果是就从高速缓冲区内而不是从磁盘内信息这显然要比从磁通常软件的开发包括编辑编译编辑编译的循环这种情况下磁盘高速缓冲区提高了编辑器编译器和连接器的性能编辑器编译器源文件和目标文件全都可以放入高速缓冲区这样对 DOS5.06.0SMARTDRV.SYS参考DOS使用手8051Keil8051开发工具为了帮助你熟悉我们是如何分配工具的下面介绍工具套件的概念工具套件是几个应用程序的集合8051应用系统使用汇编器汇编8051汇编程序使用编译器将C源代码编译成目标文件使用连接器创建一个绝对目标文件模块供仿真器使Keil上面所述的开发周期用方框图表示最合适如图所示用Vision/51IDEC51A51LIB51连接器创建一个绝对目标模块绝对目标文件或模块是没有浮动EPROM或其它存dScope-51调试器/模拟器或电路内dScope-51调试器/模拟器对于快速可靠的高级语言程序的调试非常理想调试程序包括一个高速模拟器和一个目标调试器可对整个8051系统包括片内功能进行仿真通过装载特殊的I/O驱动器可对不同的8051派生器件的功能进行仿真Monitor-51相连后调试程序甚至可以在目标硬件上达到源程RTX-518051系列的多任务处理内核程序RTX-51实时内核简化了系统的设计编程以及对时间C51编译器中并且非常易用任务描述表和操作系统的一致性由BL51连接器/自动控制Keil8051开发工具的全部内容该图中列出的工具包括下面将要介绍的专业开发者套件除了专业开发者套件外Keil8051开发者提供了其它许多工具为了更好地说明每套工具的内容我们按照功能排序首先介绍功能最强的专业开发者套件PK51C518051C51COH51目标另外专业开发者套件还包括为Windows专业开发者套件可配置用于所有8051派生器件该套件中所有工具需运行在100 IBMPC386或以上兼容机的DOS环境下DK51C51 C51DOS8051开发的用户设计的该套件可DOS开发平台上创建复杂的嵌入式应用系统该套件包括以下组件C51COH51目标开发者套件可配置用于所有8051派生器件该套件中所有工具需运行在100 兼容机的DOS环境下CA51C51 C51编译器套件是需要C编译器而不需要调试系统的开发者的最佳选择该套件可使开发者为目标硬件创建8051应用系统该编译器套件可配置用于所有的8051派生器件该套件中的工具需运行在100 IBMPC386或以上兼容机的DOS环境下A51A51A51宏汇编器套件包括8051汇编器和所有创建8051应用系统所需的工具该汇编器套件可配置用于所有的8051派生器件该套件中的工具需运行在 IBMPC386或以上兼容机的DOS环境DS51模拟器套件包括与A51汇编器套件一起使用的调试器/CA51编译器套件由于模8051应用系统出现问题的位置还可以观察程序变量SFR和器该套件包括以下组件该模拟器套件可配置用于大多数8051派生器件该套件中的工具需运行在100 上兼容机的DOS环境下FR51RTX51Full 51Full8051单片机的实时操作系统RTX-51Full全实时BITBUSCAN通讯协议界面库具体内容参看第七章实时内核程序 8051这一章介绍8051单片机的特征和优点以及Keil的开发工具开发工具可帮助开发者迅速并8051问世于二十世纪八十年代早期由于8051CPU内核有着杰出的特性以及功能在本世纪仍然可以得到良好的应用现今不同的供应商可提供超过200种8051派生器件有超过半数的嵌入8051系列单片机作为嵌入式处理器8051是一枝独秀的典型的8051成员包含8051CPU内核数据器程序器和一些功能灵活的存储器界面使用户可以通过标准的外设和器件扩展8051的性能C51COH51目标C51优化CC语言是一种通用编程语言它提供高效代码结构化编程元素及丰富的运算符C不是一个大型C的普遍性使它可以为各种不同的软件任务提供便利有效C比其它专门语言更有效Keil的C51优化交叉编译器MSDOS版是完全符合ANSI 言工具C51编译程序产生8051单片机使用的代码但它不是一个适合8051目标硬件的通用C编译8051应用C这样的高级语言比使用汇编程序更具优点不需要了解处理器的指令集对8051 库文件可提供许多标准的例程例如格式化输出数据转换和浮点运算加入到应用程序当通过CC语言可移植性好且非常普及C编译器几乎适用于所有的目标系统已完成的软件项目可以C51编译器是符合ANSIC编译器C8051单片机的应用C51编译器支持下表列出的数据类型除了这些标量类型外还可以将变量组合到结构联合及阵列中除了指明的类型可通过指针这些数据类型 441812 bitsbitsfrssfr168051C51编译器ANSIC的一部分不能通过指针进行bitsbitsfrs和sfr16数据类型用于8051的特殊功能寄存器例如sfr P0=0x80定义变量P0并将其分配特殊功能寄存器地址0x80 在8051上是P0口的地址当结果表示不同的数据类型时C51编译器自动转换数据类型例如位变量在整数分配中就被转换成一个整数除了数据类型的转换之外带符号变量的符号扩展也是自动完成的 分配到指定的空间对内部数据器的比对外部数据器的快许多因此应当将频繁使用的变量放在内部数据器而把较少使用的变量放在外部数据器中 器类型的指定可以指定变量存放的位程 器64K字 通过操作码 器对变量的最快128字 器整个内部地址空间256字 器允许位和字节混合寻址16字 器64K字节通过 器256字节通过 器模型决定用于函数自变量自动变量和没有明确类型的变量的默认器类型在命令行中使用SMALL COMPACT和LARGE控制命令指定器类型 在该模型中所有变量都默认位于8051内部数据器这和使用data指定器类型的方式一样此模型对于变量的效率很高但所有的数据对象和堆栈必须适合内部RAM堆栈的大小很关键因为使用的堆栈空间是由不同函数嵌套的深度决定的通常如果BL51连接器将变量都配置在内部数据器内SMALL模型是最佳选COMPACT使用COMPACT模型所有变量都默认在外部数据器的一页内这和使用指定器类型一样该器类型适用于变量不超过256个字节此限制是由寻址方式所决定该器模型的效率低于SMALL模型对变量的速度要慢一些但比LARGE模型快地址的高2设置编译器没有设置该口LARGE在LARGE模型中所有变量都默认位于外部数据器这和使用xdata指定器类型一样使用数据指针DPTR进行寻址通过数据指针外部数据器的效率较低特别是当变量为2个字节或字节时该模型的数据比SMALL和COMPACT产生的代码C51编译器支持使用 号说明的指针可以使用指针执行标准C中所有可执行的操作但由8051及其派生器件的独特结构C51支持两种不同类型的指针器特殊指针和普通指针普通指针的说明和标准C指针相同char /*stringptrint /*intptrlong /*longptr普通指针总是使用三个字节进行保存第一个字节用于器类型第二个字节用于保存偏移量的高字节第三个字节用于保存偏移量的低字节普通指针可以8051空间任何位置的变量因此许多库程序使用此类型的指针使用这种普通隐式指针可数据而不用考虑数据在器中的在指针的说明中器特殊指针总是包含器类型的指定并总是指向一个特定的器区域例如chardata /*ptrtostringindataintxdata /*ptrtoint(s)inxdatalongcode /*ptrtolong(s)incode由 器类型在编译时指定因此无类型指针需 器类型字节而已定义类型指针则需要已定义类型指针可用一个字节idata,data,bdata和pdata指针或两个字节 code和xdata指针比较器特殊&普通指用户可通过器特殊指针加速8051C程序下面的例子为几个不同指针说明中代码&数据规模charidatacharval;val=charxdatacharval;val=charcharval;val=8051MOVMOVMOVMOVMOVMOVMOVMOVMOVvalCALL144297311+13再入函数可以同时由几个程序共用当执行再入函数时其它程序可以中断执行并开始执行同一个再入函数通常C51函数不能递归调用或用于导致重入的方式受到该限制是因为函数自变量和局部变量都存放在固定的器位置再入函数属性允许说明那些可以重入的函数因此可以实现递归调用例如intcalc(chari,intb){intx;x=table[i]return(x*b)}再入函数可以递归调用也可以同时被两个或程序调用它经常用于实时应用或中码和非中码必须共用一个函数的情况对于每个再入函数根据器的模型在内部或外部器模当中断发生时C51编译器提供一个调用C函数的方法 这使用户可以用C创建中断服务程序 性当包含在一个说明中时 此外用户可以指定用于中断的寄存器unsignedint unsignedcharsecond;voidtimer0(void)interrupt1using2ift==4000)/*countto4000t=/*clearintcounter}}C51编译器在CPU寄存器中最多可传递三个函数自变量 由于自变量不必从器中读写因此显著地提高了系统的性能参数的传递可通过REGPARMS和NOREGPARMS控制命令进行控制12123如果没有寄存器可用于参数传递或包含的参数太多使用固定器位置传递超出部分的参数CPUR6为高字节R7long,unsignedR4–R4为高字节R7R4–32位IEEEgenericR1–R3中R2根据程序的前后关系C51编译器最多分配7个CPU寄存器用于寄存器变量 寄存器修改都由C51编译器在每个模块中标明连接器/产生一个总体的寄存器文件其中包含 因此C51编译器知道在应用中被每个函数使用的寄存器并优化每个C函数的寄存器分配C51编译器很好地集成了RTX-51多任务实时操作系统在连接过程中产生并控制任务描述表详细内容参考第七章实时内核从C可以很容易地汇编程序 函数参数通过CPU寄存器进行传递 NOREGPARMS命令时通过固定器位置进行传递函数返回值总是在CPU寄存器中传递用户可以使用SRC命令指导C51编译器产生一个准备用A51汇编器汇编的文件而不是一个目标文件例如下面的C源文件unsignedintasmfunc1(unsignedint{return(1+arg)}当使用SRC命令编译时?PR? SEGMENT ;loadLSBofthe;putitbackintoA;addcarry&;returnresultin PL/M-51CC程序和PL/M-51程序连接起来C51编译器是一个主动优化编译器意思是说编译器采取一定的步骤确定产生的代码和输出的目标C程序在最小程C516C51编译器可执行的跳转优化跳转反演或扩展为最终目标地址无用代码消除将不可能执行的代码无用码从程序中删寄存器变量自动变量和函数自变量尽可能放在寄存器中没有为这些变量保留数据器空3全局共用的子表达式消除将在一个函数中多次出现的子表达式和地址计算式尽可能只计算一窥孔优化当器空间或时间可作为结果保存时用简化操作代替复杂操数据覆盖数据和位段函数被认为是可覆盖的并通过BL51连接器/用其它数据和位段Case/Switch优化CaseSwitch语句根据它们的数据序列和位置可以使用跳转表或跳 SIZE子程序代替共用的C操作在降低程序运行速度的前提下减小了程序 SPEED共用的C操作内嵌扩展增加程序代码的规模换取程序速度的提NOAREGSC51编译器不再使用绝对寄存器NOREGPARMS参数传递总是在局部数据段内而不是在专门寄存器内进行使用创建的程序代码和C51编译器PL/M-51编译器和ASM-51汇编器的较早版本兼容C51C515.0C513.4版的比较由于使用应用寄存器优化C51编译器知道由外部函数使用的寄存器不由外部函数改变的寄存器用于寄存器变量这样所产生的代码占用更少的数据和代码空间并且执行得更快在下面的例子中inputoutput为外部函数仅需占用几个寄存器 main{unsignedchari;unsignedcharwhile(1)i=input /*getnumberofvalues ;-assignedto doa=input/*getinputvalue;-assignedto-output/*outputvalue}while(--i);/*decrementvaluesA}}1830C51编译器使用In目标格式OMF51并产生完全的符号信息此外编译器可以包含所有需要的信息例如变量名函数名和行数等等这样可以用dsope-51或In兼容的仿真进行详细完全的调试和分析所有In兼容仿真器都可用作程序调试此外OBJECTEXTEND控制命令将额外的变InOMF51目标模块兼容以及是否能Keil的目标模块C517个不同的ANSI编译库文件Smallmodellibrarywithoutfloating-pointSmallmodelfloating-pointarithmeticCompactmodellibrarywithoutfloating-pointCompactmodelfloating-pointarithmeticLargemodellibrarywithoutfloating-pointLargemodelfloating-pointarithmeticLibraryforusewiththePhilips8xC751and源代码提供给执行硬件相关I/O功能的库模块并建立在\C51\LIB下用户可使用这些源文I/OI/O功能ACALLLCALL指令执行库程序内部库程序产生嵌入代码更快且更有效率执行库程序空操作8051NOP指令 位8051JBC指C51编译器产生一个列表文件其中包含源代码命令信息C51COMPILERV5.02,SAMPLE PAGE1 TheC51compilerproducesaDOSC51COMPILERV5.02,COMPILATIONOFMODULESAMPLE listingfilewithpagenumbersOBJECTMODULE CEDINSAMPLE.OBJ aswellastimeanddateofCOMPILERINVOKEDBY:C:\C51\BIN\C51.EXESAMPLE.CCODE thecompilation.Remarksstmtlevelsource aboutthecompilerinvocation1/*SFRdefinitionsfor8051andobjectfileoutput2/*standardi/odefinitions345EOT/*Control+ZsignalsEOTThelistingincludesa6 voidmain andanestinglevelfor81911/*setupserialport(2400Baud@12MHz)1SCON=/*SCON1TMOD=/*TMOD1TCON=/*TCON1TH1=/*TH111while((c=getchar())!=EOF)2includedinthelisting2}1P0= /*clearOutputPorttosignalready1};FUNCTIONmain ;SOURCELINE# ;SOURCELINE# listinginthelisting0000 ;SOURCELINE# 0003 ;SOURCELINE#0006 0009 000C120000E LCALLgetchar000F8F00 0012 0013 0015120000E 0018120000E 001D 0020 ;FUNCTIONmain

;SOURCELINE#;SOURCELINE#;SOURCELINE#;SOURCELINE#;SOURCELINE#;SOURCELINE# AmemoryoverviewCONSTANTSIZE XDATA PDATA BIT ENDOFMODULEandwarningsisstated0WARNING(S),0theendofthelistingA51宏汇编器是用于8051单片机的宏汇编器 A51DUBUG控制目标文件包含dScope或硬件仿真器使用的全部符号信息除了目标文件之外A51汇编器还产生一个列表文件其中可包含符号表和交叉参考信息A51汇编器和InASM-51源模块完全兼容A51汇编器支持8051的所有成员8051的特殊功能寄存器是预先定义的但是NOMOD51控制可以使用户通过处理器-特殊包含文件覆盖这些定义A51汇编器装载了80518051Fx 80528015280451804528051580C51780C515A80C517A8X5528XC5928XCL7818XCL410和80C320等微控制器的包含文件用户也可以轻松创建其它8051成员的包含文件A51汇编器所产生的列表文件该列表文件包含源代码产生的机器码命 TheA51producesalistingfile pagenumbersaswellOBJECTMODULECEDIN thetimeanddateofASSEMBLERINVOKEDBY:C:\C51\BIN\A51.EXESAMPLE.A51 LOC LINE theassembler (`Test andtheobjectfile 4567SEGMENT89CSEGATThelistingfileincludeslinenumberfor0000FReset:JMPRSEG;0000F;Thisisthemainprogram.ItisanIfasourceline;loopwhichdisysatextonthecode,theHEXvalues0003C200CLRTXTBIT;readfrom0005FRepeat:MOVofthe0008FFSJMP;RSEGTXTDB扵ESTErrormessagesFDincludedinthelisting000CThepositionofeachisclearly;TXTBIT=0readfromDBIT;TXTBIT=1readfrom TheXREFNAME TYPEVALUE ATTRIBUTES/REFERENCES BITVAR......BSEG0001HREL=UNIT9# CONST......CSEG000DHREL=UNIT8# INITSERIAL.....CADDREXT4# symbolsandthePROG.......CSEG0010HREL=UNIT7# numbersinwhichtheyPUTSTRING.....CADDREXT4# PUT_CRLF.....CADDREXT4# wherethesymbolREPEAT......CADDR0005HRSEG=PROG22# definedismarkedwithRESET......CADDR0000HA13# SAMPLE......NNUMB CADDR0000HRSEG=PROG13TXT........CADDR0000HRSEG=CONST22 TheregisterbanksTXTBIT......BADDR0000H.0RSEG=BITVAR552133# warningsanderrors statedattheendofASSEMBLYCOMPLETE.0WARNING(S),0 listingBL51代码连接/将一个或多个目标模块组合成一个可执行的8051程序连接器还解析外部和其它共用的并将绝对地址分配给浮动的程序段BL51代码连接/处理由KeilC51编译器和A51汇编器以及InPL/M-51编译器和ASM-汇编器所创建的目标模块BL51自动选择所需要的合适的库和连接BL51连接器通过不相关的函数变量管理8051有限的内部器对大多数8051应用系统来说极大地降低了所需要的空间BL51分析函数间的并实现器的可以使用OVERLAY命令人为地控制函数使用NOOVERLAY可以完全器当使用间接调用函数或调试时使用这些命令是很有BL5164K的应用程序由于805164K字节的代码地址空间必须8051软件进行控制该处理称作代码空间切换BL51可让用户管理一个公共区域和32个区 每个区最多可达64K字节总共高达2M字节的空间支持外部硬件的软件包含一个短的汇编文件用户可在专门的硬件平台上编辑BL51使用户可在指定的区域放置特定的程序模块谨慎地使用不同区域的分组函数可使用户创建区切换程序中的公共区域是一个所有区随时可的区域 或移动公共区域的代码在每个区或位于一个单独的EPROM区如果公共区域没有交换 默认情况下下列为自动代码区由额外的软件控制地址线进行选择这些地址线是由8051I/O口线或器映射锁存器进行模拟BL51在其它代码区中产生一个函数跳转表当调用不同的区的函数时程序对区进行切换跳转到所需要的函数并在调用完成后回到原来的区切换处理大约需要50个CPU周期和额外的两个字节堆栈空间通过同一区中互相关联的函数可提高系统的性能多个区频繁调用的函数应当放置在公共区域下面的例子为由BL51 07/01/9508:00:00PAGE TheBL51codeMS-DOSBL51BANKEDLINKER/LOCATERV3.52, INVOKEDBY: filewiththetimeanddate thelink/locate C:\C51\LIB\C51S.LIB(PUTCHAR)C:\C51\LIB\C51S.LIB(GETCHAR)C:\C51\LIB\C51S.LIB(TOUPPER)C:\C51\LIB\C51S.LIB(_GETKEY)LINKMAPOFMODULE: SAMPLE(SAMPLE) Thelink-mapcontainsatable LENGTHRELOCATIONSEGMENTNAME ofthememoryusageofthe********** DATA MEMORY ************ "REGBANK0" ***GAP ***GAP*** ********** CODE MEMORY ************ OVERLAYMAPOFMODULE:SAMPLE +-->CALLED structureoftheprogram thelocationofthebitand segmentsofeach+--> +-->+-->+-->?PR?GETCHAR?GETCHAR arelistedattheendof+--> 0WARNING(S),0 duringthelink/locateOC51目标文件转换器为在目标模块中的每个代码区创建绝对目标模块当用户创建一个区切换应用时BL51产生目标模块符号调试信息到绝对目标文件中并可供dScope或仿真器使用户可使用OC51目标文件转换器创建绝对目标模块OH51目标-HEXInHex文OH51目标HEX转换器从绝对目标模块中创建InHex文件而绝对目标模块可由BL51或OC51创建InHex文件是ASCII文件包含了应用程序的16进制表达式将它们装入器件编程器就可写EPROMLIB51库管理器可使用户创建和保存库文件库文件提供简便的方法可组合和大量的目标文件BL51可有效地使用库文件库管理器可使用户创建一个库文件将目标模块加入库文件从库文件中移去目标模块和列出库文件的内容库管理器dScope-51WindowsdScope-51是一个源级的调试器和模拟器 可调试/模拟由KeilC51编译器和A51汇编器以及PL/M-51编译器和ASM-51汇编器所创建的程序 dScope-51是一个纯软件产品它可使用户在没有目标硬件的情况下模拟8051的特性 用户可在硬件准备之前用dScope-51调试自己的嵌入式应用程序dScope-51可模拟许多8051的功能包括内部串行口外部I/O口和定时器dScope-51请参考dScope模拟/调试器概述Vision/51WindowsVision/51是一个集成的软件开发平台包括全功能编辑器项目管理器程序生成工具和环境控制当用户使用Vision/51时就不再需要学习任何一个工具令语句Vision/51提供以下特性可加速标准Windows如何使用Vision/51参考VisionIDE概述80518051产品系列Keil提供一个评估磁盘装有一个演示程序和工具的限制版演示程序也包含在标准的产品套件中该章介绍了Vision和dScope 并演示如何使用它们进行编译连接和运行所给的演示程序该章 建立和运行演示程序建立和运行演示程序本章中的演示程序和描述使用Windows版工具作为图解C51C51评估套件所分配的工具相同如果想得到DOS版的评估套件请和销售商联系注C51评估套件包括8051工具的评估版本评估工具在功能和应用程序的代码规模上受到限制请参考评估套件说明 参考第三章8051产品系列VisiondScopeWindows版应用程序通过双击由安装程序创建的程序组中对应的VisionIDEVision是一个集成软件开发平台其中包含了编辑器项目管理器和程序 Vision支持所有的Keil8051,251和166工具Vision提供以下特性帮助用户加快嵌入式应用的开发过程在Vision中用户可通过键盘或鼠标选择开发工具的菜单命令 设置和选项也可使用键盘输入Vision屏幕提供一个用于命令输入的菜单条一个可迅速选择命令按钮的工具条和一个或多个源程序窗口框及显示信息Vision可同时打开和查看多个源文件 息通过鼠标或键盘可移动或调整窗口大小Vision自带的编辑器可定制成和许多流行的文本编辑器相似对几乎所有编辑器用户都可改变键配置下面列出了一些可实现的编辑器功能BeginningofNextBeginningofEndofOpenBeginningofEndofPageEndofPageCloseExclusivePastefromCopytoForwardQuickPreviousCursorForwardRePreviousCursorFullPrintCursorInsertTemRepeatLastCursorMarkReverseQuickCuttoMarkMarkDeleteDeletetoEndofMove/ResizeNew可以通过菜单条上的下拉菜单和编辑器命令控制Vision的操作可使用鼠标或键盘选取菜单条上 编辑器操作项目保存外部程序执行开发工具选项设置窗口选择及VisionC51A51汇编器等软件开发工具的选项使用鼠标或键盘可选择相应的 件需要用C51编译器进行编译一些文件需要汇编还有一些需要自定义转换以创建一个目标程序为了适应复杂的项目管理Vision带有项目管理功能项目管理器可使用户创建和保存一个项目 文件相关性包含文件嵌套和建立目标 然后使用模拟和仿真器命令执行测试和调试应用程序项目的所有特征都保存在项目文件中项目文件包括组成目标程序的源文件编译器汇编器和连接器命令行选项调试和模拟器选项制造工具选项dScopeKeil软件产品系列的源级调试/模拟器dScope调试应用程序此外dScope还可调试InPL/M-51编译器和ASM-51汇编器生成的应用程序dScope8051微控制器的特性而不需要目标硬件用户可在硬件准备好之前使用dScope测试和调试嵌入式应用系统dScope可模拟许多8051的功能包括内部串行口外部I/O口和定时器通过使用动态连接库DLLs可支持不同的8051派生器件除了模拟CPU外dScope还具有8051程序MON51接口界面dScope中用户可使用键盘或鼠标选择菜单命令和调试选项dScope屏幕还提供一个用于命令输入的菜单条一个可快速选择命令按钮的工具条和几个显示寄存器器内dScope8051微控制器可通过使用DLLsCPU在装入目标程序之前必须从工具条上的CPU驱动器框中选择合适的CPU驱动器也可从文件菜单中选择装入CPU驱动器命令下面是dScopeCPU驱动器CPU8051,8031,80C51,and80C515and80C515Aand80C517and80C517Aand8052,8032,80C52,and8xC750,8xC751,anddScope最多可模拟16M字节的器这些器可读写或代码执除了器映象之外dScope还提供集成功能的支持CPU的片内DLLCPU驱动器支持 CPU驱动器之后用户准备装入目标程序可使用工具条上的按钮打开目标文件或当应用程序装入之后dScope调试窗口就显示出用户的 ViewHigh ViewMixed. ViewAssembly. 除了目标程序外调试窗口还可显示最多512条先前执行命令的历史记录 要使能历史记录选用键盘和鼠标选择选项来输入命令控制dScope 在窗口中可输入几乎所有的dScope命令在命令提示符> 从命令窗口还可显示和改变变量寄存器和器位置还可输入汇编代码补充或测试部分程序例如可在命令提示符后输入下列文本命令R7=12index=dScope是不受限制的也可用鼠标从从菜单条中选择下拉式菜单和从工具条调dScopeCPU输出的串行数据显示在该窗口中在CPU这使用户不需要外部硬件就可模拟CPUUART功能 性能分析器窗口显示每个函数的名称或每个模块的范围还带有一个条状图显示在函数或模块上占用的时间比率用户可选择一个函数观察在窗口底部的统计数据下面所示为每个函数或程序块min max avg total 除了上述特征以外dScope还提供许多其它功能支持调试环境dScopeCdScope函数操作片内功能dScope的扩展命令集以及产生输入到硬件口的数字和模拟信号dScope可实 产生输入到8051功能的信 提供可用于用户或信号函数的便利的应用程序例如printf和memset参考信号函数一节了解如何使用dScope中的函数在高级语句汇编器指令和条件表达式中可方便地设置断点 或指令双击即可当dScope到达一个断点时可自动执行宽范围的操作探针以运行宏函数dScope提供将已执行的代码行进行标注的代码覆盖功能在调试窗口中已执行的代码行左边标 可使用该功能代码覆盖框还 具此外用户还可将演示程序用于自己的应用程序 下每个演示程序和项目文件以及批处理文件存放在一个单独 下这样可帮助用户迅速建立和评估每个演示程序 A51是一个用于A51BADCODE是一个带有一些语法错误的演示程 使用Vision打BADCODE.PRJ项目文件并进行编译Vision将BADCODE.C中的每个误详见BADCODEBL51_EX1是一个用C写成的区切换程序该演示程序调用不同代区的函数使用BL51_EX1.PRJBL51_EX2C程序BL51_EX2.PRJBL51_EX3是一个代码区切换程序模块使用BL51_EX3.PRJBL51_EX4是一个调用不同区内函数的代码区切换的 PL/M-51程序该PL/M-51格式BL51_EX1相同BL51_EX3.PRJ立该程序需要使用 CSAMPLE是一个简单加减法计数器的演示程序可使用CSAMPLE.PRJDHRY是一个DHRYSTONE基准程序计算并在主CPU每秒显示一次数该程序主要提供给基准者使用DHRY.PRJ项目文件建立该程FIBfibonacci数并指导用户如何使用再入函数属性说明递归函数使 O是一个嵌入式8051C程序使 LSIEVEEratosthenesprime给基准者使用LSIEVE.PRJ项目文件建立该程MEASURE是一 模拟和数字数据的C程序它模拟一个可能建立在气 系统使用MEASURE.PRJ项目文件建立该序详见有关章节RTX_EX1RTX-51进行一系列多任务处理使用RTX_EX1.PRJRTX_EX2RTX-51应用使用RTX_EX2.PRJSAMPL51780C517RPN-1型计算器使SSIEVEEratosthenesprime给基准者使用SSIEVE.PRJ项目文件建立该程TDP程序演示如何将中断驱动串行I/O口和由中断驱动定时器驱动的时TDP.PRJTRAFFICRTX-51实时执行程序控制交通灯使用WHETS是一个WHETSTONE基准程序计算并在主CPU每秒显示一次dhrystone数使用WHETSTONE.PRJ要开始使用其中某个演示程序必须进入到每个例子所在的 然后可使用所提供的DOS批处理文件或VisionWindows版项目文件建立和测试演示程序 O8051C演示程序O位于\C51\EXAMPLES\ 下O实现的功能仅仅是从串行口输 oWorld 整个程序包含在单个源文件O.C中如下所示Copyright1995KEILSoftware,#pragmaDEBUGOBJECTEXTEND /*pragmalinescan /*commandline #include /*specialfunctionregister /*fortheintended8051 #include /*prototypedeclarationsforI/Ofunctions/*mainprogramvoidmain /*executionstartshereafterstack SCON= /*SCON:mode1,8-bitUART,enable TMOD|= /*TMOD:timer1,mode2,8-bit TH1= /*TH1:reloadvaluefor2400 TR1= /*TR1:timer1 = /* setTItosendfirstcharof printf o /*the`printf`function while(1) /*Anembeddedprogramdoesnotstop ;/*... /*neverreturns.We`veusedan /*loop.Youmaywishtoputinyour /*codewerewe`veprintedthedots(.. 连接及调试一个程序这些操作可以通过批处理文件 O的硬件基于标准8051CPU片内功能仅使用了串行口由于dScope可以模拟该程序所需要的硬件因此用户不需要目标CPU在Vision中应用都保存在项目文件中项目文件包括了所有与项目有关的源文件名并告知工具如何编译汇编和连接以产生一个可执行的目标程序一个名为 O.PRJ的文件已创建出来用于O要装入该项目文件选择项目菜单的打开命令并从\C51\EXAMPLES\ O目录下选择O.PRJ编辑 Vision出现一个打开文件框从文件 O.C并按下OK按钮Vision在一个窗口装入并显示O.C编译和连接BuildAll按钮或者选择项目菜单中建立项目命令Vision开始编译和连接项目中的源文件并创建一个绝对目标模块可将其装入dScope进试在建立过程中Vision在窗口中显示状态当建立完成时Vision O程序编译和连接之后用户可使用dScope调试/模拟器进试在Vision中从菜单中选择DS51模拟器命令并当dScope命令参数框显示时按 O.INI传递给dScope该文件包含用于装入CPU驱动器DLL dScope命令dScope装入时运行 O程序在调试窗口中单击Go按钮或在命令提示符下输入g O程序执行并在 oWorld”在O输 o 之后程序就进入死循环若要终止执行单击调试窗口中的按钮或键入Ctrl+C 在终止程序后可键入exit退出dScope调试器单步运行O使用调试窗口中的Step按钮可单步运行O程首先确认复位CPU驱动器终止程序模拟运行reset8051CPUg,mainC函数时停止要单步执行程序单击调试窗口中的StepOver按钮每按一次执行一条语句当前执行的指令总是处于高亮状态它随着指令的执行而向下移动如果一直按着StepOver按钮程序就一直运行下去用户可随时退出dScope终止O的执行并在命令提示符下输入exit即可退出MEASURE一个测量系MEASURE演示程序位于\C51\EXAMPLES\MEASURE\子下MEASURE运行一个收集模拟及数字信号的测量系统例如气象站和过程控制应用中的系统MEASURE由三个源文件组成GETLINE.CMCOMMAND.CMEASURE.CMEASURE记录两个8位数字口和4个模拟输输入的数据定时器控制采样率采样间隔可1608K字节的RAM缓冲区MEASURE80516CPU该微控制器提供模拟和数字输入功能口45用作数字输入AN0AN3用作模拟输入由于dScope模拟了该程序所需要的所有硬件功能因此不需要CPUMEASURE的项目文件名为 要装入该项目文件选择项目菜单的打开命令并\C51\EXAMPLES\O下选择O.PRJ打开从项目菜单中选择EditProject命令将显示项目管理器框项目管理器框显示MEASURE项目所包含的源文件 C0中断子程序主函数初始化80517的所有功能并执行系统的处理命令定时器0中断子程序管08051 该源文件处理显示时间和间隔命令这些功能从主函数调用显示命令0.00V5.00V之间电压的浮点格式值 要从项目管理器框中打开一个源文件双击文件名即可要关闭项目管理器框按CancelBuildAll按钮或者选择项目菜单中建立项目命令Vision开始编译和连接项目中的源文件并当建立完成时显示建立完成信息编译和连接完成后就可开始测试MEASURE演示程序dScopeMEASUREMEASURE演示程序设计成从片内串行口接受命令如果有实际的目标硬件可使用主计算机或哑80517CPU进行通讯如果没有目标硬件可使用dScope模拟硬件也可使用串行窗口提供串MEASURE程序结束编译和连接之后可使用dScope进试在Vision中选择DS51模拟器命令在出现框后按Enter键VisiondScope的初始化文件自动加载到CPUMEASURE程序dScope显示下面MEASURE支持的串行命令如下表所示这些命令由ASCII码文本字符组成所有令必须以CDT设置当前时间24I设置测量采样的间隔时 间隔时间必须 1ms到 60分钟之S启动测量记录在收到启动命令后显示测量数据read显示的数量如果未指定数量read所有记录的测量值1秒读出测量值否则QMEASURE演示程序配置了所有调试信息其中包括全局和局部符号行号和高级类型信息要看到这些信息单击工具条上的SymbolBrowserLocalsradio按钮dScope支持使用鼠标拖曳的方式 符号用鼠标将idx符号从符号浏览窗口拖曳到命令窗口选择命令窗口并回车dScope显示idx的值通过选择空间过滤器可过滤显示的符号如果清除数据检查框数据区内的所有符号 的字符显示键入I* 单击Apply按钮dScope在器窗口显示HEX和ASCII码 单击工具条上的Memory按钮打开器窗口 命令窗口输入想要查看的地址范围例如 X:0x0000,X:由于器窗口不能立即显示整个器范围 围由指定的地址范围决定该例为0x0000到0xFFFF区区 I:0x0000,I:当应用程序运行时dScope可动态地更新器窗口要打开动态更新从Setup菜单选择UpdateMemory窗口命令当检查UpdateMemory窗口时动态显示使能dScope调试窗口的模式单击工具条上的Debug按钮打开调试窗口然后打开调试窗口的CommandsViewHighlevel,ViwMixedViewAssembly例如ViewMixed改变为源文MEASURE程序之前使用工具条上的Debug,RegisterSerial按钮显示调试寄存器和串行窗口如果屏幕不够大可关闭其它窗口从工具条上选择ResetdScopeCommandsViewMixed命令StepInto按钮StepInto按钮可单步执行程序并进入函数调用多次重复按下StepInto按钮将循环CPU片内要跳过初始化代码并直接进入主函数选择命令窗口并输入G dScope执行启动代码并当前光标行是指标记当前汇编或高级语句的行可使用键盘或鼠标移动该行dScope允许将当前光标行作为一个临时断点使用该特性可跳过程序中的代码例如用户可跳过初始化代码并停止在主函数调用的前一条指令可使用下列两种方式之一来实现Variant1LJMPmainGoTilCurs按钮dScopeVariant2LJMPmain指令处双击鼠标右键可选择当前光标行dScopePC启动并运行单击调试窗口中的StepInto按钮dScope跳转到MEASURECommand菜单中选择ViewHighlevel 令单击StepInto按钮并当程序计数器行向下移动时进行观察注StepOverStepInto很相似StepOverStepOut 显示[BRn]标号如果在 1这条语句设置断点调试窗口如下所Go按钮dScope开始执行程序并在到达断点时停止要去掉断点双击设置断点的行dScopeCallStack窗口可随时观察函数嵌套按下工具条上的CallStack按钮显示CallStack窗口该框列出了当前所有嵌套的函数每行包含嵌套级数调用函数的dScopePeripheral菜单观察和改变输线的状态或在命令窗口输入I/O的值下面所示为在命令窗口输入命令改变口的值 将数字输3设为 将模拟输AIN1设为3.3伏dScope允许用户建立信号函数作为数字或模拟输入信号要装入信号函数 该命令装入文件OG.INC 该文件定义一个信号函数用于调整模拟通道0的模拟输入值函SIGNAL og0(float{floatprintf OG0(%f)ENTERED\n",limit)while /*forevervolts=0while(volts<= ain0=volts /*oginput-0twatch(30000); /*30000CyclesTime-Break*/volts+=0.5; /*increasevoltage*/}volts=limit-0.5;while(volts>=0.5) ain0=voltstwatch(30000); /*30000CyclesTime-Break*/volts-=0.5 /*decreasevoltage}}} G 选择串行窗口并输入DEnter 就可以观察到模拟输入的信号从0 5V间变化在调试到达断点时用户一般都想得到在断点处诸如寄存器值和其它一些细节的信息 dScope为要使能记录选择Commands菜单中的RecordTrace命令打开指令记录当记录使能时dScope512条汇编指令和寄存器内容以MEASURE程序为例开始运行MEASURE程序单击调试窗口中的Go按钮并选择串行窗口MEASURECommandd输入此命令后MEASURE开始显示测量值单击调试窗口中的Stop按钮可立即终止程序的执行单击ViewTrace按钮观察缓冲 历史记录行以负数开始缓冲器的记录为- 当缓冲器已满时最 容注在观察缓冲器之前必须停止程序的执行观察点用于观察简单变量结构和数组的内容用户可使用Watchpoints框设置观察点从下面的步骤教您如何定义两个观察点int 在Expr输入行键入sindex并单击Definecurrent在Expr输入行键入current并选择Multiple按钮在单独的行显示结构成员再单击Definewatch按钮sindex的值在单独行内显示第二个观察点current产生较多输出在单独行显示的结构成员缩进以反映嵌套的级数最后几行显示保存在 og数组中的数据观察窗口在每次命令StepInto,StepOut或Go执行结束时更新用户Setup菜单中的UpdateWatchWindow命令将dScope配置为程序执 执行断点是最简单的形式一个函current.time.sec结构3时如何停止程序的执行从Setup菜单选择Breakpoints命令显示断点框在表达式输入行输入current.time.sec= Count输入行输入1 选择写检查框该选项指定当表达式写入时仅作为断点测试完成以后单击Define按钮设置断点按下列步骤测试断点条件MEASURE演示程序Go在MEASURE在几秒钟后dScope停止运行调试窗口中的程序计数器行标志产生断点所在的行dScopedScope使用的地址范围或一个函数如要进行时序分析在命令窗口输入以下命令PAmainPAtimer0PAclear_recordsPAmeasure_disyPAsave_current_measurementsPAread_indexRESET /*InitializePASetup菜单中的SetupPerformanceyzer命令创建或观察范围使用工具条上的按钮打开性能分析器窗口显示以上定义的地址范围<unspecified>行累加定SEnterD BADCODE FileOpenBADCODE.CProjectCompileFile命令编译该文件在编译完成后Vision确定文件中有错误并显示一个错误信息窗口供用户阅读 当光标在行之间移动时源程序Keil8051的软件开发当前ProROMEPROMProROM是一个EPROM仿真器通过它将PC的并行口和目标硬件的ROM插座相连使用ProROMEPROM仿真器可以迅速开发并测试你的嵌入式目标程序将64K字节程序到ProROM中只需数秒在软件反复操作时不需要花费几分钟时间等待EPROM编程器和擦除器ProROM带有一个装载器程序使二进制或十六进制文件更容易此外还可以使用带VisionProROM使开发周期实现自动化28脚DIPRTX-51实时操作系统是一个多任务处理内核用于8051系列微控制器它简化了的对时间以下为RTX-51RTX-51Full4个任务优先级RTX-51Full和中断函数以并行方式工作可使用一个邮箱系统在任务间传递信号和信息从器库中可分配和释放器还可强制一个任务等待另一个任务或中断产生中断定时溢出信号或信息RTX-51Tiny是RTX-51Full的子集RTX-51Tiny不需要外部数据器就可运行在单片系统上RTX-51TinyRTX-51Full的许多特性该章余下部分将RTX-51FullRTX-51TinyRTX-51不同之处在应用处说明许多微控制器的应用要求同时进行多任务或工作的执行RTOS对系统资源CPU器等等进行灵活的安排RTX-51功能强大且简单易用可用于8051派生器件CRTX-51程序然后使用C51对其进行编译为了指定任务ID和优先级数偏离标准CRTX-51程序还需要包含实时可执行头文件使用BL51代码库连接/RTX-51库文件C程序从主函数开始执行在嵌入式应用中续执行的单任务intcounter;voidmain(void){counter=while(1) /*repeatforever /*incrementcounter}}CRTOS的循环伪-多任务处理模式在该模式中任务或函数从一个死循环中循环调用例如intcounter;voidmain(void){counter=0while(1) /*repeatforevercheck_serial_io()process_serial_cmds(); /*processserialinput*/check_kbd_io();process_kbd_cmds() /*processkeyboardinputadjust_ctrlr_parms() /*adjustthecontrollercounter++ /*incrementcounter}}RTX-51执行循环多任务处理允许几个循环或任务准并行执行任务并不同时执行而是按时间分段执行有效的CPURTX-51将时间段分配给每个任务每个任务允许执行预定数量的时间然后RTX-51切换到另一个任务运行时间段非常短通常仅有几个毫秒因此任务看RTX-518051的硬件定时器提供的产生周期性中断用作驱动RTX-51时钟RTX-510 RTX-51Full函数人为地启动RTX-RTX-51应用仅使用循环任务排程该程序中的两个任务都是简单的计数器循环RTX-51job00job1job0执行一会儿后RTX-51job1job0该处理过程无限重复下去intcounter0;intvoidjob0(void)_task_{os_create/*marktask1asreadywhile(1)/*loopforever/*updatethecounter}}voidjob1(void)_task_{while(1)/*loopforever/*updatethecounter}}51在等待一个任务段结束时可使用os_wait函数向RTX-51发出信号使其可以开始执行另一个任务的执行该函数暂停当前任务并等待产生指定的 在该时间里可执行任何其它的任务使用os_wait函数等待的最简单的是RTX-51时钟报时信号中的超时周期该类型的可用50ms检查一次切换#include<rtx51tny.h>intcounter0;intvoidjob0(void)_task_0os_create /*marktask1asreadywhile(1) /*loopforevercounter0++ /*updatethecounteros_wait(K_TMO,3) /*pausefor3clockticks}}voidjob1(void)_task_1while(1) /*loopforevercounter1++ /*updatethecounteros_wait(K_TMO,5) /*pausefor5clockticks}}在上面的例子中job0job1counter01之后job0os_wait函数暂停3个报时信号此时RTX-51job1counter11之后job1os_wait函5个报时信号现在RTX-51job0之前只有进入3个报时信号过去3个报时信号counter015个报时信号counter1在等待另一个任务的信号或二进制信号时可使用os_wait函数暂停一个任务这可用于协调0任务暂停直到信号发送出去为止如果当任务查询信号时信号标志已经为1标志且任务继续执行如下面程#include<rtx51tny.h>intcounter0;intvoidjob0(void)_task_{os_create(1)while(1)/*marktask1asready/*loopforeverif(++counter0==0) /*updatethecount

温馨提示

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

评论

0/150

提交评论