飞思卡尔QY4II实验系统使用手册_第1页
飞思卡尔QY4II实验系统使用手册_第2页
飞思卡尔QY4II实验系统使用手册_第3页
飞思卡尔QY4II实验系统使用手册_第4页
飞思卡尔QY4II实验系统使用手册_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录目录第一章第一章 实验系统概述实验系统概述.11.1 概述.11.2 总体说明.1第二章第二章 mc68hc908qy4 概述概述.32.1 mc68hc908qy4 mcu 的性能概述.32.2 内部结构简图.42.3 引脚功能.52.4 存储空间分配图.62.5 中断向量表.8第三章第三章 qy4ii 型硬件电路原理型硬件电路原理.103.1 显示部分.103.2 键盘输入部分.113.3 模拟量输入.123.4 模式选择.123.5pwm 脉宽输出.133.6jp6 串行通信.133.7jp1 管脚定义.14第四章第四章 codewarrior 使用入门使用入门.154.1 环境配置

2、.154.2 codewarrior安装说明.154.3 打开工程.164.4 创建项目.184.5 编译连接.224.6 在线编程.234.7 利用 visualizationtool进行脱机仿真.30第五章第五章 c 语言调用汇编的语法规则语言调用汇编的语法规则.35第六章第六章 processor expert 应用应用.386.1 创建工程.386.2 编译调试.476.3 在线编程.501第一章第一章 实验系统概述实验系统概述1.11.1 概述概述天津工业大学 freescalemcu/dsp 研发中心开发的 mc68hc908qy4 实验系统实现了实验板与 codewarrior

3、的完美结合,它提供了一个好的学习环境,从而达到快速入门和提高的效果。该板融合了 pe 公司的 ics 功能,通过按键一次,可以实现上位机和目标板的连接。qy4 本身是 16 脚的芯片,4kbflash,128 字节 ram,具有定时器通道、键盘中断、ad 通道等接口,该系统板扩展了 4 个 led 数码管和 6 个按键,模拟量输入、pwm 输出等,功能完善,我们开发的电路板在调试状态 13 个端口留给用户使用(pta0 被占用),运行状态 14 个端口均可以给用户使用。mc68hc908qy4 系统可以直接和 codewarrior 相连,下载程序,在线单步运行、断点调试、连续运行、修改寄存器

4、(包括 pc)和存储单元等特点,可以很方便地进行教学,适于大学本科及大专、高职的学生作为入门教学系统。该系统比 s08 系统便宜很多,该电路板可以做到人手一块,既可以作为单片机入门教学,也可以作为大学生电子实践制作的首选。1.21.2 总体说明总体说明实验板硬件部分主要由 mc68hc908qy4 芯片及外围电路、led 显示、键盘、模拟量输入及 pwm 脉宽调制模块等部分组成,通过 codewarrior 完成芯片程序的写入、运行、断点调试、脱机仿真等功能。本实验板的突出优点是可以根据需要进行模式选择,即用户模式或用户监控模式,并可以利用codewarrior 来实现程序的单步运行、断点调试

5、、脱机仿真等功能。整个电路板实物如下图 1-1 所示。注意:注意:usb 端口仅仅作为电源输入端口,无其他功能;串行通信线必须使端口仅仅作为电源输入端口,无其他功能;串行通信线必须使用标准的用标准的 9 线连接方式。线连接方式。2图 1-1 mc68hc908qy4ii 实验板3第二章第二章 mc68hc908qy4 概述概述2.12.1 mc68hc908qy4mc68hc908qy4 mcumcu 的性能概述的性能概述mc68hc908qy4 是 mc68hc08 微控制器系列中的产品,mc68hc08 是一种高性能的 8 位单片机系列,具有速度快、功能强、价格低等特点。采用高性能的 mc

6、68hc08 中央处理器与 mc68hc05 指令代码完全向上兼容5v 或 3v 的工作电压(vdd)5v 工作电压时内部总线频率最高为 8mhz,3v 时内部总线频率最高为 4mhz8 位字节可调整的内置振荡器,可产生 3.2mhz 的总线频率,可调范围5%由 stop 状态可以自动唤醒通过 config 寄存器可以对 mcu 进行配置,包括低电压禁止(lvi)设置具有片内 flash,具有 flash 存储器在线编程功能和保密功能(flash 编程/擦除的电压由芯片内部电荷泵产生) mc68hc908qy4 的 flash 的存储器大小为 4096 字节128 字节的片内 ram双通道 1

