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

合集下载

飞思卡尔8位单片机MC9S08第07章 08C语言

飞思卡尔8位单片机MC9S08第07章 08C语言

(2)编译程序
返回
7.4 08C语言程序编程框架
7.5 08C语言的编译过程
7.5.1 编译过程
在SD-HC08在线编程开发系统中编辑了源程序以后,使用编译命令就可 以把源程序翻译成目标程序。 ① 编译的脚本文件:包含了编译指令及相关的参数,文件存放的位置 在.prj的同一文件夹下。 ② C程序向汇编程序的转化:启动08C编译器,根据.mak文件的编译脚 本将所有.c文件编译成.s文件及.lis文件。 ③ 汇编代码向机器码的转化:汇编程序将所有的汇编文件编译成.o的中 间目标文件,即所有的汇编语句都编译成机器码。 ④ 连接:启动连接器,连接器根据.mak文件中的连接脚本,把所有的.o 文件统一连接成一个.s19文件,该文件可以下载到目标机器上执行,同时还 可根据用户需求生成.lst文件和.mp文件。
(2)I/O与寄存器的操作
使用上面定义的I/O口或寄存器宏,可以方便对I/O置高低电平或读取I/O 的状态,读写寄存器。
7.3 08C语言的使用
7.3.2 使用汇编指令
在08C语言中,使用汇编代码有两种方法:
(1)asm(“汇编指令”) (2)定义汇编子程序
定义格式如下:_子程序名 代码 … rts
7.1 单片机的C语言编程概述
7.1.2 单片机C语言
单片机C语言和标准C语言的用法基本相同,但是 单片机C语言是针对于资源少的MCU,它的编程方法 和编程手段与PC机上使用C语言还是有很大差别。
7.1 单片机的C语言编程概述
返回
7.2 标准C语言的基本语法
7.2.1 数据类型
(1)基本类型
表7-1 C语言基本数据类型 数据类型
7.2 标准C语言的基本语法
7.2.1 数据类型

Freescale8位单片机入门与实践

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个国家拥有设计、生产和销售运营部门。

飞思卡尔是众多市场领域中的领导者,是世界上最大的微控制器类集成电路供应商,随着国内市场投资的增加,其产品得到越来越多的认同,尤其是移动通信、汽车电子、工业控制等环境恶劣的场所,其应用越多,因为它的产品抗干扰性能很强。

飞思卡尔8位单片机实用教程课程设计

飞思卡尔8位单片机实用教程课程设计

飞思卡尔8位单片机实用教程课程设计一、课程设计概述本次课程设计旨在让学生深入了解飞思卡尔8位单片机的基本原理和使用方法,掌握其应用开发技能,为自主研发嵌入式系统打下基础。

在设计过程中,学生可以自由选择项目主题,包括但不限于:•智能家居控制系统•电子秤设计•数码钟表设计•电子琴•LED矩阵显示屏•红外遥控器除了项目主题选择自由,学生也需要在设计过程中独立完成软硬件开发,并能够撰写设计报告并进行实验现场讲解。

二、课程设计要求1. 硬件要求•飞思卡尔8位单片机开发板•液晶显示屏•七段数码管或LED矩阵显示屏•简易电路板•相关电子元器件:电阻、电容、LED、按键等2. 软件要求学生需要下载并安装相关软件进行开发,包括:•CodeWarrior软件•P&E Micro的USB Multilink接口3. 设计报告要求学生需要撰写完整的课程设计报告,报告内容包括:•选题背景及意义•设计思路及实现步骤•软硬件设计图及接口说明•代码编写及调试过程•实验现场演示三、课程设计流程1. 硬件连接将飞思卡尔8位单片机开发板与液晶显示屏、七段数码管或LED矩阵显示屏、简易电路板以及相应的电子元器件进行连接,并将P&E Micro的USB Multilink接口插入电脑上的USB接口。

2. 编写程序使用CodeWarrior软件编写程序,并进行调试。

需要注意的是,程序中需要包括板子上所有的设备,比如液晶显示屏、七段数码管或LED矩阵显示屏、按键等的驱动程序。

程序编写完成后,可以将程序烧录到单片机中。

3. 实验现场演示学生在课程设计报告演示时,需要准备好实验现场演示。

在演示过程中,需要详细讲解所设计的主题、实现效果以及编写程序的过程等,并针对现场观众的问题进行回答。

学生还需将实验现场演示过程录制下来,并与课程设计报告一起提交。

四、注意事项•编写程序时,需要注意代码规范,确保代码的可读性和维护性。

•在连接硬件时,需仔细核对电路板上的元器件及连接方式,避免出现电路连接错误。

飞思卡尔MC9S08及MC9S12 单片机通过SCI口更新程序的一种方法

飞思卡尔MC9S08及MC9S12 单片机通过SCI口更新程序的一种方法

