付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Keil C51详细设置一.target名更改打开Keil后,左侧Project Workspace中的target可改,方法:右击TargetManageCompnents双击待修改项即可,若要添加,使用对话框内对应工具栏。二.option for target设置之TARGE项1 MEMARY MODELSmall:变量存储在内部ram里.Compact:变量存储在外部ram里,使用页8位间接寻址Large:变量存储在外部Ram里,使用16位间接寻址.我们一般使用Small来存储变量,就是说单片机优先把变量存储在内部ram里,如果内部ram不够了,才会存到外部去.Compact的方式要自己
2、通过程序来指定页的高位地址,编程比较复杂,如 果外部ram很少,只有256个字节,那么对该256个字节的读取就比较快,用MOVX Ri,M MOVX A,Ri指令.如果超过256字节,那么要不断地进行切换的话,就比较麻烦.Compact模式适用于比 较少的外部ram的情况.Large模式,是指变量会优先分配到外部ram里,用MOVX A,DPTRMOVX DPTR,A读取.要注意的是,3种存储方式都支持内部256字节和外部64k字节的ram.区别是变量 的优先(或默认)存储在哪里的区别.除非你不想把变量存储在内部ram,才使用后面的Compact,Large模式.因为变量存储在内部ram里,运
3、算速度比存储在外部ram要快的多,大部分的 应用都是选择Small的模式.使用Small的方式:也不是说变量就不可以存储在外部,一样可以存储 在外部,只是你要指定,比如:unsigned char xdata a;那么变量a就存储在夕卜部的ram.unsigned char a;变量存储在内部ram.假如用Large的模式:unsigned char xdata a;那么变量a就存储在夕卜部的ram.unsigned char a;变量存储在外部ram.这就是区别,就是说这几个选项只是影响没有特别指定变量的存储空间的时候,默认存储在哪里,比如上面的变量定义unsigned char a .2.
4、 CODE ROM SIZESmall: program 2K or less ;适用于89c2051这些芯片,2051只有2k的代码空间,所以跳转地址 只有2k,编译的时候会使用ACALLAJMPg些短跳转指令,而不会使用LCALL,LJMP旨令.如果你的代 码跳转超过2k,那么会出错.Compact:2k functiongs ,64k program:表示每个子函数的程序大小不超过2k,整个工程可以有64k的代码.就是说在main()里可以使用LCALL, LJMP指令,但在子程序里只会使用ACALL,AJMP指令.除非你确认你的每个子程序不会超过2k,否则不要用Compact方式.La
5、rge:64K program:表示程序或子函数都可以大到64k.使用code bank还可以更大.通常我们 都选用该方式.Code Rom Size选才?Large方式速度不会比Small慢很多,所以一般没有必要选择Compact和Small的方式.我们这里选择Large方式.精品文档3. OPERATINGNONE不适用操作系统RTX51-TINY使用TINY操作系统RTX-FULL使用FULL操作系统Keil C51提供了Tiny多任务操作系统,使用定时器0来做任务切换,效率很低,无实用价值。Full需要用户使用外部RAM且需要单独购买运行库,不能使用,默认选NONE4.存储器选择1.
6、Use On-chip ROM(0 x0-0 x1fff)这个选项是使用片上的Flash Rom,我们知道At89c52有8k的flash Rom.取决于你的应用系统,你 的单片机的EA接高电平的话,请选中这个选项,如果你的单片机的EA接低电平,表示使用外部Rom,那么不要选中该选项.我们在这里选中它2. Off-chip Code memory表示你在片外接的Rom勺开始地址和大小,如果你没有外接程序存储器,那么不要填任何数据.我们 在这里假设使用一个片外的Rom地址从0 x8000开始(不要填成8000,如果是8000,是10进制的数,一般填16进制的数),Size为外接Roml勺大小.假
7、设接了一块0 x1000字节的rom.最多可以外接3块Rom如果你还用了别的地址,那么就添上.3. Off-Chip Xdata Memory那么可以填上你外接的Xdata(外部数据存储器的起始地址和大小,一般的应用是接一个62256,我 们在这里特殊的指定Xdata的起始地址为0 x2000,大小为0 x8000;5. Code Banking使用Code Banking技术.keil可以支持程序代码超过64k的情况,最大可以有2兆的程序代码.如 果你的代码超过64k,那么就要使用CodeBanking技术,以支持更多的程序空间.Code Banking是一 个高级的技术,支持自动的Bank
8、的切换,是建立一个大型系统的需要,比如你要在单片机里实现汉 字字库,实现汉字输入法,都要用到该技术.我们会在以后的文章里论述Bank技术.我们在这里不选 中它.二.option for target设置之output项select folder for object:选择编译之后的目标文件所存放的目录,默认存放在工程文件夹中。name of executable:设置生成的目标文件的名字,默认是工程名。精品文档creat executable:生成OM舜口HE双件,OM戊件名同工程文件名但没有扩展名creat hex file:选中该项编译后生成可以少些的HEX文件。creat library
9、:生成lib库文件,默认不选。after make : l.beep when complete :编译完成后提示声响2.start debugging :编译完成后马上启动调试(软 件仿真或硬件仿真),默认不选中3.run user program1 , run user program2: 根据 需要设置编译之后的应用程序,比如自己编写的烧写芯片的程序,或调用外部仿真程序。3.listingselect folder for listings:选择列表文件存放的目录,默认为工程文件所在的目录。*.lst , *.m51文件对了解程序用到了哪些idata、data、bit、xdata、cod
10、e、RAM ROM Stack等 有很重要的作用。Assembly code生产汇编的代码,根据需要决定是否选择。4.c51用于对Keil的C51编译器编译过程进行控制,其中比较常用的是“code optimization”组,该组 中level是优化等级,C51在对源程序进行编译时可以对代码多至9级优化,默认使用8级,一般 不必修改。如果在编译中出现一些问题可以降低优化级别试一试。emphasis是选择编译优先方式,第一项是代码量优化(最终生成的代码量小),第二项是速度优 先(最终生成的代码速度快),第三项是默认的,是速度优先,可根据需要更改。5.BL51 locat使用KeilC51软件,
11、可以很方便地将代码或者数据绝对定位到某个地址。1、代码定位:方法1:使用伪指令CSEG比如要将MyFunc1定位到代码区C:0 x1000,则新建一个A51文件,添 加以下内容:PUBLIC MYFUNC1CSEG AT 1000HMYFUNC1:;其它代码RET在其它源文件中,就可以调用MyFunc()函数了。需要注意的是,编译器不检测传递参数的数目, 仅检测函数是否有返回值。方法2:使用BL51 Locate选项。比如在main.c中定义了一个MyFunc2函数,并且要将该函数定 位到代码区C:0 x2000,则从菜单中选择Project-Options for Target Target
12、1,在弹出的对话精品文档框中选择BL51 Locate M,在下面的code栏中写上?PR?MYFUNC2?MAIN(0 x200咖。如果想定位多个函数,也可以使用*通配符。2、变量定位:只有全局变量可以绝对定位,局部变量无法实现绝对定位。方法1:使用_at_关键字。声明一个全局变量unsigned char data MyBuf18 _at_ 0 x20;方法2:使用BL51 Locate选项。比如将main.c中定义的所有data型的全局变量定位到数据区D:0 x28开始的空间,则从菜单中选择Project-Options for Target Target1,在弹出的对话框中选择BL51
13、 Locate页,在下面 的data栏中写上?DT?MAIN(0 x28即可。如果是idata,则使用?ID?MAIN(0 x28),如果是xdata ,则使用?XD?MAIN(0 x28)如果是pdata ,贝U使用?PD?MAIN(0 x28)3、堆栈定位:在STARTUP.A5文件中定义了堆栈区?STACK其起始地址同样可以在BL51 Locate页中设置, 在Stack栏写上?STACK(0 x80)4.函数定位:假如要把C源文件tools.c中的函数int BIN2HEX(int xx) 放在CODE MEMORY0 x1000处,先编译该工程,然后打开该工程的M51文件,在* *
14、* C O D E M E M O R Y行下找出要定位的函数的名称,应该形如:CODE xxxxHxxxxH然后在:Project-Options for Target .-BL51 Locate : Code中填写如下内容:?PR?_BCD2HEX?TOOLS(0 x1000)再次Build ,在M51中会发现该函数已放在CODE MEMORY0 x1000处了2、赋初值的变量定位:要将某变量定位在一绝对位置且要赋初值,此时用_at_不能完成,则如下操作:在工程中建立一个新的文件,如InitVars.c,在其中对要处理的变量赋初值(假设是code变charcode myVer = COPYRIGHT 2001-11;然后将该文件加入工程,编译,打开M51文件,若定义的是code型,则在然后在:Project-Options for Target .-BL51 Locate : Code中填入:?CO?INITVARS(0 x200)再次编译即可。相应地,如为xdata变量,则InitVars.c中写:char xdata myVer = COPYRIGHT 2001-11;精品文档然后将该文件加入工程,编译,打开M51文件,在* * * X D A T A下可找到:XDATA xxxxH* * *UNIT?
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 种苗繁育员竞赛模拟考核试卷含答案
- 数据标注员技能安全强化考核试卷含答案
- 普通车工操作规范考核试卷含答案
- 石膏粉生产工岗位理论水平考核试卷含答案
- 尾矿工变更管理评优考核试卷含答案
- 曲靖智能家居就业前景分析
- 辍学就业前景分析
- 咯血护理宣教
- 2026年碳中和数字化咨询项目案例复盘
- 全县防灾减灾日宣传活动总结
- 2026专业技术人员继续教育人工智能试题及答案
- 施工人员培训与考核方案
- 医院防溺水急救培训课件
- 适老化居家环境设计与改造(第二版) 课件全套
- 压密注浆地基施工工艺方案
- 中药湿敷教学课件
- BMS电池管理系统方案技术文档
- T-CTES 1053-2022 抗病毒抗菌功能纺织品
- 公务员常识4000题
- 2025年及未来5年中国汽车救援行业发展运行现状及投资战略规划报告
- 2025年抗肿瘤药物处方考核试题及答案
评论
0/150
提交评论