《Freescale8位单片机入门与实践》 第五章_codewarrior应用综述

合集下载

freescale飞思卡尔8位单片机选型指南

freescale飞思卡尔8位单片机选型指南

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。

codewarrior使用指南

codewarrior使用指南

Hardware and software integration
•Hardware and software integration
Without simulation, developers risk of getting H/W and S/W problems mixed up (none has been qualified yet), Developers have difficulties to compare a working case (simulation) with a non-working case (hardware target), Easily switch between targets for comparison of results Data Visualization and I/O stimulation (simulation and targets) Flash programming support RTOS awareness (e.g. OSEK) Foreign target capability through API
Hardware specific code
•Hardware specific code generation
Developers have to understand the details of peripheral registers, bit fields, setup and access sequences Trend is for more and complex peripherals, with more registers, increasing the effort of writing accurate code for each peripheral of the derivative. But there is no added value from a project stand point, all applications need some from of code to perform the function

Codewarrior帮助文件

Codewarrior帮助文件
7. C1019: Incompatible type to previous declaration 与先前的定义不相符 Description The specified identifier was already declared 要定义的标志符在前面已经被定义过了 Example unsigned char i; unsigned char i(); Tips Choose another name for the identifier of the second object. 选择另外一个标志符重新定义,如例 unsigned char i; unsigned char j();
8. C1025: ',' expected before '...' 缺少“,” Description An open parameter list was declared without a ‘,’ before the ‘...’. 函数形参列表中,没有用“,”分割 Example void foo(unsigned char a ...); Tips Insert a ‘,’ before the ‘...’. 形参之间插入“,”
15. C1800: Implicit parameter-declaration (missing prototype) for ‘<FuncName>’错 误的函数调用方式
[ERROR] Description A function was called without its prototype being declared before.
10. C1096: Illegal index value 数组元素个数定义错误 [ERROR] Description The index value of an array declaration was equal or less than 0. 数字元素的个数在定义时小于等于 0 Example unsigned char i[0]; // error; // for 16bit unsigned char this is 0x8CA0 or -29536 ! static char dct_data[400*90]; Tips The index value must be greater than 0. If the index value is a calculated one, use a ‘u’ to make the calculation unsigned (e.g. 400*90u). 数组定义时,数组的个数要大于零,若元素个数为一个计算所得的数字,则最好在后面加 u 表示为无符号数。

Freescale8位单片机入门与实践

Freescale8位单片机入门与实践

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个国家拥有设计、生产和销售运营部门。

飞思卡尔是众多市场领域中的领导者,是世界上最大的微控制器类集成电路供应商,随着国内市场投资的增加,其产品得到越来越多的认同,尤其是移动通信、汽车电子、工业控制等环境恶劣的场所,其应用越多,因为它的产品抗干扰性能很强。

C语言重点语法及CodeWarrior使用介绍

C语言重点语法及CodeWarrior使用介绍
硬件调试。实际就是我们经常说的 BDM 调试。BDM 调试是基于芯片本身内含
的在线调试功能,可实现程序下载,单步/全速运行,可以设若干个断点,可 以观察和修改任意寄存器或 RAM 内存空间。BDM 几乎是开发飞思卡尔 8 位 (9S08 和 RS08 系列)、16 位(9S12 系列)和 32 位(Coldfire V1 系列)单片
快速实现芯片初始化代码的自动生成工 作,而且 PE 还提供了大量的软件库可供 用户开发时嵌入或调用。因为 8 位单片机
结构和功能相对简单,实现的控制项目复
杂度也不是很高,故一般情况下 8 位机开 发我们都不需要 PE 的介入,自己直接编
图 1-6
写程序代码即可。关于 PE 的详细介绍将
耗费大量的文字,这里按下不提。所以在 图 1-6 的对话框中选择“None”,并直接 按“Next”进入下一步。
如果你以前编写了很多代码文件现在想重 复利用,那么可以通过图 1-5 对话框左面
的文件树选择对应的文件,按中间的
“ Add ” 逐 个 添 加 到 右 侧 的 “ Project Files ” 列 表 中 。 若 加 错 了 就 用 “Remove”把列表中的文件移除。注意 此列表下方的两个选项:“Copy files to project”选择是否将所选的文件拷贝到现
这是项目建立模板的最后一步。在这一步
你可以决定有关 C/C++的一些编译和代码 生成模式,见图 1-7。 启动代码选择。所有 C 编译器会自动
生成一些启动代码。单片机复位后的
指令运行将首先执行这些启动代码, 然后再进入到你自己的程序模块 main
函数。这些启动代码主要完成堆栈指
针初始化、全局和静态变量自动清零