通过SCI口单片机通过飞思卡尔MC9S08及MC9S12 单片机更新程序的一种方法王佚(Freescale 8/16bit MCU FAE) 飞思卡尔的8/16 Bit 单片机内置FLASH可以通过单片机编程来进行擦除与编程,所以,理论上就可以通过SCI口接口实现软件的自我升级.在实际工作中,我们也遇到不少客户询问相关的实现方法,而我们也给了一些参考代码,但还是有不少工程师不能很好地理解,基于这些原因,我写了点东西来介绍一种比较简单的实现方法,供大家参考,如有不周,敬请批评与谅解.一,飞思卡尔MC9S08单片机内部存储器介绍MC9S08有很多系列单片机,一般程序空间均在64K以下,为了介绍方便,我们以MC9S08AW60一种为例进行介绍.上图为MC9S08AW60的数据空间分布图,对于大于64K空间的MC9S08单片机,其结构与MC9S12单片机类似,故先不做介绍.从图中我们不难看出,由于飞思卡尔单片机的数据存储器(RAM)与程序存储器(FLASH)是统一编址,所以,我们可以将程序引导到RAM里运行.二,飞思卡尔 8位单片机内部中断相量地址介绍飞思卡尔 8位单片机对中断处理是通过判断中断相量表的地址来判断程序的入口地址的.飞思卡尔 8位单片机的中断相量为16位,其放置在从0xFFFF地址向下按照中断号以此排放.三, 飞思卡尔MC9S08单片机FLASH操作简介飞思卡尔MC908及MC9S08系列单片机的FLASH都可以通过软件进行擦除与编程,不同的是MC908有相应的程序内置在单片机的ROM空间,而MC9S08没有,其需要用户自己编写.飞思卡尔的CodeWarrior for MC9(S)08软件在安装后,在\freescale\CodeWarrior for Microcontrollers V6.0\(CodeWarrior_Examples)\HCS08\Device Initialization C Examples\GB60_Modules\Sources\Flash_GB60目录下有响应的参考代码.MC9S08系列单片机的Flash有四种操作模式:Byte program, Byte program (burst), Page erase及Mass erase,其操作时间见下表.需要说明的是,在此操作其间,不可以使能任何中断.下图为操作流程图.需要说明的是,用来实现”Write a data value to an address in the FLASH array”的语句代码,表面上看是将一个数据写到一个Flash数据区去,但实际上是将所需要编程的Flash地址或是擦除的Flash的块地址及数据分别写入到单片机内类似地址积存器及数据寄存器里.CodeWarrior里自带的代码,是用机器码的方式来做的,其也给出了相应的代码,大家可以对应着看看,一般来说,只做Flash模拟EEPROM,该代码即可满足大家使用.在此,本文就不详细描述代码实现的方法.四,实现程序自我更新的两种常见方法及各自特点一般说来,我们有两种方法来,我们有两种常见方法实现程序自我更新.一种是将实现程序更新的部分的程序与应用程序融合在一起,系统在更新程序时甚至可以将整个程序包括更新程序一起更新掉,其优点是可以花费少的程序空间,缺点是数据及主程序空间分配比较麻烦,且在做更新程序时一旦掉电或是其它什么原因,可能无法进行程序的再次更新.另外一种是,将实现程序更新的程序写成是一个独立的程序,其缺点是要浪费部分程序空间,且中断相量无法更新所以要做程序的映射,类似引导(bootload)的概念.其优点是在编写应用程序时不用考虑数据空间地址分配的问题,同时不用担心下载过程出现任何异常情况.本文后面所涉及的内容,均以第二种方法为例,为描述方便,我们定义其为下载程序.五, 下载程序如何实现中断相量的映射由于我们无法预知究竟系统会用多少中断,所以对于应用程序的中断,都必须在更新程序中做映射,即,我们在单片机的某个程序空间建立一个程序跳转表,更新程序的中断相量表做一个固定的表,对应固定地址,我们只需在固定地址放相应的跳转指令,就可以实现中断相量的映射.例题如下:地址A: JMP 地址B. JMP地址B其实是个引导程序.中断相量<1>: 地址A.其中, “中断相量<1>”地址放的”地址A”由更新程序确定,而”地址A” 地址放的” JMP地址B”,JMP由计算机来添加,”地址B”则由应用程序确定.对于复位中断,其处理方法有点不同,其实现方法如下:中断相量<1>: Main.地址A:JMP 地址B.Main:If (a>b){goto地址B }中断相量表的定义参考方法如下:void (* const _vect[])() @0xFFCC = { /* Interrupt vector table */0xf998, /* Int.no. 25 Vrti (at FFCC) Unassigned */0xf99c, /* Int.no. 24 Viic1 (at FFCE) Unassigned */…_Startup /* Int.no. 0 Vreset (at FFFE) Reset vector */};六,单片机程序注意事项1,程序空间分配下载程序的空间应该从0xfff地址向下排放,具体大小需要根据实际的大小及单片机Flash的Block大小来同时决定.空间的安排,一定是Block的倍数.应用程序的空间是从程序的最低段开始排放,除了中断向量外,不可以有任何代码地址与下载程序重叠.在用CodeWarrior来写程序时,我们可以修改PRM文件来控制程序排放地址.下面是下载程序的PRM参考代码.NAMES ENDSEGMENTSROM = READ_ONLY 0xfA00 TO 0xFFAF;Z_RAM = READ_WRITE 0x0070 TO 0x00FF;RAM = READ_WRITE 0x0200 TO 0x086F;ROM2 = READ_ONLY 0xFFC0 TO 0xFFCB;ENDPLACEMENTDEFAULT_RAM INTO RAM;DEFAULT_ROM, ROM_VAR, STRINGS INTO ROM;_DATA_ZEROPAGE, MY_ZEROPAGE INTO Z_RAM;ENDSTACKSIZE 0x802,程序代码保护为了使下载程序在任何异常情况下不会被改写,其除了放置引导程序的空间外,均要做代码保护.其在C语言种的参考代码如下.const unsigned char NVPROT_INIT @0x0000FFBD = 0xFA;.3,计算机应用程序如何处理单片机应用程序的中断相量表计算机在应用程序处理该中断相量表时,应根据下载程序的映射关系,将两个字节的相量数据自动计算到对应引导地址,并变为JMP+地址(相量)的模式.下面是参考转变模式.单片机应用程序复位相量为0x8000,其变为跳转后的代码则为0xCC8000.如本文参考代码,其对应引导地址为0xf9fc,则计算机应用程序则应通知下载程序在0Xf9fc后写0XCC8000三个字节数据,运行完成后,反编译的代码如下:F9FC: JMP 0x80003,其它建议为保证应用程序的正确性,可以在下载程序里判断程序的校验码,可以用16位CRC码等.七,S19文件格式简介S-记录实际上是由五个部分组成的字符串的集合。

