《24程序发展工具-2.docx》由会员分享,可在线阅读,更多相关《24程序发展工具-2.docx(26页珍藏版)》请在三一办公上搜索。
1、2.4 程序发展工具-Keil C51Keil C51是Keil公司针对80C51系列单芯片,在Windows平台上开发出的一套工具软件.,透过Keil uVision2的IDE(整合发展环境),提供80C51汇编语言与C51语言的编辑、组译/连结、除错/模拟测试,并具备完善的项目管理系统(Project),以及系统文件说明等功能。图2-x1显示 Keil Vision2的功能结构,说明如下:n Vision2 IDE提供项目管理的整合作业环境,拥有编译、组译、连结等,建构项目的功能。n 提供各种厂牌型号80C51核心兼容单芯片系统的开发使用。n C51提供ANSI C程序语言编译器(ANSI
2、 C Compiler);A51:提供8051汇编程序组译器(Macro Assembler)。n 在程序的连结时,提供ANSI 标准链接库、LIB51链接库管理员,与RTX51实时操作系统。n Vision Debugger:有强大的除错工具和平行仿真系统。可执行单步执行,芯片内部缓存器、内存、输出入界面的实时监看功能。图2-x1: Keil C51功能方块图Keil C51试用版下载与安装对于80C51单芯片初学者,Keil 软件公司在该公司网站提供Keil C51试用版(Evaluation Version),免费让使用者下载( 试用版限制2KBytes的程序代码)。C51试用版软件的下
3、载与安装步骤如下: 步骤1:上网连结上 Keil公司网站(图2-x2: Keil C51程序下载画面步骤2:填完数据点选Summit,,即可下载ek51v750a.exe软件安装程序文件,档案大小约15.8MB。步骤3:执行ek51v750a.exe文件,启动安装程序,会出现下列确认安装的对话框,请点选是(Y)按钮,出现如图2-x3的说明窗口。依照安装程序的指示,一步步的完成软件安装工作。图2-x3: Vision2安装说明画面步骤4:安装完成后,会在Window系统的开始菜单或桌面上会出现下图示的Keil uVision2快捷方式。点选此一快捷方式,即可启动C51。 启动Keil Visio
4、n2由于Keil Vision2是以项目(Project)方式做管理,因此启动Keil Vision2后,必须先加载一个项目,才能对项目内的档案(程序文件与说明文件)进行处理。若启动后无Project加载,则Vision2有许多画面与功能将无法展示。以下我们介绍两种开启项目的方法:开启旧项目(Open Project)、建立新项目(New Project),藉由两个范例的操作过程,说明Keil Vision2 IDE的窗口画面与功能,并了解建立新项目的作业流程。l :开启一个现有项目,并对做说明。l :介绍如何,包括档案的加入、程序编辑/组译/连结,与除错等操作方法。 【范例2-1】开启旧项目
5、观察Keil Vision2窗口画面与功能开启一个KeilVision提供的范例项目ASAMPLE.uv2,藉此观察KeilVision IDE整合环境画面与功能,操作步骤如下:步骤1:开启 Project菜单点选,点选Open Project指令按钮,显示如图2-x4所示的Select Project File对话框。选取C:KeilC51EXAMPLESASMASAMPLE的范例项目,开启此项目。图2-X4: Options for Target Target对话框步骤2:开启 ASAMPLE.uv2项目后,窗口画面显示如图2-x5。在Vision2整合作业环境中重要的部份,如负责项目管理
6、的项目窗口(Project Windows)、可编辑8051汇编语言与C语言程序文件的程序编辑窗口、显示执行结果的输出窗口(Output Windows),与常会用到的工具列(Toolbar)。图2-x5: Keil Vision2 IDE窗口画面 步骤3:由于Keil Vision2 IDE窗口画面上的某些子窗口会因为关闭或重迭在底层而隐藏不见。当找不到某些子窗口时,可利用View菜单内的指令找回。点选View菜单,显示如图2-x6。点选菜单的指令,如Project Winodws、Output Windows;以及工具列,如Status Bar、Build Toolbar、Build To
7、olbar,观察对应子窗口,显示与隐藏状态。针对这些子窗口的功能,我们图2-x6: 利用View菜单显示/隐藏子窗口项目窗口:项目窗口又可分为三种页面:File、Regs、Books。点选窗口下方的标示做页面的切换。在进入除错功能(debug)时,Regs会显示8051的缓存器状态、Books显示Vision2的在线操作说明书。File负责管理项目的所有档案,File又可分为三个层级Target-Group-File,说明如下:n Target:在此层级中,可以选择使用的芯片、频率频率与内存等装置的配置方式。在同一个项目中,可以拥有一个以上的”Target”。两个Target之间基本上可以共享
8、相同的原始程序档案,但是可以各自有着不同的输出入设定或不同的装置,透过建立不同的Target,我们可以得到不同的输出程序版本。有关Target的选项设定,可在Target图标上按鼠标右键,在快速选单上点选Options for Target Target,显示如图2-x7: Options for Target Target 1对话框。Vision2为了方便我们能容易地撰写兼容各式CPU的程序,特别在图3-7 Options for Target Target 1对话框中的装置数据库(Device Database),准备了各式CPU的数据。只要我们决定了CPU的型号,Vision2就会自动将
9、一切环境的参数(如CPU频率、内存配置等等)设定好,无须使用者再操心了。图2-x7:开启 Options for Target Target对话框n Group:在Target下建立多个Group,将有相同性质的原始程序代码或文件归类在同一个Group,方便自己或其它人方便查阅管理,例如建立一个I/O Group,将所有有关输出入的程序文件放于其中n File:在Group之下,可以加入不同的档案。例如C51原始程序文件(*.c)、A51汇编程序(*.a ;*.src),已编译的对象程序文件(*.obj),链接库档案(*.lib)以及纯文本文件(*.txt)。程序编辑器:程序编辑窗口是一套类似
10、记事本-NotePad的文字编辑工具,提供使用者编写C51/A51的原始程序代码或说明文件。它的操作方式与一般文字编辑器大同小异。此外,编辑器提供有标记工具列、断点设定工具列、搜寻工具列,辅助使用者做程序编辑与除错,相关图标与功能如表2-X。表2-x:编辑用工具列工具图示功能说明n工具图标依序为Toggle Bookmark(切换标记),Next Bookmark(下一个标记),Previous Bookmark(前一个标记),Clear All Bookmarks(清除所有标记)。在光标停在的地方,插入或取消插入标记,寻找先前标记的位置,或是删除所有标记。被设定成标记该行,左侧有一蓝点出现。
11、在撰写程序时,若能适当地插入一些标记,能迅速地让我们的光标游走整个程序,修改某一行程序时,立即找到,而不用拉动滚动条寻找。n工具图示依序为Insert/RemoveBreakpoints(插入/移除断点)、Kill All Breakpoints(断点)、Enable/Disable Breakpoints(致/禁能标记)、Disable All Breakpoints (禁能所有标记)在游标停在的地方,插入断点。设定断点是程序除错的技巧之一,它能让程序在特定阶段中暂停,提供我们检视其状态。当断点被致能时,可以看到其旁边有一红点,当被禁能时,将会是空心的点(断点插入时预设是致能的)。亦可在欲插
12、入断点的地方按下鼠标右键选择Insert/Remove Breakpoint插入/移除断点,或选Enable/Disable Breakpoint来控制断点的致/禁能。n工具图示依序为Find in files(找寻档案)、Search(搜寻) Find(找寻)拥有搜寻文件内文句的功能,其中Find in file功能,亦可跨档案搜寻相关字词,结果显现在下方的Output Window建立新项目流程建立一个新项目,并完成项目程序的编译/连结与除错等工作,作业流程如图2-x8。项目程序发展过程中,提醒读者每个步骤所需的注意事项如下:n 建立空项目:新建立的项目必须设定Target的装置(Devi
13、ce),即选用芯片的公司与型号、设定频率频率,配置内存。n 在项目加入档案:项目内的档案来源有两种方式。第一种方式是将已经存在的程序文件直接加入项目;第二种方式是选择File菜单的New指令,建立一个新档案,再将此档案加入项目。存盘要注意的是,若准备采用C51语言,档案的附属名称使用”*.c”,若使用A51语言,档案的附属名称使用”*.a”。n 编辑/修改程序:已加入项目的程序文件,直接在项目窗口中双击该程序文件的文件名,即可开启该档案的程序编辑窗口。若未加入项目的程序文件,使用File菜单的Open指令,加载程序编辑窗口,进行编辑与修改。n 组译/编译与连结程序:Vision2同时提供了C5
14、1这个兼容于ANSI C标准的编译器(C51 Compiler),以及A51这个组译器(A51 Assembler),让我们可以用这两种程序语言,开发单芯片程序。当原始程序都被编译/组译完成后,再透过连结以建置最后可执行的程序,在Vision2附有BL51这个连结器来协助达成这项工作。在连结的过程中, 标准C语言的函式库(ANSI C Standard Library)也会被汇入。n 除错与在线仿真:完成组译/编译与连结的机械码程序,可透过Vision2提供的除错工具,修改或最佳化程序,还可以藉由平行仿真系统在PC上直接仿真硬件上的各种操作。图2-x8:Keil C51项目建立流程图【范例2-
15、2】建置新项目的操作实例建置一个新的专案”ch2_1.uv2”,加入ch2_1.asm汇编程序档。执行程序的组译与连结。并利用除错工具仿真执行此程序。操作步骤如下: 步骤1:开启Project菜单,点选New Project指令,在建立档案的对话框中输入” ch2_1”档名,进入Select Device for Target1 “Target”窗口,在CPU页面找到”Philips”,点选”P89C51RD2xx”,如图2-x9所示,按确定指令按钮。图2-x9: Select Device for Target1 “Target”窗口步骤2:开启File菜单,点选New 指令,建立一个空白的
16、新文件(预设档名为Text1)。开启File菜单,点选Save指令,将刚Text1新档案以”ch2_1.asm” 档名储存。步骤3:在新建立空白ch2_1.asm档案的程序编辑窗口输入下列程序代码: MOV A,#12H ; 将12H资料存入累加器 MOV R0,#34H ; 将34H资料存入R0 MOV 30H,#56H ; 将56H资料存入RAM的30H MOV P0,#0FH ; 将0FH数据输出到P0端口 END步骤4:在项目窗口的Source Group 1按右键,点选Add File to Group “Source Group 1”,将编辑的ch2_1.asm程序文件加入这个项目
17、中。(若档案类型预设*.c,变更为ASM Source file,即可看到ch2_1.asm)步骤6:程序代码编辑完成后,在Debug 工具列上按下(Build Target)按钮,就可以建置项目(或可用Project-Build Target或直接按下F7来达成同样的目的)如果正确无误,在Output Window看到建立成功的讯息, 如图2-x10。【范例2-3】程序除错与观察单芯片内部运作利用范例2-3建置完成的项目ch2_1,透过Keil Vision2除错功能,观察单芯片内部运作情形。藉此熟悉除错环境与工具的使用。操作步骤如下: 步骤1:在完成ch2_1项目的建置后,开启Debug菜
18、单,点选Start/Stop Debug Session指令,或按下Ctrl+F5,启动除错模式。步骤2:点选单步执行工具或按F11,观察项目窗口的缓存器页面显示r0与a的变化,如图2-11。步骤3:点选View-Memory Window菜单,开启Memory Window窗口,在Address:文字方块输入”C:0”, 显示加载程序内存(ROM)的机械码。如图2-x2, 显示程序机械码,共计7Bytes(0x00000x0006)。在工具列按下指令按钮,切换到Disassembly Window反组译窗口,读者可以自行对照机械码与汇编语言之间的关系。图3-22: 加载程序内存的机械码步骤3
19、:在 Memory Window窗口的Address:文字方块输入”D:0”, 显示加载数据存储器(RAM)。如图2-x2,56H存入0x30地址上。步骤4:开启Peripherals菜单,点选I/O Ports-Port0指令,显示如图2-x。显示P0端口的输出状态。图2-x:Port 0的输出结果步骤5:结束观察与除错作业,开启Debug菜单,点选 Start/Stop Debug Session指令,离开除错环境。最后,当我们要汇出我们的程序,建立能在微处理机上直接运作的机械码程序(.hex),其做法是Project-Option for Target “Target 1”或直接在专按管
20、理窗口的Target 1上按下右键选Option for Target “Target 1”,开启Tool Option对话框,请切到”Output”页面,在Create HEX file这个复选框上打勾,如图2-x。按下确定。重新建置我们的项目,就可以在项目的目录下,新产生了*.hex。图2-x:设定产生HEX输出檔 。2.5 80C51指令与程序虽然C51语言具有多项优点,但对于8051单芯片初学者而言,仍然必须对8051汇编语言的指令与程序有基本的认识,基于以上原因,8051系统单芯片有必要引用一套高级语言,做为程序开发工具。透过编译(Compiler)的方式,协助我们处理程序中许多琐碎
21、且重复的细节,并能配合相关硬件的调整,而在必要的时候,设计者仍然可以直接针对内存及缓存器下达命令,修改其内容或决定其配置的方式,C51就是针对这些特性发展出的一套程序语言。Keil Vision 提供C51程序语言的组译与连结功能,但对于单芯片初学者而言,笔者仍然建议应对8051汇编语言的指令与程序,80C51共有111个指令,若以指令码的长度分类,单字节指令(1Byte)有49个,双字节指令(2Bytes)有45个,三字节指令(3Bytes)有17个;若以功能来区分的话,指令分类有下列四种:n 数据搬移指令28个,即缓存器与内存之间的数据转移,与寻址方式相关指令。n 算术/逻辑运算指令49个
22、,包含算术运算、逻辑运算。n 程序流程控制指令17个,包含条件/无条件跳跃指令,循环、子程序呼叫。位运算指令17个,包含旗标、可位寻址数据的设定(1)或清除(0)。由于这些指令又可区分为位寻址、位运算、比特流程控制,因此本章稍后的介绍将并入前三项中讨论。数据搬移指令-寻址方式在8051指令集,数据搬移指令占有极为重要的地位,因为微处理机的程序执行过程中,必须经常在缓存器与内存之间做数据的搬移。这些数据搬移的方式,涉及到微处理机所提供的搬移数据的指令与作业模式,称为寻址法(Address Mode)。8051的寻址法可分为下列六种:n 立即寻址法(Immediate Addressing)。n
23、缓存器寻址法(Register Addressing)。n 直接寻址法(Direct Addressing)。n 间接寻址法(Indirect Addressing)。n 索引寻址法(Indexed Addressing)。n 位寻址法(Bit Addressing)。除了上述六种寻址方式之外,还有两种特殊的数据存取方式:堆栈内存存取,数据交换指令,在本节中都会做详细的介绍。此外,位寻址法将留在4-4节再做介绍。在数据的搬移指令主要提供缓存器与缓存器,以及缓存器与内存之间的数据搬移。搬移指令中出现的数据格式,缓存器(如累加器、工作缓存器.),与内存地址(绝对地址与相对地址),使用的符号都有明确
24、的定义,如表4-1所示。符 号说 明A累积器C进位旗标。Rn目前所选用的缓存器库中的缓存器R0R7Ri以缓存器R0或R1的内容当地址direct可直接寻址的字节地址DPTR数据指针缓存器#data8位常数,有10进位,16进位,2进位数bit可位寻址的位地址#data1616位常数rel相对地址Addr1111位目的地址。使用在跳越或呼叫指令中Addr1611位目的地址。使用在跳越或呼叫指令中表4-1:缓存器与内存地址的符号定义算术逻辑运算指令8051的算术逻辑运算指令,可区分为下列三种类型,分别说明如下:n 算术运算指令:加、减、乘、除、递增、递减运算。 n :逻辑运算指令:且、或、互斥或、
25、反相等运算。n 位旋转与交换指令:含进位与不含进位的位左旋、右旋,与高低位数据交换。汇编语言c51数据处理数字宣告算术累辑运算流程控制2.4 程序发展工具-Keil C51 Flash Magic 使用手册壹、Flash Magic操作说明1. 下载Flash Magic软件:ftp:/2. 安装Flash Magic软件,在桌面上找到后,执行Flash Magic。3. 执行Flash Magic 后,出现如图1 的开机画面。当图2 出现时,表示设定不正确,此时按下“取消”按钮。4. 请依照图3,重新设定。基本上,所有的执行步骤共分成1、2、3、4、5,也就是图1 中紫色的阿拉伯数字,这是执
26、行烧录的五大步骤,只要依序 设定和执行,即可将hex 档案烧录到芯片内。步骤1:。图1 开机画面2图2 未能连接出现的画面图3 设定P89C51RC2 的画面5. 选择要连接的COM Port (若COM Port 不在选择栏内,可直接输入连接Port位置,输入COM n 这个数值或n 即可,例如COM8 或8,如图5 所示。USB的设定相关信息,请看USB 提供的数据。) 6. 选择传输速率,由低速开始测试,最高传输速率是根据硬件所接振荡频率多寡来决定,如此可找出硬件最大传输速率,再依此速率作为传输速率的选择。基本上,第一次就选择9600 是适当的,如果不行再往下调整。 7. 选择芯片号码(
27、Chip),不同的芯片有不同的特性设定及传输设定,因此选择正确芯片号码是重要的。 8. 输入目标电路板的振荡器频率,也就是P89C51RC2 所接的振荡器频率。这里是以11.0592Hz 为例,必须填入实际的数值,不可以省略小数点部分,因为Flash Magic 会根据此值计算传输速率。 59. 如图9所示,选择Options和Advance Options后,检查图10,不设定(不勾选)High Speed Communications和Half-duplex Communications,如此设定可以不要管现在芯片是处于6 or 12 clocks。10. 勾选“Erase all Fla
28、sh+Security+Clks”表示清除所有内存、保密位、clocks位。勾选“Erase blocks used by Hex File”表示只清除目前烧录档案所存在的内存,一般只要作此动作即可。 11. 输入烧录档,如果烧录之前,档名未变,也不需要再次做这个动作,即使同一个HEX档已经更新,也不需要再输入一次。输入烧录档有两种方法,第一个是从开机画面步骤3的Browse按钮,第二个是从FileOpen。图712. Read Clocks:读取芯片机械周期,确认现在是处于6 or 12 clocks。图14 读取芯片机械周期图15 读取芯片机械周期为12 clock图16 读取芯片机械周期
29、为6 clock813. 芯片机械周期更改:P89C51RC2出厂机械周期预设为12周期,如果勾选 6clks/cycle,随便烧录一个档案后,就变成6周期。图17 勾选芯片机械周期为6 clocks/cycle914. 如果要在改回12 clks/cycle,则请勾选“Erase all Flash+Security+Clks”,不勾选 6 clks/cycle,随便烧录一个档案后,就变成12周期。要清除保密位,也可以用此方法。图18 勾选芯片机械周期为12 clocks/cycle1015. 要改回12 clks/cycle、no security、Blank等,还有一个方法,请进入“Er
30、aseFlash”,勾选“Erase all Flash+Security+Clks”,执行“Erase”后即完成。图19 进入“Erase Flash”图20 执行“Erase all Flash+Security+Clks”11贰、Flash Magic 简单操作说明1. 连接RS-232 或USB Cable,打开电源后,按一下重置(Reset)按钮。2. 切换电路板上“烧录开关”至“ISP”位置。3. 执行Flash Magic,第一次执行可能无法联机,因为设定选项未适当选择。4. 选择通讯连接端口COM。(如果接USB,请至装置管理员的连接端口查询)5. 选择鲍率9600。6. 选择
31、芯片号码(Chip):89C51RC2。7. 输入振荡器频率,例如:11.0592MHz。8. 依照Options Advanced Options communications , 不设定High SpeedCommunications 和Half-duplex Communications。9. 输入烧录档。10. 勾选开机画面中的“Erase blocks used by Hex File”。11. 按下Start 钮。开始烧录档案。12. 烧录完毕,切换“烧录开关”至“RUN”至位置,开始执行烧录程序。13. 此后只要重复步骤2、9、11、12 步骤即可。但是,如果档名未变,步骤9可以
32、省略,因此就只有重复步骤2、11、12 步骤,所以相当简单。12叁、注意事项1. P89C51RC2 内部含有外部SRAM 的内存(000000ff),内定是从内部存取,如果真的是要从接在外面SRAM 的IC 存取,必须先执行以下指令后才可以(适用2500AD 组译器)。超出地址范围的部分还是会从接在外面SRAM 的IC 存取。RAMCHK OFFORL 8EH,#02H或AUXR REG 8EHORG AUXR,#02H2. P89C51Rx2 在程序执行中,可以使用软件设定CPU 跑6 个clock 或12 个clock。3. 使用P89C51Rx2,CPU 跑6 个clock 时,外围功
33、能也可以使用12 个clock。4. P89C51RC2 可以设定一个机械周期为6 个clock,这个方法可以使用万用型烧录器或FlashMagic 规划某个位,而且也可以恢复回来。肆、P89C51RC2 特性1. 80C51中央处理单元。2. 芯片内含快闪式程序内存(Flash Program Memory),具有ISP(In-SystemProgramming)和IAP(In-Application Programming)的能力。3. 可经由UART界面下载,Boot ROM含有低阶Flash烧录例程。4. 可以被使用者应用程序烧录快闪式程序内存(IAP)。5. 经由万用型并列烧录器支持
34、6-clock/12-clock mode(在芯片抹除之后,内定clockmode是12-clock).6. 经由ISP可抹除和规划6-clock/12-clock mode Flash bit(FX2位)。7. 6-clock/12-clock mode 可藉特殊功能缓存器的位,在程序中规划。8. 当CPU跑6-clock mode时,外围(PCA,Timers,UART)可以跑6-clock或12-clockmode。9. 每个机械周期6个clock时,最高可接20MHz的振荡器,相当于40MHz的性能;每个机械周期12个clock时,最高可接33MHz的振荡器。1310. 7个中断源,4
35、层优先权。11. 4个8位I/O端口。12. 全双工加强式UART:- 图框错误侦测- 自动地址辨识13. 电源控制模式:- clock可以停止和恢复。- 闲置(Idle)。- 功率下降(Power Down)。14. 可规划时钟输出。15. 双DPTR。16. 低EMI(禁止ALE)。17. 可规划计数器数组(PCA):- 高速输出。- 比较/捕获。- 脉波宽调变(PWM)。- 看门狗定时器能力。18. 3个16位定时器/计数器。19. 内含32K bytes Flash memory,256 bytes 外部RAM。20. Once mode(On-chip Emulation)。21. power on flag。22. 硬件式看门狗定时器。23. 电源供应范围:- 商用:4.5V5.5V。- 工业用:4.75V5.25V。24. 温度范围:商用070,工业用-4085。25. 包装:PDIL40、PLCC44、LQFP44。