飞思卡尔8位单片机MC9S08第5章 HC08 CPU与汇编基础

飞思卡尔8位单片机MC9S08第5章  HC08 CPU与汇编基础
LDA ,X ;从变址寄存器HX指向的存储器单元中取数到累加器A中 COM ,X ;将变址寄存器HX指向的存储单元数据取反
5.2 寻址方式
(6)八位偏移量变址方式(IX1,Indexed,8-bit offset addressing mode)
8位偏移量变址是双字节指令,CPU把变址寄存器HX的内容和指令 第二个字节内容相加,其和便是操作数地址。下述指令属于IX1寻址方 式。
5.1 HC08 CPU基本构成
(4)程序计数器PC(Program Counter)
程序计数器PC也是16位的,可寻址范围达64KB。PC存放下一 条指令的地址,在执行转移指令时存放转移地址,在执行中断指令时 存放中断子程序入口地址。复位时,程序计数器PC装入地址$FFFE 和$FFFF中的内容。一般地,地址$FFFE和$FFFF中的内容是复位的 入口地址,这样,复位后,程序能够从复位入口地址开始执行程序。 复位入口地址也称复位向量地址或复位矢量地址(Reset vector address),意味着复位状态过后,PC指向该处,从这里执行程序。
(9)存储器:直接地址—直接地址寻址方式(DD, Direct to direct addressing Mode)
在存储器的四种数据直接传送的寻址方式中,欲传送的数据直接从 源存储单元送向目的存储单元,勿需寄存器中转。在本寻址方式中,源 地址与目标地址由指令直接给出。只有一条指令为DD寻址方式:
CBEQ addr8,X+,rel ;若A=(HX+addr8)则转移,HX+1→HX
(2)立即寻址方式(IMM,Immediate addressing mode)
立即寻址,是在指令中直接给出操作数。这种指令是双字节指令, 第一个字节是操作码,第二个字节是参与操作的立即数。立即寻址指令 通常是对立即数和累加器内容或变址寄存器内进行操作。下述指令属于 IMM寻址方式。

codewarrior使用指南

codewarrior使用指南
CodeWarrior 快速入门
1、安装 CodeWarrior 软件 安装 CodeWarrior 所需要的电脑的硬件资源如下,目前一般的电脑都可以满足这个要求。
16 位单片机的编程环境:CodeWarrior V4.6,V4.7,V5.0,V5.1 CodeWarrior V5.1 的下载链接: /lgfiles/devsuites/HC12/CW_HC12_v5.1_SPECIAL.exe 软件安装很简单,和其它软件的安装过程是一样的,按照默认的设置直接点击“下一步” 即可完成安装。 2、创建新工程(单片机以以 MC9S12XS128 为例,调试工具以 BDM 为例) 1) 点 击电 脑 左下 角 的 开始 菜 单, 开 始 >所 有 程 序>Freescale CodeWarrior> CodeWarrior development studio for S12(X) V5.0> CodeWarriorIDE。IDE 开始运行,出现下图 1 所示的窗口。
图11
图12 接下来给核心板供电,核心板的供电电压是 5V。有的 BDM 有 5V 供电模式,这个时候 直接用 BDM 供电就可以。 2)在新建的工程中键入如下代码 #include <hidef.h> #include "derivative.h" #define LEDCPU PORTK_PK4 #define LEDCPU_dir DDRK_DDRK4 void delay(void) { unsigned int i; for(i=0;i<50000;i++); } void main(void) { LEDCPU_dir=1; EnableInterrupts;
图8

CodeWarrior操作步骤

CodeWarrior操作步骤

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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第五章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”编译。

相关文档
最新文档