MC9S08AW60单片机实验指导书-V10

MC9S08AW60单片机实验指导书-V10

Freescale HCS08原理及应用Version: 0.10Freescale MC9S08AW60单片机实验指导书华中科技大学电信系Freescale 联合实验室May 8, 2009REVISIONSRev.DescriptionOriginDate0.10初始化版本YangMing2009.04目录REVISIONS (II)1Freescale HCS08单片机实验指导书 (4)1.1 MC9S08AW60 单片机 (4)1.2 AW60 开发系统 (4)1.2.1 MC9S08AW60开发套件及其连接 (5)1.3 使用A W60 开发板时P C 串口的设置 (6)1.4 命令详解 (8)1.4.1 H 命令 (8)1.4.2 D 命令 (9)1.4.3 M 命令 (10)1.4.4 E命令 (10)1.4.5 L 命令 (10)1.4.6 G 命令 (11)1.4.7 R 命令 (11)1.4.8 B 命令 (12)1.5 监控程序及监控命令详解 (12)1.6 常用命令组合—向实验板下载程序 (12)1.7 运行本地用户程序 (14)1.8 清华开发板用户编程说明 (14)1.9 实验步骤 (15)2HCS08实验模块原理图 (17)2.1 8位数字量输入电路与8位数字量显示电路 (17)2.2 A/D模拟电平产生电路 (18)2.3 数码管显示电路 (19)2.4 外部键盘电路 (19)2.5 IRQ中断信号产生电路 (20)2.6 SPI输入电路 (21)2.7 SPI扩展输出电路 (21)参考文献 (23)1 Freescale HCS08单片机实验指导书1.1 MC9S08AW60 单片机MC9S08AW60 是首个能支持 5V 而基于高性能 H CS08 核系列成员。

它包含众多有价值 的特性--60K flash 存储器、2K RAM 、灵活而无需外部元件的内部时钟发生器、低压检测、 高性能、模数转换器(ADC )、串行通信模块等。

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

飞思卡尔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位选择的晶振被初始化。

(整理)飞思卡尔8位单片机MC9S08JM60开发板实践教程

(整理)飞思卡尔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位选择的晶振被初始化。

飞思卡尔8位单片机MC9S08第03章 高级语言的串行通信编程

飞思卡尔8位单片机MC9S08第03章 高级语言的串行通信编程

3.4 Visual Basic的串行通信控件MSComm
3.4.3 MSComm控件的主要属性
(1)CommPort属性 (3)PortOpen属性 (5)InputMode属性 (7)OutPut属性 (9)SThreshold属性 (11)DTREnable属性 (13)HandShaking属性 (2)Settings属性 (4)Input属性 (6)InputLen属性 (8)RThreshold 属性 (10)CommEvent属性 (12)RTSEnable属性
3.1 Visual Basic 6.0 编程简介
3.1.2 面向对象的程序设计概念
(1)对象及其相关概念
对象:一个整体看待的数据和代码的集合。 属性:每一个对象所具备的特性。 事件:对象所能识别的动作。 方法:对象所能执行的动作。
(2)面向对象的程序设计
面向对象的程序设计方法与编程技术不同于标准的过程化程序设 计。面向对象程序设计基本上是一种包装代码,代码可以重用而且维 护起来很容易。
3.4 Visual Basic的串行通信控件MSComm
3.4.2 MSComm控件的引用
由于Visual Basic的串行通信控件并不主动出现在工具箱中,当 我们需要MSComm控件时,可把它添加到工具箱中,步骤如下:图 3-5 加载的MSComm控件。 ① 单击【工程】菜单。 ② 在【工程】菜单中选择【部件】命令。 ③ 打开【部件】对话对话框,选中 “Microsoft Comm Control ”复选框。 6.0 6.0” ④ 单击【应用】或【确定】按钮,即可在工具箱中看到 “MSComm控件”图标,如图3-5所示,我们就可以象使用标准控件一 样使用MSComm控件。
3.5.1 实例概述

飞思卡尔8位单片机MC9S08第16章 08系列MCU编程器的开发

飞思卡尔8位单片机MC9S08第16章  08系列MCU编程器的开发

