《78K0 微控制器体系结构》由会员分享,可在线阅读,更多相关《78K0 微控制器体系结构(99页珍藏版)》请在金锄头文库上搜索。
1、78K0/Kx2微控制器78K0/Kx2微控制器体系结构1.1 存储器空间1.1.1 内部程序存储器空间? 78K0系列具有数据、程序统一编址的64K字节空 间。不同子系列及分支产品具有不同大小的物 理(实际)数据空间和程序空间。 ? 寄存器IMS和IXS分别设定存储空间和扩展数据 空间的大小。 ? 78K0/Kx2所有的产品IMS和IXS复位后的值都是 一样的,需要用户在初始化程序中设定与芯片 实际状况相符的值。 ? 78K0/KF2系列的78F0547具有6K字节的扩展RAM 空间和128K字节内置ROM空间,需要把IMS和IXS 寄存器设定为CCH和00H。? IMS寄存器设定的空间地址
2、只有48K,超过32K的 96KROM空间被划分为0-5共6个16K的BANK。 ? 每个BANK在地址上是相互重叠的,所以需要额外 设定BANK寄存器来分别访问。 ? 也就是说,不能同时访问到2个bank中的内容或 者在两个Bank间作直接程序跳转。? 从0000H到003FH总共64字节作为中断向量区域。 ? 0040H至007FH 共64 字节的区域,可存放一字节 调用指令(CALLT)的子程序入口地址 ? 当系统处于片上调试状态时,7EH,7FH存放软件 中断的入口地址,不能做其他用途 ? 未使用引导交换时: ?Option byte位于0080H ?安全ID控制控制字节位于0084H
3、 ?安全ID设定区域位于0085H到008EH? 当系统处于片上调试状态时,8FH到18FH之间存 放通讯程序,不能做其他用途。 ? 从0800H到0FFFH共2048字节为CALLF指令入口区 域,用于子程序的直接调用。 ? 使用引导交换时: ?Option byte位于1080H ?安全ID控制控制字节位于1084H ?安全ID设定区域位于1085H到108EH1.1.2 BANK程序区域? PD78F0547BANK程序区域在占用8000H到BFFFH的 空间。BANK程序区域编号为0到5。它们在地址上 是重叠的,要额外用BANK寄存器选择BANK区域。1.1.3 内部数据存储空间? P
4、D78F0547具有1K字节内部高速数据空间,除 去4组通用寄存器占据的32字节,其余可以作为 数据区或堆栈区。? PD78F0547具有6K字节内部扩展数据空间,可 以作为数据区或程序执行区。1.1.4 特殊功能寄存器? 除了统一寄存器之外,所有的特殊功能设定寄存 器位于FF00H到FFFFH。1.2 处理器寄存器1.2.1 控制寄存器 ? PC复位后,PC被设定为复位向量表0000H和0001H 内的值。 ? PSW 寄存器组选择标志:RBS0,RBS1。用SEL RBn 设定。? 堆栈指针 (SP)(SP) 复位后会使其内容不定,在开始一定要设定。 先减指针后入栈、先出栈后加指针。1.2
5、.2 通用寄存器? 通用寄存器映射到数据存储器特定的地址空间为 FEEOH-FEFFH。通用寄存器共有四组,每一组由8 个8位寄存器(X,A,C,B,E,D,L和H)组成。 ? 每个寄存器可作为一个8 位寄存器使用,两个成 对的8位寄存器可作为一个16位寄存器(AX,BC,DE 和HL)使用。 ? 描述通用寄存器可以使用功能名称(X,A,C,B,E,D, L,H,AX,BC,DE和HL)和绝对名称(R0到R7,RP0到 RP3)。 ? 用SEL RBn选择寄存器组。1.2.3 特殊功能寄存器? 从FFOOH到FFFFH总共256字节的区域分配给特殊 功能寄存器。 ? 特殊功能寄存器可像通用寄存
6、器那样用操作指令、 转移指令以及位操作指令进行操作。根据特殊功 能寄存器的类型不同,可操作的位单元也不同, 可以是1位、8位和16位。78K0/Kx2微控制器78K0/Kx2微控制器Option byte0000H0080H存储空间 复位之后 硬件会自动设定该寄存器低速内置Ring-OSC 软件设置可停止或不可停止Watchdog timer设定 设置溢出时间、窗口打开时间设定设定1 1设定设定2 2RESET释放后,MCU自动对下列地址(ROM内)进行了相应设定。 由于在CPU工作时无法改变程序设定,因此可以防止发生意外改动。0084HOption ByteOption Byte上电后POC
7、释放电压选择 2.7V/1.59V设定设定3 3OCD模式选择控制 操作使能/禁止设定设定4 4地址CPU动作状态复位信号复位处理正常运行(内置高速时钟工作)MCU自动 设置Option Byte软件初始化(寄存器设置)用户程序开始由硬件对下列操作进行设定,可以避免因程序“跑飞”而产生的误操作? (1) 0080H/1080H? 以低速内置振荡器时钟工作时 设置可使用或不可使用软件停止 ? 看门狗定时器(WDT)时间间隔的设置 ? 看门狗定时器(WDT)计数器的设置 计数器工作允许/禁止 ? 看门狗定时器(WDT)开窗时间(Window Open Time)的设置Watchdog Timer设
8、置? (2) 0081H/1081HPOC模式的选择POC模式选择?(3) 0084H/1084H在片调试功能设置OCD功能设置? 设置Option byte的程序示例举例78K0/Kx2微控制器78K0/Kx2微控制器时钟发生器4.1 概述? 时钟发生器为CPU和周边设备提供时钟。 1.主时钟 可以选择外部时钟源或内部高速Ring-OSC。 外部时钟源可以是时钟信号输入或接振荡器。最大 20MHz。 2. 高速内置振荡器 内部高速Ring-OSC的典型频率为8MHz。 3. 子时钟 可以选择外部时钟输入或接振荡器,典型频率 32.768KHz 4. 低速Ring-OSC 仅用于TMH1和WD
9、T,典型频率为240KHz。4.2 控制寄存器? 控制时钟发生器的寄存器有: 处理器时钟控制寄存器(PCC) Ring-OSC 模式寄存器(RCM) 主时钟模式寄存器(MCM) 主OSC 控制寄存器(MOC) 时钟工作模式选择寄存器(OSCCTL) 振荡稳定时间计数器状态寄存器(OSTC) 振荡稳定时间选择寄存器(OSTS)4.2.1 处理器时钟控制寄存器(PCC)4.2.2 Ring-OSC 模式寄存器(RCM)4.2.3 主时钟模式寄存器(MCM)4.2.4 主OSC 控制寄存器(MOC)4.2.5 时钟工作模式选择寄存器(OSCCTL)4.2.6振荡稳定时间计数器状态寄存器(OSTC)4
10、.2.7振荡稳定时间选择寄存器(OSTS)4.3 操作? 采用内部高速Ring OSC可以提高系统的启动后 响应速度。无需等待晶振稳定时间。4.3.1 采用不同时钟的寄存器设置4.3.2 时钟切换配置表78K0/Kx2微控制器78K0/Kx2微控制器端口1 端口功能? 78K拥有0-7,12,13等多个端口。 ? 除了作为数字I/O 端口外,这些端口还有替换功 能。在作为数字端口工作时称端口模式,在作为 替换功能工作时称控制模式。 ? P130只具有输出功能,复位值为0。 ? 系统复位后所有端口默认工作在端口模式,设定 对应的寄存器之后可以选择工作于控制模式。2 端口结构? 所有的端口都带有输
11、出锁存功能。3 寄存器控制端口功能端口的工作模式寄存器 ? 名称为PMn,其中n=0-7,12,14。端口13只有输 出功能模式,不用选择。 ? 模式寄存器对应位为1时选择输入模式,为0时选 择输出模式。 ? 可由1 位或8 位存储器操作指令设置这些寄存器。? 需要注意的是,当选择端口的可选功能时,也要 设定对应的端口工作模式。? 比如串行口0需要使用P10和P11作为TXD0和RXD0 输出和输入串行信号,那么除了要选择端口1为 替换功能之外,还要设定P10和P11分别为输入和 输出模式。端口寄存器 ? 寄存器用于设置芯片端口要输出的数据。 ? 如果在输入模式下读数据,则引脚电平可读。如 果
12、在输出模式下读数据,则输出锁存的值可读。 ? 可由1 位或8 位存储器操作指令设置这些寄存器。上拉电阻选择寄存器 ? 在端口设定为输入模式时,可以选择是否使用片 内的上拉电阻。在输出模式或替换模式下,该寄 存器的设定不起作用。 ? 可由1 位或8 位存储器操作指令设置这些寄存器。 对应位为0:不连接;为1:连接。 ? 复位后默认设定为不连接。4 4 端口功能操作? 输入模式和输出模式的端口操作是不同的,具体 如下所示。 ? 注意:如果使用1 1 位存储器操作指令,仍以8 8 位 操作形式访问端口。因此,如果一个端口既有输 入引脚,又有输出引脚,则对于端口的所有定义 为输入的引脚的输出锁存内容是
13、未定义的。4.1 4.1 写入I/O I/O 端口(1) (1) 输出模式 ? 使用传送指令对输出锁存进行写操作,这样输出 锁存的内容就从引脚输出。 ? 一旦数据写入输出锁存,它将一直保存到新数据 写入。 ? 通过复位可以将输出锁存的内容清零。 (2) (2) 输入模式 ? 使用传送指令对输出锁存进行写操作,不过一旦 输出缓冲关闭,引脚状态将不再改变。 ? 一旦数据写入输出锁存,它将一直保存到新数据 写入。4.2 4.2 从I/O I/O 端口读出(1) (1) 输出模式 ? 使用传送指令读取输出锁存的内容。输出锁存的 内容不会改变。 (2) (2) 输入模式 ? 使用传送指令读取引脚状态。输
14、出锁存的内容不 改变。4.3 I/O 4.3 I/O 端口的操作(1) (1) 输出模式 ? 对输出锁存的内容执行一个操作,即对输出锁存 进行写操作。输出锁存的内容从引脚输出。 ? 一旦数据写入输出锁存,它将一直保存到新数据 写入。 ? 通过复位将输出锁存的内容清零。 (2) (2) 输入模式 ? 读取引脚电平,对它的内容执行一个操作,则将 引脚内容写入输出锁存,但是如果输出缓冲已关 闭,则引脚状态将不再改变。78K0/Kx2微控制器78K0/Kx2微控制器中断1 什么是中断?? 对于一些无法预测何时发生的事件和不规律发生 的事件,我们可以采用两种方式进行检测: ? 轮询法和中断法: ?采用轮
15、询法,由CPU主动轮流查询周边设备的状态。 如果设备较多,不能准确保证事件发生后得到及时响 应;而且CPU负担过重。 ?采用中断的方式,一旦事件发生,由周边设备主动通 知CPU进行处理,CPU负担小,而且响应及时。2 78K0的中断78K0的中断分为硬件可屏蔽中断和软件中断两种。? 可屏蔽中断可设定两级优先级。多个中断发生时CPU 先响应高优先级事件。 可屏蔽中断包括9个外部中断和20个内部中断。 ? 软件中断没有优先级,由BRK指令产生。主要用于调 用系统函数。3 可屏蔽中断? 可屏蔽中断根据事件发生的来源又进一步分为外 部中断和内部中断。 ?外部中断INTPx可以设定检测上升或下降沿,IN
16、TKR只 能检测下降沿。 ?内部中断由周边设备产生,没有边沿检测。 ? 可屏蔽中断相关的寄存器及标志位: ?IE,MK,PR,ISP,IF可屏蔽中断功能设置中断标志位寄存器中断屏蔽寄存器中断优先级寄存器? 小窍门: 使用位操作指令处理中断标志位xxIF,以免误操 作。 采用IF0L.0 = 0;或“_asm(“clr1 IF0L, 0”);”采用IF0L.0 = 0;或“_asm(“clr1 IF0L, 0”);” 的方式处理,编译后的汇编代码为:的方式处理,编译后的汇编代码为: clr1 IF0L, 0clr1 IF0L, 0 如果采用:IF0L 编译后的汇编代码为:mov a, IF0L and a, #0FEH mov IF0L, a 一旦在这几条语句执行中间发生中断,接下来的操作就 会清除中断标志位。外部中断设定PSW相关标志位4 软件中断? 软件中断会立即得到响应,CPU在堆栈中保存PSW 以及PC的值,并清除IE,然后根据保存在003eH 和003f地址处的中断向量进行跳转。 ? 从中断返回使用RETB指令。5 中断操作? 中断响应时间