《MC9S12DG128的结构与工作原理》由会员分享,可在线阅读,更多相关《MC9S12DG128的结构与工作原理(73页珍藏版)》请在金锄头文库上搜索。
1、第2章 MC9S12DG128的结构与工作原理本章内容v MC9S12DG128的内部结构 v MC9S12DG128引脚功能 v MC9S12DG128的运行模式 v MC9S12DG128的存储器组织概述MC9S12DG128的内核是16位中央处理单元CPU12,有29个独立的数字I/O口(A、B、K和E),20个独立的数字I/O口(H、P、J)具有中断和唤醒功能。MC9S12DG128内部为16位数据通道,外部总线可以按照8位数据窄总线模式操作,允许与8位数据总线的存储器连接,以降低成本。根据系统需求,PLL电路允许调整电源功耗及性能。概述MC9S12DG128主要特性:v16位 HCS
2、12 CPUv内部存储器128 KB Flash8 KB RAM2KB EEPROM概述v外围设备2个增强型串行通信接口(SCI)2个串行外设接口(SPI)3个 MSCAN 模块1个I2C总线接口2个8通道10位 A/D8通道16位增强型捕捉定时器(ECT)8通道8位或4通道16位 PWM2.1 MC9S12DG128的内部结构vMC9S12系列单片机的芯片主要有两种封装形式,即80脚的QFP (Quad Flat Pack)和112脚的LQFP (Low profile Quad Flat Pack),个别子系列还有其它封装形式,如48脚。v由于各子系列中的存储器类型、容量和功能模块不完全相
3、同,因此,不同芯片之间引脚功能略有差异,引脚标号不一定兼容。v但在每个子系列中,例如,所有128kB Flash的MC9S12D系列的单片机,功能相同的引脚都兼容。2.1 MC9S12DG128的内部结构图2.1 MC9S12DG128内部结构框图2.1 MC9S12DG128的内部结构v图2.1为MC9S12DG128的内部结构框图,其中功能模块按照112引脚封装给出。MC9S12DG128单片机的112个引脚中,除了地址、数据、控制三总线外,主要是I/O引脚,多数引脚具有两种或两种以上的功能。 v图中左、右两部分分别是单片机的核心和接口部分,包括 CPU12、存储器、通用I/O、电压调整模
4、块、后台调试模块、系统运行监视模块、时钟产生模块、系统集成模块、外部总 线接口、A/D转换器、增强型捕捉定时器模块、脉宽调制模块、串行通信接口、CAN总线接口、Byteflight接口、字节数据链路通信接口和管脚中断逻辑。 2.1 MC9S12DG128的内部结构2.1.1 CPU12内核(Star Core)CPU12内部结构 【组成】算术逻辑运算单元ALU、CPU控制逻辑电路、CPU寄存器和指令队列。内部采用16位数据总线,各部件通过内部总线相连,外部数据总线8/16位可选。 (1)20位的ALU部件完成指令所规定的算术/逻辑运算等操作。(2)控制逻辑负责解释指令和产生相应的控制信号,并统
5、一协调各部件的工作。(3)寄存器组用于存储操作数或运算结果。(4)3级指令队列用来缓冲程序信息。2.1 MC9S12DG128的内部结构2.1.1 CPU12内核(Star Core)CPU12内部寄存器pCPU12的寄存器集基于累加器 ,包括5个16位的寄存器和一个8位的状态寄存器。p其中,累加器D又可分成两个8位的 寄存器A和B,16位寄存器D、X、 Y通常用于暂存数据或存储器地址 ;SP为堆栈指针,用于指示堆栈的 位置;PC为程序指针,用于寻址程 序代码;条件码寄存器CCR用来反 映运算结果的特征,也控制CPU的行为。图2.6 编程模型(Programming Model)2.1 MC9
6、S12DG128的内部结构2.1.1 CPU12内核(Star Core)(1)累加器Dv累加器D是一个16位寄存器,其高位和低位字节分别称为寄存器A和寄 存器B,可分别作为两个8位寄存器进行访问。实际上,D和A、B指向 同一个寄存器,只是名称不同而已,A、B、D均可称为累加器。在任 何时刻都可以使用8位或16位方式对累加器进行访问。 v若把一个16位数据存入累加器D中,则高8位在A寄存器中,低8位在B 寄存器中。与此相对应,若把D寄存器中的一个16位数据存入存储器, 则高8位在存储器的低位地址,低8位在存储器的高位地址。v注意,任何Motorola (Freescale)公司独立设计的16位
7、、32位CPU中,寄存器与存储器字节的对应关系都是高位数据存放于低位地址,低位 数据占用高位地址,这与Intel公司的CPU数据存放格式正好相反。2.1 MC9S12DG128的内部结构2.1.1 CPU12内核(Star Core)(2)间址/变址寄存器(Index Register) X、YvCPU12内部有两个16位地址寄存器IX和IY,称为间接寻址寄存器,简称间址寄存器或变址寄存器。一般情况下作为指针 寄存器,用于多种寻址方式下的地址计算,也可用于临时存 放数据或参与一些运算,只能按照16位方式访问。v在汇编语言中,这两个寄存器进一步简称为寄存器X和寄存 器Y。在数据块传送时,X和Y寄
8、存器都可以自动加、减1 16,X寄存器常作为源地址指针,Y寄存器常作为目的地址 指针,故X和Y寄存器也称作指针寄存器。2.1 MC9S12DG128的内部结构2.1.1 CPU12内核(Star Core)(3)堆栈指针SP (Stack Pointer)堆栈在内存中专门开辟出来的、按照“先进后出,后进先出”原则进行存取的区域。堆栈指针SP用来专门指示堆栈位置。在使用堆栈之前,要先给SP赋值,以规定堆栈的起始位置,称为栈底。当数据 存入堆栈后,堆栈指针的值将随之变化。最后一个入栈的数据所在的位置(单元)称为栈顶。通常,CPU的堆栈有两种类型:向上生长型和向下生长型。如图2.7所示。图2.7堆栈
9、的类型2.1 MC9S12DG128的内部结构2.1.1 CPU12内核(Star Core)v向上生长型堆栈栈底占用较低地址,栈顶占用较高地址。数据压入堆栈时,SP的内容自动加1,作为本次进栈的地址,然后再存 入信息。随着数据的存入,SP的值越来越大。数据从堆栈弹出后,SP的 内容自动减1。v向下生长型堆栈栈底占用较高地址,栈顶占用较低地址。CPU12的堆栈属于向下生长型,将一个字节数据压入堆栈时,SP自动减 1。从堆栈中弹出一个字节数据时,SP自动加1。若操作数为双字节,则 SP每次加2或减2。因此,随着数据的存入,SP的值越来越小。SP总是指向最后压入堆栈的一个字节数据,称为实栈顶。压栈
10、操作时, 先调整指针(减1或减2),后保存数据。初始化时,一般将SP指向与栈底相邻的单元,它不属于栈底,以此表示堆栈为空。2.1 MC9S12DG128的内部结构2.1.1 CPU12内核(Star Core)vSP主要用于堆栈管理,用于中断和子程序调用时保存系统地址信息,也可以存储临时信息,一般不做他用。v在不影响其内容的前提下,也可替补用作所有变址寻址方式下的变址寄存器,通常不参与运算。v惟一例外的是,在符号扩展指令中用作目的寄存器。此外,还具有自身 的加、减1指令。v影响SP内容的指令有加载、目的操作数为SP的寄存器传送指令、压栈、退栈、加减1、中断和子程序调用等。v使用堆栈前,用户程序
11、必须对SP进行初始化设置。复位时SP=$00FF。2.1 MC9S12DG128的内部结构2.1.1 CPU12内核(Star Core)(4)程序计数器PC (Program Counter)v16位程序计数器PC的内容决定程序执行的顺序,用户可以读取,但不能 直接写入。因为要自动寻址复位矢量,复位后PC自动回到默认状态。v单片机工作时,PC始终指向指令序列中下一条要执行的指令,分支、调 用或转移指令均能改变PC的值。vPC是特殊的寄存器,它决定CPU的取指地址,因此不能挪作他用,但可 以像SP一样,在大多数变址寻址方式下作为变址寄存器,只是不能用在自动增减地址的变址寻址操作中。vPC主要是
12、直接为CPU服务,对于用户程序来讲,PC不能参与任何运算,唯一的作用是辅助进行变址寻址操作。2.1 MC9S12DG128的内部结构2.1.1 CPU12内核(Star Core)(5)条件码寄存器CCR (Condition Code Register)v条件码寄存器是一个8位寄存器,相当于标志寄存器FR或程序状态字PSW (Program State Word),但不同的是,它还可以参与控制CPU的行为。v条件码寄存器中各位的定义:CCR中的各位包括两部分: 5个算术特征位(Arithmetic Flag Bit) ,即H、N、Z、V、C,它们反映上一条指令执 行结果的特征(状态); 3个
13、MCU控制位,即中断屏蔽位X、I和STOP指令控制位,这3位通常由软件设定, 以控制CPU的行为。复位后,X、I两位默认状态为1,屏蔽系统中断。CCR是真正的 专用寄存器,除了C、H位以外,其他各位不参与任何运算。2.1 MC9S12DG128的内部结构2.1.1 CPU12内核(Star Core)CCR中各位的主要含义: vC进位/借位标志(Carry/Borrow Flag)当加法运算产生进位或减法运算产生借位时,C=1,否则,C=0。 vV溢出标志(Overflow Flag)算术运算后,若出现2补码(twos-complement)溢出时,V=1;若无溢出,V=0。vZ0标志(Zer
14、o Flag)当运算结果为0时,Z=1;结果不为0时,Z=0。vN符号位(负标志) (Negative Flag)当运算结果为负时,N=1,否则,N=0。vH辅助进位(半进位)标志(Half-carry Flag)在加法过程中,若累加器A中的D3向D4位产生进位,H=1;否则,H=0。 2.1 MC9S12DG128的内部结构CCR中各位的主要含义:vI可屏蔽中断控制位(Maskable Interrupt Bit)pI位是全局中断屏蔽控制位(global interrupt mask),用于禁止 或允许所有可屏蔽中断源,这些中断源包括来自IRQ引脚的中断和从片内资源来的中断请求。任何时候该控
15、制位均可置 位或清零。pI=1,禁止可屏蔽中断请求;I=0,允许可屏蔽中断请求。复 位时默认I=1。p进行中断服务时,该位自动置位。为了允许可屏蔽中断请求 ,软件必须清除该位。2.1 MC9S12DG128的内部结构CCR中各位的主要含义:vX非屏蔽中断控制位(Non-maskable Interrupt Bit)X位用于屏蔽来自XIRQ引脚的中断请求。若X=1,禁止来自引脚XIRQ 的中断请求;X=0,允许XIRQ来自引脚的中断请求。X位的复位默认值是1,为了允许来自XIRQ引脚的中断服务请求,必须 通过软件将X位清零。X位一旦被清零,允许XIRQ中断,那么用软件的 方法不能使X位再重新置位
16、,除非来一次复位才能使它再次置1。vSSTOP指令屏蔽位(STOP Mask Bit) S位用于禁止CPU执行STOP指令。S=1,屏蔽STOP指令;S=0,允许执 行STOP指令。STOP指令将关闭MCU所有时钟信号,片上振荡器停止工 作,并使MCU处于低功耗工作模式。2.1 MC9S12DG128的内部结构2.1.2 存储器pMC9S12DG128内部集成了三种存储器,包括8KB的RAM, 2KB的EEPROM和128KB的Flash存储器。pRAM可以用作堆栈、保存中间结果和动态数据,甚至可以在调试时存放程序。pEEPROM可以保存设置的信息等半永久数据。pFlash存储器主要用来存放程序和原始数据等,反复擦写次数 可达10万次以上,无需外加编程电压,在正常工作时没有被改写的危险。2.1 MC9S12DG128的内部结构2.1 MC9S12DG128的内部结构2.1.3 I/O接口pMC9S12DG128共有91个I/O口,包括8个8位并