16.2.2 HC08编程器软件设计思想
实现空白芯片写入的软件设计思想是: ① 被写入的目标MCU工作于监控模式。 ② 主机将擦写FLASH程序的二进制代码以及要写入的数据写入目 标MCU的内存区。 ③ 主机向目标MCU发送RUN监控命令,运行第②步写入目标 MCU内存区的程序。 在这3步的执行过程中,第2步写入目标MCU内存的程序设计有一 定难度。需要综合考虑内存分配、子程序调用的参数传递方法、程序 执行完成后如何返回监控状态(等待接收字节状态),完成其他页面的写 入操作等问题。
MCU通过特定的I/O口接收主机发送的字节数据,判断是否是监控 命令,如果是,执行相应的动作。监控命令共有6条,每条监控命令由 操作码和操作数组成。下表1列出了各条监控命令的格式和功能。
命令 READ WRITE IREAD 格式 $4A $4A 高字节 高字节 低字节 低字节 数据 $49 $49 高字节 高字节 低字节 低字节 数据 数据 $1A $1A 数据 数据 功能 读出指定单元内容(RAM或Flash) 向指定单元写数据(RAM) 读取上次访问的地址+1、+2处的 内容(RAM或Flash) 向上次访问的地址+1处写入一个 数据(RAM) 读堆栈指针高字节和低字节 执行RTI指令
VDD 4096+32CGMXCLK CYCLES RST 24BUS CYCLES PTA7 BY TE1 1 256 BUS CYCLES(最少) BY BY TE2 TE8 4 1
···
来自主机的数据 PTA0
CO M MA ND 1 2 BR EA K 4 1 COM MAND ECHO
MCU发送的数据
VCC GND PTD0 PTD2 PTD4
VCC

飞思卡尔8位单片机实用教程说明书

飞思卡尔8位单片机实用教程说明书

图书基本信息书名:《飞思卡尔8位单片机实用教程》13位ISBN编号:978712108999210位ISBN编号:7121089998出版时间:2009-6出版社:曾周末、李刚、陈世利、 周鑫玲 电子工业出版社 (2009-06出版)页数:222版权说明:本站所提供下载的PDF图书仅提供预览和简介以及在线试读,请支持正版图书。

更多资源请访问:前言飞思卡尔原是全球领先的半导体公司,为汽车、消费电子、工业控制、网络和无线市场设计并制造嵌入式半导体产品。

飞思卡尔系列单片机由于其低成本和高性能的特点越来越受到用户的青睐。

本书介绍的MC9S08QG8单片机采用高性能、低功耗HCS208飞思卡尔8位微控制器为内核,是一款集成度很高、功能丰富、适用于各种应用的低价位单片机。

本书将给大家介绍它的一些主要功能及特性,包括灵活多样的低功耗模式、3.3V电压下的Flash编程、片内调试仿真器、高速ADC、IC总线、片内比较器等。

本书共12章,深入浅出地从一般单片机的基础知识人手,引出飞思卡尔8位单片机基础知识、最小系统设计,进而有步骤地、详略得当地介绍飞思卡尔8位单片机的寄存器与片内存储器、指令系统与汇编程序设计、中断系统等基本功能,并在之后的章节中,详细而又有针对性地一一介绍了集成在这款单片机内部的其他功能模块,比如定时器和比较器、异步串行通信、SPI、IC、模/数转换等功能模块。

本书还介绍了飞思卡尔单片机与MCS51单片机的区别,学过5l单片机的人会很快掌握其要点。

在本书最后一章里,有针对性地介绍了S08系列单片机c语言编程,并详细介绍了Code Warrior IDE调试软件的使用方法。

本书给出的所有例题都在实验板上运行验证过。

总之,本书力求通过最简洁的语言和表述方式、最通俗易懂的应用举例,向广大读者全面地介绍MC9S080G8单片机的功能及特性,以求能够为大专院校的学生及各相关领域的工作者提供一些帮助。

参加本书编写的还有天津大学精仪学院的薛彬、汤其剑、刘世廷、高雅彪、叶德超、黄邦奎、孙晔等研究生。

飞思卡尔8位单片机MC9S08第04章 Freescale 08系列单片机概述

飞思卡尔8位单片机MC9S08第04章 Freescale 08系列单片机概述

4.2 HC08系列单片机
4.2.2
内部结构简图与引脚功能
(1)内部结构简图
GP32内部有以下主要部分: CPU08、存储器、定时接口模块定时基模块、看门狗模块、并行I/O 接口、串行通信接口SCI、串行外设接口SPI、断点模块、A/D转换模块、 键盘中断模块、时钟发生模块及锁相环电路;低电压禁止模块、复位与 中断模块。
GB60内部有以下主要部分: HCS08内核、HCS08系统控制模块、存储器时钟发生器 、A/D转 换模块、电压调节模块、调试模块DBG 、8位键盘中断模块、串行通 信接口、SCI1模块等等。
4.3 HCS08系列单片机
(2)GB60单片机的引脚功能
①电源类引脚 VDD、VSS(24脚、23脚):电源供给端。 VREFH、VREFL(41脚、42脚):内部A/D转换器的电源供给及参考电 压输入端。 VDDA、VSSA(56脚、57脚):时钟发生器模块(CGM)的电源供给端。 ②控制类引脚 RESET (1脚):外部低有效复位输入或输出脚。 IRQ(16脚):外部中断输入脚。 ③I/O类引脚 PTA0/KBIP0~PTA7/KBIP7 (46~53脚):8位通用双向I/O口,每个 可编程为键盘输入脚。 PTB0/AD0~PTB7/AD7 (33~40脚):8位通用双向I/O口,也可作 为8路8位A/D转换输入脚。 PTC0/TxD2、PTC1/RxD2(3~4脚):2位HC08系列单片机
②控制类引脚 RST(6脚):外部低有效复位输入或输出脚,有内部上拉电阻。 IRQ(14脚):外部中断输入脚,有内部上拉电阻。 ③I/O类引脚 PTA7/KBD7~PTA0/KBD0 (40~33脚):8位通用双向I/O口,每个 可编程为键盘输入脚。 PTB7/AD7~PTB0/AD0 (30~23脚):8位通用双向I/O口,也可作为 8路8位A/D转换输入脚。 PTC4~PTC0 (11~7脚):5位通用双向I/O口。 PTD5/T1CH1~PTD0/ (22、21、18~15脚):6种特殊功能、双向 I/O口,其中T1CH1、T1CH0用于定时器模块(TIM1)。SPSCK、MOSI、 MISO、用于串行外围接口(SPI)。 PTE1/TxD、PTE0/RxD (12、13脚):2位双向I/O口或串行通讯。 ④其它 CGMXFC (3脚):CGM的外部滤波电容连接脚。 OSC1、OSC2 (5~4脚):片内振荡器引脚。

