《Freescale8位单片机入门与实践》 第五章_codewarrior应用综述
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使用指南
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帮助文件
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位单片机入门与实践
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使用介绍
的在线调试功能,可实现程序下载,单步/全速运行,可以设若干个断点,可 以观察和修改任意寄存器或 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与汇编基础
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使用指南
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操作步骤建立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)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使用指南
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 来开发自己的软 件。
Freescale Codewarrior 芯片烧写指南
Slide 20
TM
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product
创建新工程 1
1、创建新工程
2、选择HCS12 New Project Wizard 3、输入工程名
Slide 3
TM
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product
模拟调试器: 界面
Slide 14
TM
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. 2005.
8、选择是否用浮点运算
创建新工程 4
9、选择存储器类型
Slide 6
TM
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. 2005.
(整理)飞思卡尔8位单片机MC9S08JM60开发板实践教程
第一章搭建实验环境系统时钟设置#include "App\Include\App.h"#ifndef _MCG_C#define _MCG_C//oscillator 12MHZ 倍频为24MHZ()先8分频后16倍频void S_MCGInit(void){/* the MCG is default set to FEI mode, it should be change to FBE mode*//************************************************************************** ***********MCGC2[7:6] BDIV总线频率分频因子–选择由MCGC1寄存器中CLKS位决定的时钟源的分频。
这控制总线频率。
00 编码0 –时钟1分频01 编码1 –时钟2分频(复位后默认)10 编码2 –时钟4分频11 编码3 –时钟8分频[5] RANGE频率范围选择–选择外部振荡器或者外部时钟源的频率范围。
1 选择1MHz到16MHz外部振荡器的频率范围。
(1MHz到40MHz的外部时钟电源)的高频率范围0 选择32kHz到100kHz外部振荡器的频率范围。
(32kHz到1MHz的外部时钟电源)的低频率范围[4] HGO高增益振荡器选择–控制外部振荡器操作模式。
1 配置外部振荡器为高增益运行0 配置外部振荡器为低功耗运行[3] LP低功耗选择–控制在忽略模式中FLL(或者PLL)是否为无效1 FLL(或PLL)在忽略模式(低功耗)中为无效的。
0 FLL(或PLL)在忽略模式中为无效的。
[2] EREFS外部参考时钟选择–为外部参考选择时钟源1 选择振荡器0 选择外部时钟源[1] ERCLKEN外部参考时钟使能–使能外部参考时钟作为MCGERCLK1 MCGERCLK激活0 MCGERCLK 无效[0] EREFSTEN外部参考时钟停止使能MCGC2 0b0011 0110 激发外部时钟(晶振)(没有使能)*************************************************************************** ***********/MCGC2=MCGC2_RANGE_MASK|MCGC2_HGO_MASK|MCGC2_EREFS_MASK|MCGC2_ERCLK EN_MASK;while(!MCGSC_OSCINIT);//MCGSC寄存器中OSCINIT(第1位)为1,表示由EREFS位选择的晶振被初始化。
飞思卡尔单片机应用实验指导书
飞思卡尔单片机应用实验指导书机械工程学院机械电子工程教研室实验一飞思卡尔嵌入式实验系统入门一GPIO控制实验一、头验目的:熟悉CodeWarrior集成开发环境及飞思卡尔嵌入式实验开发系统掌握AW60GPIO吉构及控制方法掌握CodeWarrior工程结构及创建汇编工程熟悉汇编指令及应用汇编语言编程方法二、实验内容1.运用CodeWarrior新建工程,进行工程程序编辑、编译、下载、调试2.利用飞思卡尔嵌入式实验开发系统根据实验需要进行硬件连接3.根据连接在PTDH上的两个拨动开关的状态,控制接中PTB口上的八个LED&在以下四种不同状态:八个LE而一灭循环;四个灯交替亮一灭;一个LE9移流水灯;两个LED&移流水灯。
实验接线原理图导线持括点*5V沏门阻挑JJ33JD J3图1-1 I/O 口实验接线图三、实验步骤1 .将飞思卡尔嵌入式实验开发系统实验箱接上电源,写入器 BDMg 头插接入核心卡BD 瞰,US 以接入 PCM USBq 。
2 . PCM 上启动CodeWarrior ,新建工程LED.mcp (注意设置工程保存路径)3 .观察工程文件结构,查看相应文件。
4 .在main.asm 中编辑工程主文件5 .编辑相关子程序6 .编译,如果有错误修改,直至编译通过7 .链接、下载,调试观察 LED 丁现象四、思考题1 . CodeWarrior 建立工程有什么工程框架文件,这些文件的作用?2 .嵌入式开发系统有哪些主要元器件?3 .如果采用模块化设计方法,将系统初始化、V VccPTB 口 PTD0 PTD1 PTD2 PTD3 PTD4 PTD5 PTD6 PTD7PTD 口导线接插点拨码开关 口 GNDLEDT 控制、延时程序等各自形成文件,导线接插点PTB0 PTB1 PTB2 PTB3 PTB4 PTB5 PTB6 PTB7工程应用这些文件时应注意什么?4.上拉电阻和下拉电阻分内置的和外接的,内置的电阻一般只有几K或十几K,外接电阻可以是几M十几Mg至更大。
《Freescale8位单片机入门与实践》 第五章_codewarrior应用综述
第五章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)。
单元一(1)HC08单片机介绍及Codewarrior使用
单元一(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入门指导
2 创建一个工程
下面 以 M68908GP32 的 C 语言 为 例 简 单 介 绍 在 CodeWarrior for Microcontrollers v6.1 集成开发环境中创建工程的方法,在其他版本中创建工程的方法基本相同。 1、打开 CodeWarrior 集成开发环境 安装 CodeWarrior 后点 击 桌 面 快 捷 方 式 图 标 或 选 择 “ 开始 > 程序 > Freescale CodeWarrior > CW for Microcontrollers V6.1 > CodeWarrior IDE” 打开 CodeWarrior 集成开发环境,如图 1-1 所示。
第4 页 共27页
CodeWarrior IDE 入门指导
图 1-3
微控制器新工程建立界面
3、点击下一步进入工程名称、存放路径、开发语言设置界面,输入工程名称、指定工程存 放路径、 选择相应的开发语言(可多选) , 如图 1- 4 所示。 图中工程名称为 “ Demo01.mcp”, 存放路径在“E\My Documents ”,选择的开发语言为 C,当然你也可以根据需要选择 “绝对 汇编(Absolute assembly) 、重定位汇编( Relocatable assembly )或 C++ ”作为开发语言。
第6 页 共27页
CodeWarrior IDE 入门指导
图 1-7
C/C++ 设置界面
7、点击下一步进入 PC-lint (TM)设置界面,如图 1-8 所示。 PC-lint (TM)是 Gimpel 软 件公司开发的程序调试工具,图中选择 “No”。
图 1-8
PC-lint (TM)设置界面
1.Freescale CodeWarrior 简要使用说明
Freescale CodeWarrior 使用说明在智能车竞赛中,我们主要使用Freescale公司提供的CodeWarrior软件开发环境对单片机进行编程,在应用中,我们使用的是CodeWarrior4.7或CodeWarrior5.0的版本,在这里以CodeWarrior5.0为例,给大家说明CodeWarrior软件的一些使用说明。
点击桌面或开始菜单中的CodeWarrior IDE的图标,就可以进入CodeWarrior集成开发环境,具体结果如图一所示。
图一我们点击Startup中的第一个选项”Create New Project”,来新建工程。
之后进入向导菜单,如图二所示图二智能车使用的MC9S12XS128单片机作为主控芯片,所以我们在器件中选择相应的芯片,同时,在智能车校赛过程中,大家都是使用学校提供的BDM作为下载区,所以在Connections 中选择TBDML。
然后点击下一步。
下一步界面如图三所示图三在这一界面中,我们首先选择编程的语言,我们主要使用C语言进行编程,所以我们需要选中C的复选框,同时我们还需要在project name和location中对我们工程的名称和路径进行设定,这里我们给出的例子的工程名为SMARTCAR,路径在D盘根目录,这里每个人都可以根据喜好自由设定,然后点击下一步。
之后的界面如图四所示图四在这里,我们可以将一些已经编写好的文件纳入到工程中,这里由于我们是建立一个空白的全新的工程,所以,我们跳过此步,直接点击下一步。
之后的界面如图五所示图五这里我们不进行修改,直接点击下一步。
下一步菜单如图六所示,这里我们对C或C++语言进行一些设置。
图六在实际使用中,我们主要对第三项”Select the floating point format supported”进行修改,默认选择了”None”,这样我们在编程中就无法使用浮点数”float”,这是非常不方便的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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”编译。