ImageVerifierCode 换一换
格式:DOCX , 页数:72 ,大小:4.15MB ,
资源ID:5996502      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5996502.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(飞思卡尔8位单片机MC9S08JM60开发板实践教程.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

飞思卡尔8位单片机MC9S08JM60开发板实践教程.docx

1、飞思卡尔8位单片机MC9S08JM60开发板实践教程第一章 搭建实验环境1、 实验电路板及下载器实物图片2、 实验电路图本实验图包含两大部分,分别是和实验资源。采用飞思卡尔位单片机,(电路图介绍)图1-3实验资源部分电路图1-4串口液晶电路图1-5接口电路图1-6数码管显示电路图1-7发光管、转换以及按键电路图1-83、 集成开发软件环境的建立1 运行文件CW_MCU_V6_3_SE,在电脑盘安装飞思卡尔位(及简化位)单片机集成开发环境版本2 运行USBDM_4_7_0i_Win,这个程序会在c盘的程序文件夹下增加一个目录C:Program FilespgoUSBDM 4.7.0,在这个目录下

2、C:Program FilespgoUSBDM 4.7.0FlashImagesJMxx下的文件USBDM_JMxxCLD_V4.sx是下载器的固件文件;C:Program FilespgoUSBDM 4.7.0USBDM_DriversDrivers下有下载器的usb驱动因此在插入usb下载器,电脑提示发现新的usb硬件的时候,选择手动指定驱动安装位置到以上目录即可。3 运行USBDM_4_7_0i_Win之后,还会在目录:C:Program FilesFreescaleCodeWarrior for Microcontrollers V6.3proggdi下增加一些文件,从修改时间上来看,

3、增加了6个文件,这些文件是为了在codewarrior集成开发环境下对usb下载器的调试、下载的支持。4、 语言编程基础第二章 LED闪烁程序编写过程1、 新建工程运行单片机集成开发环境codewarrior IDE出现如下界面 Create New Project :创建一个新项目工程 Load Example Project :加载一个示例工程 Load Previous Project :加载以前创建过的工程 Run Getting started Tutorial:运行CodeWarrior软件帮助文档 Start Using CodeWarrior: 立刻使用CodeWarrior

4、点击Create New project按钮,以创建一个新的工程,出现选择CPU的界面如下,请选择HCS08/HCS08JM Family/MC9S08JM60,在右边的Connection窗口可以选择最后一个开源下载器HCS08 Open Source BDM。下一步后出现编程语言选择和指定项目名称以及存放位置界面选择C语言,项目名称就写“LED闪烁”,保存位置自己决定,但要记住。后面有些选项就暂时跳过,选择“完成”后,并将文件夹展开的样子如下:点击“make”快捷按钮正确编译后,左边的钩钩全部消失,同时在Code和Data列出现了相关的代码和数据量。2、 修改主文件并下载运行在左侧双击mi

5、an.c文件,打开该文件的编辑界面,修改文件直到下面模样:修改完main.c文件后,点击最右边的debug按钮。出现下载器配置界面,如果没出现说明下载器没有正确安装。选择“5V”是打算让下载器给目标板供电5V。确保其它选项都对后,选择“ok”出现装载警告继续“ok”后程序下载到单片机中。在调试界面里点击运行按钮,让程序全速运行后应该看到两个LED交替点亮。3、 延伸讨论1 在修改主程序main.c的过程中,对寄存器SOPT1、PTBDD_PTBDD0、PTBD_PTBD0的名称问题,对于刚入手者确实有一定难度。由于包含了文件 derivative.h,该文件又包含了“MC9S08JM60.h”

6、,这是与选用的cpu相关的,建议打开这个cpu相关的头文件仔细阅读,对于B口数据寄存器的定义如下,如果看不懂建议要搞懂C语言的数据结构和联合的用法。关于方向寄存器的定义与此相似。2 关于采用for循环进行延时的问题。首先这种方法很难做到精确的延时,而且对于首次使用这款单片机的人来说,粗略延时都很难估算,这是因为for循环的延时跟系统的总线时钟有关。虽然电路板上焊接了4MHz晶振,但上面的例子并没有用到,用的是内部缺省时钟。内部缺省时钟在不修改参数的情况下,总线时钟是8MHz。如果在主函数死循环前面添加修改时钟的代码,将时钟切换到外部晶振,同时启用内部的PLL锁频环,将下面的代码放在for(;)

7、死循环之前,将会产生24MHz的总线时钟,重新下载运行后发现LED闪烁的速度明显加快。3 如果没有硬件,也可以完全采用软件仿真的方法进行程序设计,改动过程如下:a首先确保在工程硬件连接下拉中选择第一项“Full Chip Simulation”,如果有硬件,对于自制的开源下载器则应该选择“HCS08 Open Source BDM”b点击“debug”按钮后不会出现下载器配置界面,而是直接进入调试界面,在调试界面选择“Component/Open”菜单。在弹出的界面里,双击虚拟可视工具。在虚拟可视工具编辑界面被打开后,就可以从主菜单栏选择“Visualization Tool/Add New

8、Instrument/LED”在放好LED,并调节大小合适后,在LED上右击鼠标,选择第一项打开LED的属性页在属性页中修改该LED对应的内存memory的地址为0x02(从讨论1中已经知道B口的数据寄存器的地址就是0x02),同时修改“Bitnumber to display”为“0”,也就是该LED对应PTBD_PTBD0。采用相同的方法放另一个LED,修改属性页使得对应PTBD_PTBD1。放好两个LED后,在空白的地方右键鼠标并选择属性,打开属性页在属性页的最下面选择刷新模式为周期性“Periodical”,刷新间隔可以用缺省的10ms。全部修改完成后选择保存成文件以备后用。既然是采用

9、没有硬件的完全仿真模式,一定要去掉跟硬件相关的代码,比如讨论2中添加的将时钟切换到外部晶振的代码一定要去掉。然后就可以全速运行了。在完全仿真模式下,LED闪烁的速度跟实际硬件相比还是不一样的,只能是功能仿真。第三章 按键程序设计过程1、 按键与cpu的连接,从图1-3可以看出,按键4、按键5分别与PTB4和PTB5相连。该款单片机MC9S08JM60一共有8个键盘输入口,从数据手册可以看出非常分散。键盘中断输入对应管脚所属端口KBIP0PTG0PTGKBIP1PTG1KBIP2PTD2 PTDKBIP3PTD3KBIP4PTB4 PTBKBIP5PTB5KBIP6PTG2PTGKBIP7PTG

10、3 总体来说,该款单片机的八个键盘中断输入特点如下:1 可以单独允许某一个中断输入脚,其他不用的做一般I/O;2 每个中断输入脚都可以单独编程设置为下降沿触发、上升沿触发、下降沿和低电平触发、上升沿和高电平触发;3 所有中断输入口公用一个中断向量,可允许或者禁止中断;4 键盘中断可以将芯片从低功耗中唤醒到正常工作模式。2、 跟键盘中断相关的三个寄存器,分别为状态与控制、管脚允许、中断触发沿模式选择。1 KBI Status and Control Register (KBISC)3 KBF 键盘中断标志当检测到键盘中断时,该只读位置“1”。 2 KBACK 键盘应答写1到KBACK是标志清除机

11、制的一部分,读时总为0。 1 KBIE 键盘中断使能给该位置“1”允许键盘中断申请。 0 KBMOD 键盘中断触发模式该位(与BKEDG位一起)选择键盘中断触发模式:0- 只检测边沿;1-检测边沿和电平。 2 KBI Pin Enable Register (KBIPE)7:0 KBIPEn 对应位置“1”允许管脚的KBI功能。PTG3,PTG2,PTB5,PTB4,PTD3,PTD2,PTG1,PTG03 KBI Edge Select Register (KBIES)7:0KBEDGn 0-对应管脚选择下降沿或低电平;1-对应管脚选择上升沿或高电平。PTG3,PTG2,PTB5,PTB4,

12、PTD3,PTD2,PTG1,PTG03、 键盘中断使用的初始化过程;KBI首次使用时,为了不产生错误中断,建议初始化过程如下6步:1清除KBISC中的KBIE位,以屏蔽KBI中断;2设置KBIES寄存器中的KBEDGn位,选择使用管脚的中断触发极性;3如果需要内部上拉/下拉电阻,配置PTxPE(PTGPE、PTDPE、PTBPE)位;4设置KBIPE寄存器中的KBIPEn ,允许对应管脚的KBI功能;5给KBISC寄存器中的KBACK位写1,以清除所有KBI中断标志;6设置KBISC寄存器中的KBIE位,以允许KBI中断。4、 建立实验工程按照第二章的步骤,建立工程“按键控制LED”,该工程

13、的最终目的是利用两个按键控制两个LED的亮灭,当按压key4时,D1的亮灭状态发生改变;按压key5时,D2的亮灭状态发生改变。修改主文件直到如下模样:5、 讨论1 该键盘中断程序与上一章程序最大的区别就是使用了中断的方法进行程序设计,主文件中有两个函数:void main(void) interrupt VectorNumber_Vkeyboard void kbi_isr( ) 第二个函数中,interrupt为C语言保留字,表明后面的kbi_isr()是中断函数,中间的VectorNumber_Vkeyboard是该单片机键盘中断的中断号,来自于头文件MC9S08JM60.h,在该文件开

14、头位置有语句#define VectorNumber_Vkeyboard 25关于中断的更多内容,参加后续章节。2 由于该单片机的8个键盘中断共用一个中断号,因此为了区别到底是哪个按键被按下,还需要在中断程序里读取管脚对应的数据寄存器的数值,根据数据寄存器的数值决定哪个键被按下。比如,为了区别key4和key5,这两个管脚分别为PTB4和PTB5,因此需要读取B口的数据寄存器PTBD,根据PTBD_PTBD4和PTBD_PTBD5的值可以知道key4或者key5是否被按下。3 在读取相应的数据寄存器前,可以有小的延时,以便去除按键的机械抖动。4 在键盘中断程序的最后语句KBISC = 0x06

15、; 是为了对KBACK写“1”以便清除中断标志。第四章 SCI串口通讯程序设计过程1、 搞清楚SCI串口通讯的硬件连接,从图1-3和1-6中可以看出,实验板使用了第一个串口,对应管脚PTE0(发送)、PTE1(接收),经过RS232电平转换芯片ICL3232E之后,连接到9针接口COM0上。2、 SCI串口的初始化Sci串口初始化主要是设置波特率,jm60单片机的波特率设置寄存器有SCI1BDH和SCI1BDL波特率设置遵循公式:SCI 波特率 = BUSCLK/(16BR),公式里的BR就是需要初始化设置给SCI1BDH、SCI1BDL的13位数值。由于头文件的帮忙,对SCI1BDH、SCI

16、1BDL的设置可以用一条语句整体赋值就是SCI1BD = BUSCLK/16/SCI波特率;比如要设置成9600的波特率,而且知道总线时钟为8MHz,则波特率设置语句为: SCI1BD = 8000000/16/9600;3、 SCI寄存器设置SCIxC17LOOPS LOOPS = 1时,发送器输出与接收器输入内部连接。 6SCISWAI0在等待模式下,SCI时钟继续运行,因而SCI可以作为唤醒CPU中断的源。 1当CPU处于等待模式时,SCI时钟停止。 5RSRC接收器源选择 只有 LOOPS位被设置为1,该位才有意义或有效。当LOOPS = 1时,接收器输入与发送器输出内部连接。RSRC

17、的作用是确定此连接是否与TxD管脚连接。0此时LOOPS = 1,RSRC = 0选择内部回送模式,TxD管脚不与发送器输出和接收器输入连接。1此时LOOPS = 1,RSRC = 1为单线SCI模式,TxD管脚与发送器输出和接收器输入连接。 4M9位或8位模式0正常,起始位8个数据位(首先是LSB)停止位。1接收器和发送器使用9位数据字符。起始位8个数据位(首先是LSB)第9位数据位停止位。3WAKE接收器唤醒方法(一般用在多机处理系统中)0空闲线唤醒。1地址位唤醒。2ILT空闲线类型选择0空闲字符位计数在起始位后启动。1空闲字符位计数在停止位后启动。1PE奇偶校验使能使能硬件奇偶校验产生和

18、检查。当奇偶检验使能时,数据字符的MSB(第8或第9数据位)被视为奇偶校验位。0无硬件奇偶校验产生和检测。1奇偶校验被使能。0PT奇偶校验类型如果奇偶校验被使能(PE=1),该位用于选择偶校验或奇校验。偶校验指的是数据字符中1的总数量(包括奇偶校验位)为偶数。奇校验指的是数据字符中1的总数量(包括奇偶校验位)为奇数。0偶校验。1奇校验。SCIxC27TIE发送中断使能(针对于状态位TDRE)0不启动TDRE中断(使用查询方式)。1启动TDRE中断,当TDRE标志为1时,产生硬件中断请求。 6TCIE发送完成中断使能(针对于TC)0启动TC中断,当TC标志为1时,进行硬件中断请求;1不启动TC中

19、断(使用查询方式) 5RIE接收器中断使能(对于RDRF)0不启动RDRF中断(使用查询方式);1启动RDRF中断,当RDRF标志为1时,产生硬件中断请求 。 4ILIE空闲线中断使能(对于IDLE)0来自 IDLE 的硬件中断被禁止(使用查询方式)。1当 IDLE 标志为1时,进行硬件中断请求。 3 TE发送器使能:0发送器关闭; 1发送器打开 2 RE接收器使能当SCI接收器关闭时,RxD 管脚重新成为通用目的端口I/O管脚。0接收器关闭; 1接收器打开1RWU接收器唤醒控制可被改写为1,用于将 SCI 接收器设置为等待状态,等待选中的唤醒条件满足才工作。唤醒条件由WAKE决定。用户设置

20、RWU后,唤醒条件满足后,硬件会自动清除 RWU。0 SCI 接收器正常 工作; 1SCI接收器等待唤醒条件才工作。0SBK发送中断向 SBK 写1再写0,会将中断字符(10位或11位的0)插进正在发送的数据流中。只要 SBK = 1,附加的由10位或11位的逻辑0组成的中断字符就插进了数据流中。根据设置和清除SBK 的时间长短,第二个中断字符可能也被插进数据流中。0正常发送器操作。1将中断字符(10位或11位的0)插进正在发送的数据流中。 SCIxS17TDRE 发送数据寄存器空标志复位,或者当数据从发送数据缓冲器转移到发送移位器时,TDRE自动置1,为了清除 TDRE,对 SCIS1 进行

21、读操作,然后写 SCI 数据寄存器(SCID)。0发送数据寄存器(缓存区)满。1发送数据寄存器(缓存区)空。 6TC发送完成标志复位、或者当TDRE=1,且没有数据、前导符或中断字符正在被发送时,TC 被置位。0发送器正在工作(发送数据、或中断)。1发送器空闲(发送操作结束)。TC=1时,通过对 SCIS1 进行读操作,然后完成下列三件事情中的任何一件,可以自动清除TC:1)写 SCID,发送新数据; 2)通过将 TE 写0再写1,发送一个前导符;3)通过向 SCIC2 的 SBK写1,发送一个中断字符。 5RDRF接收数据寄存器满标志当一个字符从接收移位器传输至接收数据寄存器(SCID)时,