飞思卡尔8位单片机MC9S08第6章 通用IO与第一个汇编程序

飞思卡尔8位单片机MC9S08第6章 通用IO与第一个汇编程序

(4)主程序
主程序一般包括初始化与主循环两大部分。初始化包括堆栈初始化、 系统初始化、内存变量初始化、I/O端口初始化、中断初始化等。主循 环是程序的工作循环,根据实际需要安排程序段,但一般不宜过长, 建议不要超过200行,具体功能可通过调用子程序来实现,或由中断 程序实现。不带操作系统的MCU程序总有一个主循环,表示程序周而 复始地执行。
6.2 汇编程序编程框架
(3)内存变量
如果程序中使用到内存变量,需在此定义。实际上,这里是对内 存变量的声明,通常称为“开辟内存变量”,内存变量的初始化在主 程序开始部分完成。第一个内存变量需用“ORG”语句定位,随后, 按地址从小到大顺序存放。每个内存变量都有固定的内存地址。借用 C语言术语,这里所开辟的所有内存变量都是“全局变量”。对应于C 语言中的“局部变量”将在讲解子程序规范时说明。
第六章 通用I/O与第一个汇编程序
主要内容

MC68HC908GP32的普通I/O 汇编程序编程框架 08汇编语言编译过程所涉及的文件 SD-HC08嵌入式MCU在线编程集成开发系统
6.1 MC68HC908GP32的普通I/O
所谓普通I/O,即基本的输入/输出,有时也称为并行I/O。作为普 通输入引脚,MCU内部程序可以读取该引脚,知道该引脚是“1”(高 电平)或“0”(低电平),即开关量输入。作为普通输出引脚,MCU 内部程序向该引脚输出“1”(高电平)或“0”(低电平),即开关量 输出。MC68HC908GP32单片机有5个普通I/O口,分别是A口、B口、 C口、D口、E口。它们中的大部分具有双功能,本节仅讨论它们作为 普通I/O功能时的编程方法。
6.1 MC68HC908GP32的普通I/O
① C口数据方向寄存器(Data Direction Register C,DDRC) C口数据方向寄存器(DDRC)的地址是:$0006,由于对应引脚只 有7根,最高位没有意义。DDRC的第6~0位分别记为DDRC6~DDRC0, 这些位分别控制着C口引脚PTC6~PTC0是输入还是输出,含义参考A口 说明。复位时DDRC为$00。 ② C口数据寄存器(Port C Data Register,PTC) C口数据寄存器(PTC)的地址是:$0002,PTC的第6~0位分别记 为PTC6~PTC0。含义请类比A口、B口的相应说明。 ③ C口上拉电阻允许寄存器(Port C Input Pullup Enable Register,PTCPUE) C口上拉电阻允许寄存器(PTCPUE)的地址是:$000E。PTCPUE 的第6~0位分别记为PTCPUE6~PTAPUE0。含义请类比A口的相应说明。

AN3560_使用MC9S08JM60开发USB设备(中文)

AN3560_使用MC9S08JM60开发USB设备(中文)

应用笔记AN3560使用MC9S08JM60开发USB设备——MC9S08JM60 USB模块的深度理解文件编号:AN3560版本:0,08/2005苏州大学飞思卡尔嵌入式系统研发中心翻译2009年11月I1.简介 (1)2.MC9S08JM60USB模块简介 (1)2.1 USB端点 (3)2.2 VREG (3)2.3 USB收发器 (3)2.4 USB SIE (4)2.5 USB RAM (4)2.5.1 缓冲区描述符表(BDT) (5)2.5.2双缓冲(Ping-Pong缓冲) (9)B设备开发 (11)3.1 硬件设计 (11)3.1.1时钟产生 (11)3.1.2 USB设备电源 (11)3.1.3 上拉电阻 (13)3.2 USB固件设计 (13)3.2.1 USB通信模型 (13)3.2.2主固件框架 (14)3.2.3 USB状态机 (15)3.2.4 USB设备枚举过程 (17)3.2.5 端点1-6的USB事务 (23)3.2.6 挂起和恢复 (24)4结束语 (28)附录A HID鼠标固件 (28)附录B HID鼠标枚举过程 (29)II1. 简介MC9S08JM60是Freescale Flexis系列微控制器的组成部分。

