嵌入式MCU在线编程集成开发系统
使 用 手 册
Uesr Manual
苏州大学计算机科学与技术学院
2005年3月第二版
SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院
1.概述
传统的嵌入式应用开发方法主要是使用仿真器模拟目标系统中MCU的运行情况,希望达到在目标系统硬件尚未定型与制版情况下,先行调试目标系统的硬件、软件设计,为目标系统的研制提供前期基础。但是,一些情况下,难以实现100%的实时仿真,有些功能在用仿真器调试时十分正常,而到了实际应用系统却不能顺利运行。同时,传统的仿真方式的一些调试功能仅适用于初学者,对于具有一定开发经验并拥有通用功能模块积累的开发者,往往增加了开发时间。
目前,随着计算机制造技术的发展,许多公司新推出的MCU具有片内Flash存储器,Flash存储器具有电可擦除、无需后备电源保护数据、可在线编程等特点。在线编程(In-Circuit Program)允许单片机内部运行的程序去改写Flash存储器的内容,利用这个特点,不仅可以在运行过程中修改某些运行参数,也为研制新型嵌入式应用开发工具提供了技术基础。
Freescale公司目前正在陆续推出的新一代8位嵌入式单片微机M68HC08系列,其片内集成的Flash存储器具有单一电源电压供电、支持在线编程等特点,它是Flash技术比较成熟的条件下推出的,在线写入、读出稳定。本系统利用MC68HC908GP32单片机内32KB的Flash存储器划出2KB空间,驻留监控程序,为用户提供一套界面友好、价格低廉、支持在线调试的MCU在线编程实验开发系统。
2.系统特点与主要功能
2.1基本特点
①传统仿真器的“仿真系统”与实际目标系统的硬件不是一套系统,难以实现目标系统的全部功能,这主要是由于过去的目标系统的程序存储器多为EPROM、OTP或不支持在线写入的Flash存储器。新型的开发系统的硬件可以直接构成目标系统的评估硬件,所调试的软件即运行于此系统,可以实现100%在线实时仿真。
②与传统仿真器相比,提供的调试功能与方法更多,操作更加简便,可以缩短开发进程。
③由于开发系统的硬件体系就是目标评估系统,不必为仿真功能配置另外
1
SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院
硬件,极大地减少了开发过程中的硬件实验成本。
④全部操作在Windows界面下完成,为开发者利用Windows系统支持多任务操作提供便利,使之对源程序的编辑、修改、编译、写入(下载)、调试可以顺利切换,加快了调试进程。
2.2主要功能
①100%的在线实时仿真。用户下载自己的程序进入芯片后,在监控程序的控制下自动转入用户程序执行。该实验开发板,通过外部接插线完全可以模拟用户的实际应用系统板。所有程序均可在实验开发板上调试完成,给二次开发带来了极大方便。
②标准Windows界面,帮助信息丰富,提供演示实例。不论对初学者还是对有经验的开发者均提供便利。直接支持Freescale的.S19文件格式,显示所打开文件的内容,提示写入进程,自动擦除写入区并自动校验。
③为系统组合方便,所有I/O口引脚直接引出到插孔,供外接使用,开发板上提供了并行I/O模拟区、A/D、LCD、键盘等模拟区,可直接使用。同时还设计了IC插线及其它元件扩展槽,可以通过该扩展槽完成相关应用系统评估。
④不要求用户改变中断向量,用户完全可以按照标准格式书写程序,PC机方的管理软件自动扫描用户程序,将中断向量改变后送给MCU中的监控程序,MCU中的监控程序将用户中断向量放入监控区,待相应中断发生时,由监控程序转入。
⑤写入后自动转入用户程序执行,为用户调试程序带来了方便,加快了调试速度。也支持断点调试功能,此时要求用户进行相应输入或选择操作。
⑥复位后,在没有用户程序的情况下,一直处于监控联机状态,若有用户程序,5秒内处于监控联机状态,若无用户联机信号,则转入用户程序执行。
⑦提供写入MC68HC908GP32、MC68HC908JL3空白芯片功能,需另配写入器。 ⑧可根据用户要求进行功能定制与扩展
3.系统组成
“SD-HC08(GP32)MCU在线实验开发系统”内含:
① 在线实验板一块(在实验箱内),其中MC68HC908GP32内部写入支持在线编程的监控软件2KB(内部Flash存储器共32KB,用户可使用30KB)。
② PC机软件一套:标准Windows界面,支持Freescale的.S19文件格式。内含帮助文件。安装方法见软件光盘。
③ 教学实验程序包,包含以下程序(汇编语言与C语言并行)
2
SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院
● 程序框架及简单IO
● 串行通信 ● 键盘编程 ● AD转换编程 ● 定时器溢出中断
● 输入捕捉 ● 输出比较
● Flash在线编程
● 液晶显示(LCD)
● 数码管显示(LED) ④ 实验教学课件
⑤ MC68HC908GP32、MC68HC908JL3空白芯片写入适配器(选配)
4.工作环境
单 片 机:采用Freescale新一代M68HC08系列MCU 工作平台:Windows2000/XP
高级语言:VB6.0(演示程序提供VB6.0编写的源程序)
5.硬件系统说明
5.1总体结构布局
实验板硬件部分主要由MC68HC908GP32芯片及外围电路、LCD、键盘、模块化电源、串行口驱动电路、IC插线及其它元件扩展槽、输出开关量接线排、输入开关量接线排等部分组成,其主要作用是通过MC68HC908GP32芯片的监控程序和PC机进行通信,完成芯片程序的写入、运行、断点调试。系统的硬件布局框图见图5-1。实际接线时,直接220伏交流电源接入模块化电源,模块化电源将220伏交流电转为5V直流电给系统供电。电源部分对强弱电进行了物理隔离。板上的串行口为9芯标准串行接口,通过三芯(发送、接收、地)与PC机的串行口相连,实现开发板与PC机的通信。
连接方法:
① 将实验开发板的串行口通过串行通信线与PC机的串行口1或2连接。 ② 接通实验开发板电源,电源指示灯亮。 ③ 连接实验所需线路 。
3
SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院
④ 按实验板上的复位按钮。
⑤ 执行PC机的配套软件,硬件系统等待SD-1软件系统的握手信号。
串行口 发送指示灯电源 IC插线及其它元件扩展槽B 写入器引线 电源指示灯 MC68HC908GP32芯片 MAX232 键 盘 接线 区 键盘插孔 IC插线及其它元件扩展槽A LCD自行接线区 电位器1 电位器2 LCD插孔 键盘 PTFUSE RST PTB PTC PTD 蜂鸣器 8位拨线开关 8个输出指示灯 图1 SD-HC08(GP32)实验板布局
5.2 开关量输入
实验开发板用拨线开关提供8位数字量的输入。原理图如5-2所示。拨线开关状态为OFF时是高电平,拨线开关状态为ON时是低电平。
5.3 开关量输出
图2 MCU 8位开关量输入电路 导线接插点
Vcc 开关
①实验开发板用LED提供8位开关量的输出。原理图如图5-3所示,导线接插点为高电平时LED是暗的,低电平时LED是亮的。②实验开发板含有蜂鸣器输出,原理图如图5-4所示。
4
SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院
导线接插点 Vcc Vcc 图3 MCU 8位开关量输出电路
导线接插点 图4 MCU蜂鸣器电路
5.4 液晶显示接口
实验开发板提供可显示16个符号或字母的双排字符液晶,实验开发板提供两种接线方式。
①当将液晶显示器接
LCD(HD44780) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 VSS Vdd Vee RS R/W DB7 PTB7 DB6 PTB6 DB5 PTB5 DB4 PTB4 DB3 PTB3 DB2 PTB2 DB1 PTB1 DB0 PTB0 E 入上面的插线时为固定接
+5V 线,原理图如图5-5。
图5 MCU与LCD的连接 ②当将液晶显示器接
入下面的插线时为手动接线,连线的位置在液晶的下方,可以将04—14管脚自定义连接,其管脚定义见下表。
PTC0 PTC1 PTC2
管脚号 1 2 3 4 5 6 7~10 11~14 15~16 符号 Vss Vdd V0 RS R/W E DB0~DB3 DB4~DB7 E1~E2 电平 方向 H/L H/L 输入 输入 引脚含义说明 电源地 电源(+5V) 液晶驱动电源(0~5V) 寄存器选择;1-数据寄存器 0-数据寄存器 读写操作选择:1-读操作 0-写操作 H/L 使能信号:R/W=0,E下降沿有效 输入 H→L R/W=1,E=1有效 三态 三态 8位数据总线的低4位,若与MCU进行4位传送时,此4位不用 8位数据总线的高4位,若与MCU进行4位传送时,只用此4位 输入 上下两行使能信号,只用于一些特殊型 5
SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院
号 5.5 键盘接口
实验开发板提供16键键盘,用于键盘中断信号的输入。
实验开发板提供两种接线方 1 2 3 A 单片机PTA口引脚
行线m1 PTA0 式。
4 5 6 B ①当将键盘接入上面的插 m2 PTA1 线时为固定接线,键盘接线原 7 8 9 C m3 PTA2 * 0 # D 注:固定接线自左向右分别接 m4 PTA3 列线n1 n2 n3 n4 PTA7 PTA0∽PTA7. PTA6 ②当将键盘接入下面的插 PTA5 PTA4 线时为手动接线,连线的位置图6 4×4键盘与单片机接法示例
VDD 单片机 内部上拉电阻 理图如图5-6。
在键盘的左边。
5.6 模拟量输入
实验开发板利用电位器提供两路模拟量输入,供进行A/D转换实验使用,其原理图如图5-7。
Vcc
图7 MCU电位器电路
5.7 串行口
实验开发板利用MAX232芯片提供标准的串行口的Txd、RxD、GND。
5.8 空白芯片写入扩展口(选配)
实验开发板提供空白芯片写入所需的信号。
5.9 元件扩展口
实验开发板提供元件扩展口,使用者可以进行IC扩展。布线如图5-8。
GND Vcc 图8 IC插线及其它元件扩展槽
6
SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院
6.软件使用说明
系统软件功能的主要结构如图9所示。
在线编程开发系统 目标代码写入芯片文件处理源文件编辑源文件编译打印断点调试帮助 6.1 软件系统基本功能
(1)工程管理。可以管理C语言和汇编语言源文件列表,C语言源文件包括:*.c、*.s、*.h。汇编语言源文件包括:*.asm、*.h。工程文件扩展名为*.prj。
(2) 源文件编辑。在开发环境中可以方便的对源文件进行编辑,编辑器提供语法高亮显示、查找、替换、复制、粘贴、高亮显示一行、跳转到指定行等功能。
(3) 源文件编译。开打C工程或汇编主程序后,可以进行编译,并生成S19和lst文件。S19是编译生成的机器码,lst是机器码与源代码的对应文
7
代码编译汇编代码编译编译出错处理文件分解建立通信线路数据传输设置断点建立通信线路数据传输分解显示数据S19C 图9系统软件功能的主要结构
SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院
件。
(4)目标代码写入芯片。要将目标代码写入芯片,先要对目标代码S19文件进行分解,分离出程序数据区和复位矢量数据区,同时将程序数据区分割为128字节的页,并记录该页的首址。然后建立PC机和MCU的通信线路。在建立通信线路前将MCU复位,MCU会发送握手信号,同时等待PC机的返回信号。所以当PC机发送指定的返回信号后,PC机和实验板的通信线路就建立了,此时MCU就处于等待接收PC机的下一个命令字状态。PC机再发送写入芯片的命令,MCU接收命令后,再等待接收写入的总页数,然后接收每一页的首址及要写入的数据,MCU先擦除再将数据写入,写完一页后将该页的数据读出送PC机,PC机接收该页数据后校验是否有错,若无错再发送下页,MCU接收下一页的首址及要写入的数据,直到写完所有的页及最后的复位矢量数据区的数据页。
(5)断点调试。断点功能给初学者调试程序提供方面,一般的断点功能是让程序员输入断点地址,当程序执行到该地址时,程序中断执行,在PC机屏幕上显示有关寄存器、内存的内容,供程序员观察。但是,断点地址与源程序之间存在鸿沟,给程序员调试程序带来不变。本系统通过.LST文件的调入,给出了直接选择操作的符号化调试功能,解决了断点地址与源程序之间鸿沟问题,使得调试开发板中MCU程序的过程,与目前直接在PC机上调试高级语言程序的过程相似。为了防止PC上打开List文件和MCU中已有的用户程序不是同一程序,我们在断点调试开始时,预先进行判断,将断点处的连续10字节的代码发送给MCU进行比较较验,如果相同则表明两方程序相同,可以进行断点调试;若两方程序不同,MCU再等待PC方打开相匹配的List文件,重新设置断点,再发送10字节代码。
8
SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院
6.2 软件系统使用
SD-1V20型MC68HC908GP32 MCU在线实验开发系统采用了WIN32的MDI风格,操作方便,直接支持Motorola的.S19文件格式,不改变用户中断向量,写入后直接转入用户程序执行。启动界面如图1。
下拉菜单 工具栏 工程管理窗口 代码编辑器 编译调试信息窗口 图10 SD-HC08启动界面
工具栏如图11。
9
SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院
图11工具栏
菜单如图12。
图12 菜单
(1)新建工程。单击文件菜单中的新建,将出现如图11的对话框。 选择好工程的路径,工程文件名,工程类型,然后选择器件的类型,工程向导为自动在工程属性中填入该器件的内存设置,如果选空工程,则要手动填写工程属性。工程属性可选择C工程或者汇编主程序,汇编主程序不需要填写
10
图13新建工程
SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院
工程属性。以上设置好以后点击确定,工程建立成功。工程向导将为用户产生部分该器件的引导代码和程序框架。
工程新建完毕以后,可从图13的新建对话框的新建文件页中新建C文件、头文件、和汇编子程序文件,新建的时候可以选择是否加入到当前工程中。汇编子程序有两种,一种是C工程中的*.s文件,另一种是汇编主程序中使用到的*.asm文件。后者需要用户手动在汇编主程序中用$include “文件名”加入。也可以在右侧工程目录树上点击右键菜单中的加入文件项(如图14),把已存在C、H、S文件及其它类型的文档加入到工程中,文件会被添加在目录树的相应类别中,这些文件必须已经拷贝至工程所在的路径。
图14加入文件
点击文件菜单中的保存工程可对工程进行保存。
(2)源文件编辑。双击目录树上的源文件名,该文件就会被打开,可以进行修改编辑。如图15。编辑器具有语法高亮显示。
11
SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院
图15 源文件编辑
(3)编译设置。点击编译菜单的编译设置,会出现如图16的设置对话框。
在这里可以修改器件内存的设置,以及编译器所需头文件的路径。全局变
图16编译设置
量设置用来设置C程序中全局变量的地址使用单字节还是双字节。
12
SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院
注:汇编主程序不可以进行编译设置。
图17 编译工程
(4)编译工程。点击编译菜单的编译源程序,将对工程进行编译。如果编译成功,在下方编译调试输出信息窗口输出编译成功字样。如果源程序中有错误,系统将给予提示。用户可以双击错误提示来跳转到错误的源程序行,如图17,编辑器中红色的一行即为错误行。编译过程会产生三种错误信息:警告、错误、连接错误,分别以蓝色、红色、橙色显示。
(5)下载程序。点击编译菜单的写入芯片,将出现如图18的对话框。缺少的S19文件是本工程的,用户也可自行选择一个S19文件。点击写入按钮后,立即将实验板复位,将进行下载。下载信息和写入进度会提示下载的情况。
13
SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院
下载信息 图18 下载
如果下载过程中出现错误,将有弹出对话框提示。可能会出现的错误有:与实验板握手失败、数据校验失败、串口初始化失败、通信超时、写入指令发送失败。如果出现上述错误,请检查串行线的连接和实验板工作是否正常。
7.实例演示
(1)08汇编主程序
一个08汇编源程序按书写顺序可由7个部分组成,分别描述如下。一开始就训练按规范书写源程序,有利于养成良好的习惯。
① 程序描述
给出程序名、硬件连接、基本功能等描述,还可以给出编制者、编制时间等信息,若调试过程有新的体会,也可以在此添加。目的是为将来自己使用,或同组开发提供必要的备忘信息。
② 头文件与有关常量命名
汇编语言也借用C语言中“头文件”的概念,将映像寄存器的地址放入“头文件”中,程序中直接使用寄存器地址所对应的“名称”,更加直观。本书所附实例程序提供的“GP32.H”文件为MC68HC908GP32的映像寄存器名与地址对应表,见附录B。这样,实际程序用$include \"GP32.H\"语句将\"GP32.H\"文件包含到源程序中即可。例如,有了“头文件”,对“D口数据寄存器”读出操作,可以用“LDA PTD”取代“LDA $0003”,更容易理解。此外,若实际应用中,D口是接一个液晶显示器LCD的数据端口,编程时希望使用LCDData代表LCD的数据端口,则可以使用常量命名:“LCDData EQU PTD”,之后LCDData与PTD完全等同。
14
SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院
③ 内存变量
如果程序中使用到内存变量,需在此定义。实际上,这里是对内存变量的声明,通常称为“开辟内存变量”,内存变量的初始化工作需在主程序开始部分进行。第一个内存变量需用“ORG”语句定位,随后,按地址从小到大顺序排列。每个内存变量都有固定的内存地址。借用C语言术语,这里所开辟的所有内存变量都是“全局变量”。对应C语言中的“局部变量”概念将在讲解子程序规范时说明。
④ 主程序
主程序一般包括初始化与主循环两大部分。初始化包括堆栈初始化、系统初始化、内存变量初始化、I/O端口初始化、中断初始化等。主循环是程序的工作循环,根据实际需要安排程序段,但一般不宜过长,建议不要超过200行,具体功能可以通过调用子程序实现,或由中断程序实现。不带操作系统的MCU程序总有一个主循环,表示程序周而复始地执行。
⑤ 内部直接调用子程序
若有不单独存盘的子程序,建议放在此处。这样在主程序总循环的最后一个语句就可以看到这些子程序。建议不要超过3个,每个子程序不要超过200行。若有更多的子程序请单独存盘,单独测试。
⑥ 外部子程序
若有程序使用的存盘的子程序,可在此处用“$include 子程序名”将其包含。注意,存盘的子程序必须与主程序在同一个目录中。
⑦ 中断向量
中断向量一般放在最后。复位向量的两个地址中为MCU上电后要开始执行的程序地址,即为主程序的第一个语句地址。实际程序中,为了稳定,不用的中断向量需要进行一定的处理,这个问题在本书第五篇中阐述。
(2)第一个可执行的08汇编程序 实例编号:A01 路径:\\ASM\\ A01_简单IO及程序框架 *--------------------------------------------------------* *文 件 名:PrgFrame.ASM * *硬件连接:PTA.1接指示灯 * *程序描述:指示灯PTA.1闪烁 * *目 的:第一个freescale(Motorola) HC08系列MCU程序框架 * *说 明:提供Motorola MCU的编程框架,供教学入门使用 * *注 意:如果延时不够长的话,会发觉灯不会闪烁,而是一直亮,这是* 由于人的视觉的引起的。 * *----------《嵌入式应用技术基础教程》教学实例--------------* *[头文件] $include \"GP32ASM.H\" ;包含GP32的头文件 *[两个起始地址名] RAMstartAddr equ $0040 ;RAM的起始地址(因芯片而不同) FlashStartAddr equ $8000 ;程序开始地址(因芯片而不同) 15
SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院
*[指示灯所接引脚定义] Light_P equ PTA ;灯(Light)接在PTA口 Light_D equ DDRA ;相应的方向寄存器 Light_Pin equ 1 ;所在的引脚 *[内存变量] ORG RAMstartAddr ;RAM的起始地址 I1 RMB 1 ;变量I1的声明(字节型变量) *======================================================= *[主程序] ORG FlashStartAddr ;程序起始地址 MainInit: ;复位后程序从此开始执行 ;[系统初始化] SEI ;禁止所有中断 LDHX #$023F ;堆栈初始化为RAM最高端 TXS JSR GP32Init ;系统初始化,初学时跳过此处 ;[I/O初始化] BSET Light_Pin,Light_D ;令指示灯引脚为输出 BSET Light_Pin,Light_P ;初始时,指示灯\"暗\" ;[程序总循环入口] MainLoop: BCLR Light_Pin,Light_P ;指示灯(Light)“亮” ;[延时] 若要改变闪烁的快慢,可以改变循环次数 MOV #!250,I1 ;循环次数 Main1: JSR Delay1000 ;调用延时子程序 DBNZ I1,Main1 ;[指示灯(Light)\"暗\"] BSET Light_Pin,Light_P ;[延时] MOV #!250,I1 ;循环次数 Main2: JSR Delay1000 ;调用延时子程序 DBNZ I1,Main2 ;[转总循环入口处] JMP MainLoop *[内部直接调用子程序存放处] *Delay1000:延时1000个时钟周期--------------------------* *功能:用程序方法延时,延时长度为200*5=1000个时钟周期 * *入口:无 * *出口: 无 * *------------------------------------------------------* Delay1000: PSHA ;A进栈(保护寄存器A) ;延时200*5=1000个时钟周期 LDA #!200 ;循环次数 Delay1000_1: NOP ;1个时钟周期 NOP ;1个时钟周期 DBNZA Delay1000_1 ;3个时钟周期 PULA ;A出栈(恢复A寄存器) 16
SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院
RTS *[外部子程序存放处] $include \"GP32Init.ASM\" *[中断向量] ORG $FFFE ;复位向量 DW MainInit
特别说明:程序中包含了存盘的\"GP32Init.ASM\"文件,是GP32系统初始化程序,它将对CONFIG1、CONFIG2进行设置,并对PLL进行编程,由外部晶振f=32.768KHz,得到内部总线时钟fBUS=2.4576MHz。
(3) 08C语言程序
08C语言程序按工程进行管理,一个08C工程所包含的文件最好放在同一文件夹下,一般由.prj、.src、.h、.c等类型文件构成,编译后还将产生.LST、.S19等文件。编译过程还会产生一些中间文件,读者可以不去理会这些文件。
.prj和.src文件是08C的工程文件与资源文件,用来记录工程中的所有源文件信息、目标代码的起始地址、目标系统的硬件信息等。这两个文件须同名,若更改工程文件名,则资源文件名也须做同样更改。
.c文件是08C的源程序文件。源程序文件由若干函数组成,与普通C语言一样,一个08C工程必须包含一个main函数(主函数)。MCU上电复位后,先执行有关初始化程序,随后执行main函数中的第一个语句,main函数需要包含一个永久循环(称为主循环),已使MCU的程序反复执行。
.h、.lst、.s19文件与08汇编语言的相应文件含义相同,本处略。 中间过程产生的文件主要有:.mak为编译脚本文件(Make File),由编译器生成,辅助编译器完成编译工作,该文件包含了芯片设置,如存储器的结构、芯片类型,还包含了编译脚本和连接脚本。.o为编译过程中产生的中间目标文件。
建议包含主函数main的文件,直接用main.c存盘,本书称包含主函数main的文件为主文件,地位相当于汇编语言中的主程序。把程序的总描述放在主文件的开头。一个主文件一般按以下顺序排列:
程序描述、头文件与有关常量命名、全局变量声明、子函数声明、主函数main、直接调用的子函数实体。
④ 第一个可执行的08C语言程序。
这里给出第一个可执行的08C语言程序,与上文中的汇编程序功能相同,目的是让读者能够通过比较更好地学习。 实例编号:C01 路径:\\C\\ C01_简单IO及程序框架 *---------------------------------------------------------------------* *文 件 名:main.c (简单I/0 及程序框架) *硬件连接:PTA.1接指示灯 17
SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院
*程序描述:指示灯PTA.1闪烁 * *目的:第一个freescale(Motorola) HC08系列MCU程序框架 * *说明:提供Motorola MCU的编程框架,供教学入门使用 * *注 意:如果延时不够长的话,会发觉灯不会闪烁,而是一直亮,这是由于人* * 的视觉的引起的。 * *----------《嵌入式应用技术基础教程》教学实例----------------------* /*[头文件]*/ #include \"head.h\" //映像寄存器地址头文件 /*[指示灯所接引脚定义]*/ #define Light_P PTA //灯(Light)接在PTA口 #define Light_D DDRA //相应的方向寄存器 #define Light_Pin 1 //灯所在的引脚 /*[全局变量声明]*/ unsigned char I1; /*[延时子函数声明]*/ void Delay1000(void); /*[主函数]*/ void main() { /*[I/O初始化]*/ Light_D|=1< 8.疑难解答 (1) 问:在将S19文件写入MCU内的Flash时,提示PC机与实验开发板的通信有误,无法建立通信连接,如何处理? 答:是否将单片机复位 实验板电源是否打开,实验板的电源指示灯是否亮 串行数据线是否正确连接 串行数据线是否导通 PC机串行口工作是否正常 (2) 问:编译Asm文件后,不出现S19文件,如何处理? 答:Asm源程序文件中有错,状态栏中有错误提示 当前选中行是错误出行的行 (3) 问:单击工具栏中的“断点调试”按钮后,在断点调试界面中出现的断点调试按钮是灰色的,不可用, 如何处理? 答:在Lst文件中单击设置断点后,断点调试按钮会正常化 (4) 问:设置断点后,单击断点调试按钮,提示PC机与实验开发板的通信有误,无法建立通信连接, 如何处理? 答:串行数据线是否正确 是否很快将单片机复位 (5) 问: 设置断点后,单击断点调试按钮,状态栏提示PC机与GP32通信完成,但长时间处于“断点调试…”状态,一段时间后,提示断点调试出错, 如何处理? 答:程序中有死循环,程序无法运行到断点处 (6) 问:设置断点后,单击断点调试按钮后提示“单片机中的程序不是你当前打开的程序,断点调试失败!”, 如何处理? 答:当前设置断点的LST文件不是写入GP32Flash中的程序,重新打开与GP32芯片中程序相同的Lst文件,重新进行断点调试。 19 SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院 附录: 实验指导及实验报告 本实验指导及实验报告包含了《单片机原理及其嵌入式应用》课程的十个实验。其中,前六个为必做实验,每个实验给出了实验目的、实验要求,实验一至实验六还给出了实验范例程序名,可在所用的机器上找到其源程序,供实验时编程参考。实验六为实验考核,由学生根据所学知识自行设计功能并编程。必做实验安排18学时,每次实验3学时,每个学生安排一套仪器,完成实验内容。实验七至实验九为选作或综合实验,仅给出了程序范例名,源程序也放在所用机器上,供有兴趣的同学参考。 另外,所用机器上还有《单片机原理及其嵌入式应用》实验教学课件,其中含有实验范例源程序的硬件接线图及程序分功能演示,供查阅。 20 SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院 第一部分 基本实验必做部分 实验一 程序框架及I/O编程 实验目的: ① 理解Freescale MCU的编程框架 ② 熟悉编程调试环境,编译、调试、下载运行第一个程序 ③ 掌握I/O的基本编程方法 范例程序: ① A01_简单IO及程序框架\\ FrmMain.ASM ② C01_简单IO及程序框架\\纯C\\prgframe.prj ③ C01_简单IO及程序框架\\C&ASM混编\\prgframe.prj 实验要求: 参考范例程序,自行设计I/O功能程序,提供硬件接线、程序描述、子程序入口出口规范说明、主程序流程框图、主要程序代码、实验体会等内容。 21 SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院 实验二 串行通信编程 实验目的: ① 理解串行通信基本原理,掌握MCU串行通信基本编程方法 ② 理解串行通信的查询方式和中断方式原理及其编程 范例程序: ① C02_1串行通信查询方式\\ H08SCI_1.prj ② C02_2串行通信中断方式\\ H08SCI_2.prj ③ A02_1串行通信查询方式\\ SCIMain1.asm ④ A02_2串行通信中断方式\\ SCIMain2.asm ⑤ 以上四目录都有VB_SCI目录,该目录是对应Visual Basic6.0程序,运行在PC方,用来接收和发送数据。 实验要求: 参考范例程序,使用PC方程序与单片机进行通信。了解编辑的流图。 22 SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院 实验三 键盘编程 实验目的: ① 理解键盘扫描的基本原理,掌握键盘基本接法与键值计算方法 ② 编制键盘查询、键盘中断、键值识别程序 范例程序: ①C03_键盘中断编程\\keyboard.asm ②C03_键盘中断编程\\keyboard.prj 实验要求: 参考范例程序,设计2×3键盘,定义为0-5、给出硬件接线、键值计算、键盘扫描、键盘定义等描述,对子程序要求有入口出口规范说明,自行设计主程序功能并给出流程框图、主要程序代码。 23 SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院 实验四 A/D转换编程 实验目的: ① 掌握MC68HC908GP32的A/D转换编程方法 ② 学会基本的综合应用,串行和A/D转换的综合应用。 范例程序: ① A04_AD模数转换\\ AD_Main.asm ② C04_AD模数转换\\ AD.prj ③ Visual Basic6.0程序: VB_Sci目录下SCI_AD工程 接收MCU数据并显示 实验要求: ① 编写一程序,其功能是:以查询方式得到A/D转换的值,然后通过串行发送给PC。 ② 参考范例程序设计一数据采集系统:MCU方采集0、1通道数据向PC发送,PC机接收后显示。 参照前面的实验,分别给出上述程序的描述。 24 SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院 实验五 定时器实验 实验目的: ① 理解定时器模块基本原理,掌握定时器中断编程方法 ② 编制定时器溢出中断处理程序 ③ 编制定时器输入捕捉中断处理程序 ④ 编制定时器输出脉宽调程序(PWM) 范例程序: MCU程序: C05_1定时器溢出中断\imer1.prj C05_2定时器输入捕捉\im1ch0.prj C05_3PWM脉冲信号输出\\PWM.prj A05_1定时器溢出中断\\T1Main.asm A05_2定时器输入捕捉\\Tim1CH0.asm A05_3PWM脉冲信号输出\\PWMmain.asm 实验要求: ① 设计一个定时器溢出中断方式程序,每过1秒向PC机发送一个信号,PC机以串行中断方式接收此信号后,显示MCU的已经工作的时间。 ② 利用定时器输入捕捉功能,将一开关信号的变化情况用图形方式显示在PC机的屏幕上。 ④ 将定时通过对PWM占空比的调节实现现指示灯的渐亮的功能 当占空比为100%时再从0%逐渐增加。 ⑤ 建议根据学习进展,分2个以上课时完成。 给出以上程序的完整表述。 25 SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院 实验六 FLASH在线编程 实验目的: ① 了解Flash存储器工作原理。 ② 掌握Flash擦除、写入的步骤。 ③ 学习在线编程的方法。 范例程序: ① MCU程序: A06_Flash编程\\FshMain.asm C06_Flash编程\\Flash.prj ② Visual Basic6.0程序: Flash_test\\vb_flash 工程 实验要求: ① 设计一个程序,能够对MCU的某段Flash空间擦除和写入,采用在线编程,写入的数据通过串行口从PC机获得。 参照前面的实验,分别给出上述程序的描述。 26 SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院 实验七 LCD编程 实验目的: ① 理解点阵字符LCD显示基本原理,掌握LCD显示编程方法 ② 掌握字符型液晶控制器HD44780的接口与编程方法 ③ 进一步掌握PC机与MCU串行通信编程方法 范例程序: ① MCU程序: A07_液晶LCD显示\\ LcdMain.asm C07_液晶LCD显示\\lcd.prj ② Visual Basic6.0程序: vb_lcd工程,输入数据并送LCD显示 实验要求: ① 设计一个由PC机通过MCU控制的LCD显示程序,功能描述如下: 在PC机屏幕界面设计三个按钮,分别是 “移动显示”、 “静止显示”、“清LCD”。当按下“移动显示”按钮时,LED的两行分别显示“1234567012…”、“ABCD…”并以0.5秒左移一个字符; 当按下“静止显示”时,保持当前显示的字符,但不移动。当按下“清LCD”按钮时,清LCD显示。 ② 自行设计有关串行、LCD、键盘联合编程的程序,功能自定。 给出以上两个程序的完整表述。 27 SD-HC08嵌入式MCU在线编程集成开发系统使用手册 苏州大学计算机科学与技术学院 实验八 数码管实验 实验目的: ① 理解数码管显示基本原理,掌握数码管显示编程方法 ② 掌握8段数码管的接口与编程方法 ③ 进一步掌握PC机与MCU串行通信编程方法 范例程序: ① MCU程序: C08_数码管LED\\LEDTest.prj A08_数码管LED\\LEDMAIN.asm 实验要求: ① 设计一个程序,在4连排数码管上从左至右显示3568。 给出以上两个程序的完整表述。 28
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- obuygou.com 版权所有 赣ICP备2024042798号-5
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务