微控制器实验开发系统项目设计方案.docx
《微控制器实验开发系统项目设计方案.docx》由会员分享,可在线阅读,更多相关《微控制器实验开发系统项目设计方案.docx(50页珍藏版)》请在冰豆网上搜索。
微控制器实验开发系统项目设计方案
微控制器实验开发系统项目设计方案
第一章微控制器S08AW60教学实验系统
1实验开发系统简介
微控制器实验开发系统充分利用了微控制器的片上资源,为开发者提供了一套简便、友好的微控制器实验开发系统,本实验系统支持在线实时调试,与基于仿真器的传统微控制器开发方法有本质不同。
该系统采用"核心子板+母板"的设计形式,如图1所示:
把与微控制器直接相关的外围电路设计成一块单独的子板使其成为基本系统,并将必要的引脚用欧式插座引出来;母板部分则扩充了各种外围电路,并通过欧式插座和子板连接。
与把所有电路都做在一块板子上的设计方案相比,子、母板的设计方案兼容性更好:
只需更换子板而无需更改母板,便可实现多种微控制器的开发,具有更好的适应性。
同时,可以简便地利用该系统来对芯片的各个外设模块进行一些实验和测试。
系统提供了良好的软件和硬件模块接口,可以直观地从母板上观察程序运行的结果,也可以从PC机查询微控制器当前的状态。
该实验系统适合高校微控制器教学,同样也能给开发人员评估微控制器性能提供便利。
图1实验开发系统外观
2实验开发系统特点
微控制器实验开发系统,不仅支持MC9S08GB\AW60基本系统〔核心子板,也支持MC68HC908GP32基本系统〔子板以及其他一些HC08、S08系列微控制器基本系统,也可用于S12等16位微控制器。
该系统的特点是:
<1>该系统有"监控程序"和"BDM"两种开发方式;采用不同的核心子板时的调试方法也不尽相同。
"监控程序"开发方式采用RS232C串口与计算机相连〔又称仿真终端;"BDM"开发方式〔又称后台调试采用USB接口与计算机相连。
<2>监控程序或者BDM方式均可以提供给各种基本的MCU开发和调试功能,包括程序的下载和运行、汇编和反汇编、断点设置、单步执行、存显示修改等等。
系列MCU核心子板与HC08MCU系列核心子板最大的区别在于S08的核心子板具有BDM〔又称后台调试方式接口,而HC08的核心子板则没有只能采用"监控程序"开发一种方式。
S08系列MCU核心子板可以采用"监控程序"和"BDM"有两种开发方式。
<3>利用S08系列微控制器的在线编程技术,可以实现对程序的在线写入和对Flash存储容的随时修改,可以实现对自编程序的100%在线实时仿真与监测。
<4>母板提供了基本的外围功能模块,可辅助完成对并行I/O口、键盘和外部中断、A/D、SPI等模块的实验和测试。
3S08实验开发系统
<1>核心子板〔可选用S08或HC08系列微控制器的基本系统子板,如MC9S08AW60或MC68HC908GP32核心子板。
<2>应用系统母板。
<3>5V直流电源。
<4>RS232串口电缆。
<5>PC机终端串口调试、核心子板和母板原理图〔部分。
如图2所示。
图2S08实验开发系统电路图
4S08实验开发系统与PC的连接
S08实验开发系统与PC的连接,如图3所示。
该系统采用RS-232串行总线与PC机通信,不需要安装任何驱动程序。
只需将核心子板扣在母板指定位置上,并配置好S08基本系统核心子板,再将其与电源和PC机简单地连接起来便可使用。
图3S08实验开发系统与PC的连接示意图
S08实验开发系统如采用BDM的调试方式,必须通过USB接口与计算机相连。
通常需要安装驱动程序,可用于调试较复杂的程序。
用专用的编程接口下载用户程序到目标系统。
详见本书第十章。
5S08实验系统说明
S08实验开发系统的硬件部分由核心子板与母板组成。
核心子板包括了MCU正常工作的基本系统,包括MCU及其复位电路、时钟电路、RS-232串行口电路等几个部分。
对于不同的MCU基本系统,功能略有不同。
母板上提供了多个基本外围硬件电路,包括:
<1>电源输入与核心子板的接口定义。
<2>8位数字量输入、输出电路。
<3>A/D模拟电平产生电路。
<4>数码管显示电路。
<5>键盘和IRQ中断信号产生电路。
<6>SPI输入、输出电路。
在学习了各外围硬件电路的原理以后,应用导线将这些外围电路和微控制器相应的I/O口连接,便可以完成各种实验。
母板上提供了许多单孔插座〔下文称之为"导线接插点"以方便导线的插拔,如图4所示。
图4母板上S08AW的单孔插座
需要特别说明的是,在母板上提供了MCU接口插座模块,其信号定义与S08AWMCU的端口定义一一对应,并通过两个欧式插座与核心子板上的MCU同名引脚直接相连〔除RESET、TXD、RXD外。
第二章CodeWarrior认识<实验1>
1实验目的
<1>学习使用CodeWarrior建立工程的过程。
<2>熟悉S08AW汇编语言,掌握S08汇编语言对各存储器和寄存器的操作。
<3>对S08AW部寄存器和存储器的结构分布有一个明确的概念。
2实验任务
<1>使用CodeWarrior建立工程文件,学会保存工程项目并能打开修改
<2>编写汇编语言源程序,在$2000处放存放八位十六进制数$A2,在$2100处存放八位十六进制数$2B,将他们相加后存放于$2200处。
<3>将上一任务的第二个数改为$FB,重复实验,观察标志寄存器的变化。
3实验说明
Freescale所有系列的微控制器都可以在CodeWarriorIDE下进行软件开发。
CodeWarrior是Metrowerk公司开发的软件集成开发环境〔简称IDE。
CodeWarriorIDE可以在不同的操作系统〔包括Windows,Macintosh和Linux下使用,而且在这些操作系统下的界面完全相同。
CodeWarriorIDE不仅支持汇编语言,而且支持C、C++和Java高级语言。
CodeWarriorIDE支持深入的C语言和汇编语言调试、启动/停止、单步、设置跟踪触发器、校验/修改存储器和C变量、结构与阵列、以及全功能的软件模拟调试等仿真功能。
4预习要求
<1>S08AW60的RAM存储区从哪开始?
到哪结束?
<2>S08AW60的寄存器有哪些?
各有什么用途?
<3>标志寄存器有几个有效位?
分别代表什么含义?
5实验步骤
(1)打开Codewarrior并建立工程项目。
(2)向工程项目中写入程序并命名保存项目,能在再次打开Codewarrior的时候找到自己建的项目进行修改。
(3)在FullChipSimulation连接方式下调试编译程序,查看相应的Register和Memory。
CodeWarrior6.1认识过程
CodeWarrior可以直接在Freescale公司的官方www.freescale.中下载到教育版CodeWarrior,它支持无限制汇编语言和32K的C语言代码。
这里使用的是CodeWarrior6.1版。
可以实现对S08系列芯片源程序编辑、编译及在线仿真的功能,下面CodeWarrior6.1为例简述其使用过程和软件仿真FullChipSimulation功能。
<1>CodeWarrior6.1使用过程
从程序组中看到如图5所示的界面,点击CodeWarriorIDE即可。
图5启动CodeWarrior
进入编译软件界面,会出现如图6所示画面,单击"CreateNewProject"新建一个工程。
图6新建工程
选中相应的CPU芯片,如图7,图8所示,这里应选择所对应的微控制芯片MC9S08AW60。
在右边方框可选择FullChipSimulation<选此项时不能下载程序到微控制器中,只能进行软件仿真,仍可以查看相应Register和Memory>。
点击下一步。
当完成基本实验〔实验1—实验5之后,如果有BDM调试模块,也可选择S08OpenSourceBDM,选此项可通过BDM下载程序到微控制器中进行调试。
图7选择FullChipSimulation连接方式
图8选择OpenSourceBDM连接方式
选择编程语言,可以有3种可选择的开发语言种类:
汇编、C及C++语言。
如果程序是用C语言编写的应选择C,存放路径为D:
\program\AW60,工程名为led_liushui如图9所示。
如果程序是用汇编语言编写的应选择Absoluteassembly,如图10所示。
图9选择C语言路径
图10选择汇编语言路径
图11为工程填加文件
继续单击"下一步",如图11所示,此窗口可以将已有的文件如子程序等添加到工程文件夹,选择不填加时可直接点击"下一步"。
接下来如图12~14所示,点击"下一步"按默认设置完成工程的创建。
每个界面的正下方或左侧的一段英文是对当前选择项的简要说明。
图12快速应用开发选择界面
图13程序模式选择
图14工程完成
单击"完成"后,会出现如图15所示画面,在此窗口就可以开发微控制器程序了。
在左边下方小窗口常用的是Sources文件夹和Includes文件夹等四项。
其中Sources文件夹的main.c为主程序,后面的流水灯实验程序就放在此文件下,如果是比较大的程序,还可以在Sources文件夹添加其它子程序;Includes文件夹则存放的是头文件。
Includes中的头文件包括derivative.h和MC9S08AW60.h两个文件,其中derivative.h可定义变量并存放自己编写的子程序等;MC9S08AW60.h则包含该型号微控制器的寄存器名称和地址,以及中断向量号和地址等,可以在编写程序时通过查询此文件来方便、准确地使用寄存器及各功能模块。
接下来双击Source文件夹下面的main.c文件并打开,如图16所示,此时已经载入了教材上第14章的例14-1可实现LED流水灯就可以在右面的main.c窗口编写自己的C语言程序了。
图15CodeWarrior程序开发界面
图16C程序编写界面
在IDE中,对每个创建的目标,项目管理器会负责跟踪文件、库、顺序、依赖关系、编译器、器和其他设置的管理。
对于本例建立的led_liushui.mcp工程文件,可以有软件模拟和硬件仿真两个目标。
<2>软件仿真FullChipSimulation
应用Codewarrior的软件仿真FullChipSimulation功能,可以在无需微控制器硬件的情景下,学习Codewarrior和S08微控制器的几乎全部功能,通常用于初学者和提高用户程序设计效率。
这里先通过一个简单程序〔两个16位无符号数相加的程序熟悉软件仿真的功能,以及如何在FullChipSimulation的界面下查看MCU的Register和Memory。
INCLUDE'derivative.inc';头文件,INCLUDE指定附加源文件
XDEF_Startup;定义一个可用的公共符号
ABSENTRY_Startup;当一个绝对文件产生时,指定入口地址
ORGRAMStart;RAM变量起始地址
ORGROMStart;设置程序的起始地址
_Startup:
LDHX#RAMEnd+1;初始化堆栈
TXS;X>-$0001→SP
CLI;中断使能
;******************************主程序****************************************
main:
MOV#$23,$70;将加数和被加数放到指定的单元,为加法做准备。
将立即数
;$23,送到地址为$70的单元中
MOV#$8F,$71;将立即数$23,送到地址为$71的单元中
MOV#$56,$72;将立即数$7B,送到地址为$72的单元中
MOV#$AB,$73;将立即数$56,送到地址为$73的单元中
LDA$71;将$71单元中的容送到累加器A,为进行低位字节的加法做
;准备
ADD$73;累加器A中的容与$73单元中的容相加,结果保存在累
;加器A中,如果有进位,进位保存在CCR寄存器的C中
STA$75;将累加器A中的容送到地址为$75的单元中,即将低位运
;算的结果保存到$75的单元中
LDA$70;将$70单元中的容送到累加器A,为进行高位字节的加法做
;准备
ADC$72;带进位加法,累加器A中的容与$72单元的容相加,在
;低位相加时获得的进位数放在C中,结果保存在累加器A中。
STA$74;将累加器A中的容送到$74单元中,第2字节相加的结果送
;$74单元中,进位放在C中,本例进位位C=0
BRA*;程序结束,暂停
通过前面的认识CodeWarrior编程环境打开汇编程序编写界面,选择如图7所示的FullChipSimulation连接方式及选择图10所示的Absoluteassembly开发语言路径。
如图17所示。
图17CodeWarrior程序开发界面
把程序写入如图18所示
图18汇编程序编写界面
点击Compile显示无错误然后点Debug,出现调试窗口如图19所示
图19完全仿真下的调试窗口
可以在Memory里查看相应寄存器的值,可以用单步调试,当调试完前4步也就是MOV#$AB,$73这一步完成后看一下相应寄存器的值,如图20所示
图20完全软仿真下的调试窗口
可以看到此时寄存器$70-$73的值分别为#$23,#$8F,#$56,#$AB.当整个程序运行完了,可以看到寄存器$74-$75的值为#$7A,#$3A,正是#$238F与#$56AB相加结果,如图21所示
图21完全仿真下的调试窗口
第三章汇编程序设计<实验2>
1实验目的:
熟悉S08AW实验板监控程序的使用方法。
2实验任务:
将PORTA接的1个LED的状态改成"亮灭"进行闪烁。
3实验说明:
开发系统的硬件连接:
当开发的目标板是最小系统〔即核心子板的时候,它的连接很简单,对目标板无需任何设置。
用一条普通串口线连接开发板的9芯D型插头到PC机的串口1〔串口2也可以,只要把后面的超级终端设置成"直接连接到串口2"就可以了。
5V电源连接到串口旁边的电源插口中。
目标板的连接如图22所示。
图22核心子板系统的连接
目标板与设计的母板的关系如图23所示。
图23核心板插在应用系统母板上
目标板有自己的电源,同时可以通过板上的欧式插座向的母板供电,开发板也可以通过欧式插座供电。
注意:
不要同时用2个电源分别向开发板和母板供电。
在没有熟悉和掌握整个开发环境之前,不要将开发板插到应用系统母板上。
4预习要求:
怎样控制PORTA口的状态?
5实验步骤:
<1>启动CodeWarrior6.1软件。
〔按照前面所述的方法建立工程,然后编写程序。
<2>用导线将实验母板上的PORTA0与OUT部分的柱状LED的L0相连。
<3>熟悉仿真终端〔串口调试模式。
<4>编写程序,并调试程序。
将有错误的程序改正,直至满足控制要求。
<5>通过RS232串口电缆,将编译产生的文件装载到MC9S08AW60的FLASH区。
观察分析运行结果。
仿真终端〔串口调试模式
应用仿真终端〔串口调试模式,可直接使用PC机中自带的超级终端软件实现PC机与开发板的通讯,虽然PC机自带的超级终端软件比较慢,很多PC机实际上达不到标称波特率应该达到的速率,但使用PC机自带的超级终端软件比较方便,不必寻找专门的通讯软件。
S08AW60开发板与PC串口的连接与设置:
在计算机不通电的前提下,通过RS232串口电缆将S08AW60核心子板与PC串口的连接;开PC机并接通实验板电源;首先打开超级终端,按"开始-→程序-→附件-→通讯-→超级终端"的顺序点击鼠标,如图24所示。
图24打开超级终端
于是可以得到如图25所示的窗口。
填入名称,这里用MC9S08AW60。
选择"确定"。
这是给与AW60模块通讯用的通讯协议文件命名,以后再次使用超级终端时直接点击选定的文件名或图标即可,不必再次重复下面的设置。
如果开发板是连接到串口1,就选"直接连接到串口1",如果开发板连接到串口2,就选"直接连接到串口2"。
选择"确定",如图26所示:
图25给通讯协议文件命名
图26设置使用COM1或COM2
图27设置串口通讯协议
使用的串行口通讯协议如图27所示,使用9600波特率,8位传送,无奇偶校验,一个停止位,无流量控制或使用Xon/Xoff协议,并选择"确定"。
AW60模块上电以后在超级终端窗口可以看到如图28所示的容。
这就是进入监控程序之后的提示界面。
考虑到监控程序的平台上可能运行着一个程序,所以提供了4秒钟的延时,使选择继续监控程序界面或者直接运行程序。
4秒钟之如果键盘有输入就继续监控程序界面,否则直接运行程序,当然如果监控平台上不存在程序,仍然还会继续监控平台界面。
图29为选择继续监控程序之后的界面,这样通讯的串口环境就建立起来了。
图28模块上电以后在超级终端窗口得到的监控界面
图29监控程序的主交互界面
<1>监控程序
监控程序建立了一个串口命令方式的开发环境,可以它为平台完成程序初期的开发与调试。
需要说明的是监控程序把$FFFE的中断向量表移到$EFFE处,顺序不变。
可以使用$EFFE处的中断向量表,此中断向量表和MC9S08AW60手册上的中断向量表顺序相同,只是从$FFFE移到了$EFFE。
监控程序起来时,如果串口在4秒没有收到数据,就会检查
$EFFE-$EFFF〔复位向量表是否为$FFFF,如果不是,说明FLASH中有程序。
程序自动调转到$EFFE-$EFFF所指的程序。
如果4秒串口接到数据或者$EFFE-$EFFF为$FFFF,则进入监控程序。
<2>常用命令组合
①向实验板下载程序
先在CodeWarrior环境下完成程序的编写,通过软仿真对程序进行调试,直至达到满意的效果。
然后,把编译成功的目标代码下载到实验板上运行。
在监控程序的环境中可以使用组合命令E+L来下载程序。
注意:
为了减小工作量,所有的程序编写和调试都应该在CodeWarrior环境下进行,最后在实验板上通过实物连线来验证实现效果。
首先使用E命令来擦除片Flash。
接下来使用L命令把编译成功的.S19目标文件下载的本地的微控制器,具体操作如下:
先键入L,然后按"传送",选"发送文本文件",如图30所示:
图30在超级终端选项中选"发送文本文件"
找到刚才bin目录下的.s19,按"打开〔O"。
如图31所示。
记住,文件类型要选"所有文件〔*.*,才能看到.S19文件。
"
图31向开发板发送bin目录下的.S19文件
这样,程序就下载到微控制器中去了。
开发板每接收到.S19文件的一个记录〔1行,就把代码写入到FLASH中,并在屏幕上显示一个"*"号,直到文件传送完,如图32所示。
图32用L命令向开发板下载程序
注意:
下载之前一定要先使用E把相应的FLASH段擦除掉。
②运行本地程序
运行本地程序是通过修改PC指针到的程序起始地址实现的,具体操作如下。
修改程序计数器PC的值,按CTRL+P,输入当前程序的起始地址,假如下载程序是用C语言编辑的,PRM文件中定义的起始地址为0x1860,可以输入1860,再键入G命令。
如图33所示,这样程序就跑起来了。
图33运行程序
<3>通过S08AW60的A端口输出,驱动8个LED。
电路原理参见图34。
图34LED实验电路原理图
6参考程序:
;*******************************************************
*本程序将PTA0相连的1个二极点亮,并闪烁。
PTA0出现低电平时亮。
;*******************************************************
NCLUDE'derivative.inc';头文件,INCLUDE指定附加源文件
XDEF_Startup;定义一个可用的公共符号
ABSENTRY_Startup;当一个绝对文件产生时,指定入口地址
ORGRAMStart;RAM变量起始地址
ORGROMStart;设置程序的起始地址
_Startup:
LDHX#RAMEnd+1;初始化堆栈
TXS;X>-$0001→SP
CLI;中断使能
main:
LDA#$53
STASOPT;关闭看门狗
LDA#$FF
STAPTADD;定义A口输出
loop:
LDA#$FE
STAPTAD;将与PTA0相连的二极管点亮
JSRDelay;调用延时程序
LDA#$FF
STAPTAD;将与PTA0相连的二极管熄灭
JSRDelay
BRAloop;继续循环
;******************************************************
;******************************************************
;延时程序
;函数功能:
利用寄存器A,X实现两重循环
;******************************************************
Delay:
lda#$ff
delay2:
ldx#$ff
delay1:
brn$
brn$
brn$
dbnzxdelay1
dbnzadelay2
rts
;*[中断向量]
ORG$FFFE;复位矢量
FDBmain
第四章通用I/O端口控制<实验3>
1实验目的
<1>掌握S08AW60语言对I/O口的编程操作。
<2>掌握程序中循环方法。
<3>学会使用程序延时。
2实验任务
在与PTA0,PTA1,PTG0-PTG3,PTF4,PTF5口与相连的柱状LED上循环显示跑马灯。
3实验说明
选择I/O端口工作方式的控制寄存器有PTxDD、PTxD、PTxPE、PTxSE、PTxDS等。
其中PTxDD代表端口方向寄存器,PTxD代表端口数据寄存器,PTxPE代表部上拉控制寄存器,PTxSE代表斜率控制寄存器,PTxDS代表驱动强度选择寄存器。
数据方向寄存器PTxDDn决定x端口各引脚是输入还是输出,各个端口的每一个引脚都对应数据方向寄存器中的一位。
若PTxDDn=0,相应的x端口的n引脚作为输入引脚,读取PTxD将返回该引脚值。
当PTxDDn=1,相应x端口的n引脚作为输出引脚,读取PTxD将返回最后一次写入PTxD的值。
在应用程序设计时,欲将某端口的某个引脚设为输出,通常应先设置该端口的方向寄存器〔即写入1,然后再向相应端口的数据寄存器PTxDn写入输出数据〔0或1。
复位后所有与I/O共用的外围设备功能被禁止,各管脚被默认配置为输入,斜率控制使能〔PTxSEn=0、选定低驱动强度〔PTxDSn=0、部上拉被禁止〔PTxPEn=0。
实验原理图如图35所示:
图35实验原理图
4预习要求
<1>查询要使用的各端口的寄存器。
<2>了解跑马灯的实现方法。
5实