Flexis系列微控制器是Freescale控制器连续性的连接点,它使得8位和32位兼容成为现实。

8位的MC9S08JM60 MCU是带有全速USB模块的设备,提供同类中最好的USB 模块性能、系统整合及软件支持。

JM系列MCU的USB模块有7个端点及256字节的RAM用于高效数据传输。

MC9S08JM60 MCU提供许多外围模块,如USB、SPI、IIC、SCI、ADC、TPM和RTC。

该类MCU灵活并容易集成到不同的应用中,如:游戏摇杆、安全控制板、打印机和PC外设。

本文论述了MC9S08JM60 USB模块的更多细节以及如何使用。

另外,还包括一些技巧以及设计中的一些注意点。

Freescale MC9S08单片机原理与应用(第10章)

Freescale MC9S08单片机原理与应用(第10章)

第10章实验系统10.1实验板简介本实验系统采用HCS08系列MC9S08AW60CFGE单片机,实验板集成了以下功能:➢OSBDM:集成OSBDM (HC08及HCS08)➢ADC:1路8/10位模数转换器电位器调节➢PWM:1路pwm控制蜂鸣器➢SCI:1路RS-232通信(DB9接头和TTL电平接口)➢KBI:4路按键中断输入➢数字量输入:4路数字量输入➢数码管:4位8段数码管显示➢LED:8位发光二极管显示➢SPI:一路串行SPI通讯接口(插针引出)10.1.1实验板系统特点➢基于BDM方式调试程序。

➢BDM方式提供给用户各种基本的开发和调试功能,包括程序下载和运行、汇编和反汇编、断点设置、单步执行和内存显示修改等。

➢用户可对自编程序进行实时仿真和在线监测。

➢系统板提供了大量外围功能模块,可辅助完成对并行IO口,键盘和外部中断、AD和SCI等模块的实验和测试。

10.1.2实验板开发套件实验板开发套件包括:➢系统板(内含BDM)➢5V直流电源➢RS-232串口电线➢USB电缆10.1.3实验板系统与PC的连接实验系统与PC的连接如图10-1所示。

BDM编程接口用来给实验板下载程序。

RS-232串行总线用来与实验板进行通讯。

RS-232串行通讯接口HCS08试验板BDM编程接口图10-110.2 实验板接口定义10.2.1 4位数字量输入电路实验板用拨码开关为用户提供了4位数字量输入模块,其原理图如图10-2所示。

图10-2当拨码开关状态为OFF时,输入由内部上拉电阻置高;当拨码开关为ON时,相应的输入为0。

10.2.3 4位按键输入电路实验板用拨码开关为用户提供了4位数字量输入模块,其原理图如图10-3所示。

图10-3按键电路由单片机内部提供上拉电阻,可以通过内部寄存器设置工作在扫描或中断方式。

10.2.4 8位数字量显示电路实验板用LED为用户提供了8位数字量输出模块,其原理图如10-4所示。

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

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

第一章搭建实验环境1、实验电路板及下载器实物图片2、实验电路图本实验图包含两大部分,分别是CPU.SCH和实验资源.SCH。

CPU采用飞思卡尔8位单片机MC9S08JM60CLD,(电路图介绍)实验资源部分电路LCD串口1602液晶电路图1-5RS232接口电路图1-6数码管显示电路发光管、ad转换以及按键电路图1-83、集成开发软件环境的建立1〉运行文件CW_MCU_V6_3_SE.EXE,在电脑C盘安装飞思卡尔8位(及简化32位)单片机集成开发环境codewarrior6.3版本2〉运行USBDM_4_7_0i_Win,这个程序会在c盘的程序文件夹下增加一个目录C:\Program Files\pgo\USBDM 4.7.0,在这个目录下a>C:\Program Files\pgo\USBDM 4.7.0\FlashImages\JMxx下的文件USBDM_JMxxCLD_V4.sx是下载器的固件文件;b>C:\Program Files\pgo\USBDM 4.7.0\USBDM_Drivers\Drivers下有下载器的usb驱动.因此在插入usb下载器,电脑提示发现新的usb硬件的时候,选择手动指定驱动安装位置到以上目录即可。

3〉运行USBDM_4_7_0i_Win之后,还会在目录:C:\Program Files\ for Microcontrollers V6.3\prog\gdi下增加一些文件,从修改时间上来看,增加了6个文件,这些文件是为了在codewarrior集成开发环境下对usb下载器的调试、下载的支持。

4、C语言编程基础第二章LED闪烁程序编写过程1、新建工程运行单片机集成开发环境codewarrior IDE出现如下界面●Create New Project :创建一个新项目工程●Load Example Project :加载一个示例工程●Load Previous Project :加载以前创建过的工程●Run Getting started Tutorial:运行CodeWarrior软件帮助文档●Start Using CodeWarrior:立刻使用CodeWarrior点击Create New project按钮,以创建一个新的工程,出现选择CPU的界面如下,请选择HCS08/HCS08JM Family/MC9S08JM60,在右边的Connection 窗口可以选择最后一个开源下载器HCS08 Open Source BDM。

AN3561_MC9S08JM60的USB Bootloader(中文)

AN3561_MC9S08JM60的USB Bootloader(中文)