22、RDRF 变为1状态。RDRF=1 时,为了清除 RDRF,要读取 SCIS1然后再读取 SCI 数据寄存器(SCID)。4IDLE空闲线标志在一个活动周期后,当 SCI 接收线在一个全字符周期内成为空闲状态时,IDLE被置位。当 ILT=0时,在起始位后,接收器开始对空闲位的周期个数(即出现了多少个空闲位)进行计数。因此,如果接收字符都为1,这些位周期和停止位周期将一直被计数,直到接收到的个数满足了接收器所需的、可以确定这是一个空闲字符的条件。这个条件是:10位或是11位的“1”(是10位还是11位取决于M控制位)。当 ILT=1时,只有在停止位后,接收器才会启动空闲位周期计数。因此,前一字

23、符最后的停止位和任意逻辑高电平位不会被纳入计数范围。要清除 IDLE,在 IDLE=1 时,先读取 SCIS1,再读取 SCI 数据寄存器(SCID)。IDLE 被清除后,只有在一个新字符被接收且 RDRF 被设置后,IDLE 才可以被再次设置。即使接收线在一个额外周期内保持空闲状态,IDLE 也仅能被设置一次。0无空闲线检测。1空闲线被检测。 3OR接收丢包标志当一个新的字符准备被转移至接收数据寄存器时,发现先前接收到的字符还没从 SCID中读走,OR被置位。此时新字符(即相关错误信息)将丢失。先读取 SCIS1,再读取数据寄存器(SCID)清除OR标志。0无丢包。 1接收丢包(新SCI 数

24、据丢失)。2NF噪声标志接收器对起始位采样7次,而对其它数据位和停止位采样3次。如果这些采样不是完全一致,则表示有噪声, RDRF被置位时,NF也被置位。先读取 SCIS1,再读取数据寄存器(SCID)清除该标志。0无噪声被检测到。1当前对应的SCID数据存在接受噪声,可能不可靠。 1FE帧错误标志当接收器在停止位应该出现的地方检测到逻辑0时,认为数据帧没对齐, RDRF 置位时会同时置位PE。先读取 SCIS1,再读取数据寄存器(SCID)清除该标志。0无帧错误被检测到,但这并不意味着没有帧错误。1有帧错误。 0PF奇偶校验错误标志当奇偶校验使能(PE = 1),但接收到的字符中的奇偶校验位

