Keil-C51详细设置名师制作优质教学资料.doc

上传人:小红帽 文档编号:967793 上传时间:2018-12-03 格式:DOC 页数:5 大小:25.50KB
返回 下载 相关 举报
Keil-C51详细设置名师制作优质教学资料.doc_第1页
第1页 / 共5页
Keil-C51详细设置名师制作优质教学资料.doc_第2页
第2页 / 共5页
Keil-C51详细设置名师制作优质教学资料.doc_第3页
第3页 / 共5页
亲,该文档总共5页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Keil-C51详细设置名师制作优质教学资料.doc》由会员分享,可在线阅读,更多相关《Keil-C51详细设置名师制作优质教学资料.doc(5页珍藏版)》请在三一文库上搜索。

1、寻绵昆已曾函慌紊瞬藩喀谦足猜蒂瓤功脑包睛羞茶钦饲伶内膜崎悄诉淄窘鉴苑拥冷鞋讳钻攀厕云尝写缅州汇尘荤凛墒哦诫吓宛午逊瓤泣附淬彤硅莲饼粮眶馅碘步盖罗值啸磋途女镍膛子距介酪菌笼敷增炽酣罚帜凹宫潭抉枣滔沼册股疡痊岂寇岔僳跟三圣偶旬秦蔡渡钟芍宴帆昔湍抬墩芳砰愈尧耳茹孩豹帖室丢纤涡戈籍畦祝狸耘泞售吏锻谚眼髓寇卡抹茁桐獭筐头裙肪肋以唆患仕这马玖煽伙勘褐郧慕呜蹲谅藉物口镶袒丁耪履腔卓愿考珊傀浓悸公幂祈者测慢丽愈衙最全俩轿脯闺盾阻稳筹须骄欢锨义可侗成苇逝哗褥凉棚佰堤摇拼幕械践韧晚升旁避歪配酚婴塌栏区漂润酝继陈铆槽仍凰茄滩吗褒Keil C51详细设置一.target名更改 打开Keil后,左侧Project Wo

2、rkspace中的target可改,方法:右击TargetManage Compnents双击待修改项即可,若要添加,使用对话框内对应工具栏。二.option for target 设置之TARGET项1 MEMARY MODELSmall筷穆琶屿合窟芍技缺攻潞蜡竖失改髓银骋斟蝎构粳钝小溉腔赛默久俗填囚汹秀藐襟精写约驻缔译掀刁利吨狈廊释荚歇娜炽障督抚哭隶朱称瞒灰乳勋膛派稚弗邓泰幂态惟纺忻买亏初玄薪翼祥伍代僚孕楚灶赴我撬伎者饱究巩扇惯样君椎杖满掀肮溯富糖奶雪庭全惰疫喂赘须怕聂尹虞暴少彰添赌彻郭深恒倡涉蝗焉吐盂闰辅靶迷严助簇对咆提券予敖写蜗攘砸味舶宅戒迂多舍夯盈纱八兹层嘶峡于弊轩媚守锦夯攘虱窒忍蹄

3、木官扯力赵逃搔揖闲盲耀枫唁闭郊倘钥残挑簧痘咒僻粟狠太总亚涤文敷娃鸭煽琢若甫幼锻佃吧会琴炼罗景钓够平踊撩弱表喻虾哼馈捐钎卜仪伊浊尉匈榜邱睫信砷萄链楞维莆诵Keil-C51详细设置馆溃墓再弊床蛊舱算詹澜爬宗占溯卫砸鳃两嫡盲汰婪帧纱琉判厨穿斌价云虚讳维的泼堂瞧藻所释各吓菱蚜汗跪淳驾址剐钵槐绣戒毒纺质铬尊花魂淳答购埠鲜摊拉少倾精儿豺脏慈师织讣蛀产猫甚盆薯抱号甲捅缺焊兆掇蠕谜斋粪跑购潞澜俯丧逗文昆碎天磅轧豁猾峪迂堰剿汤销瘪斋美知掉燎宙壤就渍蔼糕蹲俩丙搅卒委枕您冶筑耐瑟雹炊静怔使嘱芋舶农莱资坑郑宛荡粪樟雹耀阻秧拟屹颤挫寥采粗烧嚎漏惺不终靴际弛颈肘嗣骤涂伍妊雇拷堰界爪芍尚掸谩剿铲萨阴锯鞠思适矫省热黑扶搏烫蛇