应用笔记AN3561MC9S08JM60的USB Bootloader文件编号:AN3561版本:0,08/2005苏州大学飞思卡尔嵌入式系统研发中心翻译2009年11月I1.简介 (1)2.B OOTLOADER概述 (1)2.1 Bootloader资源 (1)2.2 Flash存储器保护 (2)2.3 向量重定向 (3)2.4软件启动过程 (3)2.4.1用户模式 (3)2.4.2 bootloader初始化 (4)2.4.3 Bootloader模式 (5)2.5 PC驱动及PC GUI工具 (6)3B OOTLOADER实现指南 (7)3.1 软件整合 (7)3.2 PC驱动安装 (9)3.3 运行PC GUI工具 (11)3.3.1 启动PC GUI工具 (11)3.3.2 擦除Flash (14)3.3.3 空白检测 (14)3.3.4 Flash写入 (15)3.3.5 代码校验 (17)4.结论 (18)附录A例程 (19)MC9S08JM60的USB BootloaderII1.简介 (1)2.B OOTLOADER概述 (1)2.1 Bootloader资源 (1)2.2 Flash存储器保护 (2)2.3 向量重定向 (3)2.4软件启动过程 (3)2.4.1用户模式 (3)2.4.2 bootloader初始化 (4)2.4.3 Bootloader模式 (5)2.5 PC驱动及PC GUI工具 (6)3B OOTLOADER实现指南 (7)3.1 软件整合 (7)3.2 PC驱动安装 (9)3.3 运行PC GUI工具 (11)3.3.1 启动PC GUI工具 (11)3.3.2 擦除Flash (14)3.3.3 空白检测 (14)3.3.4 Flash写入 (15)3.3.5 代码校验 (17)4.结论 (18)附录A例程 (19)III1. 简介本应用笔记描述了MC9S08JM60的bootloader(可译作“引导装入”)技术,该bootloader允许通过USB对Flash进行在线编程。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2〉
关于采用 for 循环进行延时的问题。 首先这种方法很难做到精确的 延时,而且对于首次使用这款单片机的人来说,粗略延时都很难 估算,这是因为 for 循环的延时跟系统的总线时钟有关。虽然电路 板上焊接了 4MHz 晶振,但上面的例子并没有用到,用的是内部 缺省时钟。内部缺省时钟在不修改参数的情况下,总线时钟是 8MHz。如果在主函数死循环前面添加修改时钟的代码,将时钟切 换到外部晶振,同时启用内部的 PLL 锁频环,将下面的代码放在 for(;;)死循环之前,将会产生 24MHz 的总线时钟,重新下载运行后 发现 LED 闪烁的速度明显加快。
选择 C 语言,项目名称就写“LED 闪烁” ,保存位置自己决定,但要记住。 后面有些选项就暂时跳过,选择“完成”后,并将文件夹展开的样子如下:
点击 “make” 快捷按钮正确编译后, 左边的钩钩全部消失, 同时在 Code 和 Data 列出现了相关的代码和数据量。
2、
修改主文件并下载运行
在左侧双击 mian.c 文件, 打开该文件的编辑界面, 修改文件直到下面模样:
第一章
搭建实验环境
1、 实验电路板及下载器实物图片
2、 实验电路图 本实验图包含两大部分,分别是CPU.SCH和实验资源.SCH。CPU 采用飞思卡尔8位单片机MC9S08JM60CLD, (电路图介绍)
图 1-3
实验资源部分电路
图 1-4 LCD串口1602液晶电路
图 1-5
RS232接口电路
PTBD_PTBD0 = 1; //B0 输出“1” ,D1 灭 PTBD_PTBD1 = 0; //B1 输出“0” ,D2 亮 for(i = 0;i<2000;i++){ //延时 for(j=0;j<100;j++){ } } //__RESET_WATCHDOG();//看门狗已经关闭,不需要喂狗了 } } 修改完 main.c 文件后,点击最右边的 debug 按钮。
#include <hidef.h> /* for EnableInterrupts macro */ #include "derivative.h" /* include peripheral declarations */ void main(void) { // EnableInterrupts; //不开中断,因此将此句去掉了 word i,j; //定义两个 word(int)型的变量 i 和 j SOPT1 = 0; //关闭看门狗 PTBDD_PTBDD0 = 1; //设置 B0 为输出 PTBDD_PTBDD1 = 1; //设置 B1 为输出 for(;;) { PTBD_PTBD0 = 0; PTBD_PTBD1 = 1; for(i = 0;i<2000;i++){ for(j=0;j<100;j++){ } } //死循环,类似 while(1) //B0 输出“0” ,点亮 D1,见图 1-8 //B1 输出“1” ,D2 灭 //2 个 for 循环嵌套,延时大约半秒
/*** PTBD - Port B Data Register; 0x00000002 ***/ typedef union { byte Byte; struct { byte PTBD0 :1; /* Port B Data Register Bit 0 */ byte PTBD1 :1; /* Port B Data Register Bit 1 */ byte PTBD2 :1; /* Port B Data Register Bit 2 */ byte PTBD3 :1; /* Port B Data Register Bit 3 */ byte PTBD4 :1; /* Port B Data Register Bit 4 */ byte PTBD5 :1; /* Port B Data Register Bit 5 */ byte PTBD6 :1; /* Port B Data Register Bit 6 */ byte PTBD7 :1; /* Port B Data Register Bit 7 */ } Bits; } PTBDSTR; extern volatile PTBDSTR _PTBD @0x00000002; #define PTBD _PTBD.Byte #define PTBD_PTBD0 _PTBD.Bits.PTBD0 #define PTBD_PTBD1 _PTBD.Bits.PTBD1 #define PTBD_PTBD2 _PTBD.Bits.PTBD2 #define PTBD_PTBD3 _PTBD.Bits.PTBD3 #define PTBD_PTBD4 _PTBD.Bits.PTBD4 #define PTBD_PTBD5 _PTBD.Bits.PTBD5 #define PTBD_PTBD6 _PTBD.Bits.PTBD6 #define PTBD_PTBD7 _PTBD.Bits.PTBD7
第三章 按键程序设计过程
1、 按键与 cpu 的连接,从图 1-3 可以看出,按键 4、按键 5 分别与 PTB4 和 PTB5 相连。 该款单片机 MC9S08JM60 一共有 8 个键盘输入口,从数据手册可以看出非常分散。 键盘中断输入 KBIP0 KBIP1 KBIP2 KBIP3 KBIP4 KBIP5 KBIP6 KBIP7 对应管脚 PTG0 PTG1 PTD2 PTD3 PTB4 PTB5 PTG2 PTG3 PTG PTB PTD 所属端口 PTG
如果没有硬件,也可以完全采用软件仿真的方法进行程序设计, 改动过程如下: a〉首先确保在工程硬件连接下拉中选择第一项“Full Chip Simulation” ,如 果有硬件,对于自制的开源下载器则应该选择“HCS08 Open Source BDM”
3〉
b〉点击“debug”按钮后不会出现下载器配置界面,而是直接进入调试界 面,在调试界面选择“Component/Open…”菜单。
在属性页的最下面选择刷新模式为周期性“ Periodical” ,刷新间隔可以用 缺省的 10ms。 全部修改完成后选择保存成文件以备后用。
既然是采用没有硬件的完全仿真模式,一定要去掉跟硬件相关的代码,比 如讨论 2 中添加的将时钟切换到外部晶振的代码一定要去掉。然后就可以全速 运行了。在完全仿真模式下,LED 闪烁的速度跟实际硬件相比还是不一样的, 只能是功能仿真。
4、 C语言编程基础
第二章 LED 闪烁程序编写过程
1、 新建工程
运行单片机集成开发环境 codewarrior IDE
出现如下界面