25、与所期望的奇偶校验值不一致时,PF被置位。先读取 SCIS1,再读取数据寄存器(SCID)清除该标志。0 无奇偶校验错误。1 奇偶校验错误。 SCIxS27LBKDIFLIN Break 检测中断标志 当LIN break检测电路被允许并且检测到一个LIN break字符时,LBKDIF 被置1,对该位写1可清除。0没有检测到LIN break字符;1检测到LIN break字符。6RXEDGIF RxD 有效边沿检测中断标志 当接收管脚出现有效的边沿 ( RXINV = 0时是下降沿,RXINV=1时则为上升沿)时RXEDGIF被置1,写1可清除该标志。4 RXINV接收数据极性取反 该位置

26、1将会导致接收的数据信息按位取反。3RWUID接收空闲标志位控制 RWUID位控制接收空闲是否使IDLE位置位。0接收空闲状态下(RWU = 1), 即使检测到空闲字符,IDLE位也不置位;1接收空闲状态下(RWU = 1), 检测到空闲字符时会导致IDLE位置位。2BRK13中断字符长度BRK13用于选择更长的中断字符长度。帧错误的检测并不受该位状态的影响。0 中断字符为10位周期(如果 M=1 则为11位)1 中断字符为13位周期(如果 M=1 则为14位) 1LBKDELIN Break 检测允许设置 LBKDE位用来选择更长的break字符长度. 0 定义Break字符长度为10 bi