7、6 位定时器模块(tim)mc68hc908qy4 具有 4 路 8 位模数转换器(adc)13 个双向 i/o 口,一个单向输入口: 所有 i/o 口都具有很强的吸电流和放电流能力 所有 i/o 口内部上拉电阻6 位键盘中断,具有唤醒的特点低电压禁止模块(lvi)具有软件可选的特点,由 config 寄存器进行设置系统保护特性:设计算机工作正常(cop)复位低电压检测复位非法指令码检测复位非法地址检测复位带有内部上拉的外部异步中断引脚(),此引脚与通用输入引脚复用irq复位引脚(),与通用 i/o 复用rst上电复位和引脚的内部上拉可以降低外围路的复杂性rstirq存储器映射 i/o 寄存器

8、wait 和 stop 低功耗模式mc68hc908qy4 具有以下封装:16 引脚 pdip、soic、tssop42.22.2 内部结构简图内部结构简图mc68hc908qy4 系列结构框图如图 2-1 所示。时钟发时钟发生模块生模块系统集系统集成模块成模块中断中断模块模块断点断点模块模块上电复上电复位模块位模块键盘中键盘中断模块断模块 16-位时位时钟模块钟模块cop 模块模块监控监控模块模块power supplyvddvssmc68hc08cpumc68mc68hc908hc908qy4qy4 40964096 bytesbytes 8-位位 adc128 字节字节 ramddrbp

9、tbddra ptapta3/rst/kbi3/rpta2/ irq/ kbi2/tclkpta0/ad0/tch0/kbi0sddpta1/ad1/tch1/kbi1pta4/osc2/ad2/kbi4kbipta5/osc1/ad3/kbi5ptb0ptb1ptb2ptb3ptb5ptb6ptb7ptb45图 2-1 mc68hc908qy4 系列结构框图2.32.3 引脚功能引脚功能图 2-2 mc68hc908qy4 引脚分配图引脚功能表述如表 2-1 中所示。表 2-1 引脚功能描述表引脚名称功能描述输入/输出vdd电源供给端电源vss 电源供给端电源pta0 通用双向 i/o 口a

10、d0 adc 输入通道 0tch0 定时器 0 通道 i/o 口pta0kbi0 键盘中断输入通道 0输入/输出pta1 通用双向 i/o 口ad1 adc 输入通道 1tch1 定时器 1 通道 i/o 口pta1kbi1 键盘中断输入通道 1输入/输出pta2 通用双向 i/o 口 外部中断输入引脚,有内部上拉电阻irqpta2kbi2 键盘中断输入通道 2输入pta3 通用双向 i/o 口 外部地有效复位输入或输出引脚,有内部rst上拉电阻pta3kbi3 键盘中断输入通道 3输入/输出pta4 通用双向 i/o 口osc2 xtal 晶振输出,rc 或内部晶振输出ad2 adc 输入通

11、道 2pta4kbi4 键盘中断输入通道 4输入/输出6pta5 通用双向 i/o 口osc1 外部晶振输入脚ad3 adc 输入通道pta5kbi5 键盘中断输入通道 5输入/输出ptb0-7通用双向 i/o 口输入/输出2.42.4 存储空间分配图存储空间分配图mc68hc908qy4 系列 mcu 中央处理器 cpu08 能够寻址 64k 的存储空间,存储空间分配如图 1-3 所示,这都包括:4k flash128bytes 的 ram,地址范围为$0080$00ff位于 flash 区的 48bytes 的用户中断向量416bytes 的监控 rom1536bytes 的 flash

12、读写程序,位于$2800$2dff用户 ram 的地址范围是$0080$00ff,共 128b。这个区域即使用户 ram,也是堆栈 ram。一般情况下,这个区域安排用户数据和堆栈空间。由于这个空间较小,必须合理安排初始堆栈指针 sp 和用户数据,更好地发挥 ram 的作用。安排用户数据时,是从两头到中间使用,可以尽量避免两种数据交叠,发生错误。所以用户数据不宜安排过多,要给堆栈留有足够的空间,否则运行时可能产生错误。若内存安排较满,必须精确计算堆栈最大可能深度,以保证程序的正常执行。大部分的状态、控制和数据寄存器都位于$0000$003f 内,其它 i/o 寄存器的地址如下:$fe00断点状态

13、寄存器,bsr$fe01sim 复位状态寄存器,srsr$fe02断点辅助寄存器,brkar$fe03断点标志控制寄存器,bfcr$fe04中断状态寄存器 1,int1$fe05中断状态寄存器 2,int2$fe06中断状态寄存器 3,int3$fe07保留$fe08flash 控制寄存器,flcr$fe09断点地址寄存器,高字节,brkh$fe0a断点地址寄存器,低字节,brkl$fe0b断点状态和控制寄存器,brkscr$fe0clvi 状态寄存器,lvisr$fe0d保留$ffbeflash 块保护寄存器,flbpr$ffc0振荡器调整寄存器,osctrim$ffffcop 控制寄存器,