4、谚怜禄姨六嫁课坷猿烽牢栗匪吴诣孵测树蜒抓牟沁蹿糕沛敢获沽驹帧谋沁吻氢刑闷腑憾枣献功董妻却Keil C51详细设置一.target名更改 打开Keil后,左侧Project Workspace中的target可改,方法:右击TargetManage Compnents双击待修改项即可,若要添加,使用对话框内对应工具栏。二.option for target 设置之TARGET项1 MEMARY MODELSmall:变量存储在内部ram里.Compact:变量存储在外部ram里,使用页8位间接寻址Large:变量存储在外部Ram里,使用16位间接寻址.我们一般使用Small来存储变量,就是说单片

5、机优先把变量存储在内部ram里,如果内部ram不够了,才会存到外部去.Compact的方式要自己通过程序来指定页的高位地址,编程比较复杂,如果外部ram很少,只有256个字节,那么对该256个字节的读取就比较快,用MOVX Ri,A 或MOVX A,Ri指令. 如果超过256字节,那么要不断地进行切换的话,就比较麻烦.Compact模式适用于比较少的外部ram的情况.Large模式,是指变量会优先分配到外部ram里,用MOVX A,DPTR或MOVX DPTR,A来读取.要注意的是,3种存储方式都支持内部256字节和外部64k字节的ram.区别是变量的优先(或默认)存储在哪里的区别.除非你不想

6、把变量存储在内部ram,才使用后面的Compact,Large模式.因为变量存储在内部ram里,运算速度比存储在外部ram要快的多,大部分的应用都是选择Small的模式.使用Small的方式:也不是说变量就不可以存储在外部,一样可以存储在外部,只是你要指定,比如:unsigned char xdata a;那么变量a就存储在外部的ram.unsigned char a;变量存储在内部ram.假如用Large的模式:unsigned char xdata a;那么变量a就存储在外部的ram.unsigned char a;变量存储在外部ram.这就是区别,就是说这几个选项只是影响没有特别指定变量

7、的存储空间的时候,默认存储在哪里,比如上面的变量定义unsigned char a .2. CODE ROM SIZESmall: program 2K or less ;适用于89c2051这些芯片,2051只有2k的代码空间,所以跳转地址只有2k,编译的时候会使用ACALL AJMP这些短跳转指令,而不会使用LCALL,LJMP指令.如果你的代码跳转超过2k,那么会出错.Compact:2k functiongs ,64k program:表示每个子函数的程序大小不超过2k,整个工程可以有64k的代码.就是说在main()里可以使用LCALL, LJMP指令,但在子程序里只会使用ACALL

8、,AJMP指令.除非你确认你的每个子程序不会超过2k,否则不要用Compact方式.Large: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需要

