MK7A11P 8Bit Microcontroller 概述 MK7A11P 是 RISC 高性能的 8 位微控制器。它内部包含一个 1K×14bits 的一次性可编程只读存储器、32 字节数据存储器、定时器/计数器、中断、LVR(低电压复位)和 I/O 口。 1. 基本特性 ● ROM:1K×14 bits ● RAM:32×8 bits ● 椎栈:2 级 ● 一个指令周期由四个系统时钟组成 ● 复位模式: - 上电复位 - 低电压复位 - RESETB/PB3(如果设置为复位脚位)输入一个负脉冲 - 看门狗定时器计数溢出复位 ● 5 种振荡模式可供选择 - 外部 RC,LS(低速)晶振,NS(标准速度)晶振和 HS(高速)晶振 - 内部 4MHz RC 振荡器 ● 定时器/计数器 - TMR0:8 位倒计时定时器/计数器带自动重复加载功能 ● 看门狗定时器:芯片内 WTD 是基于一个内部 RC 振荡器(仅 WDT 使用)。有 8 个周期可供选择。使用 者可通过使用预分频器来延长 WDT 溢出周期。 ● 中断结果: - TM0内部定时器/结果计数器中断 - 外部INT脚位 ● I/O 口:12 脚位 - PA0~3:4 个标准 I/O 脚位 - PB0~7:8 个上拉 I/O 脚位带脚位唤醒功能 ● 唤醒模式:B 口(PB0~7)脚位变化唤醒 ● 不同封装类型: MK7A11PD14C:14 脚 DIP MK7A11PS14C:14 脚 SOP 1 2007/4/11 Rev.11 MK7A11P 8Bit Microcontroller 2. 图表 3. 脚位分配 PA0 PB7 PB6 VDD PB5/OSCI PB4/OSCO PB3/RESETB 1 2 3 4 5 6 7 14 13 12 11 10 9 8 2 PA1 PA2 PA3 VSS PB0/INT PB1 PB2/RTCC 2007/4/11 Rev.11 MK7A11P 8Bit Microcontroller 4. 脚位描述 名 称 PA0~3 描 I/O I/O 述 1. 一般 I/O 口 2. 带下拉电阻器 PB0/INT I/O 1. 一般 I/O 口 2. 通过选择实现上拉/下拉/漏级开路功能 3. 脚位改变使芯片从睡眠模式中唤醒 4. 通过上升沿触发中断产生(选择) PB1 I/O 1. 一般 I/O 口 2. 通过选择实现上拉/下拉/漏级开路功能 3. 脚位改变使芯片从睡眠模式中唤醒 PB2/RTCC I/O 1. 一般 I/O 口 2. 通过选择实现上拉/下拉/漏级开路功能 3. 脚位改变使芯片从睡眠模式中唤醒 4. 定时器输入(选择) PB3/RESETB I 1. 输入脚位 2. 系统复位信号(低电平有效)带上拉电阻器 3. 脚位改变使芯片从睡眠模式中唤醒 PB4/OSCO I/O 1. 一般 I/O 口 2. 通过选择实现上拉/漏级开路功能 3. 脚位改变使芯片从睡眠模式中唤醒 4. 振荡器输出脚位(晶振模式不能设置为上拉) PB5/OSCI I/O 1. 一般 I/O 口 2. 通过选择实现上拉/漏级开路功能 3. 脚位改变使芯片从睡眠模式中唤醒 4. 振荡器输入脚位(晶振模式不能设置为上拉) PB7~6 I/O 1. 一般 I/O 口 2. 通过选择实现上拉/漏级开路功能 3. 脚位改变使芯片从睡眠模式中唤醒 VDD P 系统电源输入 VSS P 系统接地输入 3 2007/4/11 Rev.11 MK7A11P 8Bit Microcontroller 5. 存储器映象 MK7A11P 芯片带有两种存储器,分别是程序存储器(ROM)和数据存储器(RAM)。程序存储器用于存储程 序、数据表及中断向量,它是连续的 1024×14bits,不需要转换到 bank。数据存储器是 48(16+32)×8bits,它 包括特殊功能寄存器和一般的数据存储器。 5.1 程序存储器(ROM) 指令和数据表存储在程序存储器内。程序存储器只能有一个中断向量存在,那意味着所有发生的中断都将跳 到相同的向量。烧录器会通过中断标记来判断是哪一种中断发生。程序计数器(PC)有 10 bit,它能直接寻 找所有 1024×16bits 位置地址。查询数据表可以置于程序存储器的任何地方。 RESET 向量位于 3FFH,中断向量位于 3FEH。映象图如下所示: 000H PC (10bit) STACK Level 1 STACK Level 2 INTERRUPT VECTOR RESET VECTOR 3FEH 3FFH < 注 > LCALL 和 LGOTO 允许直接在 1K 字节的地址内选址。 5.2 数据存储器(RAM) 全部的数据存储器集都是 48×8bits,它们包含两种寄存器组。一种是 32×8bits 的一般数据存储器,另一种 是 16×8bits 的特殊寄存器。特殊寄存器的每一字节都用来存储控制数据和操作数据。 数据存储器映象如下所示: 4 2007/4/11 Rev.11 MK7A11P 8Bit Microcontroller 000 User Program 3FD 3FE 3FF IRQ Vector RESET Vector < 注 > LCALL 和 LGOTO 允许直接在 1K 字节的地址内选址 5.2.1 特殊寄存器 Name Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 CONFIG ADJ0 RESETE LV WDTE CPT INRC FOSC1 FOSC0 Bit15 Bit14 Bit13 Bit12 Bit11 Bit10 Bit9 Bit8 -- -- ADJ6 ADJ5 ADJ4 ADJ3 ADJ2 ADJ1 < 注 > CONFIG 是 16 位特殊寄存器 Name Addr SELECT Bit7 Bit6 TMR0_EN WRT_CNT Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 SUR0 EDGE0 PSA PS2 PS1 PS0 IAR $00 A7 A6 A5 A4 A3 A2 A1 A0 TMR0 $01 D7 D6 D5 D4 D3 D2 D1 D0 PCL $02 A7 A6 A5 A4 A3 A2 A1 A0 STATUS $03 -- -- -- TO PD Z DC C BSR $04 D7 D6 D5 D4 D3 D2 D1 D0 PA $05 -- -- -- -- PA3 PA2 PA1 PA0 PB $06 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 IRQM $09 INTM -- -- -- -- -- PB0M TM0M IRQF $0A -- -- -- -- -- -- PB0F TM0F PA_PDM $0B -- -- -- -- DA3 DA2 DA1 DA0 PB_PUP $0C UB7 UB6 UB5 UB4 -- UB2 UB1 UB0 PB_PDM $0D RTCCE INTE -- -- -- DB2 DB1 DB0 PB_POD $0E OB7 OB6 OB5 OB4 -- OB2 OB1 OB0 WAKEUP $0F EN7 EN6 EN5 EN4 EN3 EN2 EN1 EN0 < 注 > “—”:表示未使用 5 2007/4/11 Rev.11 MK7A11P 8Bit Microcontroller 5.2.2 结构寄存器 Name Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 CONFIG ADJ0 RESETE LV WDTE CPT INRC FOSC1 FOSC0 Bit15 Bit14 Bit13 Bit12 Bit11 Bit10 Bit9 Bit8 -- -- ADJ6 ADJ5 ADJ4 ADJ3 ADJ2 ADJ1 ● Bit13~7(ADJ6~0) :用于校准内部RC振荡器 ● Bit6(RST_DEF):RESETB 脚位定义 0:RESETB是普通输入脚位 1:RESETB是系统复位脚位 ● Bit5(LV):设置低电压复位(LVR)的复位电压级别 0:低电压复位 开 1:低电压复位 关 ● Bit4(WDTE) :看门狗定时器使能/禁止 0:WDT 禁止 1:WDT 使能 ● Bit3(CPT):ROM 密码保护位 0:开 1:关 ● Bit2~0(INRC,FOSC1~0):OSC类型及系统时钟选择 Bit2 Bit1 Bit0 INRC FOSC1 FOSC0 0 0 0 LS (low speed) System clock=32~200KHz 0 0 1 NS (Normal speed) System clock=200K~10MHz 0 1 0 HS (high speed) System clock=10~20MHz 0 1 1 External RC System clock=32K ~ 10MHz 1 0 0 Reserved Reserved 1 0 1 Reserved Reserved 1 1 0 Reserved Reserved 1 1 1 Internal RC System clock=4MHz OSC 类型 6 共 振 频 率 2007/4/11 Rev.11 MK7A11P 8Bit Microcontroller 5.2.3 SELECT 寄存器 Name Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 SELECT TMR0_EN WRT_CNT SUR0 EDGE0 PSA PS2 PS1 PS0 选择寄存器用于控制WDT和TM0,它没有特殊数据存储器,是只能通过SELECT指令设置的只读寄存器。通过 执行SELECT指令,累加器的内容将会被发送到SELECT寄存器。如果SELECT寄存器未经过编程设置,它的默 认值是40H。以下数据表将会对选择寄存器的每一脚位进行说明。 Bit 2~0 符号 PS2~PS0 描 述 PS2 PS1 PS0 TMR0 rate WDT rate 0 0 0 1:2 1:1 0 0 1 1:4 1:2 0 1 0 1:8 1:4 0 1 1 1:16 1:8 1 0 0 1:32 1:16 1 0 1 1:64 1:32 1 1 0 1:128 1:64 1 1 1 1:256 1:128 PSA:预分频器分配脚位 3 PSA 1:预分频器分配到 WDT 0:预分频器分配到TMR0 EDGE0:TMR0源信号边沿控制脚位 4 EDGE0 1:外部时钟信号从高电平到低电平时,定时器加1 0:外部时钟信号从低电平到高电平时,定时器加1 SUR0:TMR0时钟源脚位 5 SUR0 1:外部时钟输入 0:(内部时钟)/ 4 WRT_CNT:自动预加载TMR0数据 6 WRT_CNT 1:使能 0:禁止 TMR0_EN:TMR0使能/禁止 7 TMR0_EN 0:禁止 1:使能 7 2007/4/11 Rev.11 MK7A11P 8Bit Microcontroller 6. 功能描述 此芯片提供许多功能,包括 I/O 口,定时器,WDT,中断,数据表位置,复位,程序计数器及 STATUS 寄存器。 我们将会在下面详细描述。 6.1 I/O口 该芯片有两个 I/O 口(A & B)用于数据输入及输出,每一个 I/O 口有不同的功能。A 口是一般 I/O 口带下拉电 阻器。B 口带多功能,它除了可以用做一般 I/O 口带上拉电阻器外,还具备脚位唤醒功能。它们还可以通过选 择实现其他的功能。 6.1.1 Port A A. PA($05H): Register Bit 7 PA Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 -- -- -- PA3 PA2 PA1 PA0 ● Bit3~0(IOA3~0) :I/O口A的数据 B. PA_PDM($0BH): Register Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 PA_PDM -- -- -- -- DA3 DA2 DA1 DA0 ● Bit3~0(DA3~0) :下拉电阻器使能/禁止 0:下拉电阻器禁止 1:下拉电阻器使能 6.1.2 Port B A. PB($06H): Register Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 PB PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 ● Bit7~0(PB7~0):I/O口B的数据 B. PB_PUP($0CH): Register Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 PB_PUP UB7 UB6 UB5 UB4 -- UB2 UB1 UB0 ● Bit7~0(UB7~0) :上拉电阻器使能/禁止 0:上拉电阻器禁止 1:上拉电阻器使能 < 注 > 1. PB3与RESETB共亨则只能做为输入脚位使用。如果只做为PB3使用则无上拉电阻器,如果只做为 RESETB使用则为上拉电阻器。 2. UB4及UB5只能在RC振荡模式下使用。如果使用者使用晶振模式,则这两个脚位是无用的,不能设置 为上拉,否则将会引起故障。 8 2007/4/11 Rev.11 MK7A11P 8Bit Microcontroller C. PB_PDM($0DH): Register Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 PB_PDM RTCCE INTE -- -- -- DB2 DB1 DB0 ● Bit7:此脚位有两个功能,一个是选择PB2/RTCC功能,另一个是使能TMR0外部时钟源。 0:PB2脚位是PB2 1:PB2脚位是RTCC输入,从RTCC中TMR0外部时钟源使能。 < 注 > 计算RTCC的方法如下: 1. 使用SELECT指令将SUR0设置为1 2. 设置RTCCE脚位为1以使PB2脚位做为RTCC时钟使能 ● Bit6:选择PB0/INT功能 0:PB0脚位是PB0 1:PB0脚位是INT ● Bit2~0(PB2~0):下拉电阻器使能/禁止 0:下拉电阻器使能 1:下拉电阻器禁止 D. PB_POD($0EH): Register Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 PB_POD OB7 OB6 OB5 OB4 -- OB2 OB1 OB0 ● Bit7~0(OD7~0):漏级开路使能/禁止 0:漏极开路禁止 1:漏极开路使能 < 注 > PA_PDM($0B),PB_PUP($0C),PB_PDM($0D),PB_POD($0E)是只写寄存器,它们只能用以下指 令写数据: MOVLA REG_Value MOVAM PB_PDM E. WAKEUP($0FH): Register Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 WAKEUP EN7 EN6 EN5 EN4 -- EN2 EN1 EN0 ● Bit7~0(EN7~0) :B口唤醒功能使能/禁止 0:B口唤醒功能禁止 1:B口唤醒功能使能 9 2007/4/11 Rev.11 MK7A11P 8Bit Microcontroller 6.2 定时器/计数器(TMR0) MK7A11P提供1个倒计时定时器/计数器和1个看门狗定时器。通过设置每一个定时器控制寄存器,计数器的时钟 源可以是系统时钟,也可以是外部时钟。寄存器详细设置及图表如下所示: TMR0 ($01) Write TMR0_LA WR_CNT Auto-reload Function Clock Source Select System Clock/4 RTCC TMR0_CNT IRQ Read SUR0 (Bit 5 of SELECT register) * Read/Write is the same register $01 A.TMR0($01H): Register Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 TMR0 D7 D6 D5 D4 D3 D2 D1 D0 ● Bit7~0(TMR0):定时器0(TMR0)数据 6.3 间接寻址 寄存器IAR($00)及BSR($04)用于间接寻址。BSR(Bank选择寄存器)允许5-bit宽的操作数直接访问整个 数据存储器。方法如下图: 10 2007/4/11 Rev.11 MK7A11P 8Bit Microcontroller Indirect Addressing Mode Direct Addressing Mode (BSR) 6 (BSR) (opcode ) 5 4 3 2 1 6 0 5 4 3 2 1 0 00 7F Data Memory 6.4 WDT(看门狗定时器) WDT是防止软体故障及跳过含有不可预知结果的未知页面的定时器。WDT时钟源是一个独立的内部RC振荡器。 此定时器会受温度、电压及不同产品批号的影响。定时最短时间大约20ms,程式中可以使用SELECT指令设置 预分频器然后获得不同的持续时间。 6.5 复位 以下列出了4种会引起复位的情况。掉电将会引起MK7A11P复位,这样能在供电不足的环境下保护芯片,最后两 种情况我们称之为热复位。不同的复位都会影响寄存器和数据存储器。 TO 和 PD 位用来决定复位的类型。 (1) 上电复位 (2) 低电压复位(LVR) (3) RESETB脚位复位(输入一个负脉冲) (4) WDT定时器溢出复位 11 2007/4/11 Rev.11 MK7A11P 8Bit Microcontroller System Clock Power on reset Synchronize with ripple counter Low voltage reset RESETB pin RESET Delay for setup time Watchdog Timer Internal specific RC OSC WDT overflow 系统复位图表 < 注 > 看门狗设置时间为大约20ms,由于电源电压,进程及温度差异,在时间设置上会有一些偏差。 Address Name Cold Reset Warm Reset N/A Accumulator xxxx xxxx pppp pppp N/A IODIR PB 1111 1111 1111 1111 PA 1111 1111 N/A SELECT 0100 0000 0100 0000 00h IAR ---- ---- ---- ---- 01h TMR0 xxxx xxxx pppp pppp 02h PCL 11 1111 1111 11 1111 1111 03h STATUS 0001 1xxx #00# #ppp 04h BSR 1xxx xxxx 1ppp pppp 09h IRQM 0000 0000 0000 0000 0Ah IRQF 0000 0000 0000 0000 0Bh PA_PDM xxxx 0000 xxxx 0000 0Ch PB_PUP 0000 x000 0000 x000 0Dh PB_PDM 00xx x000 00xx x000 0Eh PB_POD 0000 x000 0000 x000 0Fh WAKEUP 0000 x000 0000 x000 xxxx xxxx pppp pppp 20h~3Fh General Purpose RAM 12 2007/4/11 Rev.11 MK7A11P 8Bit Microcontroller < 注 > x:未知的; p:保存为原来的数值; #:依据不同复位条件的数值 -:不执行,清“0” 6.5.1 STATUS 寄存器的复位条件 状态寄存器 复 位 条 件 TO PD 1. 上电复位 1 1 2. 正常操作时 RESETB 复位 U U 3. 睡眠时 RESETB 复位 1 0 4. 睡眠时 WDT 复位 0 0 5. 正常操作时 WDT 复位 0 1 6. 脚位改变唤醒 1 0 < 注 > 1. 如果执行 CLRWDT 指令,则 4.5 项的内容将与以上提到的不同。 2. U:未改变 3. 只有当复位及 PSA 脚位(SELECT 寄存器)被设置为“1”时, TO 和 PD 数据与数据表相同。如 果 PSA 未设置为“1”,则复位后的数据与数据表不同。 6.6 中断 MK7A11P提供两种中断,分别是TMR0和内部INT。IRQM和IRQF寄存器用来控制或判断所有中断的请求状态。 IRQM用来使能/禁止中断,IRQF用来指出是哪一种中断发生。如果特殊IRQM不能使能则硬体中断将不会发生。 但不管IRQM使能或禁止,IRQF都会有状态反应。例如,使用者使能TMR0来开始计数,如果IRQM的bit 0使 能,当定时器溢出,硬体中断将会发生,IRQF的bit 1将被设置,与此同时,程序将跳到中断向量。使用者应 清除中断服务程序中的IRQF,否则中断将完全不工作。另一种情况是如果IRQM的bit 0禁止,当定时器溢出时, 中断将不会产生,但IRQF的bit 1仍被设置,程序将会跳到中断向量。 A. IRQM ($09H) Register Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 IRQM INTM -- -- -- -- -- Bit 1 PB0M Bit 0 TM0M ● Bit7(INTM):球形使能脚位 0:禁止,所有中断屏蔽 1:使能,所有中断不屏蔽 当中断正在进行时,INTM将会被设置为“0”以防止其他中断的发生。当中断完成后,IRETI指令将 会设置INTM为“1”。 ● Bit1(PB0M):外部 INT 脚位中断使能/禁止 13 2007/4/11 Rev.11 MK7A11P 8Bit Microcontroller 0:禁止中断 1:使能中断 ● Bit0(TM0M) :TMR0 中断使能/禁止 0:禁止中断 1:使能中断 B. IRQF ($0AH) Register Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 IRQF -- -- -- -- -- -- PB0F TM0F ● Bit1(PB0F) :外部 INT 管脚中断标记 0:中断信号不发生 1:中断信号发生 ● Bit0(TM0F) :TMR0 中断标记 0:定时器溢出不发生 1:定时器溢出发生 6.7 STATUS寄存器 STATUS寄存器是一个包含零标记(Z) ,进位标记(C),四位进位标记(DC),掉电标记( PD ),看门狗定 时器溢出标记( TO )的8位寄存器,它用于记录状态信息。 A. STATUS($03H) Register Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 STATUS -- -- -- TO PD Z DC C ● Bit4( TO ) :定时器溢出标记位 ● Bit3( PD ) :掉电标记位 描 述 TO PD 0 0 在睡眠模式中 WDT 定时器溢出 0 1 在普通模式中 WDT 定时器溢出 1 0 在睡眠模式中给 RESETB 输入一个“低电平” 1 1 上电复位 Unchanged Unchanged 在普通模式中给 RESETB 输入一个“低电平” ● Bit2(Z) :零标记位 0:逻辑操作结果不是0 1:逻辑操作结果是0 ● Bit1(DC) :四位进位与四位借位标记位 14 2007/4/11 Rev.11 MK7A11P 8Bit Microcontroller 加指令: 0:无低四位进位 1:从低四位进位 减指令: 0:从低四位借位 1:无低四位借位 ● Bit0(C) :进位与借位标记位 加指令: 0:无进位 1:从 MSB 进位 减指令: 0:从MSB借位 1:无借位 6.8 唤醒功能 此芯片提供脚位信号触发唤醒功能,当输入口有信号触发,芯片将会从睡眠模式中返回。为了从睡眠模式中安全 唤醒,我们建议在进入睡眠模式前将输入脚位读为储备数据。编程举例如下所示: MOVLA FFh IODIR PORTB ;//设置B口的0~7脚位为输入,只有输入脚位会被唤醒 ………. ………. MOVM PORTB,a ;//睡眠前存储输入脚位数据 SLEEP ;//如果不能执行读取指令,则不能进入SLEEP模式 NOP ;//当芯片唤醒时增加NOP指令来延迟一会儿 15 2007/4/11 Rev.11 MK7A11P 8Bit Microcontroller 7. 指令集 < 注 > 指令循环是系统时钟/4 Mnemonic Instruction Operands Code (Advance) ADD M, m (M)+(acc) → (M) 1 C, DC, Z 01 0101 1MMM MMMM ADD M, a (M)+(acc) → (acc) 1 C, DC, Z 01 0101 0MMM MMMM AND M, m (M).(acc) → (M) 1 Z 01 0100 1MMM MMMM AND M, a (M).(acc) → (acc) 1 Z 01 0100 0MMM MMMM ANDLA I Literal .(acc) → (acc) 1 Z 11 1001 iiii iiii BC M, b0 Clear bit0 of (M) 1 None 00 1100 0MMM MMMM BC M, b1 Clear bit1 of (M) 1 None 00 1100 1MMM MMMM BC M, b2 Clear bit2 of (M) 1 None 00 1101 0MMM MMMM BC M, b3 Clear bit3 of (M) 1 None 00 1101 1MMM MMMM BC M, b4 Clear bit4 of (M) 1 None 00 1110 0MMM MMMM BC M, b5 Clear bit5 of (M) 1 None 00 1110 1MMM MMMM BC M, b6 Clear bit6 of (M) 1 None 00 1111 0MMM MMMM BC M, b7 Clear bit7 of (M) 1 None 00 1111 1MMM MMMM BS M, b0 Set bit0 of (M) 1 None 00 1000 0MMM MMMM BS M, b1 Set bit1 of (M) 1 None 00 1000 1MMM MMMM BS M, b2 Set bit2 of (M) 1 None 00 1001 0MMM MMMM BS M, b3 Set bit3 of (M) 1 None 00 1001 1MMM MMMM BS M, b4 Set bit4 of (M) 1 None 00 1010 0MMM MMMM BS M, b5 Set bit5 of (M) 1 None 00 1010 1MMM MMMM BS M, b6 Set bit6 of (M) 1 None 00 1011 0MMM MMMM BS M, b7 Set bit7 of (M) 1 None 00 1011 1MMM MMMM Cycles Status Affected OP-code BTSC M, b0 If bit0 of (M) = 0, skip next instruction 1 + (skip) None 00 0100 0MMM MMMM BTSC M, b1 If bit1 of (M) = 0, skip next instruction 1 + (skip) None 00 0100 1MMM MMMM BTSC M, b2 If bit2 of (M) = 0, skip next instruction 1 + (skip) None 00 0101 0MMM MMMM BTSC M, b3 If bit3 of (M) = 0, skip next instruction 1 + (skip) None 00 0101 1MMM MMMM 16 2007/4/11 Rev.11 MK7A11P 8Bit Microcontroller BTSC M, b4 If bit4 of (M) = 0, skip next instruction 1 + (skip) None 00 0110 0MMM MMMM BTSC M, b5 If bit5 of (M) = 0, skip next instruction 1 + (skip) None 00 0110 1MMM MMMM BTSC M, b6 If bit6 of (M) = 0, skip next instruction 1 + (skip) None 00 0111 0MMM MMMM BTSC M, b7 If bit7 of (M) = 0, skip next instruction 1 + (skip) None 00 0111 1MMM MMMM BTSS M, b0 If bit0 of (M) = 1, skip next instruction 1 + (skip) None 00 0000 0MMM MMMM BTSS M, b1 If bit1 of (M) = 1, skip next instruction 1 + (skip) None 00 0000 1MMM MMMM BTSS M, b2 If bit2 of (M) = 1, skip next instruction 1 + (skip) None 00 0001 0MMM MMMM BTSS M, b3 If bit3 of (M) = 1, skip next instruction 1 + (skip) None 00 0001 1MMM MMMM BTSS M, b4 If bit4 of (M) = 1, skip next instruction 1 + (skip) None 00 0010 0MMM MMMM BTSS M, b5 If bit5 of (M) = 1, skip next instruction 1 + (skip) None 00 0010 1MMM MMMM BTSS M, b6 If bit6 of (M) = 1, skip next instruction 1 + (skip) None 00 0011 0MMM MMMM BTSS M, b7 If bit7 of (M) = 1, skip next instruction 1 + (skip) None 00 0011 1MMM MMMM CLRA Clear accumulator 1 Z 01 0001 0000 0000 CLR M Clear memory M 1 Z 01 0001 1MMM MMMM CLRWDT Clear watch-dog register 1 TO, PO 01 0000 0000 0001 COM M, m ~(M) → (M) 1 Z 01 0010 1MMM MMMM COM M, a ~(M) → (acc) 1 Z 01 0010 0MMM MMMM DEC M, m Decrement M to M 1 Z 01 0110 1MMM MMMM DEC M, a (M) - 1 → (acc) 1 Z 01 0110 0MMM MMMM DECSZ M, m (M) - 1 → (M), skip if (M) = 0 1 + (skip) None 01 0111 1MMM MMMM DECSZ M, a (M) - 1 → (acc), skip if (M) = 0 1 + (skip) None 01 0111 0MMM MMMM INC M, m (M) + 1 → (M) 1 Z 01 1000 1MMM MMMM INC M, a (M) + 1 → (acc) 1 Z 01 1000 0MMM MMMM INCSZ M, m (M) + 1 → (M), skip if (M) = 0 1 + (skip) None 01 1001 1MMM MMMM INCSZ M, a (M) + 1 → (acc), skip if (M) = 0 1 + (skip) None 01 1001 0MMM MMMM IODIR M Set i/o direction 1 None 01 0000 0000 0MMM IOR M, m (M) ior (acc) → (M) 1 Z 01 1111 1MMM MMMM IOR M, a (M) ior (acc) → (acc) 1 Z 01 1111 0MMM MMMM 17 2007/4/11 Rev.11 MK7A11P 8Bit Microcontroller IORLA l LCALL I Literal ior (acc) → (acc) Call subroutine. However, LCALL can addressing 1K address 1 Z 2 None 11 0011 iiii iiii 10 0iii iiii iiii LGOTO I Go branch to any address 2 None 10 1iii iiii iiii MOVAM m Move data form acc to memory 1 None 01 0000 1MMM MMMM MOVLA l Move literal to accumulator 1 None 11 0001 iiii iiii MOV M, m (M) → (M) 1 Z 01 0011 1MMM MMMM MOV M, a (M) → (acc) 1 Z 01 0011 0MMM MMMM NOP No operation 1 None 01 0000 0000 0000 RET Return 2 None 11 1111 0111 1111 RETI Return and enable INTM 2 None 11 1111 1111 1111 RETLA l Return and move literal to accumulator 2 None 11 1100 iiii iiii RL M, m Rotate left from m to itself 1 C 01 1100 1MMM MMMM RL M, a Rotate left from m to acc 1 C 01 1100 0MMM MMMM RR M, m Rotate right from m to itself 1 C 01 1110 1MMM MMMM RR M, a Rotate right from m to acc 1 C 01 1110 0MMM MMMM SELECT Set select register 1 None 01 0000 0000 0010 SLEEP Enter sleep (saving) mode 1 TO, PO 01 0000 0000 0011 SUB M, m (M)–(acc) → (M) 1 C, DC, Z 01 1010 1MMM MMMM SUB M, a (M) –(acc) → (acc) 1 C, DC, Z 01 1010 0MMM MMMM SWAP M, m Swap data from m to itself 1 None 01 1101 1MMM MMMM SWAP M, a Swap data from m to acc 1 None 01 1101 0MMM MMMM XOR M, m (M) xor (acc) → (M) 1 Z 01 1011 1MMM MMMM XOR M, a (M) xor (acc) → (acc) 1 Z 01 1011 0MMM MMMM XORLA l Literal xor (acc) → (acc) 1 Z 11 1000 iiii iiii < 注 > 进入睡眠指令后,请增加一个 NOP 指令来进行延时。 18 2007/4/11 Rev.11 MK7A11P 8Bit Microcontroller 8. 电气特性 8.1 绝对最大额定值 电源电压 …… Vss-0.3V to Vss+5.5V 输入电压 …… Vss-0.3V to VDD+0.3V 8.2 存储温度 …… –50℃ to 125℃ 工作温度 …… 0℃ to 70℃ 直流电特性 Test Conditions Symbol Parameter VDD Min. Typ. Max. Unit 2.2 5.5 V 2 Vdd V V Conditions VDD Operating Voltage --- VIH Input HighVoltage 5V I/O Port VIL Input Low Voltage 5V I/O Port 0.8 WDT disable 1 WDT enable 9 WDT disable 1 WDT enable 2 5V IDD1 Standby Current 3V IIL IOH IOL Input Leakage Current I/O Port Driving Current I/O Port Sink Current 5V 5.5V 5.5V Vin=VDD, VSS 1 Voh=5V 9.9 Voh=4.5V 17.6 Voh=4V 24.8 Vol=0.5V 24.5 Vol=0.75V 35.3 Vol=1V 43.8 19 μA μA mA mA 2007/4/11 Rev.11 MK7A11P 8Bit Microcontroller 8.3 交流电特性 Symbol Test Conditions Parameter Conditions fsys1 System Clock fsys2 System Clock fsys3 System Clock fsys4 System Clock Twdt Watchdog Timer Trht Reset Hold Time Min Typ Max Unit VDD LP Crystal mode NT Crystal mode HS Crystal mode RC mode 5V 32 200 3V 32 200 5V 0.2 10 3V 0.2 10 5V 10 20 3V 10 20 5V 4MHZ 4.5 3V 4MHZ 4.5 5V Khz Mhz Mhz Mhz 20 mS 20 mS 3V 5V 3V 8.4 EXT_RC 振荡器频率 VCC Rext OSCI Cext MK7A11P 20 2007/4/11 Rev.11 MK7A11P 8Bit Microcontroller 下表为典型的外部 RC 振荡频率数据表 当 Cext = 0.01uf (103) Rext 5V 3V 300K 500 KHZ 470 KHZ 120K 1.1 MHZ 1.1 MHZ 65K 2.1 MHZ 2 MHZ 32K 4.3 MHZ 4.1 MHZ 17K 8.3 MHZ 8 MHZ 14K 10.3 MHZ 10 MHZ 9. 封装尺寸 (a) 14 Pin DIP D E1 E C TOP E-PIN INDENT ø 0.079 BOTTOM E-PIN INDENT ø 0.118 L A1 A A2 eB B B1 e D1 DIMENSIONS IN MILLIMETERS DIMENSIONS IN INCHES SYMBOLS MIN NOM MAX MIN ─ NOM MAX A ─ ─ 4.57 A1 0.38 ─ ─ 0.015 ─ ─ A2 3.25 3.30 3.45 0.128 0.130 0.136 ─ 0.180 B 0.36 0.46 0.56 0.014 0.018 0.022 B1 1.27 1.52 1.78 0.050 0.060 0.070 C 0.20 0.25 0.33 0.008 0.010 0.013 D 18.90 19.15 19.30 0.744 0.754 0.760 D1 1.07 1.19 1.32 0.042 0.047 0.052 E 7.62 ─ 8.26 0.300 ─ 0.325 E1 0.262 6.35 6.50 6.65 0.250 0.256 e ─ 2.54 ─ ─ 0.100 ─ L 3.18 ─ ─ 0.125 ─ ─ eB 8.64 ─ 9.65 0.340 ─ 0.380 21 2007/4/11 Rev.11 MK7A11P 8Bit Microcontroller E H (b) 14 Pin SOP C L D DIMENSIONS IN MILLIMETERS DIMENSIONS IN INCHES SYMBOLS B e y A1 A A2 7°(4X ) MIN NOM MAX MIN NOM MAX A 1.35 1.60 1.75 0.053 0.063 0.069 A1 0.10 ─ 0.25 0.004 ─ 0.010 A2 ─ 1.45 ─ ─ 0.057 ─ B 0.33 ─ 0.51 0.013 ─ 0.020 C 0.19 ─ 0.25 0.007 ─ 0.010 D 8.55 ─ 8.75 0.337 ─ 0.344 E 4.00 0.150 ─ 0.157 ─ 0.244 3.80 ─ e ─ 1.27 ─ ─ 0.050 H 5.80 ─ 6.20 0.228 ─ L 0.40 ─ 1.27 0.016 ─ 0.050 Y ─ ─ 0.10 ─ ─ 0.004 θ 0° ─ 8° 0° ─ 8° 22 2007/4/11 Rev.11