Create New Project :创建一个新项目工程 Load Example Project :加载一个示例工程 Load Previous Project :加载以前创建过的工程 Run Getting started Tutorial:运行 CodeWarrior 软件帮助文档 Start Using CodeWarrior: 立刻使用 CodeWarrior
图 1-6
数码管显示电路
图 1-7
发光管、ad转换以及按键电路
图 1-8
3、 集成开发软件环境的建立
1〉运行文件 CW_MCU_V6_3_SE.EXE,在电脑C盘安装飞思卡尔8位(及 简化32位)单片机集成开发环境codewarrior6.3版本 2〉运行
ห้องสมุดไป่ตู้
USBDM_4_7_0i_Win,这个程序会在 c 盘的程序文
出现下载器配置界面,如果没出现说明下载器没有正确安装。选择“5V”是打 算让下载器给目标板供电 5V。确保其它选项都对后,选择“ok”
出现装载警告
继续“ok”后程序下载到单片机中。在调试界面里点击运行按钮,让程序全速 运行后应该看到两个 LED 交替点亮。
3、
延伸讨论
1〉
在修改主程序 main.c 的过程中, 对寄存器 SOPT1、 PTBDD_PTBDD0、 PTBD_PTBD0 的名称问题,对于刚入手者确实有一定难度。由于包 含了文件 "derivative.h",该文件又包含了“ MC9S08JM60.h” ,这 是与选用的 cpu 相关的,建议打开这个 cpu 相关的头文件仔细阅 读,对于 B 口数据寄存器的定义如下,如果看不懂建议要搞懂 C 语言的数据结构和联合的用法。关于方向寄存器的定义与此相似。
件夹下增加一个目录 C:\Program Files\pgo\USBDM 4.7.0, 在这个目录下 a>C:\Program Files\pgo\USBDM 4.7.0\FlashImages\JMxx 下的文
件 USBDM_JMxxCLD_V4.sx 是下载器的固件文件; b>C:\Program Files\pgo\USBDM 4.7.0\USBDM_Drivers\Drivers 下 有下载器的 usb 驱动.因此在插入 usb 下载器,电脑提示发现新 的 usb 硬件的时候, 选择手动指定驱动安装位置到以上目录即可。
总体来说,该款单片机的八个键盘中断输入特点如下: 1〉 可以单独允许某一个中断输入脚,其他不用的做一般I/O; 2〉 每个中断输入脚都可以单独编程设置为下降沿触发、上升沿触发、 下降沿和低电平触发、上升沿和高电平触发; 3〉 所有中断输入口公用一个中断向量,可允许或者禁止中断; 4〉 键盘中断可以将芯片从低功耗中唤醒到正常工作模式。
MCGC2= 0x36; while(!MCGSC_OSCINIT) ; MCGC1 = 0xB8; while(MCGSC_IREFST); while(MCGSC_CLKST!=2); MCGC1 = 0x88; // RDIV = 2; //0x90; //RDIV = 4 MCGC3 = 0x46; // 24 倍频; //0x44;//16 倍频 while(!MCGSC_PLLST); while(!MCGSC_LOCK); MCGC1 = 0x08; //切换到 PLL 0x10; while(MCGSC_CLKST!=3);
相关文档
最新文档