14、copctl7保留保留 6464 bytesbytesramram 128128 bytesbytes未定义未定义 99849984 bytesbytes辅助辅助 romrom 15361536 bytebyte未定义未定义 4915249152 bytesbytesflashflash 存储区存储区40964096 bytesbytes断点状态寄存器断点状态寄存器(bsr)(bsr)simsim 复位状态寄存器复位状态寄存器(srsr)(srsr)断点标志控制寄存器断点标志控制寄存器(brkar)(brkar)断点标志控制寄存器断点标志控制寄存器(bfcr)(bfcr)中断状态寄存器中断状态

15、寄存器 1 1 (int1)(int1)中断状态寄存器中断状态寄存器 2(int2)2(int2)中断状态寄存器中断状态寄存器 3(int3)3(int3)保留保留flashflash 控制寄存器(控制寄存器(flcrflcr)断点地址寄存器断点地址寄存器(brkh)(brkh)断点地址寄存器断点地址寄存器(brkl)断点状态和控制寄存器(断点状态和控制寄存器(brkscrbrkscr)lvilvi 状态寄存器(状态寄存器(lvisrlvisr)i/oi/o 寄存器寄存器 6464 bytesbytes$fe00$fe01$fe02$fe03$fe04$fe05$fe06$fe07$fe08$

16、fe09$fe0a$fe0b$fe0c$0040$007f$2800$2dff$2e00$edfff$ee00$fdff$0080$00ff$0100$27ff图 2-3 存储空间分配图$0000$003f8图 2-3 存储空间分配图2.52.5 中断向量表中断向量表中断向量表如表 2-2 所示。表 2-2 中断向量表优先级标志位地址中断源$ffdeif15$ffdfadc 转换结束$ffe0if14$ffe1键盘中断if13 至 if16保留$fff2if5$fff3定时器溢出$fff4if4$fff5定时器通道 1$fff6if3$fff7定时器通道 0if2保留$fffaif1$fffb

17、irq 引脚$fffc$fffd软中断指令$fffe 低 高$ffff复位romrom 416416 bytesbytesflashflash 1414 bytesbytes保留保留保留保留flashflash 1414 bytesbytes$fe0d$fe0f用户中断矢量用户中断矢量 48bytes48bytes$ffd0$ffff内部振荡器调整寄存器内部振荡器调整寄存器$ffc2$ffcf$ffc0$ffc1$ffbe$ffbf$fe10$ffaf$ffb0$ffbd保留保留flashflash 块保护寄存器(块保护寄存器(flbprflbpr)9hc08 系列 mcu 可以工作在两种模式

18、:用户模式和监控模式。用户模式是mcu 上电复位后,转向复位矢量所指向的地址,执行 flash 中的用户程序。监控模式是 mcu 在上电复位后,执行监控 rom 中的程序。当复位矢量为“空”($ff)时,mcu 会自动进入监控模式;当复位矢量不空时,mcu 需要一定的条件才可以进入监控模式。该系统用的 qy4 芯片是已写入了用户监控程序的芯片。监控程序位于 flash 存储器的高地址$fe00-$ffff 该区域原本是被用来存放复位和中断矢量的,还有一部分是为特殊目的而保留的。$ffbe 是 flbpr 寄存器,用于存放块保护的地址已被写入$fe。$ff80-$ffff 是被保护起来的,既不能

19、写入,也不能被擦除,但是可以通过监控程序提供的转向矢量来来完成中断(swi 中断被监控程序占用,用户不能使用)。也就是当运行监控模式的时候,我们已经写入了中断向量的地址,用户只需用程序提供的中断向量代替原来的中断向量,然后在该地址中写入中断入口地址,并在前面加一条 jmp 指令。如:org $fdfd ;复位向量的转向地址jmp entry ;entry 代表程序的起始地址转向矢量如表 2-3 所示。表 2-3 转向矢量表地址中断源$fdebad 转换中断$fdee键盘唤醒中断$fdf1定时计数器溢出中断$fdf4定时器通道 1 溢出中断$fdf7定时器通道 0 溢出中断$fdfairq$fd

20、fdreset10第三章第三章 qy4ii 型硬件电路原理型硬件电路原理3.13.1 显示部分显示部分显示部分通过 8 位串行移位寄存器,将 ptb0 管脚上的数据并行输出作为显示的数据输出端,并通过 ptb2,ptb3,ptb4,ptb5 实现显示的位选。8 位并行输出、数码管段选和位选电路如图 3-1、3-2 和 3-3 所示。图 3-1 8 串行移位部分电路图 3-2 数码管段选电路11图 3-3 数码管位选电路3.23.2 键盘输入部分键盘输入部分本系统采用的是 4*4 键盘,利用 ptb6、ptb7、pta3、pta2 作为行扫描,利用 ptb2、ptb3、ptb4、ptb5 作为列

21、扫描,键盘原理电路如图 3-4 所示。12 图 3-4 键盘原理图3.33.3 模拟量输入模拟量输入实验板利用电位器提供模拟量输入,原理图如图 3-5 所示。图 3-5 模拟量输入3.43.4 模式选择模式选择 实验板通过跳线来实现模式的选择,当跳到 1、2 时,系统通电将会进入用户模式,即执行用户程序,当跳到 3、4 时,系统将进入用户监控模式,用户可以和软件相连在线调试程序。原理图如图 3-6 所示。 13图 3-6 模式选择3.5pwm3.5pwm 脉宽输出脉宽输出 实验板通过 pta1 输出脉宽,利用 led 的亮度反映脉宽,同时使用该端口可以控制喇叭的输出音调,原理图如图 3-7 所

22、示。图 3-7 pwm 脉宽输出 此外,pta1 管脚又可以通过一个三极管放大接到喇叭上发出不同音调的声音,从而模拟电子琴,原理图如图 3-8 所示。图 3-8 喇叭接口部分原理图3.6jp63.6jp6 串行通信串行通信由于 qy4 没有串行通信端口,上位机与单片机之间是通过 pta0 座半双工通讯,本系统利用 pta4 键盘中断,将 pta0 和 pta4 作为单片机的串行通讯端口,也可以作全双工通讯。当跳到 1,2 时,通过 pta0 做半双工通讯;当跳到 2,3时,进行全双工通讯。原理图如图 3-9 和 3-10 所示。14图 3-9 串口通讯接线图图 3-10 jp6 接线图3.7j

23、p13.7jp1 管脚定义管脚定义为了满足用户不同的需求, mc68hc908qy4 所有的引脚都引出来,可以进行其他功能的扩展。图 3-11 jp1 管脚定义15第四章第四章 codewarrior 使用入门使用入门4.14.1 环境配置环境配置操作系统:win98/winme/win2000/winxp安装软件:codewarrior for 68hc08 v3.1硬件系统:pc机带有串行通信接口mc68hc906qy4教学实验板、usb线缆一根、串口通信线一根。4.24.2 codewarrior 安装说明安装说明4.2.14.2.1 安装安装 codewarriorcodewarrio

24、r forfor hc08hc08 v3.1v3.1运行 cw08_v3_1 目录下可执行文件 cw08_v3_1,按照安装向导运行安装软件。默认安装 c:program filesmetrowerkscw08 v3.1(c 盘为系统盘) ,可自己修改安装目录。4.2.2 修改修改 license 文件文件比如默认安装在 c:program filesmetrowerkscw08 v3.1,在该目录下有一个 license.dat 文件,把cw08_v3_1 目录下 license.dat 文件拷贝到安装目录下,覆盖原来的 license.dat 文件即可。4.2.34.2.3 运行可执行文件

25、运行可执行文件 qy4drvqy4drv运行 cw08_v3_1 目录下可执行文件 qy4drv。版权:天津工业大学 freescale mcu/dsp 研发中心安装说明:用户有两种方式安装,如图 4-1。图 4-1 qy4 安装界面161、自动搜索安装路径,然后选择安装。注意:搜索需要一段时间,请耐心等待。2、浏览中选择安装路径,默认路径 c:program filesmetrowerkscw08 v3.1progp&e,然后选择安装。此时,所有软件安装工作完成。4.34.3 打开工程打开工程在主菜单下选择 file/open。如图 4-2图 4-2 打开工程菜单弹出对话框图 4-3,在“对

26、象类型”中选择“project files(*.mcp)”。17图 4-3 工程对象类型出现图 4-4,选择要打开的工程,然后点击“打开”,就可以打开一个工程。图 4-4 工程对象名称如果想要修改程序,在图 4-5 界面可以完成。18图 4-5 用户工程文件窗口此时,如果想要编译连接和在线调试程序,参考 4.5 和 4.6。4.44.4 创建项目创建项目从主菜单栏选择 filefilenewnew。出现一个新的窗口如图 4-6 所示。注意: 新窗口可能和你的屏幕不相同,取决于你的安装对象。19图 4-6 新建工程单击 projectproject 标签显示项目面板。选择 hc(s)08hc(s

27、)08 newnew projectproject wizardwizard。在 projectproject namename 输入框,输入新项目的名称。在 locationlocation 输入框,确定你想保存的文件的路径。注意:当 ide 创建一个项目时,会自动在项目文件中添加扩展名为.mcp 的工程文件。点击确定确定,出现新项目对话框如图 4-7 所示。在 page1 中,选择你所使用的芯片的类型。20图 4-7 选择芯片类型在 page2 中,选择使用语言的种类,如图 4-8 所示图 4-8 选择编程语言在 page3 种选择使用相对汇编还是绝对汇编,如图 4-9 所示。21图 4-

28、9 选择汇编方式在 page4 中进行方式选择,如图 4-10 所示。图 4-10 选择调试模式p&e full chip simulation 方式允许芯片及其外围设备进行在线调试,或者是利用软件进行模拟时采用这种方式。p&e hardware debugging 方式是当 hc08 与外围设备硬件接口是通过 p&e22提供的时候,就得采用这种方式。mmds-mmevs 方式是指目标界面与 mmds-mmevs 仿真系统连接,使用 motosil 协议是多使用的方式。上述三种是比较常用的几种的方式,如果不确定的时候,可以把三种方式都选上,这样会把连接变得更简单。点击完成,项目创建完成,如图

29、4-11 所示。图 4-11 工程建立完成界面在工程窗口打开 sourcesmain.asm(选择编程语言类型不同,文件后缀不同,如果是 c,那么就是 main.c) ,在该文件中编写用户程序。4.54.5 编译连接编译连接编好程序之后,点击图 4-12 makemake 按钮,进行编译连接。图 4-12 编译连接如果编译连接没有错误,则可以调试程序。点击图 4-13debugdebug 按钮调试程序。23图 4-13 调试程序出现图 4-14,仿真或实时调试界面。图 4-14 仿真或实时调试界面4.6 在线编程在线编程1、确立目标在“true-time simulator & real-ti

30、me debug”工具界面,点击:component-set target 在 processor 栏,选择 hc08hc08,在 target 栏,选择p&ep&e targettarget interfaceinterface,然后点击 ok,如图 4-15 所示24图 4-15 确立目标最后关闭“true-time simulator & real-time debug”工具界面,在主界面中重新按下“debug” ,进入“true-time simulator & real-time debug”调试。2、在线调试重新进入后,pedebug-modepedebug-mode:fullfu

31、ll chipchip simulation-in-circuitsimulation-in-circuit 如图 4-16 所示。图 4-16 调试界面系统将自动弹出如下的界面,如图 4-17 所示。注意:当模式选择是注意:当模式选择是“class 1motorola ics board with processor installed.emulation commection ok. power controlled via dtr”时,时,jp2 的的3、4 两个端子短接。如图两个端子短接。如图 4-17 所示。所示。25图 4-17 连接界面点击 closeclose portport

32、。出现界面如图 4-18。26图 4-18 关闭串口界面闭合目标板电源开关,给目标板供电,最后点击闭合目标板电源开关,给目标板供电,最后点击 contactcontact targettarget withwith thesethese settingssettings。出现图 4-19 界面,最后点击 yesyes,程序就下载到实验板上了。如果下载成功,然后在 debug 界面上进行调试,参考图 4-22 界面。注:如果此时不出现图注:如果此时不出现图 4-194-19,再次点击图,再次点击图 4-184-18 中中 refreshrefresh listlist,断开目,断开目标板电源,然

33、后再给目标板供电。标板电源,然后再给目标板供电。图 4-19 查询是否擦除、下载程序再次连接不能出现图再次连接不能出现图 4-19,4-19,仍然是图仍然是图 4-174-17 界面,则可以进行模式转换。界面,则可以进行模式转换。在在 advancedadvanced 左侧下拉菜单中,选择左侧下拉菜单中,选择“class“class 3-direct3-direct serialserial toto targettarget w/mon08w/mon08 serialserial portport circuitrycircuitry builtbuilt in”in” 。如图。如图 4-2

34、04-20 界面。界面。注意:选择注意:选择“class“class 3-direct3-direct serialserial toto targettarget w/mon08w/mon08 serialserial portport 27circuitrycircuitry builtbuilt in”in” 。模式时,。模式时,jp2 的的 1、2 两个端子短接。两个端子短接。注:如果用户使用注:如果用户使用 usbusb 转串口线连接转串口线连接 mc68hc908qy4mc68hc908qy4 电路板的串口时,必须电路板的串口时,必须选择使用该模式,即选择使用该模式,即“class

35、“class 3”3” 。图 4-20 class 3 界面点击 closeclose portport,然后断开电源开关,按键 irq 同时闭合电源开关,点击contactcontact targettarget withwith thesethese settingssettings,出现图 4-21 对话框。图 4-21 power cycle 对话框点击“ok” ,出现图 4-19,最后点击 yesyes,程序就下载到实验板上了。然后在 debug 界面上进行调试,如图 4-22 所示。图 4-22 debug 界面点击上图所示:28运行(run)程序;单步运行(single step

36、)程序;单步运行(step into)程序;跳出运行(step out)函数; 跟踪(trace)程序;程序停止(halt)运行;目标板复位(reset target)。可以通过图 4-23 中的界面随时检查寄存器、ram 中的内容,便于检查出程序中的错误。图 4-23 调试界面如图 4-23 所示,在“soucesouce”窗口,点击右键,在第一栏中将程序运行到光标处,设置断点,看当前指令的 pc 值。具体如下所示:set breakpoint 设断点run to cursor 运行到光标行show breakpoint 显示断点show location 显示地址29但是这里有一点须注意,

37、在脱机仿真的时候,可以设置多个断点,在线调试的时候最多可以设置一个断点。在“memorymemory”窗口,我们可以实现如下的操作:检查寄存器,ram,flash rom 中的内容双击窗口中的字节,可输新值,回车确认点右键,出现的下拉菜单中我们可以更改窗口的一些属性,具体如下所示word size 可以选择用什么样的长度来显示存储单元的内容format 可以选择用什么进制显示,如 十六进制(hex) 、八进制 (oct) 、二进制(bin)等mode 可以进行更新频率的选择,如自动、定期等等display 可以选择窗口显示内容的选择,选择是否显示地址、asc 码fill 可以在一个区间内输入你

38、想要的数值address 可以输入你想查看的存储器空间的开始地址copymem 可以将一段已经写入的内容复制到你想要存放的地址空间去search pattern 可以在确定的地址里面寻找表达式在“data”窗口,显示定义的变量,但是不能双击输入内容,点击右键可以实现如下的操作:open module open mdodule 显示该应用的源文件,全局变量显示在数据块上,只有全局变量才支持 open moduleadd expression 可以增加变量set watchpoint 只有当没有设置 watchpoint 或取消 watchpoint 时,才会弹出该菜单,当选择一个变量将其设置为一

39、个读/写 watchpoint,一条黄色线就会出现在该变量的旁边,当程序执行到与该变量相关时,程序停止运行,而且目前的程序状态就会在各窗口显示出来show watchpoint 打开设置 watchpoint 窗口,你可以看到当前程序所设置的 watchpointshow location 强制让所有的窗口显示与变量相关的信息其余的菜单内容与其它的窗口里面的内容相似,这里就不再赘述了“register”窗口如图 4-24 所示:图 4-24 register 窗口在图中我们可以清楚地看到几个寄存器中的内容,并可以双击输入新值,条件码寄存器的 status 中黑色表示置 1,灰色表示为 0。可以

40、在 pc 栏中输入输入要运行程序的起始地址,即 pc 值,然后单步运行,程序就会从设置的 pc 地址开始执行程序。 由此,可以通过 codewarrior 非常方便的下载程序运行,并可以进行单步调试,为系统程序的开发提供的非常有力的工具。304.74.7 利用利用 visualizationtoolvisualizationtool 进行脱机仿真进行脱机仿真 注意:注意: 在进行脱机仿真之前,一定要修改中断矢量地址。在进行脱机仿真之前,一定要修改中断矢量地址。在线编程调试或实时运行状态参考表 2-3 转向矢量表,表中详细地写出了每个中断的地址。仿真运行状态参考表 2-2 中断矢量表。比如在线编

41、程调试或实时运行状态使用复位向量定义如下:orgorg $fdfd$fdfd ; ;复位向量地址复位向量地址jmpjmp entryentry当使用脱机仿真时,必须把上面两句作如下修改:orgorg $fffe$fffe ; ;复位向量地址复位向量地址dc.wdc.w entryentry其他中断向量参考该修改进行。在进行在线调试和脱机仿真相结合的时候,不同调试状态下中断进行上面的交替修改。程序编译通过之后,系统将自动进入 debug 调试界面(如图 4-25 所示) ,在这个界面里面我们既可以直接写入程序调试,也可以利用单步运行随时检查寄存器的内容,便于寻找程序中的错误,还可以利用 visu

42、alizationtool 进行脱机仿真。下边将重点讲述利用 visualizationtool 进行脱机仿真。图 4-25 debug 界面在“true-time simulator & real-time debug”工具界面,点击:component-set target 在 processor 栏,选择 hc08hc08,在 target 栏,选择31simulatorsimulator targettarget interfaceinterface,然后点击 okok,如图 4-26 所示。图 4-26 确立目标界面设置完成,关闭“true-time simulator & real

43、-time debug”工具界面。在主界面中重新按下“debug” ,进入“true-time simulator & real-time debug”调试界面,点击 simulater-resetsimulater-reset,如图 4-27。图 4-27 仿真状态复位选择 component-opencomponent-open,如图 4-28。32图 4-28 将会出现如下的界面,如图 4-29 所示图 4-29 选择 visualizationtool 界面点击 ok,进入 visualizationtool 界面,如图 4-30 所示。33图 4-30 visualizationto

44、ol 界面如上图所示在空白处点击右键,选择要添加的元件。由于该示例事要做一个跑马灯的演示实验,所以选择“7 segment display” 。在空白处点击右键,选择 properties,如图 4-31 所示。设置:refresh mode : periodicalrefresh time (100ms):1或者选择:cpu cycles。设置完成,关闭窗口。 图 4-31 visualizationtool 属性界面双击 7 segment display,如图 4-32所示设置:kind of port : memoryport to display : 0 x01设置完毕,关闭窗口。图

45、 4-30 七段数码管属性界面点击右键,取消选择 edit mode,图 4-32 segment display 属性设置在“true-time simulator & real-time debug”调试界面,按下sart/continue,运行程序,在本示例中, 用 7 segment display 来演示跑马灯实验,可以看到七段数码的每一段在交替闪烁,如图 4-33。34图 4-33 仿真界面点击保存,可以将这个 visualizationtool 的工程保存下来,下次运行的时候只要用 display mode,然后运行程序就可以了。保存配置:filesave configurati

46、on,如图 4-34 所示。图 4-34 保存配置界面 运行程序,可以按照图 4-22 中运行或单步执行程序,可以看到仿真状态下程序运行情况。35第五章第五章 c 语言调用汇编的语法规则语言调用汇编的语法规则对于 hc08 来讲,主程序在调用子程序的时候先将参数由左到右的压栈,调用完毕之后,这些参数将被清理出堆栈。如果功能函数有固定长度的参数,而且最后一个参数的长度为两个字节,则最后一个参数通过 x 和 a 来传递。如果功能函数有固定长度的参数,最后一个参数的长度为一个字节,而且倒数第二个参数多于一个字节,则最后一个参数通过 a 来传递。如果倒数第二个参数的长度仍为一,则该参数通过 a 来传递

47、,最后一个参数通过 x 来传递。对于函数返回值一般是通过寄存器来返回的,除非函数返回的字节数多于两个字节,根据返回数据的类型的不同,它所用的寄存器也不相同,具体情况如表 2-1 所示。表 5-1 返回值的类型与所使用寄存器的对应表返回值类型寄存器字节型(有符号或无符号)a整型(有符号或无符号)x:a指针/数组x:a函数指针x:ac 语言嵌入汇编程序的几种形式举例。asmnop ;这种方式可以填入您所需要的所有汇编语句nop ; 注释asm(“nop;nop”);只有当程序为 nop 的时候才能采取这种形式asm(“nopn nop”); 只有当程序为 nop 的时候才能采取这种形式asm “n

48、op”; 只有当程序为 nop 的时候才能采取这种形式asm nop; 只有当程序为 nop 的时候才能采取这种形式#asmnop ;这种方式可以填入您所需要的所有汇编语句nop#endasm若在 c 语言主程序中要调用汇编主程序,必须在 c 语言主程序之前做外部声明。例如:extern void send_byte(unsigned char);extern unsigned char rcv_b(void);而且在汇编主程序的的开头作声明,例如: xdef send_byte,rcv_b 中断的处理问题,有如 1.2.6 中所讲到的,用户监控程序程序定义了新的中断向量,所以在主程序的前面要

49、加一部分声明,当发生中断的时候,转到新的地36址执行,从而运行中断服务程序。声明部分如下所示:void _adc_interrupt(void); /*中断函数声明*/void _kbd_interrupt(void);void _tof_interrupt(void);void _tch1_interrupt(void);void _tch0_interrupt(void);void _irq_interrupt(void);void _startup(void);void keyres(unsigned char);#define config1_val 0 x3d /* user val

50、ue for config1 */#define config1_adr 0 xfdea /* address of user value for config1 */#define jmp_tab_adr 0 xfdeb /* address of jump table */#define jmp_code 0 xcc /* opcode of jmp instruction */typedef void (*tintfunc)(void); /*定义一个指向函数的数据类型*/typedef struct jumpentry /*定义一个结构体 jumpentry 类型*/ unsigned

51、 char jmpistr; tintfunc intfunc;/*定义一个 tintfunc 类型的变量*/ jumpentry;const unsigned char configx config1_adr = config1_val;const jumpentry intjmptable jmp_tab_adr = /*定义各中断向量的中断入口*/ /*定义了一个数组intjmptable,其元素为 jumpentry 类型的数据 */ jmp_code, _adc_interrupt, jmp_code, _kbd_interrupt, jmp_code, _tof_interrupt

52、, jmp_code, _tch1_interrupt, jmp_code, _tch0_interrupt, jmp_code, _irq_interrupt, jmp_code, _startup;在定义中断函数的时候还有两个定义的规则,即中断子程序定义。1、在函数前面加 interruptinterrupt void _adc_interrupt(void) interrupt void _kbd_interrupt(void)interrupt void _tof_interrupt(void)37interrupt void _tch1_interrupt(void)interrup

53、t void _tch0_interrupt(void)interrupt void _irq_interrupt(void)2、在函数前一行加上#pragma trap_proc#pragma trap_procvoid _adc_interrupt(void) #pragma trap_procvoid _kbd_interrupt(void)#pragma trap_procvoid _tof_interrupt(void)#pragma trap_procvoid _tch1_interrupt(void)#pragma trap_procvoid _tch0_interrupt(vo

54、id)#pragma trap_proc void _irq_interrupt(void)以上两种定义的方式都可以,用户如果要利用中断来完成任务,可以依据本节内容的叙述,定义中断函数。38第六章第六章 processor expert 应用应用6.16.1 创建工程创建工程本工程使用一个电位器和一个数码显示管,电位器用于表示模拟信号,如:罐里的液面位置、温度等,数码显用于显示其值。下面我们将一步一步演示创建工程的过程。启动 codewarrior :startstart programsprograms metrowerksmetrowerks codewarriorcodewarrior

55、cw08cw08 v3.0v3.0 codewarriorcodewarrior ideide在 codewarrior 界面中,选择菜单 filenewfilenew,如图 6-1 所示。图 6-1 开始创建在project栏里选择hc(s)08hc(s)08 newnew projectproject wizardwizard project name中填入:myqy4myqy4如果需要更改存入目录请点 locationlocation 栏的 setset 按钮按下确定确定,进入一下步,如图 6-2 所示39图 6-2 新建工程选择 cpu 类型,找到 mc68hc908qy4,点击选取,

56、按“下一步” ,如图 6-3 所示。图 6-3 选择芯片类型选择以 c 语言为开发语言,如图 6-4 所示。40图 6-4 选择 c 语言使用 processor expert,如图 6-5 所示。图 6-5 使用 processor expert不使用 pc-lint,如图 6-6 所示。41图 6-6 不使用 pc-lint选择标准启动代码,如图 6-7 所示。图 6-7 选择标准启动代码不需要浮点支持,如图 6-8 所示。42图 6-8 不需要浮点支持内存使用模式选择 tiny,如图 6-9 所示图 6-9 选择内存使用模式连接方式,使用缺省值,如图 6-10 所示。43图 6-10 选

57、择连接方式点击“完成” ,如图 6-11 所示。图 6-11 创建完成界面44在左边的导航栏里选择 processor expert选择 beans,点右键,选择“add bean(s)” ,如图 6-12 所示。图 6-12 内核选择选取并双击 adc,processor expert 导航栏里 beans 中增加了 ad1:adc选取并双击 bitsio,processor expert 导航栏里 beans 中增加了bits1:bitsio选取并双击 bitio,processor expert 导航栏里 beans 中增加了bit1:bitio45选取并双击 bitio,process

58、or expert 导航栏里 beans 中增加了bit2:bitio编辑 ad1 的属性,如图 6-13interrupt service:disabledconversion time 21.25 us图 6-14 ad1 属性编辑设置 measure 和 getvalue 为generate code.其它均为 dont generate code.如图 6-14 所示编辑 bits1 的属性,如图 6-15。图 6-13 ad1 属性编辑bean name:dispnumpins:7pin0:ptb0pin1:ptb1pin2:ptb2 pin3:ptb3pin4:ptb4pin5:p

59、tb5pin6:ptb6 图 6-15 bits1 属性编辑46pull 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:ptb7 pull resistor:no pull resistordirection:output 图 6-16 bits1 属性编辑分别进入其 method

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论