《飞思卡尔单片机g.ppt》由会员分享,可在线阅读,更多相关《飞思卡尔单片机g.ppt(173页珍藏版)》请在三一办公上搜索。
1、第一章 嵌入式系统简介,1.1 嵌入式系统的含义与发展历史,一、嵌入式系统与单片机 2001年中国单片机学会召开的年会上,将“单片机”和“嵌入式系统”联系在一起。1.嵌入式系统的由来 在通信、测控与数据传输等领域,计算机技术的应用与单纯的高速计算要求不同。直接面向控制对象;潜入到具体应用体中;在现场连续可靠运行;体积小、应用灵活;突出控制功能等。,1.1 嵌入式系统的含义与发展历史,将满足海量高速数值计算的计算机称为通用计算机系统。将面向测控对象,嵌入到实际应用系统中,实现嵌入式应用的计算机称为嵌入式计算机系统,简称嵌入式系统。总体上说,通用计算机系统主要用于数值计算、信息处理,兼顾控制功能;
2、而嵌入式计算机系统主要用于控制领域,兼顾数据处理。在一个综合系统中,通用计算机系统和嵌入式计算机系统各自扮演不同的角色,共同完成系统任务。,1.1 嵌入式系统的含义与发展历史,2.单片机,3.MCU与嵌入式系统的关系 嵌入式系统通常可分为4种:工控机 通用CPU模块 嵌入式微处理器 嵌入式微控制器 MCU从体系结构到指令系统都是按照嵌入式系统的应用特点专门设计的,能很好地满足应用系统的嵌入、面向测控对象、现场可靠运行等方面的要求,故由MCU构成的系统是发展最快、品种最多、数量最大、应用最广的嵌入式应用系统。,1.1 嵌入式系统的含义与发展历史,1.1 嵌入式系统的含义与发展历史,二、MCU的发
3、展,1.2 嵌入式系统常用术语,一、与硬件相关的术语 1.封装(Package)2.印刷电路板(PCB)3.动态随机存储器(DRAM)4.静态随机存储器(SRAM)5.只读存储器(ROM)6.Flsah 存储器(Flash Memory)7.模拟量模拟量 8.开关量,1.2 嵌入式系统常用术语,1.封装(Package),单列直插ZIP,双列直插DIP,Z字形直插ZIP,小外形封装SOP,紧缩小外形封装SSOP,四方扁平封装QFP,薄方封装LQFP,球栅阵列封装BGA,插针网格阵列封装CPGA,塑料扁平组件式封装PFP,带载封装TCP,1.2 嵌入式系统常用术语,1.2 嵌入式系统常用术语,2
4、.印刷电路板(PCB)主要功能是提供集成电路等各种电子元件固定、装配的机械支撑;实现集成电路等各种电子元件之间的布线和电气连接(信号传输);为自动装配提供阻焊图形,为元器件插装、检查、维修提供识别字符和图形等。,1.2 嵌入式系统常用术语,3.动态随机存储器(DRAM)4.静态随机存储器(SRAM)5.只读存储器(ROM)6.Flsah 存储器(Flash Memory)简称闪存,比E2PROM的擦除速度更快,集成度更高。如Freescale公司的HC08芯片采用了第三代0.25m的闪存技术,可擦写10万次,页擦写只需几十毫秒。可系统内编程,不需另外的器件。,1.2 嵌入式系统常用术语,7.模
5、拟量 8.开关量,1.2 嵌入式系统常用术语,二、与通信相关的术语 1.并行通信 2.串行通信 3.串行外设接口SPI 4.集成电路互连总线I2C 5.通用串行总线USB 6.控制器局域网CAN 7.背景调试模式BDM 8.边界扫描测试协议JTAG,1.2 嵌入式系统常用术语,1.并行通信 2.串行通信 3.串行外设接口SPI 也是一种串行通信方式,主要用于MCU扩展外围芯片。4.集成电路互连总线I2C 是由PHILIPS公司开发的两线制串行总线,主要用于MCU与其外围电路的连接。5.通用串行总线USB 是一种MCU与外界进行数据通信的方式。,1.2 嵌入式系统常用术语,6.控制器局域网CAN
6、 CAN总线(Control Area Network,控制局域网络)最早是由德国Bosch公司推出,用于汽车内部测量与执行部件之间的数据通信协议。其总线规范已被ISO国际标准组织制定为国际标准,广泛应用于离散控制领域,并得到了Philips、Intel、Siemens、Motorola、NEC等公司的支持。CAN协议是建立在国际标准组织的开放系统互连模型基础上,但只取OSI底层的物理层、数据链路层和顶层的应用层,通信介质可以是双绞线、同轴电缆或光纤,通信速率可达1Mbps(通信距离最长为40m),直接通信距离最长可达10km(通信速率5kbps以下),最多可挂接设备110个。,1.2 嵌入式
7、系统常用术语,7.背景调试模式BDM 背景调试模式BDM是Freescale公司提出的一种调试接口,主要用于嵌入式MCU的程序下载和程序调试。,1.2 嵌入式系统常用术语,1.2 嵌入式系统常用术语,8.边界扫描测试协议JTAG 边界扫描测试协议JTAG是由国际联合测试行动组开发的、对芯片进行测试的一种方式,可将其用于对MCU的程序进行载入和调试。JTAG能获取芯片寄存器等内容,或者测试遵守IEEE规范的器件之间引脚连接情况。,1.2 嵌入式系统常用术语,三、与功能模块相关的术语 1.通用输入/输出GPIO 2.A/D与D/A 3.脉冲宽度调制器PWM 4.看门狗 5.液晶显示器LCD 6.发
8、光二极管LED 7.键盘,1.2 嵌入式系统常用术语,1.通用输入/输出GPIO 2.A/D与D/A 3.脉冲宽度调制器PWM 是一个D/A转换器,可以产生一个高电平和低电平交替的输出信号。4.看门狗 5.液晶显示器LCD 可分为字段型、点阵字符型和点阵图形3类。,1.2 嵌入式系统常用术语,6.发光二极管LED 7.键盘 嵌入式系统中最常见的输入设备。,1.2 嵌入式系统常用术语,四、与嵌入式软件相关的术语 1.中断 2.中断服务程序 3.实时操作系统RTOS 4.C/OS-II 5.临界区,1.2 嵌入式系统常用术语,1.中断 2.中断服务程序 3.实时操作系统RTOS RTOS是一种运行
9、于嵌入式系统上的操作环境,在可预测的时间间隔内能对特定的事件做出反应。RTOS为每个任务建立一个可执行的环境,在任务之间传递消息,区分任务执行的优先级,并协调多个任务对同一个I/O设备的调用。一个规模大、结构复杂的嵌入式系统可以分解为一系列较小、较简单的并行任务来实现,各个任务之间互不干扰,使用RTOS排除并行任务中的人为因素,降低复杂度,增强模块化,使工程由更简易和标准化的模块组成,处理起来更加轻松、快捷。,1.2 嵌入式系统常用术语,4.C/OS-II 是一个可移植、可裁剪的抢占式多任务实时操作系统,在嵌入式系统中得到广泛应用。5.临界区 是RTOS中使用的一个术语,指一段必须按次序执行的
10、代码,并且不能被中断,否则程序有可能无法正常运行。,1.3 嵌入式系统开发方法导引,一、嵌入式产品的一般构成 一个以MCU为核心的、比较复杂的嵌入式应用系统,一般包含模拟量的输入/输出、开关量的输入/输出和数据通信等部分。,1.3 嵌入式系统开发方法导引,二、嵌入式产品的一般开发方法 1.基本输入/输出分析 2.选择MCU的基本方法 3.选择评估系统并对与MCU相关的硬件进行初步评估 4.设计并制作硬件系统 5.进行硬件系统的模块测试 6.软件系统设计 7.系统测试 8.进一步工作,1.3 嵌入式系统开发方法导引,1.基本输入/输出分析 2.选择MCU的基本方法 考虑的因素:处理性能、功耗、价
11、格、封装形式、软硬件开发工具、设计者的熟悉程度等。MCU的总I/O口个数应略多于系统功能所需的个数,以备功能扩展和调试时使用;使用到的外设功能模块应尽可能集成在MCU内部,以简化系统硬件、降低系统功耗、提高系统的可靠性;尽量选择较为熟悉和开发工具完备的芯片,以减少开发周期、提高开发效率。,1.3 嵌入式系统开发方法导引,3.选择评估系统并对与MCU相关的硬件进行初步评估 4.设计并制作硬件系统 5.进行硬件系统的模块测试 6.软件系统设计 7.系统测试 是系统开发中一个十分重要的过程,其根本任务是发现系统中的缺陷。8.进一步工作,1.3 嵌入式系统开发方法导引,第二章 HCS12/HCS12X
12、系列MCU简介与MC9S12DG128的最小系统,2.1 HCS12系列MCU概述,一、HCS12系列MCU的命名规 MC 9 S12 Dx 256 B x xx E 产品状态:MC完全合格品;XC部分合格品;PC生产工程;KMC、KXC 样品包装。存储器类型标志:“9”表示片内带Flash。CPU标志:表示中央处理器为CPU12。,2.1 HCS12系列MCU概述,系列标志 Dx表示为D系列产品。存储空间大小 256表示256KB。Flash版本标志 反映不同的擦写电压、时间等。工作温度范围标志“无”表示温度范围为070;“C”表示温度范围为-4085;“V”表示温度范围为-40105;“M
13、”表示温度范围为-40125;,2.1 HCS12系列MCU概述,封装标志 表示芯片的封装形式。无铅组装标志,2.1 HCS12系列MCU概述,二、HCS12各子系列MCU简介 系列:A系列;B系列;C系列;D系列;E系列;GC系列;H系列;NE系列;Q系列;T系列;UF系列。相同点:工作电压一般为5V。不同点:ROM大小;RAM大小;EEPROM大小;Flash容量;I/O口数;串行借口;A/D转换器。RAM容量最大可达14KB,最小为2KB;I/O口数最多有117个,最少只有25个;Flash容量最大可达512KB,最小只有16KB。,2.2 HCS12X系列MCU概述,一、HCS12X系
14、列MCU与HCS12系列MCU的主要差异 1.主要特点 大容量的Flash EEPROM(32KB1MB);40MHz的增强CPU;XGATE模块;32KB的RAM;4KB的EEPROM 控制器区域网络(CAN)SCI/LIN;SPI;I2C;,2.2 HCS12X系列MCU概述,高级中断功能;增强的捕捉定时器;10位ADC;8通道PWM;带有追踪缓存的片上单线背景调试模式(BDM);-40125的温度范围。2.内部寄存器 6个16位寄存器D、IX、IY、SP、PC和CCRW,2个8位寄存器A、B。,2.2 HCS12X系列MCU概述,3.寻址方式 基本的寻址方式有8种,具体的寻址方式有16种
15、。直接寻址方式与HCS12有所不同,且增加了全局寻址方式。4.指令集 增加了两条与CCRW寄存器相关的堆栈操作指令PSHCW和PULCW。,2.2 HCS12X系列MCU概述,二、典型HCS12X系列MCU简介 HCS12XE系列 HCS12XF系列 HCS12XS系列,2.2 HCS12X系列MCU概述,三、HCS12X系列MCU中的新增模块简介 XGATE协处理器模块 FlexRay模块,2.3 MC9S12DG128 MCU及其最小系统,一、MCU性能概述 1.时钟和复位模块、存储器与封装形式 时钟和复位模块(CRG):包括振荡器、锁相环时钟频率放大器、看门狗、实时中断和时钟监控器。存储
16、器:128KB的Flash EEPROM、8KB的RAM、2KB的 EEPROM。封装形式:80引脚的TQFP和112引脚LQFP。具有5V输入和驱动能力,CPU工作频率可达50MHz,支持BDM,可在线设置硬件断点。,2.3 MC9S12DG128 MCU及其最小系统,2.丰富的I/O接口 通用I/O接口:29路独立的I/O接口,20路带中断和唤醒功能。A/D转换接口:两个8通道的10位AD转换器,具有外部转换触发能力。CAN总线接口:内部集成了3个CAN协议控制器MSCAN12模块,符合CAN2.0A/B协议标准;可编程传输速率达1Mb/s;具有5个接收缓冲区和3个发送缓冲区;灵活的标识符
17、滤波模式,可配置成2个32位过滤码,或4个16位过滤码,或8个8位过滤码;含有4个独立的中断输入引脚;内置低通滤波的唤醒功能。,2.3 MC9S12DG128 MCU及其最小系统,输入捕捉/输出比较与PWM接口:具有8通道的输入捕捉/输出比较,还具有8个可编程PWM通道,可配置成8通道8位或4通道16位PWM。串行通信接口:2个串行异步通信接口SCI,2个同步串行外设接口SPI,I2C总线及SAE J1850 Class B数据通信网络接口。,2.3 MC9S12DG128 MCU及其最小系统,二、运行模式 DG128 MCU的运行模式可分为单片运行模式、扩展运行模式和其它运行模式。单片运行模
18、式包括普通单片模式和特殊单片模式。扩展运行模式包括普通扩展宽模式、普通扩展窄模式、仿真扩展宽模式和仿真扩展窄模式。其它运行模式包括测试模式和外设模块测试模式。,2.3 MC9S12DG128 MCU及其最小系统,1.单片运行模式 是DG128 MCU最常用的运行模式。系统复位时,若MODA(PE5)和MODB(PE6)引脚为低电平,MODC(BKGD)为高电平,则进入普通单片模式。普通单片模式是正常运行应用程序时使用的模式。系统复位时,若MODA(PE5)和MODB(PE6)引脚为低电平,MODC(BKGD)为低电平,则进入特殊单片模式。特殊单片模式又称为背景调试模式(BDM),是需要进行背景
19、调试时应用的模式。,2.3 MC9S12DG128 MCU及其最小系统,2.扩展运行模式 DG128 MCU的扩展运行模式允许通过CPU外部总线扩展RAM、Flash、I/O等。扩展运行模式分窄模式和宽模式,窄模式使用8位外部数据总线,宽模式使用16位外部数据总线。扩展运行模式又分为普通运行模式和特殊运行模式,区别在于有些寄存器只能在特殊模式下读/写。仿真扩展模式下,可以看到总线上的控制信号,可接逻辑分析仪用于调试。,2.3 MC9S12DG128 MCU及其最小系统,3.其它运行模式 DG128 MCU的其它运行模式有测试模式、外设模块测试模式等,用于芯片生产中的测试,用户一般使用不到。,2
20、.3 MC9S12DG128 MCU及其最小系统,三、内部结构简图、引脚图及引脚功能 MC9S12DG128 MCU具有80引脚和112引脚的两种封装形式,其中除了地址、数据、控制等三总线外,主要是I/O引脚,多数引脚具有两种或更多功能。,2.3 MC9S12DG128 MCU及其最小系统,2.3 MC9S12DG128 MCU及其最小系统,2.3 MC9S12DG128 MCU及其最小系统,1.电源引脚 电源引脚共6组,分别满足器件内不同部分的电源要求。(1)VDDR、VSSR:数字电源和接地引脚。(2)VDDX、VSSX:I/O电源和接地引脚,为I/O接口驱动部分供电。(3)VDD1、VS
21、S1和VDD2、VSS2:2.5V内部逻辑参考电压引脚。(4)VDDA、VSSA:A/D转换电源引脚。(5)VRH、VRL:A/D转换的参考电源引脚。(6)VDDPLL、VSSPLL:2.5V PLL电路的电源引脚。,2.3 MC9S12DG128 MCU及其最小系统,2.控制引脚(1)RESET:复位引脚。(2)BKGD:背景调试引脚。(3)VREGEN:片内电压调节模块的使能引脚。3.时钟引脚 XTAL、EXTAL:晶体驱动输出和外部时钟输入引脚。若EXTAL引脚外接时钟,则XTAL引脚必须悬空。4.I/O引脚,2.3 MC9S12DG128 MCU及其最小系统,四、最小系统 最小系统是指
22、MCU运行程序所必需的外围电路。MC9S12DG128 MCU的最小系统包括电源电路、PLL电路、复位电路、BDM调试接口电路等。,2.3 MC9S12DG128 MCU及其最小系统,2.3 MC9S12DG128 MCU及其最小系统,1.电源电路 HCS12 MCU的芯片内部使用3V电压,I/O端口和外部供电电压为5V。2.PLL电路 PLL电路具有频率放大和信号提纯的功能,可以使系统以较低的外部时钟信号获得较高的工作频率,以降低外部时钟的高频噪声。fosc=4MHz,Cs=4.7nF,Cp=470pF,Rs=10k时,总线时钟频率为25MHz。,2.3 MC9S12DG128 MCU及其最
23、小系统,3.复位电路 共有4种操作可以触发系统复位:(1)复位引脚复位:RESET引脚为低电平时,触发复位。(2)上电复位:VDD引脚上电时,触发复位。(3)看门狗复位:喂狗操作是向ARMCOP寄存器依次写入0 x55、0 xAA。(4)时钟监控复位:当系统时钟不稳时,触发复位。,2.3 MC9S12DG128 MCU及其最小系统,4.晶振电路 有源晶振和无源晶振。,科尔皮兹晶振 皮尔兹晶振 XCKLS=0 XCKLS=1,2.3 MC9S12DG128 MCU及其最小系统,5.BDM接口电路,2.4 MC9S12DG128 的存储器映像,S12系列MCU的逻辑地址空间为64KB,地址为$00
24、00$FFFF。(1)$0000$03FF(1KB):用于内部各模块寄存器的编址。(2)$0400$0FFF(3KB):EEPROM地址空间。(3)$1000$3FFF(12KB):RAM地址空间。(4)$4000$FFFF(48KB):Flash地址空间,分成3个16KB空间,其中中断向量区为$FF00$FFFF。,2.4 MC9S12DG128 的存储器映像,DG128存储空间及其扩展,(1)$0000$03FF(1KB):用于内部各模块寄存器的编址。(2)$0400$0FFF(3KB):EEPROM地址空间。DG128的内部EEPROM有2KB,地址空间为$0000$07FF,默认设置的
25、地址空间被内部RAM空间覆盖。(3)$1000$3FFF(12KB):RAM地址空间。DG128的内部RAM有8KB,地址空间为$0000$1FFF,但$0000$03FF被内部各模块寄存器覆盖,所以实际编程时只能使用地址空间为$0400$1FFF的7KB。(4)$4000$FFFF(48KB):Flash地址空间,分成3个16KB空间,其中中断向量区为$FF00$FFFF。,2.4 MC9S12DG128 的存储器映像,DG128的Flash存储器由两个物理块组成(块0和块1),共128KB。,2.4 MC9S12DG128 的存储器映像,DG128对Flash空间的访问有不启用分页机制的寻
26、址方式和启用分页机制的寻址方式。不启用分页机制的寻址方式:适用于程序和数据(需要存放在Flash中的掉电保护数据)的长度小于32KB时。在这种方式下,除了第0块的$3E和$3F外,其它的Flash页均不可访问,$3E和$3F叫直接页;$3E在MCU中的逻辑地址范围为$4000$7FFF,$3F在MCU中的逻辑地址范围为$C000$FFFF;此时无须设置页寄存器PPAGE,直接使用这些逻辑地址即可。,2.4 MC9S12DG128 的存储器映像,启用分页机制的寻址方式:每一页在MCU中的逻辑地址都是由页寄存器PPAGE中的页号和重叠范围($8000$BFFF)内的地址组成的24位绝对地址。故通过
27、设置页寄存器PPAGE可以使用全部的128KB Flash存储空间。注:在启用分页机制的寻址方式时,对于$3E页,有$4000$7FFF和$3E8000$3EBFFF两个逻辑地址范围映射到内部物理地址;对于$3F页,有$C000$FFFF和$3F8000$3FBFFF两个逻辑地址范围映射到内部物理地址。,2.4 MC9S12DG128 的存储器映像,2.5 MC9S12DG128 MCU的并行I/O接口,一、基本概念 I/O接口即输入/输出接口,是MCU与外界进行交互的重要通道。输入引脚有3种不同的连接方式:带上拉电阻的连接、带下拉电阻的连接和悬空连接。,I/O口输入电路框图,2.5 MC9S
28、12DG128 MCU的并行I/O接口,对于输出引脚,MCU通过该引脚输出0(低电平)、1(高电平)的开关量输出。,I/O口输出电路框图,2.5 MC9S12DG128 MCU的并行I/O接口,二、A口、B口、E口和K口 MC9S12DG128 MCU有10个普通I/O口分别为A口、B口、E口、H口、J口、K口、M口、P口、S口和T口。引脚大部分具有多功能。作为普通I/O口,每一个引脚均可通过相应的数据方向寄存器独立地设置为输入或输出。对于A口、B口、E口和K口中被定义为输入的引脚,可以通过相应的上拉电阻允许寄存器独立地设置为内部有无上拉电阻。被定义为输出地引脚,一律为内部无上拉电阻。,2.5
29、 MC9S12DG128 MCU的并行I/O接口,1.A口寄存器 A口作为普通I/O时,具有两个寄存器:A口数据方向寄存器(DDRA)和A口I/O寄存器(PORTA)。1)A口数据方向寄存器(DDRA)地址为$0002。DDRA0DDRA7分别定义引脚PA0PA7是输入还是输出引脚。若DDRAx设置为0,则对应地引脚PAx定义为输入引脚;若DDRAx设置为1,则对应地引脚PAx定义为输出引脚。,2.5 MC9S12DG128 MCU的并行I/O接口,2)A口I/O寄存器(PORTA)地址为$0000。若A口的某一引脚被定义为输出引脚,则PORTAx定义对应输出引脚PAx的输出电平。0表示输出低
30、电平,1表示输出高电平。若A口的某一引脚被定义为输入引脚,则PORTAx为对应输入引脚PAx的输入电平。0表示输入低电平,1表示输入高电平。,2.5 MC9S12DG128 MCU的并行I/O接口,2.B口、E口和K口寄存器 作为普通I/O时,B口、E口和K口的功能和用法与A口类似。数据方向寄存器:DDRB:地址为$0003 DDRE:地址为$0009 DDRK:地址为$0033 数据方向寄存器:PORTB:地址为$0001 PORTE:地址为$0008 PORTK:地址为$0032,2.5 MC9S12DG128 MCU的并行I/O接口,3.上拉电阻控制寄存器 A口、B口、E口和K口都有上拉
31、电阻,共用一个控制寄存器(PUCR)。PUCR寄存器的地址为$000C。PUCR寄存器的D0位称为PUPAE,当PUPAE1时,A口的8个引脚中被定义为输入的引脚有内部上拉电阻。PUCR寄存器的D1位称为PUPBE,当PUPBE1时,B口的8个引脚中被定义为输入的引脚有内部上拉电阻。PUCR寄存器的D4位称为PUPEE,当PUPEE1时,E口的8个引脚中被定义为输入的引脚有内部上拉电阻。PUCR寄存器的D7位称为PUPKE,当PUPKE1时,K口的8个引脚中被定义为输入的引脚有内部上拉电阻。,2.5 MC9S12DG128 MCU的并行I/O接口,三、H口、J口、M口、P口、S口和T口 1.端
32、口寄存器 除J口拥有4个引脚外,H口、M口、P口、S口和T口都拥有8个引脚。当它们作为普通I/O口时,都具有6个寄存器:数据方向寄存器、I/O寄存器、输入寄存器、低功耗驱动寄存器、上拉下拉使能寄存器和上拉下拉选择寄存器。,2.5 MC9S12DG128 MCU的并行I/O接口,2.5 MC9S12DG128 MCU的并行I/O接口,2.5 MC9S12DG128 MCU的并行I/O接口,2.5 MC9S12DG128 MCU的并行I/O接口,1)数据方向口寄存器 设置相应口的某一引脚是输入引脚还是输出引脚。0 输入引脚,1 输出引脚。2)I/O寄存器 若相应口的某一引脚被定义为输出引脚,则该寄
33、存器定义对应输出引脚的输出电平。0 输出低电平,1 输出高电平。若相应口的某一引脚被定义为输入引脚,则读出的是该寄存器的值,而不是对应输入引脚的输入电平。,2.5 MC9S12DG128 MCU的并行I/O接口,3)输入寄存器 只读寄存器。若相应口的某一引脚被定义为输入引脚,则该寄存器的值为对应输入引脚的输入电平。0 输入低电平,1 输入高电平。若相应口的某一引脚被定义为输出引脚,则该寄存器的值反应对应引脚是否负荷超载或电路短路。0 输出引脚工作正常,1 引脚工作超载或电路短路。,2.5 MC9S12DG128 MCU的并行I/O接口,4)低功耗驱动寄存器 该寄存器的值反应对应的引脚的输出功耗
34、情况。0 输出功耗正常,1 输出功耗为正常的1/6。5)下拉上拉使能寄存器 0 禁用上拉或下拉电阻,1 允许上拉或下拉电阻。6)下拉上拉选择寄存器 若相应口的某一引脚被定义为输入引脚,且下拉上拉使能寄存器设置为允许上拉或下拉电阻(对应位设置为1),则通过下拉上拉选择寄存器相应位设置为下拉或上拉。0 上拉,1 下拉。,2.端口的复用功能 T口还具有接收输入捕捉功能,每个引脚作为一个输入捕捉端口。系统复位时,引脚置为高阻态。S口还作为SCI模块和SPI模块的通信接口。系统复位时,引脚置为带上拉电阻的输入状态。M口还作为ByteFlight模块、BDLC(J1850)模块、CAN模块、SPI模块的通
35、信接口。系统复位时,引脚置为高阻态。P口还作为PWM模块、SPI模块的通信接口。另外,作为输入/输出端口时,还具有中断功能。系统复位时,引脚置为高阻态。,2.5 MC9S12DG128 MCU的并行I/O接口,H口还作为SPI模块的通信接口。另外,作为输入/输出端口时,还具有中断功能。系统复位时,引脚置为高阻态。J口还作为CAN模块和I2C模块的通信接口。另外,作为输入/输出端口时,还具有中断功能。系统复位时,引脚置为带上拉电阻的输入状态。,2.5 MC9S12DG128 MCU的并行I/O接口,四、其它I/O口 A/D口作为AD转换模块的模拟量输入口和外界触发脉冲的输入口,也可以做为普通输入
36、口。A/D口没有数据方向寄存器,故A/D口只能作为输入口,不能作为输出口。,2.5 MC9S12DG128 MCU的并行I/O接口,第三章 CPU12核,3.1 CPU12基本构成,一、CPU12的结构 CPU12是高速的16位处理器单元,内设五个16位寄存器和一个8位的状态寄存器,内部采用16位数据总线,外部数据总线8位/16位可选。CPU12主要包括寄存器、控制电路和算术/逻辑单元(ALU)和指令队列等四个部分。控制逻辑同一协调各部分逻辑,ALU部件完成指令所要求的算术/逻辑运算等操作,寄存器用于存储操作数或运算结果。,3.1 CPU12基本构成,二、CPU12内部寄存器 CPU12中有6
37、个寄存器:16位累加器D(或8位累加器A、B)、16位变址寄存器X、16位变址寄存器Y、16位堆栈指针SP、16位程序计数器PC和8位状态寄存器CCR。1.累加器D(A、B)累加器A、B是8位通用寄存器,累加器D是由累加器A和B首尾相连后形成的16位寄存器联合体(A为高位)。或者说A、B分别是累加器D的高8位和低8位的别名,它们可保存操作数及运算结果,或用于数据处理。,3.1 CPU12基本构成,2.变址寄存器X和Y 16位变址寄存器X和Y用于变址寻址,即X、Y的内容加上一个常数或者某个累加器中的值,最终形成的结果为操作数的有效地址。X和Y也可以用作计数器或暂存器,还可参与运算,尤其是乘除运算
38、、模糊运算、查表、插值等运算。3.堆栈指针SP CPU12支持自动堆栈,用于子程序调用或中断现场保护、数据暂存等。堆栈指针指向下一个栈地址的16位寄存器,采用递减的结构,即入栈时减一,出栈时加一。,3.1 CPU12基本构成,4.程序计数器X和Y PC是16位寄存器,用于保存要执行的下一条指令的地址,可寻址范围达64KB。5.程序状态字CCR 程序状态字CCR为8位寄存器。,S,X,H,I,N,Z,V,C,D7,D6,D5,D4,D3,D2,D1,D0,3.1 CPU12基本构成,1)C(D0)进位/借位标志位。当运算过程中产生进位或借位对,进位/借位标志位C置1,否则清0。2)V(D1)溢出
39、标志位。主要用于反映两个有符号数运算结果是否有效,如果运算结果超出了有符号数的表示范围,则发生溢出,V标志置1,否则清0。,3.1 CPU12基本构成,3)Z(D2)全0标志位。当运算结果为0时,Z位置1,否则清0。4)N(D3)符号标志位。在CPU运算过程中,若结果为负,则N位置1,否则清0。在CPU12中,除了算术运算以外,寄存器加载、存储、传送也影响N标志,因此寄存器数和存储器数装入累加器时,然后通过测试N标志位即可知正负。,3.1 CPU12基本构成,5)I(D4)可屏蔽中断使能位。用于可屏蔽中断的允许或禁止。I1时,禁止可屏蔽中断;I0时,允许可屏蔽中断。CPU复位后,I自动置1,禁
40、止可屏蔽中断,使用前必须通过软件(CLI)将I清0开中断。CPU响应中断时,自动将I置1,以禁止响应后续中断,中断返回时,执行RTI指令,I位自动清0,以开放可屏蔽中断。若在中断响应期间通过将将I位清0来允许可屏蔽中断,即允许中断嵌套。,3.1 CPU12基本构成,6)H(D5)半进位标志。在加法运算中,如果bit3向bit4产生了进位,则H位置1,否则清0。这位主要用于BCD调整指令。7)X(D6)非屏蔽中断使能位。复位时,一般将X位置为1,屏蔽XIRQ的中断请求。清零X位将使能非屏蔽中断,只要X位被清0,就不能通过写CCR重设该位,只有当复位或响应XIRQ中断时,硬件自动将X位置1。,3.
41、1 CPU12基本构成,8)S(D7)停止模式(STOP)禁止位。若S1,执行STOP指令将使CPU进入待机状态,振荡器停振,CPU及多数集成外设部件也停止工作,以降低功耗。若S0,STOP指令相当于空操作(NOP)指令,程序继续运行。复位将设置S位为1。,3.1 CPU12基本构成,三、指令队列 为了提高执行速度,CPUl2内置了两级的指令队列,每一级宽度为1个字。队列前端还设置了一个保持锁存器,宽度也是1个字。取指操作时,指令代码不直接进入解码部分,而是进入指令队列,如果队列不能行进即代码不能进入指令队列,则暂时寄存在保持锁存器中,当队列行进时再正式进入队列。CPU执行的所有指令代码都来自
42、指令队列,一条指令正在执行时,指令队列可以补充后续代码,从而实现了取指与指令执行操作的并行,加快了整个CPU的运行速度。,3.1 CPU12基本构成,必须指出,指令队列只能使取指与指令执行同时进行,但是并不能使两条或更多的指令同时执行。此外在发生跳转时,指令队列自动清除,然后重新装填。尽管指令代码长度并非全是双数字节,但指令队列的装填总是按字进行。,3.1 CPU12基本构成,四、指令执行过程 CPU运行过程中,不断进行取指、运算、结果存储等工作,取指操作通过指令队列进行,结果存储则通过内/外部总线直接送到目的地。具体过程如下:首先将PC所指的指令代码不断读入指令队列,并从队首进入执行部分进行
43、分析,控制逻辑根据指令要求进行操作,操作结果送到目的地并设置CCR中的标志位。CPU12支持加、减、乘、除运算,并支持浮点除法运算及其它各种逻辑运算,甚至模糊逻辑运算等。外部存储器或内部寄存器既可以提供参与运算的源操作数也可以保存运算结果。,3.1 CPU12基本构成,五、CPU12的堆栈管理规则及使用 堆栈是按照后进先出原则组织的一个存储区,CPU12使用堆栈指针SP管理堆栈。SP为16位寄存器,因此堆栈可以开在64KB内存空间的任何区间。复位不改变SP的值,因此应用程序必须在开始部分对堆栈指针进行初始化,使其指向一个有效的RAM区。CPU12的堆栈是向下生成的,将一个字节压人堆栈时,堆栈指
44、针自动减1,从堆栈中弹出一个字节时,堆栈指针自动加1,若操作数为双字节则SP每次加减2。,3.1 CPU12基本构成,SP总是指向最后进入堆栈的一个字节,这一般称为实栈顶,因此压栈操作时先调整堆栈指针,后保存数据,出栈时正相反。初始化时一般将SP指向与栈底相邻的单元,它不属于堆栈,因此表示堆栈为空。堆栈主要用于子程序调用、中断和临时保存数据。,一、汇编指令格式 HCS12汇编语言源程序的格式:标号:操作码 操作数;注释 1.标号 1)可以组成标号的字符有字母(az,AZ)、数字(09)、?、_、$及点号(.),但开头的第一个字符不能为数字;2)标号后必须带“:”;3)标号长度通常不超过16个字
45、符;4)标号在程序中只能定义一次。,3.2 寻址方式,2.操作码 不区分字母大小写。3.操作数 操作数可以是地址、标号或指令码定义的常数,也可以是由运算符构成的表达式。操作数多于1个时,操作数间要用“,”分隔。1)常数,3.2 寻址方式,3.2 寻址方式,2)“#”标识 一个常数前添加“#”标识表示一个立即数,不加“#”标识时表示一个地址。3)“.”和“”标识 当字符“.”和“”标识单独用在表达式时,表示当前指令的地址。4.注释,3.2 寻址方式,二、寻址方式 确定指令中所需操作数的方式。1.隐含寻址(INH)格式:INST 说明:指操作数隐含在指令的操作码中。指令的操作数部分空白。例如:IN
46、X;操作数是寄存器X的内容 CLRA;操作数是寄存器A的内容,3.2 寻址方式,2.立即寻址(IMM)格式:INST#opr8/#opr16 说明:指操作数由指令直接给出的寻址方式。操作数带“”号。例如:LDAA#$0D;$0D累加器A LDS#$02FF;$02FF栈指针SP,3.2 寻址方式,3.直接寻址(DIR)直接寻址为绝对地址寻址,其有效地址紧随操作码之后。格式:INST opr8a 说明:直接寻址的操作数为地址的低8位,高8位默认为$00,可对存储器的$0000$00FF的256B地址范围进行寻址。操作数为绝对地址,不带“”号。例如:LDAA$3D;($003D)累加器A,3.2
47、寻址方式,4.扩展寻址(EXT)扩展寻址也为绝对地址寻址,其有效地址紧随操作码之后。格式:INST opr16a 说明:扩展寻址的操作数为16位地址,可对存储器的64KB地址范围进行寻址。例如:LDAA$203D;($203D)累加器A,3.2 寻址方式,5.相对寻址(REL)用于转移和子程序调用指令。格式:INST rel8/rel16 说明:当执行程序时,将当前PC指针的内容与指令中的偏移量(相对地址)相加,求得转移操作的目的地址。指令中的偏移量有8位带符号数和16位带符号数两种,分别可实现-128+127B和-32768+32767B范围的转移操作。例如:BRA L1;无条件转移至标号L
48、1处 BSR L2;调用标号L2处的子程序,3.2 寻址方式,6.变址寻址 CPU12有三种不同的变址寻址。CPU12变址寻址方式都汇编成1个操作码字节、1个后置字节和0到2个附加字节。操作码指示指令和变址寻址方式;后置字节提供变址寻址方式的具体信息;当偏移量大于5时,需用附加字节。,3.2 寻址方式,1)带有偏移量的变址寻址 即在变址寄存器的基础上,再加上一个5位、9位、或16位的带符号偏移量,也可用累加器A、B、或D的内容作为偏移量,形成操作数的有效地址。(1)5位偏移量变址寻址(IDX)格式:INST oprx5,xysp 说明:X、Y、SP、PC加上5位带符号常数偏移量形成操作数地址。
49、偏移范围为-16+15B。例如:LDAA 2,X;(2+X)累加器A,3.2 寻址方式,(2)9位偏移量变址寻址(IDX1)格式:INST oprx9,xysp 说明:X、Y、SP、PC加上9位带符号常数偏移量(1个扩展字节中)形成操作数地址。偏移范围为-256+255B。例如:LDAA$F2,Y;($F2+Y)累加器A,3.2 寻址方式,(3)16位偏移量变址寻址(IDX2)格式:INST oprx16,xysp 说明:X、Y、SP、PC加上16位带符号常数偏移量(2个扩展字节中)形成操作数地址。偏移范围为-32768+32767B。例如:LDAA$1200,PC;($1200+PC)累加器
50、A,3.2 寻址方式,(4)累加器偏移变址寻址(IDX)格式:INST abd,xysp 说明:X、Y、SP、PC加上8位(A、B)或16位(D)偏移量形成操作数地址。偏移范围分别为-128+127B或-32768+32767B。例如:LDAA A,Y;(A+Y)累加器A,3.2 寻址方式,2)自动递增/递减的变址寻址 有4种方式自动改变基址寄存器(X、Y、SP)的值,适用于数组等连续数据区的操作,调整步距可在18之间变化,故适合字节、字、双字和四字变量类型。(1)先自增变址寻址(IDX)格式:INST oprx3,+xys 说明:先将基址寄存器(X、Y、SP)加上一个指定的值(18),然后作