飞思卡尔8位单片机MC9S08第5章 HC08 CPU与汇编基础
1飞思卡尔8位单片机MC9S08JM60开发板实践教程-60页word资料
第一章搭建实验环境1、实验电路板及下载器实物图片2、实验电路图本实验图包含两大部分,分别是CPU.SCH和实验资源.SCH。
CPU采用飞思卡尔8位单片机MC9S08JM60CLD,(电路图介绍)图1-3实验资源部分电路图1-4LCD串口1602液晶电路图1-5RS232接口电路图1-6数码管显示电路图1-7发光管、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\USBDM4.7.0\USBDM_Drivers\Drivers下有下载器的usb驱动.因此在插入usb下载器,电脑提示发现新的usb硬件的时候,选择手动指定驱动安装位置到以上目录即可。
3〉运行USBDM_4_7_0i_Win之后,还会在目录:C:\Program Files\Freescale\CodeWarrior 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。
飞思卡尔HC(S)08系列单片机开发及C语言编程简介
1.CodeWarrior中建立新项目运行CodeWarrior(CW)集成开发平台,如图1-1所示在File菜单下点击New,弹出建立新项目的模板对话框,见图1-2。
一般的简便做法是在图1-2对话框左面的选择列表中选择“HC(S)08 New Project Wizard”,然后在右面的项目名“Project Name”输入条中,输入你要建立的新项目名字,再在“Location”一栏中用确定项目存放的文件夹路经,完成后按“OK”进入下一步。
你也可以在图1-2对话框左侧列表中选择“Empty Project”,这样生成的项目不包含任何文件,你必须在CodeWarrior中自己添加所有相关的文件内容。
我想除非有特殊理由,实际项目开发过程中很少采用这种麻烦的方式来建立自己的项目。
接下去是选择项目开发所用的编程语言,见图1-3。
最常用的当然是C语言编程。
有时因具体项目要求,除了C编程外还需要编写独立的汇编语言模块,那就再加选汇编工具(Assembly)。
C++编程在免费版和标准版CW下都不支持,只有在专业版下才可以使用。
编程语言选择完毕后按“Next”。
图1-1图1-2图1-3这时将出现如图1-4的对话框,让你选择项目开发对应的MCU 型号。
在CW5.x 版本下支持几乎所有的HC08和大部分HCS08单片机型号。
在最新的CW6.x 中,增加了飞思卡尔最低端的8位机(RS08系列)和低端32位处理器(Coldfire V1系列)的支持,但HC08系列的有些型号没有被包含在内。
由于HC08为比较老的产品系列,已经不推荐在新项目设计中选用,因此影响不会太大。
对于新用户来说,请尽量直接安装CW6.x 或以后推出的更新版本。
以典型的9S08系列为例,当你选择了一个MCU 型号后,在图1-4右侧会显示出所有针对该型号芯片可用的项目调试场景。
其中:∙ “Full Chip Simulator ”是芯片全功能模拟仿真,即无需任何目标系统的硬件资源,直接在你的PC 机上模拟运行单片机的程序,在模拟运行过程中可以观察调试程序的各项控制和运行流程,分析代码运行的时间,观察各种变量,等等。
飞思卡尔8位单片机—飞思卡尔8位单片机基础知识
7〉 管脚的复用
注意: 0、管脚功能复用时的优先 级见右表,高优先级接管管 脚时,对低优先级模块会产 生杂乱信号,因此切换前应 先停止不使用的功能。 1、PTA5作为只能输入管脚 而言,输入电压不能超过 VDD。 2、IIC使用的端口可以通过 设置SOPT2 寄存器中的 IICPS位重新定位到PTB6和 PTB7,复位时缺省使用 PTA2 and PTA3。 3、如果ACMP和ADC被同 时使能,管脚PTA0和PTA1 可同时使用。
管脚及其功能
6〉 管脚控制寄存器
位于高页面的管脚控制寄存器,可以独立设置每个管 脚的输出驱动强度、输出信号变化速度、输入脚的内部 上拉允许等。内部上拉的设置有些时候自动失效,比如 管脚设为输出、管脚被外设使用、管脚作为模拟电路使 用等。如果管脚被用于键盘中断KBI模块,,并设置上升 沿触发,则允许上拉时实际是配置了下拉电阻。 对输出管脚设置了输出变化速度控制后,可以减少 EMC辐射,变化速度控制对输入脚无效。 输出管脚的输出驱动强度控制,可以选择更大的驱 动电流,虽然每个输出管脚都可以设置成大电流驱动, 但总电流不能超出芯片的工作范围。同时大驱动电流对 EMC辐射也会有一定影响。
• EPROM
EPROM(Erasable Programmable ROM,可擦除可编 程ROM)芯片可重复擦除和写入,。EPROM芯片在其正 面的陶瓷封装上,开有一个玻璃窗口,透过该窗口,可以 看到其内部的集成电路, 紫外线透过该孔照射内部芯片 就可以擦除其内的数据,完成芯片擦除的操作要用到 EPROM擦除器。EPROM内资料的写入要用专用的编程 器,并且往芯片中写 内容时必须要加一定的编程电压( VPP=12—24V,随不同的芯片型号而定)。EPROM的型 号是以27开头的,如27C020(8*256K)是一片 2M Bits容 量的EPROM芯片。EPROM芯片在写入资料后,还要以 不透光的贴纸或胶布把窗口封住,以免受到周围的紫外线 照射而使资料受损
飞思卡尔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位选择的晶振被初始化。
《Freescale8位单片机入门与实践》 第五章_codewarrior应用综述
第五章CodeWarrior应用综述(在线调试、VisualTools的使用、专家系统可选学)修改图形编号5.1 在线编程注意:实验电路板电源开关断开。
JP2的3、4两个端子短接。
1、确立目标在“True-Time Simulator & Real-Time Debug”工具界面,点击:Component->Set Target 在Processor栏,选择HC08,在Target栏,选择P&E Target Interface,然后点击OK,如图5-1所示图5-1 确立目标最后关闭“True-Time Simulator & Real-Time Debug”工具界面,在主界面中重新按下“Debug”,进入“True-Time Simulator & Real-Time Debug”调试。
2、在线调试重新进入后,PEDebug->Mode:Full Chip Simulation->In-Circuit ……如图5-2所示。
图5-2 调试界面系统将自动弹出如下的界面,如图5-3所示。
图5-3 连接界面点击Close Port。
出现界面如图5-4。
图5-4 关闭串口界面闭合目标板电源开关,给目标板供电,最后点击Contact target with these settings…。
出现图5-5界面,最后点击YES,程序就下载到实验板上了。
注:如果此时不出现图5-19,断开目标板电源,再次点击图5-18中Refresh List,然后再给目标板供电。
图5-5 查询是否擦除、下载程序然后在DEBUG界面上进行调试,如图5-6所示。
图5-6 DEBUG界面点击上图所示:运行(run)程序;单步运行(single step)程序;单步运行(step into)程序;跳出运行(step out)函数;跟踪(trace)程序;程序停止(halt)运行;目标板复位(reset target)。
飞思卡尔8位单片机MC9S08 15 08系列MCU编程器的开发.ppt
命令
格式
功能
READ $4A $4A 高字节 高字节 低字节 低字节 数据
读出指定单元内容(RAM或Flash)
WRITE IREAD
$49 $49 高字节 高字节 低字节 低字节 数据 数据 $1A $1A 数据 数据
向指定单元写数据(RAM)
读取上次访问的地址+1、+2处的 内容(RAM或Flash)
Start Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 Stop
16.1 编程器技术基础
(2)监控模式的工作过程
MCU在进入监控模式时,需要接收8字节的保密字节,如果是空白 芯片,则8字节的保密字节全是$FF,然后就处于等待接收一个命令字节 状态。以GP32为例,进入监控模式的时序如下图所示。
In PC 主机 Out
串 3 In 行 口 2 Out PC
MAX 7 232 9
8
10
1
3
2 MC
5
74HC125 6
特定I/O
目标 MCU
(a)编程器内部器件连接图
7
10
6
VDD
VDD 5 10KΩ
4
8
9
2
3
MAX 232
1 74HC125
(b)编程器原理图
16.2 HC08系列MCU编程器的实现方法
16.1 编程器技术基础
16.1.3 HC08系列MCU在监控模式下的工作过程
(1)与主机通信的数据格式
当MCU上电复位时,如果满足进入监控模式的条件,MCU就会工作 于监控模式。监控模式下MCU主要是通过某个特定的I/O口(如:GP32是 PTA0,JL3是PTB0),以标准不归零(NRZ)的数据格式进行数据通信, 具体为:第一位起始位(0),随后为8个数据位(低位在前,高位在后),最 后一位为停止位(1)。NRZ的数据格式如下图所示。
飞思卡尔8位单片机-第6章- 指令系统与汇编程序设计
存储器 OP
低地址
45 0A
高地址
直接寻址模式 (DIR)
• 地址:指令中给出的8位操作数 地址:指令中给出的 位操作数 • 寻址空间:$0000~$00FF 寻址空间: • 如:LDA $08; ;
A 0A
存储器 OP
低地址
45 0A
08H
高地址
扩展寻址模式 (EXT)
• 地址:指令中给出16位操作数 地址:指令中给出 位操作数 • 大多数扩展寻址指令为 字节 大多数扩展寻址指令为3字节 • 寻址空间:$0000~$FFFF,64KB 寻址空间: , 注意:在某些编译器中,在单字节地址前加符号“<”表示直 接寻址,否则,编译时会在该地址前加上一个$00字节,这样 就成了扩展寻址。例如: LDA <$50 ;属于直接寻址 LDA $50 ;汇编时将自动生成两字节操作数$0050,就成了 扩展寻址 而有的编译器遇到地址高8位为0的情况会自动按直接寻址处 理,不需要直接寻址符号“<”
7 V
二进制补码溢出标志—当发生一个二进制补码溢出, 二进制补码溢出标志 当发生一个二进制补码溢出, 当发生一个二进制补码溢出 CPU置这位为 。符号分支指令 置这位为1。符号分支指令BGT,BGE, BLE 置这位为 , , 将会用到溢出标志位。 和BLT将会用到溢出标志位。 将会用到溢出标志位 0 没有溢出 1 有溢出
(1). 无偏移量变址寻址 无偏移量变址寻址(IX) 地址:变址寄存器 中的值。 地址:变址寄存器(H:X)中的值。 中的值 单字节指令。 单字节指令。
例如: 例如: (H:X)=$0089, ($0089)=$A0 CLR X ;把以变址寄存器(H:X)为地址的存储单元的 把以变址寄存器( : ) 内容清零, 内容清零 即($0089)=$0, (H:X)不变 : )
飞思卡尔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单片机的功能及特性,以求能够为大专院校的学生及各相关领域的工作者提供一些帮助。
参加本书编写的还有天津大学精仪学院的薛彬、汤其剑、刘世廷、高雅彪、叶德超、黄邦奎、孙晔等研究生。
飞思卡尔HC08
飞思卡尔HC08第一篇:飞思卡尔HC08HC08/S08单片机学习心得看了这篇学习心得,感觉不错,和大家分享一下。
MC9S08QG8和MC9S08AW60,以及和其他单片机之间的横向对比看惯了AVR/PIC/51的手册,刚开始看HC08的数据手册感觉不太习惯,很多地方的风格都不太一样,有个适应过程。
不过只从单片机硬件结构来看,基本组成和功能都是类似的,只是个别地方有自己的独特之处。
HC08单片机硬件上和其他单片机是类似的,都分为ADC、定时器、IO、串行通信(包括串口、SPI、I2C等)、中断等几大部分,都是通过寄存器来启动、设置、关闭相应的功能模块。
只是HC08单片机分得很细,寄存器非常的多,如果只看数据手册,一下可能会感到头晕的。
最好是先看模块的主要介绍,再看每个模块详细的,不要想一次全部看完。
很多时候都是先看大概的,具体应用时知道哪里找就行了。
软件开发基本都是使用FreeScale自己的CodeWarrior,它有特别版、标准版、完全版等几种版本。
特别版的个别功能有限制(主要是PE)和代码大小有限制,而标准版则没有代码大小限制。
特别版对于HC08单片机代码限制是32K,一般情况下都是足够了。
开始使用时,使用Code Warrior的PE(Processor Expert)专家,基本就是用鼠标点几下,就可以生成程序代码和框架,比较简单快速。
不过这样生成的程序比较大,文件数比较多(基本一个功能模块产生2个文件,1个C文件和一个H文件),子程序调用比较多。
好处是容易上手,可以很快熟悉开发流程。
但是使用多了,会觉得如果PE操作再简单一些,不要过多的参数选择,会更适合于对单片机初学的人;如果功能再强一些,可以完全不用写代码,象PSoc express 那样图形方式编程就更好了,适合于不了解单片机的人。
除了PE外,还有一个很有用的功能是DI(Device Initialization)设备初始化,用图形方式设置好参数后自动产生初始化的代码,但是不产生程序框架文件。
飞思卡尔8位单片机MC9S08 06 通用IO与第一个汇编程序
主要内容 MC68HC908GP32的普通I/O 汇编程序编程框架 08汇编语言编译过程所涉及的文件 SD-HC08嵌入式MCU在线编程集成开发系统
6.1 MC68HC908GP32的普通 的普通I/O 的普通
所谓普通I/O,即基本的输入 输出 有时也称为并行I/O。 输出, 所谓普通 ,即基本的输入/输出,有时也称为并行 。作为普 通输入引脚, 内部程序可以读取该引脚, 通输入引脚,MCU内部程序可以读取该引脚,知道该引脚是“1”(高 内部程序可以读取该引脚 知道该引脚是“ ( 电平) ),即开关量输入 电平)或“0”(低电平),即开关量输入。作为普通输出引脚,MCU (低电平),即开关量输入。作为普通输出引脚, 内部程序向该引脚输出“ (高电平) ),即开关量 内部程序向该引脚输出“1”(高电平)或“0”(低电平),即开关量 (低电平), 输出。 单片机有5个普通 输出。MC68HC908GP32单片机有 个普通 口,分别是 口、B口、 单片机有 个普通I/O口 分别是A口 口 C口、D口、E口。它们中的大部分具有双功能,本节仅讨论它们作为 口 口 口 它们中的大部分具有双功能, 普通I/O功能时的编程方法。 普通 功能时的编程方法。 功能时的编程方法
6.1 MC68HC908GP32的普通I/O
6.1.1 A口 口
A口的 根引脚与键盘中断模块的引脚复用,这里只讨论 口作为 口的8根引脚与键盘中断模块的引脚复用 这里只讨论A口作为 口的 根引脚与键盘中断模块的引脚复用, 普通I/O口的功能 口的功能。 普通 口的功能。
(1)A口的寄存器 ) 口的寄存器
6.1 MC68HC908GP32的普通I/O
口数据方向寄存器( C,DDRC) ① C口数据方向寄存器(Data Direction Register C,DDRC) C口数据方向寄存器(DDRC)的地址是:$0006,由于对应引脚只 口数据方向寄存器( 口数据方向寄存器 )的地址是: , 的第6~ 位分别记为 位分别记为DDRC6~DDRC0, 有7根,最高位没有意义。DDRC的第 ~0位分别记为 根 最高位没有意义。 的第 ~ , 这些位分别控制着C口引脚 口引脚PTC6~PTC0是输入还是输出,含义参考 口 是输入还是输出, 这些位分别控制着 口引脚 ~ 是输入还是输出 含义参考A口 说明。复位时DDRC为$00。 说明。复位时 为 。 口数据寄存器( Register,PTC) ② C口数据寄存器(Port C Data Register,PTC) C口数据寄存器(PTC)的地址是:$0002,PTC的第 ~0位分别记 口数据寄存器( 的第6~ 位分别记 口数据寄存器 )的地址是: , 的第 口的相应说明。 为PTC6~PTC0。含义请类比 口、B口的相应说明。 ~ 。含义请类比A口 口的相应说明 口上拉电阻允许寄存器( ③ C口上拉电阻允许寄存器(Port C Input Pullup Enable Register,PTCPUE) Register,PTCPUE) C口上拉电阻允许寄存器(PTCPUE)的地址是:$000E。PTCPUE 口上拉电阻允许寄存器( 口上拉电阻允许寄存器 )的地址是: 。 的第6~ 位分别记为 位分别记为PTCPUE6~PTAPUE0。含义请类比 口的相应说明。 口的相应说明。 的第 ~0位分别记为 ~ 。含义请类比A口的相应说明
飞思卡尔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_ERCLKEN_MASK;while(!MCGSC_OSCINIT);//MCGSC寄存器中OSCINIT(第1位)为1,表示由EREFS位选择的晶振被初始化。
8位飞思卡尔单片机
飞思卡尔8位单片机概述----飞思卡尔8位单片机系列主要包括RS08类、HCS08类、HC08类、HC08汽车类、HCS08汽车类。
下面每个类型都将挑选一典型产品进行介绍,更多产品介绍敬请登陆飞思卡尔官方网站。
1、RS088位微控制器正逐渐向小型化应用发展。
在这些小型应用中,也许并不需要使用完整的HC08或S08所具备的丰富功能。
RS08内核是非常流行的SO8中央处理器(CPU)的精简版,它被精心打造为效率更高、成本更低并适合小容量内存的微控制器。
RS08是一些新兴应用的理想解决方案,例如完全用固态电路实现的简单机电设备,或小型便携设备甚至一次性便携设备。
飞思卡尔的工程师将小型化应用不需要的功能从S08内核中去除,而对其余的运算进行了增强,从而提高了超小型控制器的使用效率。
这些控制器的芯片面积非常小,您甚至可以将它们从胡椒罐中摇出来。
RS08内核的尺寸比S08小30%。
为了减小面积,RS08将计数器和地址总线宽度限制为14位,使用一个全局中断标志寄存器取代了矢量中断功能,同时还取消了以下功能:堆栈指针和H:X寄存器及其相关指令和寻址模式乘法、除法以及BCD码指令算术逻辑移位运算(保留了逻辑移位和旋转)条件码寄存器中的若干位以及相关条件分支指令这些被取消的功能由更为简单的结构所代替,这些结构保证了在内存低于16K且引脚数目很少的器件上,可以用非常简洁高效的代码实现大多数嵌入式应用。
为了进一步提高运算效率,飞思卡尔增加了如下内容:屏蔽程序计数器,用于更为高效的子程序调用简短微小的寻址模式,允许对最常用的变量和寄存器进行更为有效地访问和操作内存分页方案,能够更充分地利用直接寻址模式和新型的简短微小的寻址模式RS08内核深化了飞思卡尔8位产品系列,在发展可以共享外围设备和通用开发工具、并且引脚兼容的8位/32位器件的过程中,迈出了第一步。
它将使机械和电子产品开发者开发出史无前例、独具匠心、节约成本的电子应用产品和功能非常先进的一次性产品。
飞思卡尔8位单片机MC9S08第5章 HC08 CPU与汇编基础
5.2 寻址方式
(6)八位偏移量变址方式(IX1,Indexed,8-bit offset addressing mode)
8位偏移量变址是双字节指令,CPU把变址寄存器HX的内容和指令 第二个字节内容相加,其和便是操作数地址。下述指令属于IX1寻址方 式。
5.1 HC08 CPU基本构成
(4)程序计数器PC(Program Counter)
程序计数器PC也是16位的,可寻址范围达64KB。PC存放下一 条指令的地址,在执行转移指令时存放转移地址,在执行中断指令时 存放中断子程序入口地址。复位时,程序计数器PC装入地址$FFFE 和$FFFF中的内容。一般地,地址$FFFE和$FFFF中的内容是复位的 入口地址,这样,复位后,程序能够从复位入口地址开始执行程序。 复位入口地址也称复位向量地址或复位矢量地址(Reset vector address),意味着复位状态过后,PC指向该处,从这里执行程序。
(9)存储器:直接地址—直接地址寻址方式(DD, Direct to direct addressing Mode)
在存储器的四种数据直接传送的寻址方式中,欲传送的数据直接从 源存储单元送向目的存储单元,勿需寄存器中转。在本寻址方式中,源 地址与目标地址由指令直接给出。只有一条指令为DD寻址方式:
CBEQ addr8,X+,rel ;若A=(HX+addr8)则转移,HX+1→HX
(2)立即寻址方式(IMM,Immediate addressing mode)
立即寻址,是在指令中直接给出操作数。这种指令是双字节指令, 第一个字节是操作码,第二个字节是参与操作的立即数。立即寻址指令 通常是对立即数和累加器内容或变址寄存器内进行操作。下述指令属于 IMM寻址方式。
飞思卡尔8位单片机MC9S0802嵌入式应用技术硬件基础
主要内容 ❖ 数字电路基础知识 ❖ 嵌入式应用的常用元器件 ❖ 嵌入式应用技术的常用术语
1
2.1 数字电路基础知识
2.1.1 嵌入式应用中常用的数制及其转换
(1)单片机中常用的进制
任意数S,(基数为N)均可展开为:S=∑KiNi 其中Ki是第i位的系 数,它可能是0~N-1共N个数码中的任意一个。不同的数制基数N不 同,数字码不同。
C 3 5 A• F E
↓ ↓ ↓ ↓ ↓↓
1100 0011 0101 1010.1111 1110
即C35A.FEH=11010.1111111B。
4
十六进制与十进制相互转换
十六进制→十进制: 按展开式计算即可。 十进制→十六进制: 整数部分与小数部分分别转换。整数部分:除 以16取余数,先为低位后为高位。小数部分:乘以16取整数,先为高 位后为低位。
0010 1111 1011.1101 1101 1000
↓↓↓↓ ↓ ↓
2 F B. D D 8
即1011111011.110111011B=2FB.DD8H。
十六进制→二进制 : 将每1位十六进制数用4位二进制数取代,若最
前面或最后面有0则去之。例如,将十六进制数C35A.FE转为二进制数,
方法如下:
与门逻辑真值表
AB Z 00 0 01 0 10 0 11 1
或门逻辑真值表
AB Z 00 0 01 1 10 1 11 1
非门逻辑真值表
A
Z
01
10
11
A•B
其它基本逻辑门
①与非门:与非门逻辑功能是:只有所有输入为1时,输出才是0, 否则输出为1。其表达式为:Z=A ·B。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
BRSET和BRCLR是2条很特别的3字节指令,它们用直接寻址方式 取得操作数,用相对寻址方式指明转移目的地址。例如:
BRCLR 3,$50,A1 ;若存储单元$50的第3位=0则转至标号A1处 BRSET 3,$50,A1 ;若存储单元$50的第3位=1则转至标号A1处
5.2 寻址方式
(4)扩展寻址方式(EXT,Extended addressing mode)
扩展寻址指令是三字节指令,可访问存储器中的任何地址。在这种 指令中,第一个字节是操作码,第二个字节是操作数的高字节地址,第 三个字节是低字节地址。扩展寻址是相对于直接寻址方式而言的,其寻 址范围为$0000~$FFFF,比直接寻址范围大得多。下述指令属于EXT 寻址方式,因为它的地址已经超过了DIR寻址方式的范围。
CBEQ addr8,X+,rel ;若A=(HX+addr8)则转移,HX+1→HX
5.2 寻址方式
(13)无偏移量变址、变址加1寻址方式(IX+,Indexed,no offset, post increment addressing mode)
在这种寻址方式与无偏移量变址寻址方式IX的区别在于,在本寻址 方式中多了HX+1→HX的操作。只有一条指令属于IX+寻址方式,该指 令先完成比较操作,但不论条件是否满足,均有HX+1→HX。通常用于 寻找一段存储区中是否有与A中相等的数。
MOV N1,N2 ;把内存变量N1赋值给内存变量N2
等同于下列两条指令,但上述指令不影响累加器A。
LDA N1 STA N2
等同于C语言语句:
N2=N1;
特别说明:这里设N1、N2为内存变量,下同。
5.2 寻址方式
(10)存储器:直接地址—变址、变址加1的寻址方式 (DIX+,Direct to indexed with post increment addressing Mode)
STA $280,X ;把A中的数存放到以HX+$280为地址的存储单元中 INC $280,X ;把以HX+$280为地址的存储器单元的内容加1
5.2 寻址方式
(8)相对变址寻址方式(REL,Relative addressing mode)
相对变址只用于转移指令。当转移条件满足时,CPU将指令中的 偏移量和程序计数器 PC的内容相加,得出转移的目的地址。如果转移 条件不满足,则CPU执行下一条指令。转移指令中的偏移量是带符号的, 且用一字节表示,因此转移指令的偏移量为-127~+128。偏移量用二进 制补码表示。相对变址转移指令的转移范围在下一条指令地址的-127~ +128之间。下述指令属于REL寻址方式。
(9)存储器:直接地址—直接地址寻址方式(DD, Direct to direct addressing Mode)
在存储器的四种数据直接传送的寻址方式中,欲传送的数据直接从 源存储单元送向目的存储单元,勿需寄存器中转。在本寻址方式中,源 地址与目标地址由指令直接给出。只有一条指令为DD寻址方式:
STA $80,X ;将A中的数存至地址为HX+$80的存储器单元中 INC $80,X ;将地址为HX+$80的存储器单元的内容加1
(7)十六位偏移量变址方式(IX2,Indexed,16-bit offset addressing mode)
该变址方式指令是三字节指令,可访问存储器的任何地址。CPU将 变址寄存器HX的内容与指令的第二、三字节相加,和为操作地址。在 第二、三字节中,第二字节是高位地址,第三字节是低位地址。下述指 令属于IX2寻址方式。
(2)立即寻址方式(IMM,Immediate addressing mode)
立即寻址,是在指令中直接给出操作数。这种指令是双字节指令, 第一个字节是操作码,第二个字节是参与操作的立即数。立即寻址指令 通常是对立即数和累加器内容或变址寄存器内进行操作。下述指令属于 IMM寻址方式。
LDA #$FC ; 把十六进制数$FC放入累加器A中
BRA A1 ;无条件转向标号A1处执行 BSR L1 ;调用标号L1处的子程序
特别说明:以上8种寻址方式在M68HC05系列中也具有,以下8种 为M68HC08系列单片机新增的寻址方式,其中9~12为存储器到存储 器的数据传送寻址方式,13~14是含有加1的变址寻址,15~16为堆栈 寻址。
5.2 寻址方式
该寻址方式,将立即数存入直接地址,指令给出的地址即作为目的 地址,在指令书写中,立即数位于直接地址之前,下述指令为IMD寻址 方式。
MOV #!86,N1 ;将立即数!86赋值给内存变量N1
等同于C语言语句:
N1=86;
5.2 寻址方式
(12)存储器:变址—直接地址、变址加1的寻址方式 (IX+D,Indexed with post increment to direct addressing Mode)
HX为源地址,直接地址为目的地址,把源地址的数据存至目标地 址后后,HX+1→HX。仅有一条指令为IX+D寻址方式。
MOV X+,$80 ;(HX)→($80),HX+1→HX
等同于下列三条指令,但上述指令不影响累加器A,主要用于向端 口传送内存数据块。
LDA ,X STA $80 AIX #!1 ;(HX)→A ;A→($80) ;HX+1→HX
第五章 HC08 CPU与汇编基础
主要内容
HC08 CPU基本构成 寻址方式 指令系统 HCS08 CPU与HC08 CPU的比较 08汇编语言基础
5.1 HC08 CPU基本构成
M68HC08系列单片机的各种型号的CPU均使用HC08 CPU,有时 也将HC08 CPU称为CPU08,它具有如下主要特点: ① 目标代码与M68HC05系列单片机向上兼容; ② 具有16位堆栈指针SP; ③ 具有16位变址寄存器HX; ④ 8MHz CPU内部总线频率; ⑤ 64KB程序/数据存储器空间; ⑥ 16种寻址方式; ⑦ 不经过累加器A的存储器之间数据直接传送; ⑧ 快速8位×8位乘法指令、快速16位与8位相除指令,增强的BCD 指令; ⑨ 模块化结构,可扩展的内部总线定义可使寻址范围超过64KB; ⑩ 低功耗的STOP、WAIT模式。
5.1 HC08 CPU基本构成
HC08 CPU中有5个寄存器: (1)累加器A(Accumulator)
累加器A是8位通用寄存器,用来存放操作数和运算结果。数据读 取时,累加器A用于存放从存储器读出的数据;数据写入时,累加器 A用于存放准备写入存储器的数据。在执行算术、逻辑操作时,累加 器首先存放一个操作数,执行完毕时累加器存放操作结果。累加器A 是指令系统中最灵活的一个寄存器,各种寻址方式均可对之寻址。复 位时,累加器的内容不受影响。
5.1 HC08 CPU基本构成
(2)变址寄存器HX(Index Register)
HC08 CPU的变址寄存器HX是16位寄存器,H是高8位,X是低8位, 可单独使用。变址寄存器HX主要用于变址寻址方式中确定操作数的 地址,也可以用来存放临时数据,作为一般寄存器使用。复位时,高 8位被清零。
(3)堆栈指针SP(Stack Pointer)
LDA ,X ;从变址寄存器HX指向的存储器单元中取数到累加器A中 COM ,X ;将变址寄存器HX指向的存储单元数据取反
5.2 寻址方式
(6)八位偏移量变址方式(IX1,Indexed,8-bit offset addressing mode)
8位偏移量变址Leabharlann 双字节指令,CPU把变址寄存器HX的内容和指令 第二个字节内容相加,其和便是操作数地址。下述指令属于IX1寻址方 式。
特别说明:操作说明栏中,($80)表示地址为$80的内存单元内 容。(HX)表示地址为HX值的内存单元。若内存单元作为源操作数,表 示从该内存单元中取数,若内存单元作为目的操作数,表示将数存至该 内存单元。
5.2 寻址方式
(11)存储器:立即数—直接地址寻址方式 (IMD,Immediate source to direct destination addressing Mode)
5.1 HC08 CPU基本构成
(4)程序计数器PC(Program Counter)
程序计数器PC也是16位的,可寻址范围达64KB。PC存放下一 条指令的地址,在执行转移指令时存放转移地址,在执行中断指令时 存放中断子程序入口地址。复位时,程序计数器PC装入地址$FFFE 和$FFFF中的内容。一般地,地址$FFFE和$FFFF中的内容是复位的 入口地址,这样,复位后,程序能够从复位入口地址开始执行程序。 复位入口地址也称复位向量地址或复位矢量地址(Reset vector address),意味着复位状态过后,PC指向该处,从这里执行程序。
5.2 寻址方式
(3)直接寻址方式(DIR,Direct addressing mode)
直接寻址指令,字长二字节,它可以对存储器的起始256个地址 ($0000~$00FF,叫内存直接页或内存第0页)进行访问。指令的第 一个字节是操作码,第二个字节是操作数地址。在直接寻址中,CPU自 动把$00作为操作数高位地址,第二个字节作为操作数的低位地址,其 寻址范围为$0000~$00FF。下述指令属于DIR寻址方式。
5.1 HC08 CPU基本构成
5.2 寻址方式
(1)内在寻址方式(INH,Inherent addressing mode)
内在寻址,是指那些在指令中已经包含了操作数所在之处。内在寻 址的指令是没有明确指出操作数的指令,操作数由指令隐含,且为单字 节指令。这类指令只是执行内在的数据操作。例如累加器加1指令INCA、 中断返回指令RTI、停止指令STOP和置进位标志SEC等。