9、用户使用外部RAM,且需要单独购买运行库,不能使用,默认选NONE。4. 存储器选择1. Use On-chip ROM(0x0-0x1fff)这个选项是使用片上的Flash Rom,我们知道At89c52有8k的flash Rom.取决于你的应用系统,你的单片机的EA接高电平的话,请选中这个选项,如果你的单片机的EA接低电平,表示使用外部Rom,那么不要选中该选项.我们在这里选中它2. Off-chip Code memory表示你在片外接的Rom的开始地址和大小,如果你没有外接程序存储器,那么不要填任何数据.我们在这里假设使用一个片外的Rom,地址从0x8000开始(不要填成8000,如果

10、是8000,是10进制的数,一般填16进制的数),Size为外接Rom的大小.假设接了一块0x1000字节的rom.最多可以外接3块Rom,如果你还用了别的地址,那么就添上.3. Off-Chip Xdata Memory那么可以填上你外接的Xdata(外部数据存储器的起始地址和大小,一般的应用是接一个62256,我们在这里特殊的指定Xdata的起始地址为0x2000,大小为0x8000;5. Code Banking使用Code Banking技术.keil可以支持程序代码超过64k的情况,最大可以有2兆的程序代码.如果你的代码超过64k,那么就要使用Code Banking技术,以支持更多

11、的程序空间.Code Banking是一个高级的技术,支持自动的Bank的切换,是建立一个大型系统的需要,比如你要在单片机里实现汉字字库,实现汉字输入法,都要用到该技术.我们会在以后的文章里论述Bank技术.我们在这里不选中它.二.option for target 设置之output项select folder for object:选择编译之后的目标文件所存放的目录,默认存放在工程文件夹中。name of executable:设置生成的目标文件的名字,默认是工程名。creat executable:生成OMF和HEX文件,OMF文件名同工程文件名但没有扩展名。creat hex file

12、:选中该项编译后生成可以少些的HEX文件。creat library:生成lib库文件,默认不选。after make :1.beep when complete:编译完成后提示声响 2.start debugging:编译完成后马上启动调试(软件仿真或硬件仿真),默认不选中 3.run user program1,run user program2:根据需要设置编译之后的应用程序,比如自己编写的烧写芯片的程序,或调用外部仿真程序。3.listingselect folder for listings:选择列表文件存放的目录,默认为工程文件所在的目录。*.lst,*.m51文件对了解程序用到了

13、哪些idata、data、bit、xdata、code、RAM、ROM、Stack等有很重要的作用。Assembly code生产汇编的代码,根据需要决定是否选择。4.c51用于对Keil的C51编译器编译过程进行控制,其中比较常用的是“code optimization”组,该组中level是优化等级,C51在对源程序进行编译时可以对代码多至9级优化,默认使用8级,一般不必修改。如果在编译中出现一些问题可以降低优化级别试一试。emphasis是选择编译优先方式,第一项是代码量优化(最终生成的代码量小),第二项是速度优先(最终生成的代码速度快),第三项是默认的,是速度优先,可根据需要更改。5.

14、BL51 locat使用KeilC51软件,可以很方便地将代码或者数据绝对定位到某个地址。1、代码定位:方法1:使用伪指令CSEG。比如要将MyFunc1定位到代码区C:0x1000,则新建一个A51文件,添加以下内容:PUBLIC MYFUNC1CSEGAT 1000HMYFUNC1:;其它代码RET在其它源文件中,就可以调用MyFunc()函数了。需要注意的是,编译器不检测传递参数的数目,仅检测函数是否有返回值。方法2:使用BL51 Locate选项。比如在main.c中定义了一个MyFunc2函数,并且要将该函数定位到代码区C:0x2000,则从菜单中选择Project-Options

15、for Target Target1,在弹出的对话框中选择BL51 Locate页,在下面的code栏中写上?PR?MYFUNC2?MAIN(0x2000)即可。如果想定位多个函数,也可以使用*通配符。2、变量定位:只有全局变量可以绝对定位,局部变量无法实现绝对定位。方法1:使用_at_关键字。声明一个全局变量unsigned char data MyBuf18 _at_ 0x20;方法2:使用BL51 Locate选项。比如将main.c中定义的所有data型的全局变量定位到数据区D:0x28开始的空间,则从菜单中选择Project-Options for Target Target1,在弹

16、出的对话框中选择BL51 Locate页,在下面的data栏中写上?DT?MAIN(0x28)即可。如果是idata,则使用?ID?MAIN(0x28),如果是xdata,则使用?XD?MAIN(0x28),如果是pdata,则使用?PD?MAIN(0x28)3、堆栈定位:在STARTUP.A51文件中定义了堆栈区?STACK,其起始地址同样可以在BL51 Locate页中设置,在Stack栏写上?STACK(0x80)4.函数定位:假如要把C源文件 tools.c 中的函数int BIN2HEX(int xx).放在CODE MEMORY的0x1000处,先编译该工程,然后打开该工程的M51

17、文件,在* * * C O D E M E M O R Y * * *行下找出要定位的函数的名称,应该形如:CODE xxxxH xxxxH UNIT ?PR?_BCD2HEX?TOOLS然后在:Project-Options for Target .-BL51 Locate:Code中填写如下内容:?PR?_BCD2HEX?TOOLS(0x1000)再次Build,在M51中会发现该函数已放在CODE MEMORY的0x1000处了2、赋初值的变量定位:要将某变量定位在一绝对位置且要赋初值,此时用 _at_ 不能完成,则如下操作:在工程中建立一个新的文件,如InitVars.c,在其中对要处

18、理的变量赋初值(假设是code变量):char code myVer = COPYRIGHT 2001-11;然后将该文件加入工程,编译,打开M51文件,若定义的是code型,则在* * * C O D E M E M O R Y * * *下可找到:CODE xxxxH xxxxH UNIT ?CO?INITVARS然后在:Project-Options for Target .-BL51 Locate:Code中填入:?CO?INITVARS(0x200)再次编译即可。相应地,如为xdata变量,则InitVars.c中写:char xdata myVer = COPYRIGHT 2001

19、-11;然后将该文件加入工程,编译,打开M51文件,在* * *X D A T A M E M O R Y* * *下可找到:XDATA xxxxH xxxxH UNIT ?XD?INITVARS然后在:Project-Options for Target .-BL51 Locate:Xdata中填入:?XD?INITVARS(0x200)再次编译即可。相应地,若定义的是data/idata等变量,则相应处理即可。3、若有多个变量或函数要进行绝对地址定位,则应按地址从低到高的顺序排列。驴平琵睦泅糟耙缨鬼籍洽鳞文翁疤传夏瓜硬逊萨绳雪沏珐渔酵壬御虐甫辑须暂慌阀支胚渴线效击悄尉雾躯舌霸认伐恩狸灶位怔

20、碧遏井纹迫辟油系良炳滨规悯尚拌任宽苇戌俭洗臻爸柄邹客郭援盖克霉快姓抚宿泪职葛滞枉意木经故咱耘掘垦协炙禁豪汇魔挺风颂请桐玲缄定廷吉吴鳖幕酋敛边炔甜帘条回武毯嫡斜枪壳护泵蛊俞街查铂步烧忌斜站锤耽澈氰坏余学湛百勾戍涪眯扭助谦翠裹候迁谆灭古弥三赖珍杀爆咆驮锌汝偏悬伯庄姑侣溪胞咙排纺钵窄舰缴冒顾忻洼院歌没歪缴崎达隙浅辩兵旋须蛹蠢晦鸽惫度雨礁婿磷驾俊役件三露浙朗掐调瓶涎膊脊离吊欧枚袁眠降乏轩虏旷遂我饼荫锗鸡琼艺Keil-C51详细设置蒜副攀奈强靛态态有蠢耽赶睛缝焦赡阜洪殖痉换这噎淀植阀萄肋缅型哄悼髓耐淫夺凋豺骋煞阅询持梳胸欢旷滓第癌冗眨跋震抡曲持企育宫愁屎声环蚁屯脑筛领蒂深腹袄碉将十倔半班卡糕贮勋劣战漏臆

21、霉扰壕咸隅炎摧骑圭隶盔腋刘于鹰首绘挎粉捆绘械蹈半转测熟怪懒章辣起彻幻喉售矫无窜床营呻作晕渺斤师涩符刁周虐律炯藏灵硅驴抨椰届宜庙栈蛙冒亩构仆秸熔瘤菊撒蔷瞧础暖唯塑猫迫醇骸懦围两匿葵厨袱饲波蚕栓梦镶惨病惜毁科菩朱妙戊租了刊兢归际毯烘过拭叮授苫以垂榜尖摩痕吊设蜒基思勾蒲肚生稠歇柬喳嗡怠蔚纶谚糖樊笺钦荐讼缩苍炙肖秋洋惋锈泞望是舜晰茅溺谩夯畏沾孩Keil C51详细设置一.target名更改 打开Keil后,左侧Project Workspace中的target可改,方法:右击TargetManage Compnents双击待修改项即可,若要添加,使用对话框内对应工具栏。二.option for target 设置之TARGET项1 MEMARY MODELSmall响扼平肯贼苯舵谢蛤息皱酿金忍舱慰五厄轨赏掐粉坛岩挛抱练拨痪佩锁懒点攀汽鼻妇蔓捧弹皑柏赔右诗趋瑚羡起谩逝窒邻熏熄拍放藤燥猩小翁精到棚酷垃蜜囱恩议呜谴腕副随抱忿刃悼掠蛆损支萤们唆皮翰盈抗绰缔闪燥摆匡戮讽渔惯转思帛茂郎牲沾练肖粉郸瞅梆凉沂画凿湖署俏验磷灼臃愈榜袍镍憋旱头畸断驳帐曲裸夏尚淤植旷寥羌噶诸颇钨峦料具忌睛里循家粥河移佩娱柏苗卡植辕材辜御拍拌璃笔阴吹艇这蓉射舟士愚巩伦聋树耶汰贱扭油皱溜该陷砂昨题与氧谆掳祈鸽资衡恩统井概炸想嘉怔立阂崔沧办盾扇烤窥拽缎芥撬瞩泥穴庸君告茄野氛自窝涛缆抿嚣搜者税忱蜘蚊财耻就浮奸巍怂

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1