《Freescale8位单片机入门与实践》 第五章_codewarrior应用综述
- 格式:pdf
- 大小:1.05 MB
- 文档页数:22
Learn More:For more information about these Freescale products, please visit /8bit.Freescale ® and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2007Document Number: 8BITCIPRODMPFS REV 10The BDM Multilink is a cost-effective development tool for RS08, HCS08 and HCS12 MCUs, and provides real-time, in-circuit flash programming, emulation and debugging through the BDM interface. CodeWarrior Development Studio for RS08, HC(S)08 and HC(S)12, Special Edition is included along with the BDM Multilink.CodeWarrior Development Studio is a comprehensive special edition tool set for fast and easy MCU development. This tool suite provides the capabilities required by every engineer in the development cycle to exploit the capabilities of the RS08 and HC(S)08 architectures. Some of the features include project manager for up to 32 files, full-chip simulation, flash programming and ProcessorExpert ™ technology, which provides automatic C-code generation for most HC(S)08 on-chip peripherals.Evaluation Boards (EVB):Evaluation boards allow users to program and debug advanced application code with expanded I/O functionsa nd peripherals. HC(S)08 EVBs may include advancedf eatures including zero insertion force (ZIF) sockets, LCDs and large prototype areas. CodeWarrior DevelopmentS tudio for RS08, HC(S)08 and HC(S)12, Special Edition is included along with the board.USB Mini Board for Freescale’s Low-End 8-bit Microcontrollers (USBSPYDER08):T o aid fast and easy development for embedded systems engineers working on our low-end microcontrollers, Freescale has developed the cost-effective, high-performance USB debug tool—the USBSPYDER08. With the USBSPYDER08 you can spy into your application software, debug 8 leg 8-bit microcontrollers before you have your application board and kill bugs in your application software. This complete package delivers a cost-effective, yet powerful way to develop your products and speed time to market./Freescale/Freescale’s 8-bit Product Summary。
Freescale 8位单片机入门与实践第一章单片机概论(当前各公司单片机使用情况、发展情况、freescale单片机命名规则、开发步骤、CodeWarrior软件开发环境的安装要求和安装说明)第二章Freescale 8位单片机(特点、结构、存储器结构、CPU内寄存器,介绍MC68HC908QY4和GP32内部资源)第三章Freescale 8位单片机指令系统(汇编指令)(CodeWarrior使用、软件仿真)第四章复位、中断、系统配置、通用IO端口第五章CodeWarrior应用综述(在线调试、VisualTools的使用)第六章MC68HC908QY4在线编程开发系统(特点、硬件、监控方式、C语言)第七章定时器模块第八章AD、键盘中断模块(各个模块的使用及例程)第九章综合应用(C和汇编混合编程、程序,扩展应用)附录:1、存储器分配图2、寄存器及中断矢量表3、MC68HC08指令集4、MC68HC908QY4开发系统原理图参考书Motorola(Freescale)微控制器MC68HC08原理及其嵌入式应用刘慧银等编著清华大学出版社嵌入式应用技术基础教程王宜怀刘晓升编著清华大学出版社单片机嵌入式应用的在线开发方法邵贝贝编著清华大学出版社mc68hc908qy4sm_simplified_Chinese.pdfMC68HC908QY4.pdfMC68HC908GP32.pdf前言飞思卡尔(前身为摩托罗拉公司半导体产品事业部)在微电子产品领域拥有50年的悠久历史,为全球的汽车、消费、工业、网络和无线市场生产半导体产品。
飞思卡尔总部位于德克萨斯州的奥斯汀,在全球超过25个国家拥有设计、生产和销售运营部门。
飞思卡尔是众多市场领域中的领导者,是世界上最大的微控制器类集成电路供应商,随着国内市场投资的增加,其产品得到越来越多的认同,尤其是移动通信、汽车电子、工业控制等环境恶劣的场所,其应用越多,因为它的产品抗干扰性能很强。
CodeWarrior操作步骤建立Workspace1.打开CodeWarrior2.在目录下建立Workspace(注意工程不要建在桌面,在此为示范请勿效仿)3.建立新项目4.输入项目名称→Next5.选择您使用的芯片型号→Next6.选择编译器类型7.选择编译语言8.选择是否使用PE工具和视图工具9.代码优化选择10.配置完成,点击Finish工程各项配置1. 时钟配置。
用户根据自己需求选择内外时钟及时钟大小2. 功能模块配置。
用户根据自己需求选择功能模块。
eg.IO 配置3.4. 各个功能模块配置好后,进行程序编写5. 主函数在ProcessorExperience.c 中6. 事件和中断等处理函数编写在Events.c 中Main 函数中的for 或while 循环从此出开始写,不然在更新PE 配置是程序被擦除触摸按键编写1.先将触摸按键库的5个文件添加进工程项目Sources中2.将触摸库添加到工程项目中。
右键点击Properties,进行一下设置。
3.更改触摸库TSI_config.c文件设置第一步:根据项目需要增加和减少使用到的TSI 通道。
在TSI_config.c文件中,TSI_TOUCH _DELTA[MAX_TSI_NUM]数组定义了每个按键出发的阈值,分别对应TSI 物理通道的0-15,当某个按键触摸前后的差值大于该Delta 值时,就会触发对应的通道事件。
如果不需要使用某个通道时,可以直接把对应的Delta 值配置为0,那么在代码中该通道就不会被Initial, calibrate 和scan,如果重新启用,只需Delta 值配置为非0 即可。
第二步:配置按键号与物理通道之间的映射关系。
如下二维数组中,左侧TSI_x是实际的TSI 物理通道,右侧KEY_1,2…N 对应着按键号0~N-1,这个按键号和TSI_main函数的返回值touched_key相对应,0xFF 表示未启用。
单元一(1)HC08单片机介绍及Codewarrior使用一、单片机基本概念1.何谓单片机一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。
在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。
而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如A/D,D/A等。
PC中的CPU一块就要卖几百块钱,这么多东西做在一起,是不是很贵?说这块芯片体积是不是很大呢?恰恰相反,单片机的价格并不高,从几元人民币到几十元人民币,体积也不大,一般用40脚封装,当然功能多一些单片机也有引脚比较多的,如68,84,100引脚,功能少的10多个或20多个引脚,有的甚至只有8个引脚。
为什么会这样呢?因为功能有强弱。
比如,市场上面有的组合音响一套才卖几百块钱,可是有的一台功放机就要卖好几千。
另外这种芯片的生产量很大,技术也很成熟,如51系列的单片机已经做了十几年,所以价格就很低了。
单片机的功能肯定不强,干吗要学它呢?实际工作中并不是任何需要计算机的场合都要求计算机有很高的性能,一个控制电冰箱温度的计算机难道要用PIII?应用的关键是看是否够用,是否有很好的性能价格比。
所以8051出来十多年,依然没有被淘汰,还在不断的发展中。
2.常用的单片机(1)51系列51系列单片机是Intel公司在20世纪80年代初研制出来的,很快就在我国得到推广和广泛的应用。
20多年来,51系列单片机在教学、工业控制、仪器仪表和信息通信中发挥着重要的作用,并在交通、航运和家用电器等领域取得了大量的应用成果。
20世纪80年代中期以后,Intel公司以专利转让的形式把8051内核给了许多半导体厂家,如Arotel、Philps、Ananog Devlces和Dallas等。
Codewarrior 使用指南飞思卡尔 HC08/HCS12 系列微控制器开发环境 - Codewarrior 使用指南(草稿)tyf01@ 2005 年 10 月仅供学习参考,请勿用于商业目的1Codewarrior 使用指南第一章 Codewarrior IDE 概述在软件开发过程中,通常需要经过以下几个步骤: • 新建:创建新项目,源文件 • 编辑:按照一定的规则编辑源代码,注释 • 编译:将源代码编译成机器码,同时还会检查语法错误和进行编译优化 • 链接:将编译后的独立的模块链接成一个二进制可执行文件 • 调试:对软件进行测试并发现错误 在软件开发中,每个过程都会用到不同的工具。
如果每个工具都单独存在,这样就 会给开发人员带来很多不便。
所以很多公司为开发人员提供了集成开发环境。
开发 人员可以在同一个工具或平台上完成以上全部的工作。
Codewarrior 是 Metrowerks 公司开发的软件集成开发环境(以后简称 IDE)。
飞思 卡尔所有系列的微控制器都可以在 codewarrior IDE 下进行软件开发。
Codewarrior IDE 特点Codewarrior IDE 为软件开发提供了一系列的工具,其中包括: 项目管理器:为软件开发人员管理上层的文件;将项目进行分组管理,比如文件或 目标系统;跟踪状态信息,比如修改日期;决定编译顺序或每次编译应包括哪些文 件;与插件一起提供版本控制功能 编辑器:利用颜色来区分不同的关键字;允许用户利用颜色机制自定义关键字;自 动检查括号范围;利用菜单在不同的文件或函数中导航 搜索器:搜索一个特定的字符串;用特定的字符串代替查找到的字符串;允许使用 常规表达式;提供文件比较功能; 源代码浏览器:标志符(变量名称,函数名称)数据库;利用数据库来对代码快速 定位;对所有的标志符连接到用到它的代码中; 编译系统:编译器将源代码编译成机器码;链接器将目标文件链接成可执行文件 调试器:利用标志符数据库进行源代码级调试;支持各种标志符数据库,比如: codeview, DWARF, SYM 等Codewarrior IDE 优点•交叉平台开发2Codewarrior 使用指南 开发人员可以在不同的操作系统下使用 codewarrior IDE 来开发自己的软 件。
第五章CodeWarrior应用综述(在线调试、VisualTools的使用、专家系统可选学)修改图形编号5.1 在线编程注意:实验电路板电源开关断开。
JP2的3、4两个端子短接。
1、确立目标在“True-Time Simulator & Real-Time Debug”工具界面,点击:Component->Set Target 在Processor栏,选择HC08,在Target栏,选择P&E Target Interface,然后点击OK,如图5-1所示图5-1 确立目标最后关闭“True-Time Simulator & Real-Time Debug”工具界面,在主界面中重新按下“Debug”,进入“True-Time Simulator & Real-Time Debug”调试。
2、在线调试重新进入后,PEDebug->Mode:Full Chip Simulation->In-Circuit ……如图5-2所示。
图5-2 调试界面系统将自动弹出如下的界面,如图5-3所示。
图5-3 连接界面点击Close Port。
出现界面如图5-4。
图5-4 关闭串口界面闭合目标板电源开关,给目标板供电,最后点击Contact target with these settings…。
出现图5-5界面,最后点击YES,程序就下载到实验板上了。
注:如果此时不出现图5-19,断开目标板电源,再次点击图5-18中Refresh List,然后再给目标板供电。
图5-5 查询是否擦除、下载程序然后在DEBUG界面上进行调试,如图5-6所示。
图5-6 DEBUG界面点击上图所示:运行(run)程序;单步运行(single step)程序;单步运行(step into)程序;跳出运行(step out)函数;跟踪(trace)程序;程序停止(halt)运行;目标板复位(reset target)。
可以通过图5-7中的界面随时检查寄存器、RAM中的内容,便于检查出程序中的错误。
图5-7调试界面5.2 利用Visualizationtool进行脱机仿真注意:在进行脱机仿真之前,一定要修改中断矢量地址。
在线编程调试或实时运行状态参考表2-3转向矢量表,表中详细地写出了每个中断的地址。
仿真运行状态参考表2-2中断矢量表。
比如在线编程调试或实时运行状态使用复位向量定义如下:ORG $FDFD ;复位向量地址JMP Entry当使用脱机仿真时,必须把上面两句作如下修改:ORG $FFFE ;复位向量地址DC.W Entry其他中断向量参考该修改进行。
在进行在线调试和脱机仿真相结合的时候,不同调试状态下中断进行上面的交替修改。
程序编译通过之后,系统将自动进入Debug调试界面(如图5-8所示),在这个界面里面我们既可以直接写入程序调试,也可以利用单步运行随时检查寄存器的内容,便于寻找程序中的错误,还可以利用Visualizationtool进行脱机仿真。
下边将重点讲述利用Visualizationtool进行脱机仿真。
图5-8 DEBUG界面在“True-Time Simulator & Real-Time Debug”工具界面,点击:Component->Set Target 在Processor栏,选择HC08,在Target栏,选择Simulator Target Interface,然后点击OK,如图5-9所示。
图5-9确立目标界面设置完成,关闭“True-Time Simulator & Real-Time Debug”工具,在主界面中重新按下“Debug”,进入“True-Time Simulator & Real-Time Debug”调试界面,点击Simulater->Reset,如图5-10。
图5-10 仿真状态复位选择Component->Open…,如图5-11。
图5-11将会出现如下的界面,如图5-12所示图5-12 选择Visualizationtool界面点击OK,进入Visualizationtool界面,如图5-13所示。
图5-13 Visualizationtool界面如上图所示在空白处点击右键,选择要添加的元件。
由于该示例事要做一个跑马灯的演示实验,所以选择“7 Segment Display”。
在空白处点击右键,选择Properties,如图5-14所示。
设置:Refresh Mode : PeriodicalRefresh Time (100ms):1或者选择:CPU cycles。
设置完成,关闭窗口。
图5-14Visualizationtool属性界面双击7 Segment Display,如图5-15所示设置:Kind of Port : MemoryPort to Display : 0x01设置完毕,关闭窗口。
图5-15 七段数码管属性界面点击右键,取消选择Edit Mode,在“True-Time Simulator & Real-Time Debug”调试界面,按下Sart/Continue,运行程序,在本示例中,用7 Segment Display来演示跑马灯实验,可以看到七段数码的每一段在交替闪烁,如图5-16。
图5-16 仿真界面点击保存,可以将这个Visualizationtool的工程保存下来,下次运行的时候只要用Display Mode,然后运行程序就可以了。
保存配置:File\Save Configuration,如图5-17所示。
图5-17 保存配置界面运行程序,可以按照图5-6中运行或单步执行程序,可以看到仿真状态下程序运行情况。
5.3 Processor Expert应用5.3.1创建工程本工程使用一个电位器和一个数码显示管,电位器用于表示模拟信号,如:罐里的液面位置、温度等,数码显用于显示其值。
下面我们将一步一步演示创建工程的过程。
启动CodeWarrior :Start > Programs > Metrowerks CodeWarrior > CW08 V3.0 > CodeWarrior IDE在CodeWarrior界面中,选择菜单File>New,如图5-18所示。
图5-18 开始创建在Project栏里选择HC(S)08 New Project WizardProject Name中填入:MyQY4如果需要更改存入目录请点Location栏的Set按钮按下确定,进入一下步,如图5-19所示图5-19新建工程选择CPU类型,找到MC68HC908QY4,点击选取,按“下一步”,如图5-20所示。
图5-20 选择芯片类型选择以C语言为开发语言,如图5-21所示。
图5-21 选择C语言使用Processor Expert,如图5-22所示。
图5-22 使用Processor Expert 不使用PC-Lint™,如图5-23所示。
图5-23 不使用PC-Lint™ 选择标准启动代码,如图5-24所示。
图5-24 选择标准启动代码不需要浮点支持,如图5-25所示。
图5-25不需要浮点支持内存使用模式选择Tiny,如图5-26所示图5-26 选择内存使用模式连接方式,使用缺省值,如图5-27所示。
图5-27 选择连接方式点击“完成”,如图5-28所示。
图5-28 创建完成界面在左边的导航栏里选择Processor Expert选择Beans,点右键,选择“Add Bean(s)…”,如图5-29所示。
图5-29 内核选择选取并双击ADC,Processor Expert导航栏里Beans中增加了AD1:ADC选取并双击BitsIO,Processor Expert导航栏里Beans中增加了Bits1:BitsIO 选取并双击BitIO,Processor Expert导航栏里Beans中增加了Bit1:BitIO选取并双击BitIO,Processor Expert导航栏里Beans中增加了Bit2:BitIO编辑AD1的属性,如图5-30Interrupt service:disabledConversion Time 21.25 uS图5-31AD1属性编辑设置Measure和GetValue为generatecode.其它均为don’t generate code.如图5-31所示编辑Bits1的属性,如图5-32。
图5-30 AD1属性编辑Bean name:DispNumPins:7Pin0:PTB0Pin1:PTB1Pin2:PTB2Pin3:PTB3Pin4:PTB4Pin5:PTB5Pin6:PTB6图5-32 Bits1属性编辑Pull resistor:No Pull resistorDirection:Output编辑Bit1的属性:Bean name:BitPta4Pin for IO:PTA4_OSC2_AD2_KBI4Pull resistor:No Pull resistorDirection:Output编辑Bit2的属性:Bean name:BitPtb7Pin for IO:PTB7Pull resistor:No Pull resistorDirection:Output图5-33 Bits1属性编辑分别进入其Methods页设置PutVal generate code.其它均为don’t generate code.如图5-33所示选择菜单Project>Make产生所需文件,如图5-34所示打开“MyQY6.c”可以看到主程序:Main()函数void main(void){PE_low_level_init();for(;;){ }}打开“MyQY6.c”可以看到主程序:Main()函数void main(void){PE_low_level_init(); 图5-34 编译界面for(;;){ }}现在我们编写应用程序代码:Const char decode0_9[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; char disp[4];char disp_bit;static byte myValues[1]; /* Number of channels */void display(char dbit) {char i;DispNum_PutVal(0);BitPtb7_PutVal(dbit/2);BitPta4_PutVal(dbit&1);DispNum_PutVal(disp[dbit]);for(i=255;i=0;i--);}void main(void){byte err;PE_low_level_init();for(;;){disp_bit++;disp_bit&=3;display(disp_bit);err = AD1_Measure(TRUE);err = AD1_GetValue((byte *)myValues);disp[3]=decode0_9[myValues[0] % 10];disp[2]=decode0_9[(myValues[0]/10) % 10];disp[1]=decode0_9[myValues[0]/100];}}5.3.2编译调试接下来,点“Make”编译。