27、t (如果M = 1则为11位).1 定义Break字符长度为11 bit(如果M = 1则为12位).0RAF接收器激活标志当 SCI 接收器检测到一个有效起始位开始时,RAF 被置位,并且,当接收器检测到一个空闲线时,RAF被自动清除。在命令MCU为停止模式前,此状态标志可用于检查是否有一个 SCI 字符正在被接收。0 SCI 接收器空闲,等待一个起始位。1 SCI 接收器激活(RxD输入不空闲)。SCIxC37 R8接收器的第9个数据位当 SCI 配置为9个数据位时(M=1),R8可被认为是第9个接收数据位。应在读SCID之前读取R8值,因为读取SCID操作会启动标志清除过程,标志清除后

28、可能有新数据写入R8和SCID。6 T8发送器的第9个数据位当 SCI 配置为9个数据位时(M=1),T8 作为第9个发送数据位,应在写SCID之前写T8(如果T8需要写入新值)。5 TXDIR 单线模式下TxD 管脚方向当SCI 被配置为单线半双工操作(LOOPS=RSRC=1)时,该位决定 TxD 管脚的数据方向。0单线模式下 TxD 管脚为输入; 1单线模式下 TxD 管脚为输出。4TXINV发送数据倒置设置此位使得被发送数据输出的极性反转。3:0SCIS1中接收丢包、噪声、帧错误、奇偶校验出错中断允许设置。0中断禁止; 1中断允许。4、 实用的串口通讯程序设计子程序由于JM60单片机有

29、两路SCI串口,实验电路板上用到了第一路,因此下面针对第一路进行设计,读者只要稍微改动就可以用到第二路。1 发送一个字符2 数字转换成对应的ASCII码3 发送可以在文本文件中显示成十六进制的数据4 发送字符串5 接收一个字符5、 与xp超级终端构建人机界面实验设计假设编写程序,在硬件连接正常的情况下,开机运行时超级终端显示菜单用户在超级终端激活状态下,敲击键盘数字1将使得D1的亮灭状态转换一次,敲击键盘数字2将使得D2的亮灭状态转换一次,敲击键盘数字3将使得D1和D2的亮灭状态同时转换一次。1 硬件连接如下图2 建立软件工程新建工程“超级终端”点完成后出现集成开发环境,点击编译(make)按钮一次。然后选择新建文本文件,将“实用的串口通讯程序设计子程序”中的所有子程序全部拷贝到新建的文本文件中,点击保存菜单,选择Sources目录,文件命名为sci.h。回到集成开发环境,鼠标右击Includes目录选择Add Files,将刚才新建的文本文件加入到工程中。回到main.c文件中,修改主文件直到如下模样。3 配置超级终端下面描述主要针对xp系统,如果不是,请自行安装相应的串口调试软件。按照程序/附件/通讯/超级终端打开超级终端设置窗口,给这

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1