EM78P345/6/7N 8-BIT Microcontroller Product Specification DOC. VERSION 1.0 ELAN MCCROELECTRONICS CORP. August 2007 Trademark Acknowledgments: IBM is a registered trademark and PS/2 is a trademark of IBM. Windows is a trademark of Microsoft Corporation. ELAN and ELAN logo are trademarks of ELAN Microelectronics Corporation. Copyright © 2005 by ELAN Microelectronics Corporation All Rights Reserved Printed in Taiwan The contents of this specification are subject to change without further notice. ELAN Microelectronics assumes no responsibility concerning the accuracy, adequacy, or completeness of this specification. ELAN Microelectronics makes no commitment to update, or to keep current the information and material contained in this specification. Such information and material may change to conform to each confirmed order. In no event shall ELAN Microelectronics be made responsible for any claims attributed to errors, omissions, or other inaccuracies in the information or material contained in this specification. ELAN Microelectronics shall not be liable for direct, indirect, special incidental, or consequential damages arising from the use of such information or material. The software (if any) described in this specification is furnished under a license or nondisclosure agreement, and may be used or copied only in accordance with the terms of such agreement. ELAN Microelectronics products are not intended for use in life support appliances, devices, or systems. Use of ELAN Microelectronics product in such applications is not supported and is prohibited. NO PART OF THIS SPECIFICATION MAY BE REPRODUCED OR TRANSMITTED IN ANY FORM OR BY ANY MEANS WITHOUT THE EXPRESSED WRITTEN PERMISSION OF ELAN MICROELECTRONICS. ELAN MICROELECTRONICS CORPORATION Headquarters: Hong Kong: USA: No. 12, Innovation Road 1 Hsinchu Science Park Hsinchu, Taiwan 30077 Tel: +886 3 563-9977 Fax: +886 3 563-9966 http://www.emc.com.tw Elan (HK) Microelectronics Corporation, Ltd. Elan Information Technology Group Rm. 1005B, 10/F Empire Centre 68 Mody Road, Tsimshatsui Kowloon , HONG KONG Tel: +852 2723-3376 Fax: +852 2723-7780 [email protected] 1821 Saratoga Ave., Suite 250 Saratoga, CA 95070 USA Tel: +1 408 366-8223 Fax: +1 408 366-8220 Shenzhen: Shanghai: Elan Microelectronics Shenzhen, Ltd. Elan Microelectronics Shanghai Corporation, Ltd. SSMEC Bldg., 3F, Gaoxin S. Ave. Shenzhen Hi-Tech Industrial Park Shenzhen, Guandong, CHINA Tel: +86 755 2601-0565 Fax: +86 755 2601-0500 23/Bldg. #115 Lane 572, Bibo Road Zhangjiang Hi-Tech Park Shanghai, CHINA Tel: +86 021 5080-3866 Fax: +86 021 5080-4600 Contents Contents 1 2 3 4 5 6 概 述..............................................................................................................................1 功能特点........................................................................................................................1 2.1 CPU .................................................................................................................................................... 1 2.2 应 用 .................................................................................................................................................. 2 引脚分配........................................................................................................................2 功能框图........................................................................................................................3 引脚说明 .......................................................................................................................3 5.1 EM78P345NP/M ................................................................................................................................ 3 5.2 EM78P346NP/M/KM......................................................................................................................... 5 5.3 EM78P347NP/M/KM......................................................................................................................... 6 功能描述........................................................................................................................6 6.1 操作寄存器 ........................................................................................................................................ 6 6.1.1 R0(间接寻址寄存器) ...............................................................................................................................6 6.1.2 R1(时钟/记数器) .................................................................................................................................7 6.1.3 R2(程序计数器)和堆栈........................................................................................................................7 6.1.4 R3 (Status Register)....................................................................................................................................8 6.1.5 R4(RAM 存贮器选器存器)..................................................................................................................9 6.1.6 BANK0 6.1.7 BANK 0 R8(AOSR:ADC 输出选择寄存器).....................................................................................9 6.1.8 BANK0 R9(ADCON:A/D 控制寄存器)..........................................................................................10 6.1.9 BANK 0 A(ADOC: A/D 偏移量寄存器).................................................................................................11 6.1.10 BANK 0 RB(ADDATA:ADC 转换值)............................................................................................12 6.1.11 BANK 0 RC(ADDATA1H:ADC 转换值).......................................................................................12 6.1.12 BANK 0 RD(ADDATA1L:ADC 转换值) .......................................................................................12 6.1.13 BANK 0 RE(WUCR:唤醒控制寄存器) ..........................................................................................12 6.1.14 BANK 0 RF(中断状态寄存器) ..........................................................................................................13 6.1.15 Bank 1 R5 (PRDxH: PWM 1, 2, 3 高位寄存器)......................................................................................14 6.1.16 Bank 1 R6 (LVD 控制寄存器).................................................................................................................14 6.1.17 Bank 1 R7 (高灌电流控制寄存器)..........................................................................................................15 6.1.18 Bank 1 R8 (下拉控制寄存器) .................................................................................................................16 6.1.19 Bank 1 R9 (下拉控制寄存器) .................................................................................................................16 6.1.20 Bank 1 RA (漏极开路控制寄存器) .........................................................................................................16 6.1.21 Bank 1 RB (漏极开路控制寄存器) ........................................................................................................17 6.1.22 Bank 1 RC (上拉控制寄存器).................................................................................................................17 6.1.23 Bank 1 RD (Pull-high Control Register) ..................................................................................................18 6.1.24 Bank 1 RE (选择控制位, 只用于 ROMLESS) .....................................................................................18 R5~R7(Port5~Port7).........................................................................................................9 Product Specification (V1.0) 08.30.2007 • iii Contents 6.1.25 6.2 R10 ~ R3F ................................................................................................................................................18 特殊功能寄存器 .............................................................................................................................. 19 6.2.1 A (累加器)................................................................................................................................................19 6.2.2 CONT (Control Register) .........................................................................................................................19 6.2.3 IOC50 ~ IOC70 (I/O 端口控制寄存器)...................................................................................................19 6.2.4 IOC80 (PWMCON: PWM 控制寄存器) ................................................................................................20 6.2.5 IOC90(TMRCON:定时器控制寄存器)...........................................................................................20 6.2.6 IOCA0 (CMPCON:比较器控制寄存器) .................................................................................................21 6.2.7 IOCB0 (下拉控制寄存器) .......................................................................................................................22 6.2.8 IOCC0 (漏极开路控制寄存器) ...............................................................................................................22 6.2.9 IOCD0 (上拉控制寄存器).......................................................................................................................22 6.2.10 IOCE0 (看门狗控制寄存器) ...................................................................................................................23 6.2.11 IOCF0 (中断屏蔽寄存器) .......................................................................................................................23 6.2.12 IOC51 (PRD1L: PWM1 周期的 (Bit 7 ~ Bit 0)低 8 位) ..........................................................................24 6.2.13 IOC61 (PRD2L: PWM2 周期的( Bit7~Bit0)低 8 位)..............................................................................24 6.2.14 IOC71 (PRD3L: PWM3 Time Period) .....................................................................................................25 6.2.15 IOC81 (DT1L: PWM1 占空比的低 8 位)................................................................................................25 6.2.16 IOC91 (DT2L: PWM2 占空比的低 8 位)................................................................................................25 6.2.17 IOCA1 (DT3L:PWM3 占空比的低 8 位)................................................................................................25 6.2.18 IOCB1 (DTH: PWM 占空比的高两位)...................................................................................................25 Bit 1 & Bit 0 (PWM1 [9], PWM1 [8]): 6.2.19 IOCC1 (TMR1L: PWM1 定时的低 8 位)................................................................................................25 6.2.20 IOCD1 (TMR2L: PWM2 定时的低 8 位)................................................................................................25 6.2.21 IOCE1 (TMR3L: PWM3 定时的低 8 位)................................................................................................25 6.2.22 IOCF1 (TMRH: PWM 定时的高两位)....................................................................................................25 6.3 TCC/WDT 和预分频器 ................................................................................................................... 26 6.4 I/O 端口 ............................................................................................................................................ 27 6.4.1 6.5 iv • PWM1 占空比的 8,9 位.....................................................................25 Port6 输入变化唤醒/中断功能用法.......................................................................................................29 复位和唤醒 ...................................................................................................................................... 29 6.5.1 复位和唤醒功能 ......................................................................................................................................29 6.5.2 状态寄存器的 T、P 标志 ........................................................................................................................41 6.6 中断 .................................................................................................................................................. 42 6.7 A/D 转换器(ADC) ...................................................................................................................... 44 6.7.1 ADC 控制寄存器(AOSR/R8,ADCON/R9,ADOC/RA) ...............................................................44 6.7.2 ADC 资料寄存器(ADDATA/RB,ADDATA1H/RC, ADDATA1L/RD) ........................................47 6.7.3 A/D 采样时间 ..........................................................................................................................................47 6.7.4 A/D 转换时间 ..........................................................................................................................................47 6.7.5 休眠模式时的 AD 转换...........................................................................................................................48 6.7.6 编程步骤/事项 ........................................................................................................................................48 Product Specification (V1.0) 08.30.2007 Contents 6.8 双 PWM (脉宽调制) ......................................................................................................................... 50 6.8.1 概述..........................................................................................................................................................50 6.8.2 增量定时器/计数器(TMRX:RMR1H/TWR1L,TMR2H/TWR2L 或者 TMR3H/TWR3L) ........51 6.8.3 PWM 周期(PRDX:PRD1 或者 PRD2) ............................................................................................51 6.8.4 PWM 占空比( DTX: DT1H/ DT1L, DT2H/ DT2L 和 DT3H/ DT3L; DLX: DL1H/DL1L, DL2H/DL2L 和 DL3H/DL3L ) ..........................................................................................................................................................51 6.8.5 比较器 X..................................................................................................................................................52 6.8.6 PWM 编程步骤........................................................................................................................................52 6.9 定时器 .............................................................................................................................................. 52 6.9.1 概述..........................................................................................................................................................52 6.9.2 功能描述..................................................................................................................................................52 6.9.3 相关寄存器编程 ......................................................................................................................................53 6.9.4 定时器编程步骤 ......................................................................................................................................54 6.10 比较器 .............................................................................................................................................. 54 6.10.1 外部参考信号 ..........................................................................................................................................54 6.10.2 比较器输出..............................................................................................................................................55 6.10.3 作为运算放大器使用 ...................................................................................................................................55 6.10.4 比较器中断..............................................................................................................................................55 6.10.5 从睡眠模式下唤醒 ..................................................................................................................................55 6.11 振荡器 .............................................................................................................................................. 56 6.11.1 振荡模式..................................................................................................................................................56 6.11.2 晶体振荡器/陶瓷谐振器(XTAL) ......................................................................................................56 6.11.3 外部 RC 振荡模式 ...................................................................................................................................57 6.11.4 外部 RC 振荡模式 .....................................................................................................................................58 6.12 上电事项 .......................................................................................................................................... 59 6.12.1 外部上电复位电路 .......................................................................................................................................59 6.12.2 残存电压保护 ..........................................................................................................................................59 6.13 代码选项 .......................................................................................................................................... 60 6.13.1 代码选项寄存器 (Word 0).......................................................................................................................60 6.13.2 代码选项寄存器 (Word 1).......................................................................................................................61 6.13.3 代码选项和客户 ID 寄存器 (Word 2).......................................................................................................62 6.14 低电压检测 ...................................................................................................................................... 63 6.14.1 低电压复位..............................................................................................................................................63 6.14.2 低电压检测..............................................................................................................................................63 6.14.3 编程步骤..................................................................................................................................................64 6.15 指令系统 .......................................................................................................................................... 65 7 8 最大绝对偏移量..........................................................................................................67 直流电气特性..............................................................................................................67 8.1 AD 转换器特性 ............................................................................................................................... 69 Product Specification (V1.0) 08.30.2007 v Contents 8.2 9 10 A B C 交流电气特性..............................................................................................................70 时序图..........................................................................................................................71 封装形式......................................................................................................................72 封装结构......................................................................................................................73 B.1 18-Lead Plastic Dual in line (PDIP) — 300 mil ............................................................................... 73 B.2 18-Lead Plastic Small Outline (SOP) — 300 mil ............................................................................. 74 B.3 20-Lead Plastic Dual in line (PDIP) — 300 mil ............................................................................... 75 B.4 20-Lead Plastic Small Outline (SOP) — 300 mil ............................................................................. 76 B.5 20-Lead Plastic Shrink Small Outline (SSOP) — 209 mil ............................................................... 77 B.6 24-Lead Plastic Dual in line (PDIP) — 300 mil ............................................................................... 78 B.7 24-Lead Plastic Small Outline (SOP) — 300 mil ............................................................................. 79 质量确保和可靠性......................................................................................................80 C.1 vi • 比较器(OP) 特性 ............................................................................................................................. 70 地址误差侦测 ................................................................................................................................. 80 Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller 1 概述 EM78P345N,EM78P346N,EM78P347N 是采用低功耗,高速 CMOS 工艺,强抗噪声的 8 位单片机。其 内部包含 4K*13 位一次性可编程只读存储器(OTP-ROM) 。它提供多个加密位来防止程序被读出,3 个 代码选择字来满足用户需求。 由于它具有一次性可编程只读存储器的特性,EM78P345N,EM78P346N,EM78P347N 能够提供一种方 便的途径来开发和检验你的程序。并且,你可利用义隆专用编程器很容易地将你的开发代码写入 EM78P345N,EM78P346N,EM78P347N。 2 功能特点 2.1 CPU 工作电压范围:2.1V~5.5V 基于0°C ~ 70°C (商规) 2.3V~5.5V 基于–40°C ~ 85°C (工规) 工作频率范围(基于两个时钟周期) : z 晶振模式:DC ~ 16MHz,4.5V ; DC~8MHz ,3V;DC ~ 4MHz, 2.1V z RC 模 式:DC ~ 16MHz,4.5V ; DC~12MHz ,3V;DC ~ 4MHz, 2.1V 低功耗: 5V/4MHz 工作条件下电流小于1.5mA 3V/32KHz 条件下电流典型值为15µA 休眠模式下电流典型值为2µA 4K×13 位片内ROM 144×8位片内寄存器(SRAM) 3个双向I/O 口 4个可编程低电压检测 3个可编程低电压复位 8级堆栈供子程序嵌套 8位实时定时/计数器(TCC),其信号源、触发沿可编程选择,溢出产生中断 12位8路A/D转换器, 3个脉冲宽度调制器(PWM) , 1对比较器(可作为OP使用) 省电(SLEEP)模式 7个中断源:TCC溢出中断 输入状态变化中断(可从SLEEP模式唤醒) 外部中断 ADC转换结束中断 PWM周期匹配结束中断 比较器输出高/低电平中断 低电压检测中断 可编程自由运行看门狗定时器(WDT) 21个I/O引脚可编程设置为下拉 Product Specification (V1.0) 08.30.2007 •1 EM78P345/6/7N 8-Bit Microcontroller 21个I/O引脚可编程设置为上拉 22个I/O引脚可编程设置为漏极开路 4个I/0引脚可编程设置为灌大电流 每个指令周期为2个时钟周期 封装类型:18 pin DIP 300mil : EM78P345NPSXJ 18 pin SOP 300mil : EM78P345NMS/J 20 pin DIP 300mil : EM78P346NPSJ 20 pin SOP 300mil : EM78P346NMS/J 24 pin SSOP 209mil: EM78P346NKMS/J 24 pin skinny DIP 300mil : EM78P347NPS/J 24 pin SOP 300mil: EM78P347NMS/J 24 pin SSOP 150mil: EM78P347NKMS/J 2.2 应 用 3 通用 引脚分配 1 18 P56/TCC P61/ADC1 2 17 P55/OSCI P62/ADC2 3 16 P54/OSCO Vss 4 15 VDD P63/ADC3 5 14 P53/PWM3/VREF P64/ADC4 6 P65/ADC5 7 12 P51/PWM1 P66/ADC6 8 11 /RESET/P75 P67/ADC7 9 10 P50/INT EM78P345N P60/ADC0 13 P52/PWM2 图. 3-1 EM78P345N, EM78P346N and EM78P347N 引脚分配 2• Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller 4 功能框图 ROM PC Instruction Register 8-level stack (13 bit) Crystal Int. RC Ext. RC Oscillation Generation P7 Reset Instruction Decoder P70 P71 P72 P73 P74 P75 WDT PWM 1 (Timer 1) PWM 2 (Timer 2) Mux ALU PWM 3 (Timer 3) P6 P60 P61 P62 P63 P64 P65 P66 P67 RAM R3 (Status Reg.) PWM2 PWM3 TCC TCC R4 ACC PWM1 LVD Interrupt control register LVR P5 P50 P51 P52 P53 P54 P55 P56 P57 Interrupt circuit ADC Comparator (CO) or OP Ext INT Ain0~7 Cin+ Cin- CO 图 4-1 EM78P345/6/7N 功能框图 5 引脚说明 5.1 EM78P345NP/M Product Specification (V1.0) 08.30.2007 •3 EM78P345/6/7N 8-Bit Microcontroller Symbol P50~P56 Pin No. 10, 12~14 16~18 Type I/O P60~P67 1~3 5~9 I/O P75 11 I/O Function 通用 I/O 引脚 上电复位后设置为默认值 通用 I/O 引脚 上电复位后设置为默认值 通用 I/O 引脚 上电复位后设置为默认值 漏极开路端口 INT 10 I 下降沿触发的外部中断引脚 ADC0~ADC7 1~3 5~9 I AD 转换器 由 ADCON (R9)<0:2>定义 PWM1 PWM2 PWM3 12 13 14 O 脉宽调制输出 由 PWMCON (IOC80)<5 : 7>设置 VREF 14 I ADC 外部参考电压 由 ADCON (R9)<7>设置 /RESET 11 I 若持续在逻辑低,系统复位 当引脚的状态改变时系统可以从休眠模式中唤醒 通常情况下 /RESET 引脚的电压必须不高于 Vdd TCC 18 I 斯密特触发的时钟/计数器输入,如果不用必须接 VDD 或 VSS XTAL 模式: 晶体或外部时钟输入 RC 模式: RC 振荡器 OSCI 输入 XTAL 模式: 晶振输出或外部时钟输入 OSCO 4• RC 模式: 周期为 1 个指令周期的时钟输出外部时钟信号输入 VDD 15 – 电源正极 VSS 4 – 电源地 Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller 5.2 EM78P346NP/M/KM Symbol P50~P57 P60~P67 Pin No. 11, 13~15 17~20 2~4 6~10 Type I/O I/O Function 通用 I/O 口 上电复位后设置为默认值 通用 I/O 口 上电复位后设置为默认值 通用 I/O 口 P70, P75 1, 12 I/O 上电复位后设置为默认值 P75 作为输出是漏极开路 INT 11 I 下降沿触发的外部中断引脚 2~4 6~10 I AD 转换器 由 ADCON (R9)<0:2>设置 PWM1 PWM2 PWM3 13 14 15 O VREF 15 I CIN-, 20 I CIN+, 1 I CO 2 O /RESET 12 I TCC 19 I OSCI 18 I OSCO 17 O VDD 16 – 电源正极 VSS 5 – 电源地 ADC0~ADC7 Product Specification (V1.0) 08.30.2007 脉宽调制输出 由 PWMCON (IOC80)<5 : 7>设置 AD 外部参考电压 由 ADCON (R9) <7>设置 “-” →比较器的输入引脚 Vin“+”→ 比较器的输入引脚 Vin+ 比较器的输出引脚 CO 由 CMPCON (IOCA0) <0:1>设置 通常只用于输入 若持续在逻辑低,系统复位 当引脚的状态改变时系统可以从休眠模式中唤醒 通常情况下 /RESET 引脚的电压必须不高于 Vdd 斯密特触发的时钟/计数器输入,如果不用必须接 VDD 或 VSS XTAL 模式: 晶体或外部时钟输入 RC 模式: RC 振荡器输入 XTAL 模式: 晶振输出或外部时钟输入 RC 模式: 周期为 1 个指令周期的时钟输出 外部时钟信号输入 •5 EM78P345/6/7N 8-Bit Microcontroller 5.3 EM78P347NP/M/KM Symbol Pin No. 13, 15~17 P50~P57 19~22 I/O Function 通用 I/O 口 上电复位后设置为默认值 通用 I/O 口 P60~P67 4~6 8~12 I/O P70~P75 3, 2, 1, 24 23, 14 I/O 13 I 下降沿触发的外部中断引脚 4~6 8~12 I AD 转换器 由 ADCON (R9)<0:2>设置 PWM1 PWM2 PWM3 15 16 17 O VREF 17 I CIN- 22 I CIN+ 3 I CO 4 O /RESET 14 I TCC 21 I OSCI 20 I OSCO 19 O VDD 18 – 电源正极 VSS 7 – 电源地 INT ADC0~ADC7 6 Type 上电复位后设置为默认值 通用 I/O 口 上电复位后设置为默认值 P75 作为输出是漏极开路 脉宽调制输出 由 PWMCON (IOC80)<5 : 7>设置 AD 外部参考电压 由 ADCON (R9) <7>设置 “-”→比较器的输入引脚 Vin“+”→ 比较器的输入引脚 Vin+ 比较器的输出引脚 CO 由 CMPCON (IOCA0) <0:1>设置 通常只用于输入 若持续在逻辑低,系统复位 当引脚的状态改变时系统可以从休眠模式中唤醒 通常情况下 /RESET 引脚的电压必须不高于 Vdd 斯密特触发的时钟/计数器输入,如果不用必须接 VDD 或 VSS XTAL 模式: 晶体或外部时钟输入 RC 模式: RC 振荡器输入 XTAL 模式: 晶振输出或外部时钟输入 RC 模式: 周期为 1 个指令周期的时钟输出 外部时钟信号输入 功能描述 6.1 操作寄存器 6.1.1 6• R0(间接寻址寄存器) R0不是一个实际存在的寄存器,它的主要功能是做为一个间接寻址的指标。 任何使用R0作为指针的指令实际上操作的是由RAM选择寄存器(R4)所指向数据。 Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller 6.1.2 R1(时钟/记数器) 对来自TCC引脚的外部信号边沿或对内部指令周期时钟进行加计数。 TCC触发脉冲宽度的外部信号必须多于一个指令。 加计数信号由CONT寄存器的第4位和第5位决定。 和其它寄存器一样是可读可写的。 6.1.3 R2(程序计数器)和堆栈 R3 A 11 A10 A9 ~ R e s e t V e c to r In te rru p t V e c to r A0 000H 008H 01 P AG E 1 0400~07FF 10 P A G E 2 0800~ 0B FF 11 P A G E3 0C 00~0FFF S ta c k S ta c k S ta c k S ta c k S ta c k S ta c k S ta c k S ta c k Level Level Level Level Level Level Level Level 1 2 3 4 5 6 7 8 Space 00 P AG E 0 0000~03FF O n -c h ip P r o g r a m M em o ry FFFH 图6-1 程序计数器结构 R2与硬件堆栈为12位宽,结构如图4所示。 产生4×13位片内ROM地址以获取对应程序指令代码。一个程序页为1024字长。 复位后R2所有位均清0。 “JMP”指令直接装载R2低10位值,因此,JMP指令跳转范围为一个程序页面内。 “CALL”指令先装载PC低10位值,而后PC+1入栈,因此,子程序入口地址可以在一 页的任何地方。 “RET”(“RETLk”,“RETI”)指令将程序计数器的值加载到堆栈的栈顶。 “ADD R2,A”允许相对地址被装入当前PC,同时PC的第9及其以上位日益增多。 “MOV R2,A”允许将寄存器“A”中的地址加载到PC的低8位,同时PC的第9和第10 位(A8~A9)将不会被改变。 任何指令除了“ADD R2,A”(例如:“MOV R2,A”,“BC R2,6”,……)都将导 致PC的第9位和第10位(A8~A9)不被改变。 对于EM78P417/8/9N,在执行指令“JMP”、“CALL”或者任何改变R2值的指令时,最 高两位(A10~A11)将由状态寄存器(R3)的PS0~PS1的内容装入。 除了改变R2内容指令需要一个以上指令周期外(fclk/2或fclk/4),其余指令只要一个 指令周期。这些指令需要由代码寄存器的CYES位决定的一个或两个指令周期。 Product Specification (V1.0) 08.30.2007 •7 User Memory C ALL RET RETL RETI EM78P345/6/7N 8-Bit Microcontroller 6.1.3.1 数据存储器配置 Address Bank 0 Registers Bank 1 Registers IOC Page 0 Registers IOC Page 1 Registers 00 R0 (间接寻址寄存器) 保留 保留 保留 01 R1 (时间计数器) 保留 保留 保留 02 R2 (程序计数器) 保留 保留 保留 03 R3 (状态寄存器) 保留 保留 保留 04 R4 (RAM 选择寄存器) 保留 保留 保留 05 R5 (Port5) R5 (PRDxH: PWM1, 2, 3 高脉冲时间) IOC50 (I/O 端口控制 寄存器) IOC51 (PRD1: PWM1 周期) 06 R6 (Port6) R6 (LVD 控制寄存器) IOC60 (I/O 端口控制 寄存器) IOC61 (PRD2: PWM2 周期) 07 R7 (Port7) R7 (高灌电流) IOC70 (I/O 端口控制 寄存器) IOC71 (PRD3: PWM3 周期) 08 R8 (ADC 输入选择寄存 器) R8 (下拉控制寄存器) IOC80 (PWM 控制寄 存器) IOC81 (DT1L: 低脉冲 PWM1) 09 R9 (ADC Control Register) R9 (下拉控制寄存器) IOC90 (定时控制寄 存器) IOC91 (DT2L: 低脉冲 PWM2) 0A RA (ADC Offset Calibration Register) RA (漏极开路控制寄存器) IOCA0 (比较器控制 寄存器) IOCA1 (DT3L:低脉冲 PWM3) 0B RB (ADC Output Select Register) RB(漏极开路控制寄存器) IOCB0 (下拉控制寄 存器) IOCB1 (DTH: 低脉冲 PWM) 0C RC (ADDATA1H: A/D data Bit 11~Bit 8) RC (上拉控制寄存器) IOCC0 ((漏极开路控 制寄存器) IOCC1 (TIMER1L: PWM1 时间) 0D RD (ADDATA1L: A/D data Bit 7~Bit 0) RD(上拉控制寄存器) IOCD0 (上拉控制寄 存器) IOCD1 (TIMER2L: PWM2 时间) 0E RE (Wake-up Control Register) 保留 IOCE0 (看门狗控制 寄存器) IOCE1 (TIMER3L: PWM3 时间) 0F RF (Interrupt Status Register) 保留 IOCF0 (中断使能寄 存器) IOCF1 (TMRH: PWM 时间) 10 ︰ General Registers 1F 20 ︰ Bank 0 Bank 1 Bank 2 Bank 3 3F 6.1.4 R3 (Status Register) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 IOCS - - T P Z DC C Bit7(IOCS):控制寄存器段选择位。 1=选择1段(IOC51~IOCF1) 0=选择0段(IOC50~IOCF0) Bit 6 ~ Bit 5: 固定给 “0” 8• Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller Bit4(T): 时间溢出位。 当执行“SLEP”或“WDTC”指令时置1,当WDT溢出时上电复位或清0。 Bit3(P): 低功耗标志位。 当上电或执行一个“WDTC”指令后设置为1,当执行“SLEP”指令时清0。 注意 Bit 4 和Bit 3 (T & P) 为只读 Bit2(Z): 零标志。 当一个算术或逻辑运算的结果为零设置为1。 Bit1(DC): 辅助进位标志。 Bit0(C): 进位标志 6.1.5 R4(RAM存贮器选器存器) Bit7,6 : 用于选择存储区0~3。 Bits5~0 : 用于在直接地址模式下选择寄存器(地址:00~3F)。 6.1.6 BANK0 R5~R7(Port5~Port7) R5和R6是I/O寄存器。 R7是I/O寄存器。R7以上的3位被置为0。 6.1.7 BANK 0 R8(AOSR:ADC输出选择寄存器) AOSR寄存器定义Ports6的引脚,分别作为模拟输入或者作为数字I/O。 7 6 5 4 3 2 1 0 ADC7 ADE6 ADE5 ADE4 ADE3 ADE2 ADE1 ADE0 Bit7(ADE7) : AD转换器作用于P67引脚。 0 = ADC7不起作用,P67作为 I/O引脚。 1 = ADC7作为模拟输入引脚起作用。 Bit6(ADE6):AD转换器作用于P66引脚。 0 = ADC6不起作用,P66作为 I/O引脚。 1 = ADC6作为模拟输入引脚起作用。 Bit5(ADE5):AD转换器作用于P65引脚。 0 = ADC5不起作用,P65作为 I/O引脚。 1 = ADC5作为模拟输入引脚起作用。 Bit4(ADE4):AD转换器作用于P64引脚。 0 = ADC4不起作用,P64作为 I/O引脚。 1 = ADC4作为模拟输入引脚起作用。 Bit3(ADE3):AD转换器作用于P63引脚。 Product Specification (V1.0) 08.30.2007 •9 EM78P345/6/7N 8-Bit Microcontroller 0 = ADC3不起作用,P63作为 I/O引脚。 1 = ADC3作为模拟输入引脚起作用。 Bit2(ADE2):AD转换器作用于P62引脚。 0 = ADC2不起作用,P62作为 I/O引脚。 1 = ADC2作为模拟输入引脚起作用。 Bit1(ADE1):AD转换器作用于P61引脚。 0 = ADC1不起作用,P61作为 I/O引脚。 1 = ADC1作为模拟输入引脚起作用。 Bit0(ADE0):AD转换器作用于P60引脚。 0 = ADC0不起作用,P60作为 I/O引脚。 1 = ADC0作为模拟输入引脚起作用。 当P60/ADE0作为模拟输入或数字I/O起作用时,请注意IOCA0控制寄存 器的COS1和COS0位。 比较器/OP选择位如图3所示。 P60/ADE0/CO引脚优先级: 6.1.8 优先 高 中 低 P60/ADE0/CO CO ADE0 P60 BANK0 R9(ADCON:A/D控制寄存器) 7 6 5 4 3 2 1 0 VREFS CKR1 CKR0 ADRUN ADPD ADIS2 ADIS1 ADIS0 Bit 7(VREFS): ADC中VREF的输入源。 0 = ADC中VREF与VDD(缺省值)相连,P53/VREF完成P53的功能。 1 = ADC中VREF与P53/VREF相连。 请注意P53/PWM3/VREF引脚。它不能同时被用作PWM3HE和VREF。 如果P53/PWM3/VREF作为VRDF模拟输入引脚,那么PWM3E必须为 “0“ P53/PWM3/VREF的优先级: 优先 高 中 低 P53/PWM3/VREF VREF PWM3 P53 Bit 6: Bit 5 (CKR1: CKR0):ADC振荡时钟频率的预分频器 00 = 1:16(缺省值) 01 = 1:4 10 = 1:64 11 = 1:WDT环型振荡电路频率 10 • Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller CKR0:CKR1 Operation Mode Max.operation frequency 00 Fsco/16 4MHz 01 Fsco/4 1MHz 10 Fsco/64 16MHz 11 Internal RC — Bit 4(ADRUN):ADC开始运行位。 1 = 一个A/D转换开始。这个位可以由软件来设置 0 = 转换的复位完成。这个位不可以通过软件来复位。 Bit3(ADPD): ADC低功耗模式。 1 = ADC处于工作状态。 0 = 关闭ADC参考电阻,使其进入低功耗状态尽管此时CPU可能仍在工 作。 Bit 2:Bit 0 (ADIS2:ADIS0):模拟输入选择。 000 = ADIN0/P60; 001 = ADIN1/P61; 010 = ADIN2/P62; 011 = ADIN3/P63; 100 = ADIN4/P64; 101 = ADIN5/P65; 110 = ADIN6/P66; 111 = ADIN7/P67; 只有当ADIF位和ADRUN位都处于低状态时,才能被改变。 6.1.9 BANK 0 A(ADOC: A/D 偏移量寄存器) 7 6 5 4 3 2 1 0 CALI SIGN VOF[2] VOF[1] VOF[0] “0” “0” “0” Bit7(CALI):A/D偏移校准使能位 0 = 校准禁止; 1 = 校准使能. Bit6 (SIGN): 偏移电压的极性位 0 = 负极电压 1 = 正极电压 Bit5:Bit3 (VOF[2]:VOF[0]): 偏移电压位 Bit2:Bit0: 未使用,作“0”。 Product Specification (V1.0) 08.30.2007 • 11 EM78P345/6/7N 8-Bit Microcontroller 6.1.10 BANK 0 RB(ADDATA:ADC转换值) 7 6 5 4 3 2 1 0 AD11 AD10 AD9 AD8 AD7 AD6 AD5 AD4 当A/D转换结束,结果装载入ADDATA。ADRUN位被清0,ADIF置1。RB只读。 6.1.11 BANK 0 RC(ADDATA1H:ADC转换值) 7 6 5 4 3 2 1 0 “0” “0” “0” “0” AD11 AD10 AD9 AD8 当A/D转换结束,结果装载入ADDATA1H。ADRUN位被清0,ADIF置1。RC只读。 6.1.12 BANK 0 RD(ADDATA1L:ADC转换值) 7 6 5 4 3 2 1 0 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 当A/D转换结束,结果装载入ADDATA1L。ADRUN位被清0,ADIF置1。RD只读。 6.1.13 BANK 0 RE(WUCR:唤醒控制寄存器) 7 6 5 4 3 2 1 0 EM78P345/6/7/NXS/XJ “0” “0” “0” “0” ADWE CMPWE ICWE “0” ICE345N Simulator C3 C2 C1 C0 ADWE CMPWE ICWE “0” Bit7—Bit4: [With EM78P345/6/7NXS/XJ]: 未使用,作“0”。 [With Simulator (C3~C0)]: 在IRC晶振模式的标准位,在ICE345N仿真器的 IRC晶振模式下r, 这些是IRC晶振模式的IRC标准位。 C3 C2 C1 C0 频率(MHz) 0 0 0 0 (1-36%) x F 0 0 0 1 (1-31.5%) x F 0 0 1 0 (1-27%) x F 0 0 1 1 (1-22.5%) x F 0 1 0 0 (1-18%) x F 0 1 0 1 (1-13.5%) x F 0 1 1 0 (1-9%) x F 0 1 1 1 (1-4.5%) x F 1 1 1 1 F (default) 1 1 1 0 (1+4.5%) x F 1 1 0 1 (1+9%) x F 1 1 0 0 (1+135%) x F 1 0 1 1 (1+18%) x F 1 0 1 0 (1+22.5%) x F 1 0 0 1 (1+27%) x F 1 0 0 0 (1+31.5%) x F 1. 列出的频率估值是理论上的,是取自在高频率模式下的有一个实例。 因此,仅供参考用。数据将按照实际的情况发生改变。 12 • Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller 2. 低频下也可以参考类似的计算方法。 Bit 3 (ADWE): ADC唤醒允许位 0 = 不允许ADC唤醒。 1 = 允许ADC唤醒。 当带有AD转换完成被用作进入中断向量或者将EM78P345/6/7N从睡眠 状态唤醒,ADWE位必须置为“允许”。 Bit2(CMPWE):比较器唤醒允许位。 0 = 不允许比较器唤醒。 1 = 允许比较器唤醒。 当比较器输出状态改变被用作进入中断向量将EM78P345/6/7N从睡眠状 态唤醒,CMPWE位必须置为“允许”。 Bit1(ICWE):Port6输入状态改变唤醒允许位。 0 = 不允许Port6输入状态改变唤醒。 1 = 允许Port6输入状态改变唤醒。 当Port6输入状态改变被用作进入中断向量将EM78P345/6/7N从睡眠状 态唤醒,ICWE位必须置为“允许”。 Bit0: 未使用,作“0”。 6.1.14 BANK 0 RF(中断状态寄存器) 7 6 5 4 3 2 1 0 CMPIF PWM3IF PWM2IF PWM1IF ADIF EXIF ICIF TCIF 注意 1表示有中断请求,0表示没有中断请求,RF可以被清零,但是不可以被设置,IOCF0 是掩模寄存器,读取RF将会导致RF和IOCF0的逻辑与。 Bit7(CMPIF):比较器中断标志。比较器输出发生变化则置“1”,软件清0。 Bit6(PWM3IF):PWM3(脉冲宽度调制器)中断标志。达到设定周期则置“1”,软 件清0。 Bit5(PWM2IF):PWM2(脉冲宽度调制器)中断标志。达到设定周期则置“1”,软 件清0。 Bit1(PWM1IF):PWM2(脉冲宽度调制器)中断标志。达到设定周期则置“1”,软 件清0。 Bit3 (ADIF): 模拟到数字转换的中断标志。AD转换完成则置“1”,软件清0。 Bit2(EXIF): 外部中断标志。当/INT引脚发生下降沿时置“1”,软件清0。 Bit1(ICIF): Port6口输入变化中断标志。Port6口输入变化时置“1”,软件清0。 Bit0(TCIF): TCC溢出中断标志。TCC溢出时置“1”,软件清0。 RF可软件清0,但不能软件置1。 IOCF0位中断屏蔽寄存器。 Product Specification (V1.0) 08.30.2007 • 13 EM78P345/6/7N 8-Bit Microcontroller 注意读RF的结果为RF和IOCFO“相与”的结果。 6.1.15 Bank 1 R5 (PRDxH: PWM 1, 2, 3 高位寄存器) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 - - PRD3[9] PRD3[8] PRD2[9] PRD2[8] PRD1[9] PRD1[8] Bit 5 & Bit 4: PWM3 周期的8,9位 Bit 3 & Bit 2: PWM2 周期的8,9位 Bit 1 & Bit 0: PWM1 周期的8,9位 6.1.16 Bank 1 R6 (LVD控制寄存器) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 - LVDIF /LVD LVDWE LVDIE LVDEN LVD1 LVD0 注意 ■ Bank 1 R6 <4> 可擦写 ■ 可以通过设置 Bank 1 R6 <4> t为"1."使能检测到低电压唤醒IC ■ 通过ENI指令开全局中断和,DISI指令禁止全局中断. 有关图 Fig. 6-8 (中断输入 电路) Bit 6 (LVDIF): 低电压检测中断标志位 LVDIF位可被软件或硬件清零. Bit 5 (/LVD): 低电压检测状态位,是一个只读位.当VDD引脚电压低于低电压检测 电压时这个位被清零 0 = 电压低于检测电压 1 = 电压高于检测电压或低电压检测功能被禁止. Bit 4 (LVDWE): 低电压唤醒使能位 0 = 禁止低电压唤醒 1 = 使能低电压唤醒. 当检测到低电压时,进入中断向量把IC从睡眠中唤醒,必须使低电压 检测功能使能 Bit 3 (LVDIE): 低电压检测中断使能位 0 = 禁止低电压检测中断 1 = 使能低电压检测中断 当检测到电压低于设定值时进入中断或执行下一条指令,LVDIE必须设 置为1. Bit 2 (LVDEN): 低电压检测使能位 0 = 禁止低电压检测 1 = 使能低电压检测 Bits 1~0 (LVD1:0): 低电压检测等级选择位 14 • Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller LVDEN Bank 0 <R8, 7> LVD1, LVD0 <RA, 1, 0> 1 11 1 10 1 01 1 00 0 XX LVD Voltage Interrupt Level /LVD Vdd ≤ 2.3V 0 Vdd > 2.3V 1 Vdd ≤ 3.3V 0 Vdd > 3.3V 1 Vdd ≤ 4.0V 0 Vdd > 4.0V 1 Vdd ≤ 4.5V 0 Vdd > 4.5V 1 NA 1 6.1.17 Bank 1 R7 (高灌电流控制寄存器) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 - TIMERSC CPUS IDLE- OSS3 OSS2 OSS1 OSS0 Bit 6 (TIMERSC): TCC, TMR1, TMR2, TMR3 时钟源选择 0 : Fs. Fs: 副频作为看门狗内部RC基准 1 : Fm. Fm: 主频时钟 Bit 5 (CPUS): CPU 时钟源选择 0 = 副频 1 = 主频 当CPUS=0, CPU 以副频振荡并且主频停止振荡 Bit 4 (IDLE): Idle 模式选择位. 这个位决定下SLEP指令后进入哪个模式. 0 : IDLE=”0”+SLEP 指令 → 睡眠模式 1 : IDLE=”1”+SLEP 指令 → 空闲模式 CPU 运行模式: RESET NormalMode fosc:oscillation fs: oscillation external interrupt CPU: using fosc w akeup IDLE="0" SLEP external interrupt SLEEPMode fosc:stop fs: stop CPUS="1" CPUS="0" GreenMode IDLE="1" SLEP IDLE="1" SLEP fosc:stop fs: oscillation IDLE="0" SLEP CPU: stop CPU: using fs IDLE Mode fosc:stop fs: oscillation w akeup CPU: stop 图 6-2 CPU Operation Mode Bit 3 (OSS3): 选择 P67作为高灌电流引脚 Product Specification (V1.0) 08.30.2007 • 15 EM78P345/6/7N 8-Bit Microcontroller Bit 2 (OSS2): 选择 P66作为高灌电流引脚 Bit 1 (OSS1): 选择P51作为高灌电流引脚 Bit 0 (OSS0): 选择 P50作为高灌电流引脚. OSSx VDD = 5V, 输入电流 0 20mA (in GND+0.5V) 1 80mA (in GND+1.5V) 6.1.18 Bank 1 R8 (下拉控制寄存器) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 /PD57 /PD56 /PD55 /PD54 /PD53 /PD52 /PD51 /PD50 Bank 1 R8 寄存器可读写 Bit 7 (/PD57): P57下拉控制位 0 = 使能下拉 1 = 禁止下拉 (默认) Bit 6 (/PD56): P56引脚下拉控制位 Bit 5 (/PD55): P55引脚下拉控制位 Bit 4 (/PD54): P54引脚下拉控制位 Bit 3 (/PD53): P53引脚下拉控制位 Bit 2 (/PD52): P52引脚下拉控制位 Bit 1 (/PD51): P51引脚下拉控制位 Bit 0 (/PD50): P50引脚下拉控制位 6.1.19 Bank 1 R9 (下拉控制寄存器) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 - - - /PD74 /PD73 /PD72 /PD71 /PD70 Bank 1 R9寄存器可读写 Bit 4 (/PD74): P74引脚下拉控制位 0 =使能下拉 1 = 禁止下拉(默认) Bit 3 (/PD73): P73引脚下拉控制位 Bit 2 (/PD72): P72引脚下拉控制位 Bit 1 (/PD71): P71引脚下拉控制位 Bit 0 (/PD70): P70引脚下拉控制位 6.1.20 Bank 1 RA (漏极开路控制寄存器) 16 • Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 /OD67 /OD66 /OD65 /OD64 /OD63 /OD62 /OD61 /OD60 Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller Bank 1 RA可读写 Bit 7 (/OD67): P67 引脚漏极开路控制位 0 = 使能漏极开路 1 = 禁止漏极开路 Bit 6 (/OD66): P66引脚漏极开路控制位 Bit 5 (/OD65): P65引脚漏极开路控制位 Bit 4 (/OD64): P64引脚漏极开路控制位 Bit 3 (/OD63): P63引脚漏极开路控制位 Bit 2 (/OD62): P62引脚漏极开路控制位 Bit 1 (/OD61): P61引脚漏极开路控制位 Bit 0 (/OD60): P60引脚漏极开路控制 6.1.21 Bank 1 RB (漏极开路控制寄存器) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 - - - /OD74 /OD73 /OD72 /OD71 /OD70 Bank 1 RB 寄存器可读写 Bit 4 (/OD74): P74引脚漏极开路使能位 0 = 使能漏极开路 1 = 禁止漏极开路 Bit 3 (/OD73): P73引脚漏极开路控制位 Bit 2 (/OD72): P72引脚漏极开路控制位 Bit 1 (/OD71): P71引脚漏极开路控制位 Bit 0 (/OD70): P70引脚漏极开路控制位 6.1.22 Bank 1 RC (上拉控制寄存器) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 /PH57 /PH56 /PH55 /PH54 /PH63 /PH62 /PH61 /PH60 Bank 1 RC 寄存器可读写 Bit 7 (/PH57): P57引脚上拉使能位 0 = 使能上拉 1 = 禁止上拉 Bit 6 (/PH56): P56 引脚上拉使能位 Bit 5 (/PH55): P55引脚上拉使能位 Bit 4 (/PH54): P54引脚上拉使能位 Bit 3 (/PH63): P63引脚上拉使能位 Bit 2 (/PH62): P62引脚上拉使能位 Product Specification (V1.0) 08.30.2007 • 17 EM78P345/6/7N 8-Bit Microcontroller Bit 1 (/PH61): P61引脚上拉使能位 Bit 0 (/PH60): P60引脚上拉使能位 6.1.23 Bank 1 RD (Pull-high Control Register) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 − − − /PH74 /PH73 /PH72 /PH71 /PH70 Bank 1 RD 寄存器可读写 Bit 4(/PH74): P74引脚上拉控制位 0 = 使能上拉 1 = 禁止上拉 Bit 3 (/PH73): P73 引脚上拉使能位. Bit 2 (/PH72): P72引脚上拉使能位. Bit 1 (/PH71): P71引脚上拉使能位. Bit 0 (/PH70): P70引脚上拉使能位. 6.1.24 Bank 1 RE (选择控制位, 只用于 ROMLESS) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 TYPE1 TYPE0 LVR1 LVR0 RCM1 RCM0 - - Bank 1 RE 寄存器可读写 Bits 7~6 (TYPE1 ~ TYPE0): 型号选择 EM78P345N 或EM78P346N或EM78P347N. TYPE1, TYPE0 VDD Reset Level 11 10 01 00 EM78P347N (Default) EM78P346N EM78P345N EM78P347N Bits 5~4 (LVR1 ~ LVR0):低电压使能位 LVR1,L VR0 VDD Reset Level VDD Release Level 11 10 01 NA (Power-on Reset) 2.4V 2.6V 3.7V 3.9V 00 4.1V Bit 3 & Bit 2 (RCM1, RCM0): 4.3V IRC 模式选择位 RCM 1 RCM 0 Frequency (MHz) 1 1 4 (默认) 1 0 16 0 1 1 0 0 455kHz 6.1.25 R10 ~ R3F 18 • Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller 通用寄存器。 6.2 特殊功能寄存器 6.2.1 A (累加器) 内部数据传输,或指令操作数保持。不可寻址。 6.2.2 CONT (Control Register) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 INTE INT TS TE PSTE PST2 PST1 PST0 Bit7(INTE):INT信号边沿选择位 0 = 由INT引脚信号上升沿引起中断 1 = 由INT引脚信号下降沿引起中断 Bit6(INT): 中断允许标志 0 = 已由DISI指令或硬件中断屏蔽中断 1 = 已由ENI指令或RETI指令允许中断 Bit6(INT) 只读 Bit5(TS): TCC信号源选择位 0 = 内部指令周期时钟,如果P56当I/O口用时,TS必须为0 1 = TCC引脚转换 Bit4(TE): TCC信号边沿选择位 0 = TCC引脚信号发生由低到高变化时TCC加1 1 = TCC引脚信号发生由高到低变化时TCC加1 Bit3(PSTE):TCC预分频器允许位 0 = 预分频器不允许位,TCC比率为1:1 1 = 预分频器允许位,TCC比率设置为Bit 2~Bit 0. Bit2(PST2)~Bit0(PST0):TCC预分频位 PST2 PST1 PST0 TCC比率 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 1:2 1:4 1:8 1:16 1:32 1:64 1:128 1:256 6.2.3 IOC50 ~ IOC70 (I/O端口控制寄存器) 1定义对I/O引脚高电阻状态,0定义其输出。 IOC50,IOC60和IOC70寄存器可擦写。 Product Specification (V1.0) 08.30.2007 • 19 EM78P345/6/7N 8-Bit Microcontroller 注意 在用EM78P345N 和EM78P346N时,编码选项寄存器(word0)的BIT9必须设置为“1”在用 EM78P346N时,必须再把IOC50的BIT7和IOC70的BIT0设置为“0”,引脚状态设置为 “0”,按照这样的规则,将不会有额外的消耗。 6.2.4 IOC80 (PWMCON: PWM 控制寄存器) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 PWM3E PWM2E PWM1E “0” T1EN T1P2 T1P1 T1P0 0 = PWM3关闭(默认值),其相关端口完成P53功能。 1 = PWM3开启,其相关端口将被设置成自动输出。 请注意意P53/PWM3/VREF端口,它不能同时被用作PWM3和VREF。如 果P53/PWM3/VREF作为VREF的模拟输入端口,那么PEM3D必须置“0”。 P53/PWM3/VREF端口优先级: 优先 高 中 低 P53/PWM3/VREF VREF PWM3 P53 Bit6(PWM2E):PWM2允许位 0 = PWM2关闭(缺省值),其相关端口完成P52功能 1 = PWM2开启,其相关端口将被设置成自动输出 Bit5(PWM1E):PWM1允许位 0 = PWM1关闭(缺省值),其相关端口完成P51功能 1 = PWM1开启,其相关IO将被设置成自动输出 Bit4: 未使用,作“0”。 Bit3(TIEN): TMR1允许位 0 = TMR1关闭(缺省值) 1 = TMR1开启 Bit 2: Bit 0 ( T1P2:T1P0 ):TMR1时钟预分频器选项位 T1P2 T1P1 T1P0 Prescale ICE345 Prescale 0 0 0 0 0 1 0 1 0 1:1 (default) 1:2 1:4 1:1 (default) 1:2 1:4 0 1 1 1:8 1:8 1 0 0 1:16 1:16 1 0 1 1:64 1:32 1 1 0 1:128 1:64 1 1 1 1:256 1:128 6.2.5 IOC90(TMRCON:定时器控制寄存器) 7 6 5 4 3 2 1 0 T3EN T2EN T3P2 T3P1 T3P0 T2P2 T2P1 T2P0 Bit7(T3EN):TMR3允许位 0 = TMR3关闭(默认值) 20 • Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller 1 = TMR3开启 Bit6(T2EN):TMR2允许位 0 = TMR2关闭(默认值) 1 = TMR2开启 Bit5: Bit3 ( T3P2:T3P0 ):TMR3时钟预分频选项位 T3P2 T3P1 T3P0 Prescale ICE345 Prescale 0 0 0 0 0 1 1:1 (default) 1:2 1:1 (default) 1:2 0 1 0 1:4 1:4 0 1 1 1:8 1:8 1 0 0 1:16 1:16 1 0 1 1:64 1:32 1 1 0 1:128 1:64 1 1 1 1:256 1:128 Bit 2: Bit 0 ( T2P2:T2P0 ):TMR2时钟预分频选项位 T2P2 T2P1 T2P0 Prescale ICE345 Prescale 0 0 0 0 0 1 1:1 (default) 1:2 1:1 (default) 1:2 0 1 0 1:4 1:4 0 1 1 1:8 1:8 1 0 0 1:16 1:16 1 0 1 1:64 1:32 1 1 0 1:128 1:64 1 1 1 1:256 1:128 6.2.6 IOCA0 (CMPCON:比较器控制寄存器) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 “0” “0” “0” “0” “0” CPOUT COS1 COS0 Bit 7 ~ Bit 3: 未生效,读作 ‘0’ Bit 2 (CPOUT): 比较器输出结果 Bit 1 ~ Bit 0 (COS1 ~ COS0): 比较器/OP选择位 COS1 COS0 0 0 1 1 0 1 0 1 Function Description 比较器和OP没有使用,P60作为常规I/O端口 作为比较器,P60作为常规I/O端口 作为比较器,P60作为比较器输出端口(CO) 作为OP,P60作为OP输出端口(CO) 注意 P60/ADE0/CO可以同时作为CO和ADEO优先级如下: P53/PWM3/VREF Pin Priority Product Specification (V1.0) 08.30.2007 高 中 低 CO ADE0 P60 • 21 EM78P345/6/7N 8-Bit Microcontroller 6.2.7 IOCB0 (下拉控制寄存器) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 /PD7 /PD6 /PD5 /PD4 /PD3 /PD2 /PD1 /PD0 IOCB0 寄存器可擦写 Bit 7 (/PD7): P67引脚下拉控制位 0 = 使能下拉 1 = 禁止下拉 Bit 6 (/PD6): P66 引脚下拉控制位 Bit 5 (/PD5): P65引脚下拉控制位 Bit 4 (/PD4): P64引脚下拉控制位 Bit 3 (/PD3): P63引脚下拉控制位 Bit 2 (/PD2): P62引脚下拉控制位 Bit 1 (/PD1): P61引脚下拉控制位 Bit 0 (/PD0): P60引脚下拉控制位 6.2.8 IOCC0 (漏极开路控制寄存器) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 /OD7 /OD6 /OD5 /OD4 /OD3 /OD2 /OD1 /OD0 IOCC0 寄存器可擦写 Bit 7 (OD7): P57引脚漏极开路控制位. 0 = 使能漏极开路 1 = 禁止漏极开路 Bit 6 (OD6): P56引脚漏极开路控制位 Bit 5 (OD5): P55引脚漏极开路控制位 Bit 4 (OD4): P54引脚漏极开路控制位. Bit 3 (OD3): P53引脚漏极开路控制位 Bit 2 (OD2): P52引脚漏极开路控制位. Bit 1 (OD1): P51引脚漏极开路控制位 Bit 0 (OD0): P50引脚漏极开路控制位 6.2.9 IOCD0 (上拉控制寄存器) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 /PH7 /PH6 /PH5 /PH4 /PH3 /PH2 /PH1 /PH0 IOCD0 寄存器可擦写 22 • Bit 7 (/PH7): P67 引脚上拉控制位 0 = 使能上拉 1 = 禁止上拉 Bit 6 (/PH6): P66 引脚上拉控制位. Bit 5 (/PH5): P65 引脚上拉控制位 Bit 4 (/PH4): P64 引脚上拉控制位 Bit 3 (/PH3): P53 引脚上拉控制位. Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller Bit 2 (/PH2): P52 引脚上拉控制位. Bit 1 (/PH1): P51 引脚上拉控制位. Bit 0 (/PH0): P50 引脚上拉控制位. 6.2.10 IOCE0 (看门狗控制寄存器) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 WDTE EIS PSWE PSW2 PSW1 PSW0 “0” “0” Bit 7 (WDTE): 看门狗控制位 0 = 禁止看门狗 1 = 使能看门狗 WDTE 可以读写 Bit 6 (EIS): P50 (/INT) 引脚控制位 0 = P50, 普通IO口 1 = /INT, 外部中断引脚. 在这种情况下, P50必须设置为输入 注意 当EIS为0时,/INT 是伪装的,当EIS为1时,INT引脚的状态也可以读,例如图6-5(P50 IO端 口和控制电路) EIS位可以读写 Bit 5 (PSWE): 看门狗分频比控制位 0 = 分频比禁止. WDT 分频比为 1:1 1 = 分频比使能位t. WDT 分频比由 Bit4~Bit2设置 Bit 4 ~ Bit 2 (PSW2 ~ PSW0): 看门狗分频比选择位. PSW2 PSW1 PSW0 WDT Rate 0 0 0 1:2 0 0 1 1:4 0 1 0 1:8 0 1 1 1:16 1 0 0 1:32 1 0 1 1:64 1 1 0 1:128 1 1 1 1:256 Bit 1 ~ Bit 0: 未生效,读为0 6.2.11 IOCF0 (中断屏蔽寄存器) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 CMPIE PWM3IE PWM2IE PWM1IE ADIE EXIE ICIE TCIE Product Specification (V1.0) 08.30.2007 • 23 EM78P345/6/7N 8-Bit Microcontroller 注意 ■ IOCF0 寄存器可擦写 ■ 个别中断通过在IOCF0中将与之相关的控制位设置成“1”来允许 ■ 开总中断由ENI 指令完成,关总中断由DISI指令完成 Bit 7 (CMPIE): 比较器中断使能位 0 = 禁止比较器中断 1 = 使能比较器中断 当比较器输出状态改变用来进入中断向量或者进入下一条指令, CMPIE位必须置为“允许” Bit 6 (PWM3IE): PWM3IF 中断使能位 0 = 禁止 PWM3 中断 1 = 使能 PWM3 中断 Bit 5 (PWM2IE): PWM2IF 中断使能位 0 = 禁止 PWM2 中断 1 = 使能 PWM2 中断 Bit 4 (PWM1IE): PWM1IF 中断使能位 0 = 禁止PWM1 中断 1 = 使能 PWM1 中断 Bit 3 (ADIE): ADIF 中断使能位 0 = 禁止ADIF 中断 1 = 使能 ADIF 中断 当ADC完成被用作进入中断向量或者进入下一条指令,ADIE位必须 设置为“允许” Bit 2 (EXIE): EXIF 中断使能位 0 = 禁止EXIF 中断 1 = 使能 EXIF 中断 Bit 1 (ICIE): ICIF中断使能位 0 = 禁止ICIF 中断 1 = 使能 ICIF 中断 如果Port6端口状态改变中断用于进入中断向量或者进入下一条指令, ICIE位必须设置为“允许”。 Bit 0 (TCIE): TCIF中断使能位 0 = 禁止TCIF 中断 1 = 使能 TCIF 中断 6.2.12 IOC51 (PRD1L: PWM1周期的 (Bit 7 ~ Bit 0)低8位) 其内容为PWM1周期的低八位,. PWM1的频率为此周期的倒数 PWM1周期的8,9位在BANK 1 R5的bit0,bit1 6.2.13 IOC61 (PRD2L: PWM2 周期的( Bit7~Bit0)低8位) 24 • Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller 其内容为PWM2周期的低八位,. PWM2的频率为此周期的倒数 PWM2周期的8,9位在BANK 1 R5的bit2,bit3 6.2.14 IOC71 (PRD3L: PWM3 Time Period) 其内容为PWM3周期的低八位,. PWM3的频率为此周期的倒数 PWM3周期的8,9位在BANK 1 R5的bit4,bit5 6.2.15 IOC81 (DT1L: PWM1 占空比的低8位) 保持PWM1输出为高电平的一特殊值,当TMR1的值与其相等时输出才变为低 6.2.16 IOC91 (DT2L: PWM2 占空比的低8位) 保持PWM2输出为高电平的一特殊值,当TMR2的值与其相等时输出才变为低. 6.2.17 IOCA1 (DT3L:PWM3 占空比的低8位) 保持PWM3输出为高电平的一特殊值,当TMR3的值与其相等时输出才变为低 6.2.18 IOCB1 (DTH: PWM占空比的高两位) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 “0” “0” PWM3[9] PWM3[8] PWM2[9] PWM2[8] PWM1[9] PWM1[8] Bit 7 & Bit 6: 未生效,读为0. Bit 5 & Bit 4 (PWM3 [9], PWM3 [8]): PWM3 占空比的8,9位 Bit 3 & Bit 2 (PWM2 [9], PWM2 [8]): PWM2 占空比的8,9位 Bit 1 & Bit 0 (PWM1 [9], PWM1 [8]): PWM1占空比的8,9位 6.2.19 IOCC1 (TMR1L: PWM1 定时的低8位) IOCC1 内容只读 , 6.2.20 IOCD1 (TMR2L: PWM2 定时的低8位) IOCD1的内容只读 6.2.21 IOCE1 (TMR3L: PWM3 定时的低8位) IOCE1 的内容只读. 6.2.22 IOCF1 (TMRH: PWM定时的高两位) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 “0” “0” TMR3[9] TMR3[8] TMR2[9] TMR2[8] TMR1[9] TMR1[8] IOCF1 只读 Bit 7 & Bit 6: 未生效,读作0 Bit 5 & Bit 4 (TMR3 [9], TMR3 [8]): PWM3 定时的高两位 Product Specification (V1.0) 08.30.2007 • 25 EM78P345/6/7N 8-Bit Microcontroller Bit 3 & Bit 2 (TMR2 [9], TMR2 [8]): PWM2定时的高两位 Bit 1 & Bit 0 (TMR1 [9], TMR1 [8]): PWM1定时的高两位 6.3 TCC/WDT和预分频器 对于TCC或WDT分别有一个8位寄存器做预分频器。TCC的预分频系数由CONT寄存器的 PST0~PST2位决定。WDT的预分频系数由IOCE0寄存器的PWR0~PWR2位决定。若分 配给TCC,则每次写TCC操作均将预分频器清0。若分配给WDT和预分频器均在执行 “WDTC”和“SLEP”指令时清0。TCC/WDT电路框图如图6所示。 R1(TCC)为8位定时器/计数器。TCC时钟源可为内部时钟或外部时钟(由TCC引 脚输入,触发沿可选择)。由图5可知,CLK=Fosc/2或者CLK=Fosc/4是由CODE选项 位<CLKS>决定。若CLKS=0则CLK=Fosc/2,CLKS=1则CLK=Fosc/4。如果是外部时 钟,每当TCC引脚下降边沿或上升边沿,TCC将加1。TCC引脚输入时间长度(保持 高或低标准)必须大于1CLK。当休眠模式时,内部TCC将停止运行,但是在A/D转 换期间设置“SLEP”指令,如果RE寄存器的ADWE位时使能,TCC将继续运行。 看门狗定时器是一个自由运行片内振荡器。即使振荡器驱动程序关闭(例如:在休 眠模式下) ,WDT也会保持运行。在普通操作或者休眠模式下,WDT时间溢出(如 果使能)将引起复位。WDT溢出将引起复位(若WDT使能)。在正常工作时,WDT 可由软件设置IOCE0的WDTE位来使能或禁止。在没有预分频情况下,WDT溢出时 间约为18ms。 CLK (Fosc/2 or Fosc/4) Data Bus 0 TCC Pin 1 8-Bit Counter (IOCC1) MUX 8 to 1 MUX TE (CONT) TS (CONT) WDT WDTE (IOCE0) SYNC 2 cycles 8-Bit counter 8 to 1 MUX WDT Time out TCC (R1) TCC overflow interrupt Prescaler PSR2~0 (CONT) Prescaler PSW2~0 (IOCE0) 图6-2 TCC和WDT的结构图 26 • Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller 注意 VDD=5V,设置时间周期= 16.5ms ± 5%. VDD=3V, 设置时间周期= 18ms ± 5%. 6.4 I/O端口 PORT5、PORT6、PORT7为双向三态I/O端口。可IOCB0、IOCC0和IOCD0单独设置各引 脚的上拉、下拉、漏极开路功能。PORT6具有输入状态改变中断(或唤醒)功能。每个 I/O引脚均可由I/O控制寄存器(IOC50~IOC70)设置为“输入”或“输出”,除了P50端口, P50端口只能定义为“输入”引脚。I/O寄存器和I/O控制寄存器均可擦写。PORT5、PORT6 和PORT7的I/O接口电路如图6、7、8所示 PCRD Q _ Q PORT Q _ Q P R D C LK PCW R C L P R IO D D C LK PDW R C L PDRD M U X 0 1 Note: 上拉和漏极开路没有 画在图中. 图. 6-4 PORT5,PORT7端口和控制寄存器电路 PCRD Q _ Q P R D C LK PCW R C L P 50 , /IN T PORT Q _ Q P R D C LK IO D PDW R C L B it 6 of IO C E 0 D P R C LK C L 0 Q 1 _ M U X Q PDRD TI 0 IN T Note:上拉和漏极开路没有画在土中. 图 6-5 P50 (/INT)引脚和控制寄存器电路 Product Specification (V1.0) 08.30.2007 • 27 EM78P345/6/7N 8-Bit Microcontroller PCRD Q _ Q P R D CLK PCWR C L P60 ~ P67 Q PORT _ Q 0 P R IOD D CLK PDWR C L M U X 1 PDRD TI n D P R CLK C L Q _ Q Note: 上拉和漏极开路没有画在图中 图6-6 Port 6口和控制寄存器电路 IOCE.1 D P R Q Interrupt CLK _ C Q L RE.1 ENI Instruction P D R Q T10 T11 CLK _ C Q L P Q R D CLK _ Q C L T17 DISI Instruction Interrupt (Wake-up from SLEEP) /SLEP Next Instruction (Wake-up from SLEEP) 图 6-7 Port 6输入状态变化唤醒的电路 28 • Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller 6.4.1 Port6 输入变化唤醒/中断功能用法 (1) 唤醒 (a) 睡眠之前 1. 禁止WDT 2. 读I/O Port 6 (MOV R6,R6) 3. 执行 "ENI" or "DISI" 4. 使能 唤醒t (Set RE ICWE =1) 5. 执行"SLEP" 指令 (b) 唤醒后 → 下一条指令 (2) 唤醒和中断 (a) 睡眠前 1. 禁止看门狗 WDT 2. 读 I/O Port 6 (MOV R6,R6) 3. 执行 "ENI" or "DISI" 4. 使能唤醒 (Set RE ICWE =1) 5.使能中断 (Set IOCF0 ICIE =1) 6. 执行"SLEP" 指令 (b) 唤醒后 1.如果 "ENI" →中断向量 (008H) 2. 如果 "DISI" → 下一条指令 (3) 中断 (a) 在PORT6改变之前 1. 读I/O Port 6 (MOV R6,R6) 2. 执行 "ENI" or "DISI" 3. 使能中断 (Set IOCF0 ICIE =1) (b) Port 6 改变后 (中断) 1如果 "ENI" → 中断向量 (008H) 2. 如果 "DISI" → 下一条指令 6.5 复位和唤醒 6.5.1 复位和唤醒功能 复位由下面情况引起: (1)上电复位 (2)/RESET引脚输入为“低” (3)WDT溢出(若使能) 检测到复位后,系统将保持复位状态18ms(振荡器起振时间)。当/RESET引脚为“低” 或者WDT溢出时,复位就发生了。在RC模式下,复位时间为34clocks。在高XTAL模式 下,复位时间为2ms和32clocks。在低XTAL模式下,复位时间为500ms。一旦发生复位, 单片机系统处于如下状态: 振荡器运行,或者起振。 程序计数器(R2)清为“0”。 所有I/O引脚定义为输入模式(高阻状态) 。 WDT和预分频器清0。 上电时,R3高3位清0。 上电时,R4高2位清0。 CONT寄存器除第6位(INT标志)外,全置为1。 IOCB0寄存器全置为1。 IOCC0寄存器全置为1。 Product Specification (V1.0) 08.30.2007 • 29 EM78P345/6/7N 8-Bit Microcontroller IOCD0寄存器全置为1。 IOCE0寄存器第7位置1,第0~6位清0。 RF、IOCF0寄存器第0~6位清0。 执行“SLEP”指令可进入休眠模式(低功耗模式)。进入休眠模式时,振荡器、TCC、 TIMER1、TIMER2和TIMER3停止工作。WDT(若使能)清0但继续运行。单片机可被 如下情况唤醒: (1)引脚上输入的外部复位信号。 (2)WDT溢出(若使能)。 (3)PORT 6端口输入引脚状态变化(若ICWE使能)。 (4)比较器输出状态变化(若MCPWE使能)。 (5)A/D转换完成(若ADWE使能)。 前两种情况将引起EM78P345/346/347N复位。R3的T、P标志可用于确定复位源(唤醒)。 第3、4、5种情况下唤醒后程序继续执行,由中断状态来决定程序是否转入中断处理程 序。如果在SLEP指令执行前执行ENI执行,程序将从地址0X08处执行中断处理。如果在 执行SLEP指令前执行DISI指令,程序将从SLEP指令后继续执行。无论哪种振荡模式, 所有休眠模式的唤醒时间为150us(除了低XTAL模式)。在低XTAL模式下,唤醒时间 为500ms。 在进入休眠模式之前,第2-5种情况中只有一种可能被使能,那就是说: [a] 如果休眠前WDT使能,则所有RE位被禁止。因此,EM78P345/346/347N只有在1或2 情况下才能被唤醒。需要了解更多细节,请查阅中断的相关部分内容。 [b] 如果通过PORT6输入变化中断被用于唤醒EM78P345/346/347N,并且在休眠前RE寄 存器的ICWE位使能,那么WDT必须被禁止。因此,EM78P345/346/347N只有在第3 种情况下才能被唤醒。 [c] 如果通过比较器输出状态变化被用于唤醒EM78P345/346/347NN,并且在休眠前RE寄 存器的CMPWE位使能,那么WDT必须由软件禁止。因此,EM78P345/346/347N只有 在第4种情况下才能被唤醒。 [d] 如果通过AD转换完成被用于唤醒EM78P345/346/347N,并且在休眠前RE寄存器的 ADWE位使能,那么WDT必须由软件禁止。因此,EM78P345/346/347N只有在第5种 情况下才能被唤醒。 如果PORT6输入变化中断被用于唤醒EM78P345/346/347N(例如以上的[b]),那么如下 的指令 必须在SLEP指令前执行: BC R3, 7 ; 选择0段 MOV A, @001110xxb ; 设定WDT预分频器和禁止WDT IOW IOCE0 WDTC ; MOV R6, R6 ; ENI (or DISI) ; 30 • 清除WDT和预分频器 读取Port 6 中断总使能(或禁止) Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller MOV A, @00000x1xb ; Port 6输入变化唤醒位使能 MOV RE MOV A, @00000x1xb ; Port 6输入变化中断使能 IOW IOCF0 SLEP ; 休眠 类似的,如果比较器中断被用于唤醒EM78P418/9N(例如以上的[c]),那么如下的指 令必须在SLEP指令前执行: BC R3, 7 ; 选择0段 MOV A, @xxxxxx10b ; 选择一个比较器,P60作为CO引脚 IOW RA MOV A, @001110xxb ; 设定WDT预分频器,WDT禁止 IOW RE WDTC ; ENI (or DISI) ; 清除WDT和预分频器 中断总使能(或禁止) MOV A, @000001xxb ; 比较器输出变化唤醒位使能 MOV RE MOV A, @000001xxb ; 比较器输出变化中断使能 IOW IOCF0 SLEP ; 休眠 6.5.1.1 唤醒和中断模式操作摘要 所有类型的唤醒模式和中断模式如下所示:控制器能被从睡眠模式和空闲模式下唤醒。 唤醒类型如下: Product Specification (V1.0) 08.30.2007 • 31 EM78P345/6/7N 8-Bit Microcontroller 唤醒后 1.如果中断使能→中断+ 下一条指令 2. 如果禁止中断 → 下一条指令 Wakeup signal 外部中断 Port 6 状态改变 TCC 溢出中断 AD 转换完成进中断 比较器中断 PWMX (PWM1,PWM2,PWM3) (When TimerX matches PRDX) 低电压中断 看门狗溢出中断 低电压复位 32 • Sleep mode Idle mode Green mode Normal mode 中断(如果使能中断) +下一条指令 中断(如果使能中断) +下一条指令 中断(如果使能中断) +下一条指令 中断(如果使能中断) +下一条指令 中断(如果使能中断) +下一条指令 中断(如果使能中断) +下一条指令 X Fs 和 Fm 不停止 中断(如果使能中断) +下一条指令 中断(如果使能中断) +下一条指令 中断(如果使能中断) +下一条指令 如果使能比 PWMX 唤醒 中断(如果使能中断) + 中断(如果使能中断) +下一条指令 + 下一条指令 中断(如果使能中断) +下一条指令 唤醒 + 中断(如果中断使能) + 下一条指令 如果使能 ICWE 为唤醒 如果置 ICWE 为唤醒 +中断(如果使能中断) +中断(如果使能中断) +下一条指令 +下一条指令 如果使能 TCC 唤醒 + 中断(如果中断使能) x + 下一条指令 如果使能 ADWE 唤醒 如果使能 AD 唤醒 + 中断(如果使能中断) + 中断(如果使能中断) + 下一条指令 +下一条指令 Fs 和 Fm 停止 Fs 和 Fm 不停 如果使能比较器唤醒 如果使能比较器唤醒 + 中断(如果使能中断) + 中断(如果使能中断) + 下一条指令 + 下一条指令 x x 如果使能 LVDWE 唤醒 +中断(如果使能中断) + 下一条指令 复位 复位 如果使能 LVDWE 唤醒 +中断(如果使能中断) + 下一条指令 复位 复位 中断(如果使能中断) +下一条指令 中断(如果使能中断) +下一条指令 复位 复位 复位 复位 Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller Signal TCC Over Flow Sleep Mode N/A Normal Mode DISI + IOCF0 (TCIE) Bit 0 = 1 Next Instruction+ Set RF (TCIF) = 1 ENI + IOCF0 (TCIE) Bit 0 = 1 Interrupt Vector (0x09 )+ Set RF (TCIF) = 1 RE (ICWE) Bit 1 = 0, IOCF0 (ICIE) Bit 1 = 0 IOCF0 (ICIE) Bit 1 = 0 Oscillator, TCC and TIMERX are stopped. Port 6 input status change wake up is invalid. Port 6 input status change interrupt is invalid RE (ICWE) Bit 1 = 0, IOCF0 (ICIE) Bit 1 = 1 Set RF (ICIF) = 1, Oscillator, TCC and TIMERX are stopped. Port 6 input status change wake up is invalid. RE (ICWE) Bit 1 = 1, IOCF0 (ICIE) Bit 1 = 0 Port 6 Input Status Wake-up+ Next Instruction Change Oscillator, TCC and TIMERX are stopped. RE (ICWE) Bit 1 = 1, DISI + IOCF0 (ICIE) Bit 1 = 1 DISI + IOCF0 (ICIE) Bit 1 = 1 Wake-up+ Next Instruction+ Set RF (ICIF) = 1 Oscillator, TCC and TIMERX are stopped. Next Instruction+ Set RF (ICIF) = 1 RE (ICWE) Bit 1=1, ENI + IOCF0 (ICIE) Bit 1 = 1 ENI + IOCF0 (ICIE) Bit 1 = 1 Wake-up+ Interrupt Vector (0x06 )+ Set RF (ICIF) = 1 Oscillator, TCC and TIMERX are stopped. Interrupt Vector (0x06 )+ Set RF (ICIF)=1 DISI + IOCF0 (EXIE) Bit 2 = 1 INT Pin N/A Next Instruction+ Set RF (EXIF) = 1 ENI + IOCF0 (EXIE) Bit 2 = 1 Interrupt Vector (0x03 )+ Set RF (EXIF)=1 RE (ADWE) bit3=0, IOCF0 (ADIE) Bit 3 = 0 IOCF0 (ADIE) Bit 1 = 0 Clear R9 (ADRUN) = 0, ADC is stopped, AD conversion wake up is invalid. Oscillator, TCC and TIMERX are stopped. AD conversion interrupt is invalid. RE (ADWE) Bit 3 = 0, IOCF0 (ADIE) Bit 3 = 1 Set RF (ADIF) = 1, R9 (ADRUN) = 0, ADC is stopped, AD conversion wake up is invalid. Oscillator, TCC and TIMERX are stopped. RE (ADWE) Bit 3 = 1, IOCF0 (ADIE) Bit 3 = 0 AD Conversion Wake-up+ Next Instruction, Oscillator, TCC and TIMERX keep on running. Wake up when AD conversion is completed. RE (ADWE) Bit 3 = 1, DISI + IOCF0 (ADIE) Bit 3 = 1 DISI + IOCF0 (ADIE) Bit 3 = 1 Wake-up+ Next Instruction+ RF (ADIF) = 1, Oscillator, TCC and TIMERX keep on running. Next Instruction+ RF (ADIF) = 1 Wake up when AD conversion is completed. RE (ADWE) Bit 3 = 1, ENI + IOCF0 (ADIE) Bit 3 = 1 ENI + IOCF0 (ADIE) Bit 3 = 1 Wake-up+ Interrupt Vector (0x0C )+ RF (ADIF) = 1, Oscillator, TCC and TIMERX keep on running. Interrupt Vector (0x0C )+ Set RF (ADIF) = 1 Wake up when AD conversion is completed. PWMX (PWM1, PWM2, PWM3) (When TimerX matches PRDX) DISI + IOCF0 (PWMXIE)=1 N/A Product Specification (V1.0) 08.30.2007 Next Instruction+ Set RF (PWMXIF) = 1 ENI + IOCF0 (PWMXIE)=1 Interrupt Vector (0x012 or 0x15 or 0x18 )+ Set RF (PWMXIF) = 1 • 33 EM78P345/6/7N 8-Bit Microcontroller Signal Sleep Mode Normal Mode RE (CMPWE) Bit 2 = 0, IOCF0 (CMPIE) Bit 7 = 0 IOCF0 (CMPIE) Bit 7 = 0 Comparator output status chang wake-up is invalid. Oscillator, TCC and TIMERX are stopped. Comparator output status change interrupt is invalid. RE (CMPWE) Bit 2 = 0, IOCF0 (CMPIE) Bit 7 = 1 Comparator (Comparator Output Status Change) Set RF (CMPIF) = 1, Comparator output status change wake up is invalid. Oscillator, TCC and TIMERX are stopped. RE (CMPWE) Bit 2 = 1, IOCF0 (CMPIE) Bit 7 = 0 Wake-up+ Next Instruction, Oscillator, TCC and TIMERX are stopped. RE (CMPWE) bit2=1, DISI + IOCF0 (CMPIE) bit 7 = 1 DISI + IOCF0 (CMPIE) bit 7 = 1 Wake-up+ Next Instruction+ Set RF (CMPIF) = 1, Next Instruction+ Set RF (CMPIF) = 1 Oscillator, TCC and TIMERX are stopped. RE (CMPWE) Bit 2 = 1, ENI + IOCF0 (CMPIE) Bit 7 = 1 ENI + IOCF0 (CMPIE) Bit 7 = 1 Wake-up+ Interrupt Vector (0x012 or 0x15 or 0x18)+ Set RF (CMPIF) = 1, Oscillator, TCC and TIMERX are stopped. Interrupt Vector (0x012 or 0x15 or 0x18)+ Set RF (CMPIF) = 1 BANK1-R6 (LVDWE) Bit 3 = 0, BANK1-R6 (LVDIE) Bit 4 = 0 BANK1-R6 (LVDIE) Bit 3 = 0 Low voltage detector is invalid. Oscillator, TCC and TIMERX are stopped. Low voltage detector is invalid. BANK1-R6 (LVDWE) Bit 3 = 0, BANK1-R6 (LVDIE) Bit 4 = 1 BANK1-R6 (LVDIE) Bit 4 = 0 Set BANK0-RE (LVDIF) Bit 6 =1, Low voltage detector is invalid. Oscillator, TCC and TIMERX are stopped. Low Voltage Detector BANK1-R6 (LVDWE) Bit 3 = 1, BANK1-R6 (LVDIE) Bit 4 = 0 Wake-up+ Next Instruction, Oscillator, TCC and TIMERX are stopped. BANK1-R6 (LVDWE) Bit 3 = 1, DISI+ BANK1-R6 (LVDIE) Bit 4 = 1 WDT Time Out IOCE (WDTE) Bit 7 = 1 34 • DISI + BANK1-R6 (LVDIE) Bit 4 = 1 Wake-up+ Next Instruction+ Set BANK 1- R6 (LVDIF) Bit 3 = 1, Oscillator, TCC and TIMERX are stopped. Next Instruction+ Set BANK1-R6 (LVDIF) Bit 3 = 1 BANK1-R6 (LVDWE) Bit 3 = 1,ENI+ BANK 1-R6 (LVDIE) Bit 4 = 1 ENI + BANK1-R6 (LVDIE) Bit 4 =1 Wake-up+ Interrupt Vector (0x1B)+ Set BANK1-R6 (LVDIF) Bit 3 = 1, Oscillator, TCC and TIMERX are stopped. Interrupt Vector (0x1B)+ Set BANK 1-R6 (LVDIF) Bit 3 = 1 Wake-up+ Reset (address 0x00) Reset (Address 0x00) Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller 6.5.1.2 Register Initial Values after Reset 下面概述了寄存器的初始化值. Address Name Reset Type Bit Name Type N/A N/A N/A IOC50 IOC60 IOC70 Power-on Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 C57 C56 C55 C54 C53 C52 C51 C50 − − − − − − − 345 N/A 1 1 1 1 1 1 /RESET & WDT 0 1 1 1 1 1 1 1 1 Wake-up from Pin Change P P P P P P P P 0 Bit Name C67 C66 C65 C64 C63 C62 C61 C60 Power-on 1 1 1 1 1 1 1 1 /RESET & WDT 1 1 1 1 1 1 1 1 Wake-up from Pin Change P P P P P P P P Bit Name − − C75 C74 C73 C72 C71 C70 Type − − − Power-on 0 0 1 0 1 0 1 0 1 0 1 0 1 /RESET & WDT 0 0 1 0 1 0 1 0 1 0 1 0 1 Wake-up from Pin Change P P P 0 P 0 P 0 P 0 P 0 P PWM3E PWM2E PWM1E Power-on IOC80 (PWMCON) /RESET &WDT Wake-up from Pin Change 345 346 347 345 346 347 345 346 347 345 346 347 345 346 347 − T1EN T1P2 T1P1 T1P0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 P P P P P P P P T3EN T2EN T3P2 T3P1 T3P0 T2P2 T2P1 T2P0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 P P P P P P P P − − − − − CPOUT COS1 COS0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 P P P P P P P P Bit Name /PD67 /PD66 /PD65 /PD64 /PD63 /PD62 /PD61 /PD60 Power-on 1 1 1 1 1 1 1 1 /RESET & WDT 1 1 1 1 1 1 1 1 Wake-up from Pin Change P P P P P P P P Power-on IOC90 (TMRCON) /RESET & WDT Wake-up from Pin Change Power-on IOCA0 (CMPCON) /RESET & WDT Wake-up from Pin Change IOCB0 347 1 Bit Name N/A 346 1 Bit Name N/A Bit 6 0 Bit Name N/A Bit 7 Product Specification (V1.0) 08.30.2007 • 35 EM78P345/6/7N 8-Bit Microcontroller Address N/A Name IOCC0 Reset Type Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit Name /OD57 /OD56 /OD55 /OD54 /OD53 /OD52 /OD51 /OD50 Power-on 1 1 1 1 1 1 1 1 /RESET & WDT 1 1 1 1 1 1 1 1 Wake-up from Pin Change P P P P P P P P /PH67 /PH66 /PH65 /PH64 /PH53 /PH52 /PH51 /PH50 Bit Name N/A N/A IOCD0 IOCE0 Power-on 1 1 1 1 1 1 1 1 /RESET & WDT 1 1 1 1 1 1 1 1 Wake-up from Pin Change P P P P P P P P Bit Name WDTE EIS PSWE PSW2 PSW1 PSW0 − − Power-on 0 0 0 0 0 0 0 0 /RESET & WDT 0 0 0 0 0 0 0 0 Wake-up from Pin Change P P P P P P P P ADIE EXIE ICIE TCIE Bit Name N/A IOCF0 Power-on 0 0 0 0 0 0 0 0 /RESET & WDT 0 0 0 0 0 0 0 0 Wake-up from Pin Change P P P P P P P P Bit Name N/A IOC51 (PRD1) Power-on /RESET & WDT Wake-up from Pin Change Bit Name N/A IOC61 (PRD2) N/A N/A 36 • IOC71 (PRD3) IOC81 (DT1L) IOC91 (DT2L) PRD1[9] PRD1[8] PRD1[7] PRD1[6] PRD1[5] PRD1[4] PRD1[3] PRD1[2] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 P P P P P P P P PRD2[9] PRD2[8] PRD2[7] PRD2[6] PRD2[5] PRD2[4] PRD2[3] PRD2[2] Power-on 0 0 0 0 0 0 0 0 /RESET & WDT 0 0 0 0 0 0 0 0 Wake-up from Pin Change P P P P P P P P Bit Name N/A CMPIE PMW3IE PMW2IE PWM1IE PRD3[9] PRD3[8] PRD3[7] PRD3[6] PRD3[5] PRD3[4] PRD3[3] PRD3[2] Power-on 0 0 0 0 0 0 0 0 /RESET & WDT 0 0 0 0 0 0 0 0 Wake-up from Pin Change P P P P P P P P DT1[7] 0 DT1[6] 0 DT1[5] 0 DT1[4] 0 DT1[3] 0 DT1[2] 0 DT1[1] 0 DT1[0] 0 0 0 0 0 0 0 0 0 P P P P P P P P Bit Name DT2[7] DT2[6] DT2[5] DT2[4] DT2[3] DT2[2] DT2[1] DT2[0] Power-on 0 0 0 0 0 0 0 0 /RESET & WDT 0 0 0 0 0 0 0 0 Wake-up from Pin Change P P P P P P P P Bit Name Power-on /RESET & WDT Wake-up from Pin Change Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller Address N/A N/A Name IOCA1 (DT3L) IOCB1 (DT1H, 2H, 3H) Reset Type Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit Name DT3[7] DT3[6] DT3[5] DT3[4] DT3[3] DT3[2] DT3[1] DT3[0] Power-on 0 0 0 0 0 0 0 0 /RESET & WDT 0 0 0 0 0 0 0 0 Wake-up from Pin Change P P P P P 0 P P Bit Name − − DT3[9] DT3[8] DT2[9] DT2[8] DT1[9] DT1[8] Power-on 0 0 0 0 0 0 0 0 /RESET & WDT 0 0 0 0 0 0 0 0 Wake-up from Pin Change P P P P P P P P Bit Name N/A IOCC1 (TMR1L) Power-on 0 0 0 0 0 0 0 0 /RESET & WDT 0 0 0 0 0 0 0 0 Wake-up from Pin Change P P P P P P P P Bit Name N/A IOCD1 (TMR2L) N/A N/A 0x00 IOCE1 (TMR3L) IOCF1 (TMR1H, 2H, 3H) CONT R0 (IAR) TMR2[7] TMR2[6] TMR2[5] TMR2[4] TMR2[3] TMR2[2] TMR2[1] TMR2[0] Power-on 0 0 0 0 0 0 0 0 /RESET & WDT 0 0 0 0 0 0 0 0 Wake-up from Pin Change P P P P P P P P Bit Name N/A TMR1[7] TMR1[6] TMR1[5] TMR1[4] TMR1[3] TMR1[2] TMR1[1] TMR1[0] TMR3[7] TMR3[6] TMR3[5] TMR3[4] TMR3[3] TMR3[2] TMR3[1] TMR3[0] Power-on 0 0 0 0 0 0 0 0 /RESET & WDT 0 0 0 0 0 0 0 0 Wake-up from Pin Change P P P P P P P P Bit Name − − Power-on 0 0 0 0 0 0 0 0 /RESET & WDT 0 0 0 0 0 0 0 0 Wake-up from Pin Change P P P P P P P P Bit Name INTE INT TS TE PSTE PST2 PST1 PST0 Power-on 0 0 0 0 0 0 0 0 /RESET & WDT 0 0 0 0 0 0 0 0 Wake-up from Pin Change P P P P P P P P Bit Name - - - - - - - - Power-on U U U U U U U U /RESET & WDT P P P P P P P P Wake-up from Pin Change P P P P P P P P Product Specification (V1.0) 08.30.2007 TMR3[9] TMR3[8] TMR2[9] TMR2[8] TMR1[9] TMR1[8] • 37 EM78P345/6/7N 8-Bit Microcontroller Address 0x01 0x02 Name R1 (TCC) R2 (PC) Reset Type Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit Name - - - - - - - - Power-on 0 0 0 0 0 0 0 0 /RESET & WDT 0 0 0 0 0 0 0 0 Wake-up from Pin Change P P P P P P P P Bit Name - - - - - - - - Power-on 0 0 0 0 0 0 0 0 /RESET & WDT 0 0 0 0 0 0 0 0 Wake-up from P Change 0x03 R3 (SR) Bit Name IOCS PS1 PS0 T P Z DC C Power-on 0 0 0 1 1 U U U /RESET & WDT 0 0 0 t t P P P Wake-up from Pin Change P P P t t P P P BS7 BS6 − − − − − − 0 0 U U U U U U 0 0 P P P P P P P P P P P P P P Bit Name P57 P56 P55 P54 P53 P52 P51 P50 Power-on 1 1 1 1 1 1 1 1 /RESET & WDT 1 1 1 1 1 1 1 1 Wake-up from Pin Change P P P P P P P P Bit Name P67 P66 P65 P64 P63 P62 P61 P60 Power-on 1 1 1 1 1 1 1 1 /RESET & WDT 1 1 1 1 1 1 1 1 Wake-up from Pin Change P P P P P P P P Bit Name - - P75 P74 P73 P72 P71 P70 Power-on 0 0 1 1 1 1 1 1 /RESET & WDT 0 0 1 1 1 1 1 1 Wake-up from Pin Change P P P P P P P P Bit Name ADE7 ADE6 ADE5 ADE4 ADE3 ADE2 ADE1 ADE0 Power-on 0 0 0 0 0 0 0 0 /RESET & WDT 0 0 0 0 0 0 0 0 Wake-up from Pin Change P P P P P P P P Bit Name 0x04 Power-on R4 (RSR) /RESET & WDT Wake-up from Pin Change 0x05 0x06 0x7 0x8 38 • Bank 0 R5 Bank 0 R6 Bank 0 R7 Bank 0 R8 (AISR) Jump to Address 0x08 or continue to execute next instruction Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller Address 0x9 0xA 0xB 0xC 0xD 0xE 0XF 0x5 0x6 0x7 Name Reset Type Bit 7 Bit 6 Bit 5 Bit 4 Bit Name VREFS CKR1 CKR0 ADRUN Bank 0 Power-on 0 0 0 0 R9 /RESET and WD 0 0 0 0 (ADCON) Wake-up from P P P P Pin Change Bit Name CALI SIGN VOF[2] VOF[1] Power-on 0 0 0 0 Bank 0 RA /RESET and WD 0 0 0 0 (ADOC) Wake-up from P P P P Pin Change Bit Name AD11 AD10 AD9 AD8 Power-on U U U U Bank 0 RB /RESET and WD U U U U (ADDDATA) Wake-up from P P P P Pin Change − − − − Bit Name Power-on 0 0 0 0 Bank 0 RC /RESET and WD 0 0 0 0 (ADDATA1H) Wake-up from P P P P Pin Change Bit Name AD7 AD6 AD5 AD4 Power-on U U U U Bank 0 RD /RESET and WD U U U U (ADDATA1L) Wake-up from P P P P Pin Change − − − − Bit Name Power-on 0 0 0 0 Bank 0 RE /RESET and WD 0 0 0 0 (WUCR) Wake-up from P P P P Pin Change Bit Name CMPIF PWM3IF PWM2IF PWM1IF Power-on 0 0 0 0 Bank 0 RF /RESET & WDT 0 0 0 0 (ISR) Wake-up from P P P P Pin Change − − Bit Name PRD3[1] PRD3[0] Power-on 0 0 0 0 Bank 1 R5 /RESET & WDT 0 0 0 0 (PRDxL) Wake-up from P P P P Pin Change − Bit Name LVDIF /LVD LVDIE Power-on 0 0 0 0 Bank 1 R6 /RESET & WDT 0 0 0 0 (LVDCR) Wake-up from P P P P Pin Change − − − Bit Name Power-on 0 0 0 0 Bank 1 R7 /RESET & WDT 0 0 0 0 (OSSCR) Wake-up from P P P P Pin Change Product Specification (V1.0) 08.30.2007 Bit 3 Bit 2 Bit 1 Bit 0 ADPD 0 0 ADIS2 0 0 ADIS1 0 0 ADIS0 0 0 P P P P VOF[0] 0 0 − − − 0 0 0 0 0 0 P P P P AD7 U U AD6 U U AD5 U U AD4 U U P P P P AD11 U U AD10 U U AD9 U U AD8 U U P P P P AD3 U U AD2 U U AD1 U U AD0 U U P P P P ADWE CMPWE ICWE 0 0 0 0 0 0 0 0 P P P P ADIF 0 0 EXIF 0 0 ICIF 0 0 TCIF 0 0 P P P P PRD2[1] PRD2[0] PRD1[1] PRD1[0] 0 0 0 0 0 0 0 0 P P LVDWE LVDEN 0 0 0 0 P P LVD1 1 1 LVD0 1 1 P P P P HS3 0 P HS2 0 P HS1 0 P HS0 0 P P P P P • 39 EM78P345/6/7N 8-Bit Microcontroller Address 0x8 0x9 0xA 0xB 0xC 0xD 0xE Name Bank 1 R8 Bank 1 R9 Bank 1 RA Bank 1 RB Bank 1 RC Bank 1 RD Bank 1 RE Reset Type Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Bit Name /PD57 /PD56 /PD55 /PD54 /PD53 /PD52 /PD51 /PD50 Power-on 1 1 1 1 1 1 1 1 /RESET & WDT 1 1 1 1 1 1 1 1 Wake-up from Pin Change P P P P P P P P Bit Name − − − /PD74 /PD73 /PD72 /PD71 /PD70 Power-on 1 1 1 1 1 1 1 1 /RESET & WDT 1 1 1 1 1 1 1 1 Wake-up from Pin Change P P P P P P P P Bit Name /OD67 /OD66 /OD65 /OD64 /OD63 /OD62 /OD61 /OD60 Power-on 1 1 1 1 1 1 1 1 /RESET & WDT 1 1 1 1 1 1 1 1 Wake-up from Pin Change P P P P P P P P Bit Name − − − /OD74 /OD73 /OD72 /OD71 /OD70 Power-on 1 1 1 1 1 1 1 1 /RESET & WDT 1 1 1 1 1 1 1 1 Wake-up from Pin Change P P P P P P P P Bit Name /PH57 /PH56 /PH55 /PH54 /PH63 /PH62 /PH61 /PH60 Power-on 1 1 1 1 1 1 1 1 /RESET & WDT 1 1 1 1 1 1 1 1 Wake-up from Pin Change P P P P P P P P Bit Name − − − /PH74 /PH73 /PH72 /PH71 /PH70 Power-on 1 1 1 1 1 1 1 1 /RESET & WDT 1 1 1 1 1 1 1 1 Wake-up from Pin Change P P P P P P P P Bit Name TYPE1 TYPE0 LVR1 LVR0 RCM1 RCM0 Power-on 1 1 1 1 1 1 1 1 /RESET & WDT 1 1 1 1 1 1 1 1 Wake-up from Pin Change P P P P P P P P Bit Name − − − − − − − − U U U U U U U U P P P P P P P P P P P P P P P P Power-on 0x10~ R10 ~ R3F /RESET & WDT 0x3F Wake-up from Pin Change Legend: “–” = 未使用 “u” = 未知 40 • “P” =复位前的值 “t” = 请参阅复位类型表 6.5.2 Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller 6.5.1.3 控制器复位框图 VDD D Oscillator Q CLK CLK CLR Power-on Reset Voltage Detector WTE WDT Timeout Reset Setup time WDT /RESET 图. 6-8 控制复位框图 6.5.2 状态寄存器的T、P标志 复位初始化的触发时间: (1)单片机上电 (2)RESET引脚有高-低-高的脉冲 (3)看门狗溢出 P、T标志值,如表5所示,可用于判断单片机由什么唤醒或复位。表6列出了可改变T、P 值的事件。 表5 复位后的T、P值 复位类型 T P 1 1 运行模式下的/RESET引脚复位 *P *P 休眠模式下的/RESET引脚唤醒 1 0 运行模式下WDT溢出 0 *P 休眠模式下WDT溢出唤醒 0 0 休眠模式下引脚状态改变唤醒 1 0 上电 *P:复位前状态 Product Specification (V1.0) 08.30.2007 • 41 EM78P345/6/7N 8-Bit Microcontroller 表6 事件对T和P状态的影响 事件 T P 上电 1 1 WDTC指令 1 1 WDT溢出 0 *P SLEP指令 1 0 休眠模式下引脚状态改变唤醒 1 0 * P:复位前状态 6.6 中断 EM78P417/8/9N有如下6种情况可引起中断: (1)TCC溢出中断 (2)PORT 6端口输入状态变化中断 (3)外部中断 [(P50, /INT) pin]. (4)AD转换结束 (5)PWM中TMR1/TMR2/TMR3与PRD1/PRD2/PDR3分别相等 (6)比较器输出变化 (7)低电压检测 在PORT 6输入变化中断使能前,必须先读入R6寄存器(例如“MOV R6,R6”)。如果它 的状态改变,PORT6的每一个引脚均可具有这个功能,处于输出状态的引脚或者P50引 脚处于/INT状态除外。如果优先进入休眠模式执行SLEP使能,PORT 6输入状态变化中 断将把EM78P45N/346N/347N从休眠模式唤醒。如果总的中断被禁止,当控制器被唤醒 后它将继续执行随后的程序,如果总的中断使能,程序将分支到中断向量地址006H。 外部中断带有数字噪声抑制电路(输入脉冲小于8系统时钟时间消除了噪声)。边沿选 择可能带有/INT引脚。请查阅代码选项字1数字噪音防止的bit7~8详细说明 RF,中断标志寄存器,在相应位记录了中断请求情况。IOCF0位中断屏蔽寄存器。整体 的中断使能或者禁止由ENI或DISI指令完成。当中断发生时(如果使能),下一指令由 地址0X03取出。一旦进入中断处理程序,可轮流检测RF寄存器来确定中断源。推出中 断处理子程序前,必须清中断标志并使能中断以免重复中断。 不管其屏蔽位的状态或者ENI的执行,RF寄存器的相应标志位(ICIF位除外)会由中断 设置。注意读RF的结果使RF和IOCF0的逻辑与(参见图11)。RET1指令结束中断子程 序并使能整体中断。 在电源不适合的情况下,例如外部电源杂波干扰或 EMS测试,将导致电源猛烈波动.折射 这时VDD未作处理,提供的电压可能小于工作电压.当VDD上提供的电压小于工作电压 时,IC内核一定自动保存所有寄存器的状态,, 当定时发生中断时(使能中断),下一条指令将从0X09,0X12,0X15,和0X18H中提取 出,(TCC,Timer1,Timer2,Timer3各中断入口地址)当低电压检测到进中断时(使能中断)下 一条指令将 地址0X01取出. 42 • Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller 在进入中断只程序之前,A,R3,R4,寄存器的值由硬件保存,如果另有一个中断发生 时,A,R3,R4,将被新的中断前的值取代,执行完中断程序,A,R3,R4,自动恢复. Interrupt sources ACC Interrupt occurs STACKACC ENI/DISI R3 RETI R4 STACKR3 STACKR4 图 6.9 中断支援图 在 EM78P345/6/7N, 每个中断有中断入口向量如下 中断向量 中断类型 优先级* 003H 外部中断 2 006H Port 6 状态改变 3 009H TCC 溢出中断 4 00CH AD 转换完成进中断 5 00FH 比较器中断 6 012H Timer 1 (PWM1) 溢出中断 7 015H Timer 2 (PWM2) 溢出中断 8 018H Timer 3 (PWM3) 溢出中断 9 01BH 低电压检测中断 1 *Priority: 1 = 优先级最高 ; 9 =优先级最低 图6-8 中断输入电路 Product Specification (V1.0) 08.30.2007 • 43 EM78P345/6/7N 8-Bit Microcontroller 6.7 A/D转换器(ADC) AD转换电路包括一个8位模拟转换器,3个控制寄存器(AOSR/R8,ADCON/R9, ADOC/RA),3个资料寄存器(ADDATA1/RB,ADDATAH/RC,ADDATA1L/RD)和 12位分辨率的AD转换器。其功能框图入图12所示。模拟参考电压(Vref)和模拟地由不 同引脚接入。 AD转换器是逐次逼近的。结果存入ADDATA,ADDATA1H和ADDATA1L。经ADCON 寄存器的ADIS0、ADIS1、ADIS2设置后,输入通道由仿真输入转换器选择。选择外部 参考电源比选择内部参考电源采出的值更准确. ADC7 Vref ADC6 h c t i w S g o l a n A 1 8 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0 Power-Down ADC ( successive approximation ) Start to Convert Fsco 4-1 MUX Internal RC 7 ~ 0 AISR 2 1 0 ADCON 6 3 5 ADCON RF 11 10 9 8 7 6 ADDATA1H 5 4 3 2 1 4 0 3 ADCON ADDATA1L DATA BUS 图 6-11AD转换功能框图 6.7.1 ADC控制寄存器(AOSR/R8,ADCON/R9,ADOC/RA) 6.7.1.1 R8(AOSR:ADC 输出选择寄存器) AOSR寄存器定义PORT 6引脚分别作为模拟输入或者作为数字I/O。 BIT 7 6 5 4 3 2 1 0 SYMBOL ADE7 ADE6 ADE5 ADE4 ADE3 ADE2 ADE1 ADE0 *Init_Value 0 0 0 0 0 0 0 0 Bit 7 (ADE7 ): P67引脚AD转换器使能位。 0 = ADC7禁止,P67作为I/O引脚。 1 = ADC7使能作为模拟输入引脚。 Bit 6 (ADE6 ): P66引脚AD转换器使能位。 0 = ADC6禁止,P66作为I/O引脚。 1 = ADC6使能作为模拟输入引脚。 Bit 5 (ADE5 ): P65引脚AD转换器使能位。 0 = ADC5禁止,P65作为I/O引脚。 1 = ADC5使能作为模拟输入引脚。 Bit 4 (ADE4 ): P64引脚AD转换器使能位。 44 • Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller 0 = ADC4禁止,P64作为I/O引脚。 1 = ADC4使能作为模拟输入引脚。 Bit 3 (ADE3 ): P63引脚AD转换器使能位。 0 = ADC3禁止,P63作为I/O引脚。 1 = ADC3使能作为模拟输入引脚。 Bit 2 (ADE2 ): P62引脚AD转换器使能位。 0 = ADC2禁止,P62作为I/O引脚。 1 = ADC2使能作为模拟输入引脚。 Bit 1 (ADE1 ): P61引脚AD转换器使能位。 0 = ADC1禁止,P61作为I/O引脚。 1 = ADC1使能作为模拟输入引脚。 Bit 0 (ADE0 ): P60引脚AD转换器使能位。 0 = ADC0禁止,P60作为I/O引脚。 1 = ADC0使能作为模拟输入引脚。 当P60/ADE0作为模拟输入或者数字I/O的时候,请注意IOCA0控制寄存器 的COS1和COS0位。比较器/OP选择位如图3所示。 P60/ADE0/CO引脚优先级: 优先 高 中 低 P60/ADE0/CO CO ADE0 P60 6.7.1.2 R9(ADCON:A/D 控制寄存器) ADCON寄存器控制ADC操作,确定当前哪一引脚有效。 BIT 7 6 5 4 3 2 1 0 SYMBOL VREFS CKR1 CKR0 ADRUN ADPD ADIS2 ADIS1 ADIS0 *Init_Value 0 0 0 0 0 0 0 0 Init_Value:上电复位后的初始值 Bit 7 (VREFS ): ADC的Vref的输入源。 0 = ADC的Vref与Vdd连接(缺省值),P53/VREF引脚的功能为P53。 1 = ADC的Vref与P53/VREF连接。 请注意P53/PWM3/VREF引脚。它不能同时被用作PWM3和VREF。 如果P53/PWM3/VREF作为VREF模拟输入引脚,那么PWM3E必须为“0”。 P53/PWM3/VREF引脚优先级: Product Specification (V1.0) 08.30.2007 优先 高 中 低 P53/PWM3/VREF VREF PWM3 P53 • 45 EM78P345/6/7N 8-Bit Microcontroller Bit 6:Bit 5 (CKR1:CKR0 ): ADC的振荡时钟预分频器的比率。 00 = 1:4(缺省值) 01 = 1:16 10 = 1:64 11 = 1:WDT环形电路振荡器频率 CKR0:CKR1 工作模式最大工作频率 00 Fsco/16 4 MHz 01 Fsco/4 1 MHz 10 Fsco/64 16MHz 11 内部 RC 1 MHz Bit 4 (ADRUN ): ADC开始运行。 1 = 一个A/D转换开始。此位可以由软件设定; 0 = 转换完成复位。此位不可以由软件设定; ADC低功耗模式。 Bit 3 (ADPD ): 1 = ADC工作状态; 0 = 在CPU工作时关闭参考电阻以省电; Bit 2:Bit 0 (ADIS2:ADIS0 ): 模拟输入选择 000 = AN0/P60; 001 = AN1/P61; 010 = AN2/P62; 011 = AN3/P63; 100 = AN4/P64; 101 = AN5/P65; 110 = AN6/P66; 111 = AN7/P67; 只有在ADIF位和ADRUN位都为低电平的时候,这几位才能改变。 6.7.1.3 RA(ADOC:A/D 偏移量寄存器) 7 6 5 4 3 2 1 0 CALL SIGN VOF[2] VOF[1] VOF[0] “0” “0” “0” Bit 7 (CALI ): A/D偏移校准使能位 0 = 校准禁止; 1 = 校准使能。 46 • Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller Bit 6 (SIGN ): 偏移电压极性位 0 = 负极电压; 1 = 正极电压。 Bit 5~Bit 3 (VOF[2]:VOF[0]): 偏移电压位 VOF[2] VOF[1] VOF[0] EM78P417/8/9N ICE418N 0 0 0 0LSB 0LSB 0 0 1 2LSB 1LSB 0 1 0 4LSB 2LSB 0 1 1 6LSB 3LSB 1 0 0 8LSB 4LSB 1 0 1 10LSB 5LSB 1 1 0 12LSB 6LSB 1 1 1 14LSB 7LSB Bit 2~Bit 0: 未使用,读作“0”。 ADC资料寄存器(ADDATA/RB,ADDATA1H/RC, ADDATA1L/RD) 6.7.2 AD转换结束,结果送入ADDATA,ADDATA1H和ADDATA1L。ADRUN位清0,ADIF 被置1。 A/D采样时间 6.7.3 逐次逼近式AD转换的准确性、线性、速度跟ADC和比较器特性相关。源电阻和内部采 样电阻直接影响采样保持电容充电所需时间。应用程控采样时间长短以满足特定精度需 要。总的来说,对于每千奥姆源电阻,程序应等待2µS。对于低阻源至少等待2µS。模拟 源的最高推荐电阻是10KΩ at Vdd=5V。模拟通道选定后,在转换开始前,所需等待时间 应先满足。 A/D转换时间 6.7.4 CKR0、CKR1根据指令周期选择转换时间(Tct),这允许主控制器以最高频率运行但不 影响AD转换精度。对于EM78P345/346/347N,每位转换时间为4µS。表7给出了Tct与最 高工作频率的关系。 表7 Tct与最大工作频率 CKR1:CKR0 工作模式 最大工作频率 每位最大转换频率 最大转换频率 00 01 Fosc/16 Fosc/4 4MHz 1MHz 250kHz (4µs) 250kHz (4µs) 15×4µs=60µs (16.7kHz) 15×4µs=60µs (16.7kHz) 10 Fosc/64 16MHz 250kHz ( 4µs) 11 Fosc/8 2MHz 250kHz ( 4µs) 15×4µs=60µs (16.7kHz) 15×4µs=60µs (16.7kHz) Product Specification (V1.0) 08.30.2007 • 47 EM78P345/6/7N 8-Bit Microcontroller 注意 没有被用作模拟输入引脚的引脚可以被用作常规输入或输出引脚。 在转换的时候,请不要执行输出指令以保证所有引脚的精确度。 6.7.5 休眠模式时的AD转换 为了得到更精确的ADC值和降低功耗,AD转换可以在休眠模式下进行。当执行SLEP指 令时,主控制器停止工作,但振荡器,TCC,TIMER1,TIMER2,TIMER3和A/D转换 继续工作。 决定AD转换结束: 1. R9寄存器的ADRUN位清“0”。 2. 在休眠模式下从A/D转换唤醒保持工作。 转换结束后,结果送入ADDATA,ADDATA1H,和ADDATA1L,若ADWE使能,系统 将被唤醒。否则,A/D转换器将关闭,不论ADPD位是什么状态 6.7.6 编程步骤/事项 6.7.6.1 编程步骤 遵循以下步骤完成AD转换: 1. 在R8(AISR)寄存器写入8位(ADE7:ADE0)以定义R6的特性:数字I/O、模拟 信道和参考电压引脚; 2. 通过R9/ADCON寄存器设置AD模块: a) 选择AD输入通道( ADIS2 : ADIS0 ) b) 定义AD转换时钟频率( CKR1 : CKR0 ) c) 选择AD参考电压源 d) 置ADPD 位为 1 3. 如果启动唤醒功能,置ADWE为1 4. 如果启动中断功能,置 ADIE位为1 5. 如果启动中断功能,写 “ENI” 指令 6. 置 ADRUN 位为 1 7. 如果需要写 “SLEP” 指令 8. 等待AD转换完成唤醒或ADRUN位为0 9. 从转换数据寄存器读取ADDATA或者ADDATA1H和ADDATA1L. 10. 清中断标志位 11. 下一次转换,跳到步骤1或步骤2,下一次采样时间至少等待 2 Tct . 注意:为了获得准确的结果,在转换过程中需要避免在I/O端口上传输数据。 48 • Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller 6.7.6.2 程序范例 A. 定义通用寄存器 R_0 == 0 PSW == 3 PORT5 == 5 PORT6 == 6 RE== 0XE RF== 0XF ; 间接寻址寄存器 ; 状态寄存器 ; 唤醒控制寄存器 ; 中断状态寄存器 B. 定义控制寄存器 IOC50 == 0X5 IOC60 == 0X6 CINT == 0XF ; Port 5控制寄存器 ; Port 6控制寄存器 ;中断控制寄存器 C. ADC 控制寄存器 ADDATA == 0xB AISR == 0x08 ADCON == 0x9 ; ADC转换的数据 ; ADC 输入通道选择寄存器 ; 7 6 5 4 3 2 1 0 ; VREFS CKR1 CKR0 ADRUN ADPD ADIS2 ADIS1 ADIS0 D. Define Bits in ADCON ADRUN == 0x4 ADPD == 0x3 ; ADC 开始转换设置位 ; ADC电源开关设置位 E. 程序开始 ORG 0 JMP INITIAL ; 起始地址 ; ORG 0x08 ; 中断向量 ; ; ;(用户程序片段) ; ; CLR RF ; 清中断标志位 BS ADCON, ADRUN ; AD开始转换如果 RETI INITIAL: MOV A,@0B00000001 MOV AISR,A MOV A,@0B00001000 MOV ADCON,A En_ADC: MOV A, @0BXXXXXXX1 IOW PORT6 MOV A, @0BXXXX1XXX MOV RE,A MOV A, @0BXXXX1XXX ; 设置P60为AD输入口 ; 设置P60为AD模拟量输入口,打开AD电源 ; 选择AD转换时钟频率 ; P60 设置为输入,其它口根据需要设置 ; ; 如果需要唤醒功能,使能AD唤醒 ; 如果需要进入中断,使能AD中断, IOW C_INT ENI ; 开总中断 BS ADCON, ADRUN ; AD开始转换 ;如果开启 了中断功能,下面的三条指令可以省略。 Product Specification (V1.0) 08.30.2007 • 49 EM78P345/6/7N 8-Bit Microcontroller POLLING: JBC ADCON, ADRUN JMP POLLING ; ;(程序片段) ; ;AD是否转换完成 ; AD转换完成,ADRUN被清零 6.8 双 PWM (脉宽调制) 6.8.1 概述 在PMW模式,PWM1、PWM2和PWM3引脚产生最高10位精度的脉宽调制输出。(功能 框图如图)PWM输出有一个周期和占空比,它保持高输出。波特率为周期的倒数。图12 描绘了周期与占空比的关系。 Fosc DT1H + DT1L 1:1 1:2 1:4 1:8 1:16 1:64 1:128 1:256 DL1H + DL1L latch To PW M 1IF Duty C ycle M atch Com parator M UX PW M 1 R TM R1H + TM R 1L reset Q S IOC 80, 5 Com parator T1P2 T1P1 T1P0 T1EN Period M atch PRD1 Data Bus Data Bus D L2H + D L2L T2P2 T2P1 T2P0 T2EN DT2H + DT2L Com parator latch To PW M 2IF Duty C ycle M atch PW M 2 Fosc TM R2H + TM R 2L 1:1 1:2 1:4 1:8 1:16 1:64 1:128 1:256 M UX R reset Q S IOC 80, 6 Com parator Period M atch PRD2 Fosc DT3H + DT3L 1:1 1:2 1:4 1:8 1:16 1:64 1:128 1:256 DL3H + DL3L latch Com parator M UX To PW M 3IF Duty Cycle M atch PW M 3 R TM R3H + TM R 3L reset Com parator T3P2 T3P1 T3P0 T3EN Q S IOC 80, 7 Period M atch PRD3 Data Bus Data Bus 图 6-12 3 PWMs 功能框图 50 • Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller Period Duty Cycle DT1 = TMR1 PRD1 = TMR1 图. 6-13 PWM 输出定时器 6.8.2 增量定时器/计数器(TMRX:RMR1H/TWR1L,TMR2H/TWR2L 或者TMR3H/TWR3L) TMRX为10位时钟计数器,预分频系数可编程。它们是作为PWM模式的波特率发生器。 TMRX只可读。将T1EN位([IOC80<3>]),T2EN 位 [IOC90<6>]或者T3EN 位[IOC90<7>] 清0可把TMRX关闭以降低功耗。 6.8.3 PWM周期(PRDX:PRD1或者PRD2) 写PRDX寄存器可确定PWM周期。当TMRX等于PRDX时,下一增量周期将有如下事件 发生: TMRX清0; PWMX引脚设置为1; PWM占空比由DT1/DT2/DT3锁存至DL1/DL2/DL3 。 注意:若占空比为0,则PWM 输出不能设置。 PWMXIF引脚设置为1。 以下的公式描述了如何计算PWM周期: 周期 = (PRDX + 1) * (1/Fosc) * CLKS/2 * (TMRX 预分频系数 ) 例:PRDX = 49;Fosc = 4MHz;编码选择寄存器CLKS位 = 0(2个振荡器周期); TMRX(0,0,0) = 1:1 那么:周期 = (49+1) *(1/4M)* 2/2 * 1 = 12.5µS 6.8.4 PWM占空比( DTX: DT1H/ DT1L, DT2H/ DT2L 和DT3H/ DT3L; DLX: DL1H/DL1L, DL2H/DL2L 和DL3H/DL3L ) 设置DTX寄存器来设置PWM占空比,当TMRX清零时占空比由DTX载入DLX锁存当DLX 等于TMRX,PWMX引脚清0。DTX寄存器的值可随时写入,但只有在DLX值等于TMRX 之后才可锁存进DLX。 PWM占空比计算公式如下: 占空比 = (DTX) * (1/Fosc) * CLKS/2 * (TMRX 预分频系数) 例如: Product Specification (V1.0) 08.30.2007 • 51 EM78P345/6/7N 8-Bit Microcontroller DTX=10; Fosc=4MHz; 代码选项寄存器CLKS位 =0 (2 oscillator periods); TMRX (0, 0, 0) = 1:1, 占空比=10 * (1/4M) * 2/2 * 1 = 2.5us 6.8.5 比较器 X 匹配发生时,改变输出状态,同时TMRRXIF标志置1. 6.8.6 PWM编程步骤 将PWM周期装入PRDX. 1. 将PWM占空比载入 DTX. 2. 如果需要,通过IOCF0使能中断功能 3. 通过设置IOC80使能 PWMX 引脚作为输出口. 4. 写IOC51,选择预分频系数,使能PWMX和TMRX 6.9 定时器 6.9.1 概述 定时器1(TMR1),定时器2(TMR2)和定时器3(TMR3)(TMRX)是10位时钟计数 器,预分频系数可分别编程。它们是设计给PWM模式做波特率发生器的。TMRX只读。 在休眠模式下A/D转换不运行,定时器1,定时器2和定时器3会停止运行。在休眠模式下 同时运行A/D转换,定时器1,定时器2和定时器3将继续运行。 6.9.2 功能描述 以下为功能框图。各信号和方框描述如下: 52 • Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller Fosc 1:2 1:4 1:8 1:16 1:32 1:64 1:128 1:256 To PWM1IF MUX TMR1X reset Period Match Comparator T1P2 T1P1 T1P0 T1EN PRD1 Data Bus Data Bus PRD2 T2P2 T2P1 T2P0 T2EN Comparator TMR2X Fosc 1:2 1:4 1:8 1:16 1:32 1:64 1:128 1:256 reset Period Match MUX To PWM2IF *TMR1X = TMR1H + TMR1L; *TMR2X = TMR2H + TMR2L; *TMR3X = TMR3H + TMR3L Fosc 1:2 1:4 1:8 1:16 1:32 1:64 1:128 1:256 To PWM13F MUX TMR3X reset Period Match Comparator T3P2 T3P1 T3P0 T3EN PRD3 Data Bus Data Bus 图6-12 TMRX结构框图 Fosc: 输入时钟. 预分频 (T1P2, T1P1 and T1P0 / T2P2, T2P1 and T2P0 / T3P2, T3P1 and T3P0): 1:1, 1:2, 1:4, 1:8, 1:16, 1:64, 1:128, 和1:256由TMRX设置. 任何形式复位发生后都 会清零。 TMR1X, TMR2X and TMR3X (TMR1H/TWR1L, TMR2H/TMR2L, & TMR3H/TMR3L): Timer X 寄存器; TMRX自动加1直到与PRDX相同后变为1,(默认为1) PRDX (PRD1, PRD2 and PRD3): PWM 周期寄存器 比较器X (比较器1和比较器 2): 相匹配后TMRX复位,同时 TMRXIF标志置1. 6.9.3 相关寄存器编程 Product Specification (V1.0) 08.30.2007 • 53 EM78P345/6/7N 8-Bit Microcontroller 相关寄存器操作如下表所示。必须注意的是,如果TMRX被使用,对应的PWMX要禁止。 即PWMCON的Bit7:Bit5应清0 6.9.3.1 TMR1, TMR2, TMR3 的相关控制寄存器 Address Name Bit 7 Bit 6 Bit 5 IOC80 PWMCON/IOC80 PWM3E PWM2E PWM1E IOC90 TMRCON/IOC90 T3EN T2EN T3P2 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 “0” T1EN T1P2 T1P1 T1P0 T3P1 T3P0 T2P2 T2P1 T2P0 6.9.4 定时器编程步骤 (1)将定时器周期加载PRDX; (2)如果需要,写IOCF0使能中断; (3)将带有TMRX预分频系数的期望值载入PWMCON和TMRCON,使能TMRX,禁止 PWMX。 6.10 比较器 EM78P346/7N 有一个比较器,是由两个模拟输入,一个输出组成。比较器可以在睡眠 模式下唤醒。比较器电路图如下: Cin - CMP Cin+ CO + 5m V CinCin+ 5m V Output 图. 6-15 比较器电路图和工作模式 6.10.1 外部参考信号 Cin+与Cin-的模拟信号相比较,比较器的数字输出(CO)信号相应变化。 54 • 参考信号应在Vss和Vdd之间; 参考电压可加在比较器任一引脚上; 极值检测应用可为同一个参考; 相同或不同参考,比较器均可工作。 Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller 注意 1.参考信号必须在VSS与VDD之间 2.参考电压可加在比较器任一引脚上 3.极值检测应用可为同一参考 4.相同或不同,比较器均可工作。 6.10.2 比较器输出 比较结果存储在 IOCA0的CMPOUT 位 通过设置IOCAO寄存器的BIT1和BIT0<COS1和COS0>值为<1,0>使得比较器的输 出到CO(P60脚)比较器/OP选择位如表3所示。 请注意P60/ADE0/CO引脚。它不能同时被用作CO和ADEO。 P60/ADE0/CO引脚优先级: P60/ADE0/CO引脚优先级: 优先 高 中 低 P60/ADE0/CO CO ADE0 P60 下图显示了比较器输出框图. To C0 F ro m O P I/O CMRD EN Q EN Q D D To CMPO UT RESET T o C P IF CMRD F r o m o th e r c o m p a r a to r 图6-16 比较器输出配置 6.10.3 作为运算放大器使用 如果在输出输入直间接一个回馈电阻可作放大使用,在这种情况下,为了降低功耗设置 IOCA0寄存器的bit1,bit0<COS1,COS0>为<1,1>。比较器或者OP选择位如6.2.6所示。 6.10.4 比较器中断 CMPIE (IOCF0.7)和 “ENI” 指令必须使能 比较器输出 无论什么时候发生变化都会产生中断. 引脚的变化可由 CMPOUT, IOCA0<2>.位读出 CMPIF (RF.7), 中断标志位, 只能通过软件清零 6.10.5 从睡眠模式下唤醒 Product Specification (V1.0) 08.30.2007 • 55 EM78P345/6/7N 8-Bit Microcontroller 如果使能比较器功能和中断功能即使在睡眠模式仍然有效. 如果失去匹配,中断将单片机从休眠模式唤醒; 如有需要,功耗问题应考虑在内; 如果休眠模式时不需要该项功能,应在进入休眠模式前关闭比较器 6.11 振荡器 6.11.1 振荡模式 EM78P345/6/7N可工作在4种振荡器模式:高频晶振模式(HXT),低频晶振模式(LXT), 外部RC振荡器模式(ERC),带有内部电容内部RC振荡器模式(IRC)。用户可通过对 代码寄存器编程来选择.可以通过在CODE选择寄存器内对SOC2,OCS1和OSC0的编程来 选择其中之一。 由OSC2, OCS1, 和 OSC0定义的振荡模式描述如下: OSC2 OSC1 OSC0 1 Oscillator Modes 0 0 0 1 ERC (External RC oscillator mode); P54/OSCO funcions as P54 ERC (External RC oscillator mode); P54/OSCO functions as OSCO 0 0 1 2 0 1 0 2 IRC (Internal RC oscillator mode); P54/OSCO funtions as OSCO 0 1 1 LXT1 (Frequency range of LXT1 mode is 1MHz ~ 100kHz) 1 0 0 HXT1 (Frequency range of HXT mode is 12MHz ~ 6MHz) 1 0 1 LXT2 (Frequency range of XT mode is 32kHz) 1 1 0 HXT2 (Frequency range of XT mode is 6MHz ~ 1MHz.) (default) 1 1 1 IRC (Internal RC oscillator mode); P54/OSCO functions as P54 1 In ERC mode, OSCI is 作振荡引脚. OSCO/P54 is可通过code option Word 0 Bit 6 ~ Bit 4设置. 2 In IRC mode, P55普通IO. OSCO/P54可通过 code option Word 0 Bit 6 ~ Bit 4设置. 在不同电压下的最大频率如下: Conditions VDD Max. Freq. (MHz) 2.1 4 4.5 16 Two clocks 6.11.2 晶体振荡器/陶瓷谐振器(XTAL) EM78P345/6/7N可被OSCI引脚上的外部时钟驱动 如下图: Ext. Clock OSCO OSCO 图 6-17 外部时钟电路 56 • Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller 在大多数应用中,引脚OSCI和OSCO上可接晶体或陶瓷谐振器来产生振荡。图6—17为 电路。不论是HXT还是LXT模式都适用。 C1 OSCI Crystal OSCO C2 RS 图. 6-18 Crystal/Resonator Circuit 下表为C1、C2的推荐值。由于各个谐振器特性不同,用户应参照其规格选择C1、C2的 合适值。串联电阻RS对于低频模式和AT strip cut晶体是需要的。 晶体振荡器/陶瓷谐振器的电容选择指南 Oscillator Type 陶瓷振荡器 Frequency Mode HXT LXT 晶体振荡器 HXT : Frequency C1 (pF) C2 (pF) 455kHz 100~150 100~150 2.0 MHz 20~40 20~40 4.0 MHz 10~30 10~30 32.768kHz 25 15 100kHz 25 25 200kHz 25 25 455kHz 20~40 20~150 1.0MHz 15~30 15~30 2.0MHz 15 15 4.0MHz 15 15 6.11.3 外部 RC振荡模式 在一些不需要精确计时应用中,使用RC振 Vcc 荡器节省成本(图6-19.然而RC的频率与提 供的电压电阻,电容以及温度有关,而且 Rext 由于每个IC的制成差别,振荡频率也略有 不同 OSCI Cext 图 6-19 外部 RC 震荡模式电路图 为了获得稳定的系统频率,电容值不能小于20pF,电阻值不能大于1MΩ。如果它们不在 范围之内,频率将很容易受噪声、湿度、漏电的影响。 Product Specification (V1.0) 08.30.2007 • 57 EM78P345/6/7N 8-Bit Microcontroller RC振荡器的电阻R越小频率越高。另一方面,对于很小的电阻值,如1KΩ,由于NMOS 不能正确将电容放电,振荡器将变得不稳定。 基于上述原因,必须牢记电源电压、工作温度、RC振荡器部件、封装形式及PCB布线方 式均会影响系统频率。 RC 振荡频率: Cext 20 Pf 100 Pf 300 Pf Rext Average Fosc 5V, 25°C Average Fosc 3V, 25°C 3.3k 3.5 MHz 3.0 MHz 5.1k 2.4 MHz 2.2 MHz 10k 1.27 MHz 1.24 MHz 100k 140 KHz 143 kHz 3.3k 1.21 MHz 1.18 MHz 5.1k 805 kHz 790 kHz 10k 420 kHz 418 kHz 100k 45 KHz 46 kHz 3.3k 550 kHz 526 kHz 5.1k 364 kHz 350 kHz 10k 188 kHz 185 kHz 100k 20 kHz 20 kHz 1 注意: : 以 DIP封装形式为量测标准. 2 : 这些值仅供参考. : 频率偏差 ± 30% 3 6.11.4外部 RC振荡模式 The EM78P345/6/7N 提供一个通用的内部RC模式,频率的默认值在4MHz,内部RC晶 振也可以有其它的频率(1MHz, 16MHz, and 455KHz),频率是可以通过编码选择 (WORD1), RCM1, 和 RCM0来设置的。下表描述了EM78P345/6/7N在不同电压、温度、 和进程工作下产生的不同的内部RC频率. 内部 RC 偏差 (Ta=25°C, VDD=5V±5%, VSS=0V) Internal RC Frequency Drift Rate Temperature (-40°C ~+85°C) Voltage (2.3V~3.9V~5.5V) Process Total 4MHz ±5% ±5% ±4% ±14% 16MHz ±5% ±5% ±4% ±14% 1MHz ±5% ±5% ±4% ±14% 455MHz ±5% ±5% ±4% ±14% 理论值仅供参考,实际值也许有变化 Table 1 内部RC校正选择 58 • C3 C2 C1 C0 *Cycle Time (ns) *Frequency (MHz) 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 390.6 365.0 342.5 322.6 2.56 2.74 2.92 3.1 Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller C3 C2 C1 C0 *Cycle Time (ns) *Frequency (MHz) 0 1 0 0 304.9 3.28 0 1 0 1 289.0 3.46 0 1 1 0 274.7 3.64 0 1 1 1 261.8 3.82 1 1 1 1 250.0 4.00 1 1 1 0 239.2 4.18 1 1 0 1 229.4 4.36 1 1 0 0 220.3 4.54 1 0 1 1 211.9 4.72 1 0 1 0 204.1 4.9 1 0 0 1 196.7 5.08 1 0 0 0 190.1 5.26 * 理论值仅供参考.实际值也许会因情况不同变化 6.12 上电事项 在电源稳定之前,任何单片机均不能保证开始正常工作。EM78P345/6/7N具有检测电压 1.7V~ 1.9V的电压检测器(POVD)。这就免去了附加的外部复位电路。如果VDD上升 的足够快(50ms或更快),它将正常工作。然而,在许多要求严格的应用中,还是需要 附加的外部电路来帮助解决问题。 6.12.1外部上电复位电路 图6-20所示的电路使用了外部RC产生复位脉冲。脉冲宽度(时间常数)应足够长,直至 V dd达到最低工作电压。当电源上升慢时,可使用该电路。由于/RESET引脚的漏电流约 为±5µA,建议R要大于40K。这样,引脚/RESET上电压将保持在0.2V以下。二极管D作 用是在掉电时充当短路回路。电容C将快速充分放电。限流电阻Rin用来避免过大的放电 电流或静电放电ESD流入引脚/RESET。 VDD /RESET R Rin D C 图 6-20 外部上电复位电路 6.12.2 残存电压保护 有些应用中,如更换电池,Vdd断开后几秒钟内便恢复。这将有一个小于Vdd最小值但又 不为0的残存电压。这样将引起不正常复位。图6-21,6-22为残存电压保护电路。 Product Specification (V1.0) 08.30.2007 • 59 EM78P345/6/7N 8-Bit Microcontroller VDD VDD 33K Q1 10K /RESET 100K 1N4684 图. 6-21 残存电压保护电路1 VDD VDD R1 Q1 /RESET R2 R3 图. 6-22 残存电压保护电路2 6.13 代码选项 EM78P345/6/7N有两个代码选项字和一个客户ID字它并非一般程序的一部分 Word 0 Word1 Word 2 Bit 12 ~ Bit 0 Bit 12 ~ Bit 0 Bit 12 ~ Bit 0 6.13.1 代码选项寄存器 (Word 0) Word 0 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 LVR1 LVR0 TYPE1 TYPE0 CLKS ENWDTB OSC2 OSC1 OSC0 HLP PR2 PR1 PR0 Bits 12~11 (LVR1 ~ LVR0): 低电压复位使能位 60 • LVR1, LVR0 VDD Reset Level 11 10 01 00 2.4V 3.7V 4.1V VDD Release Level NA (Power-on Reset) 2.6V 3.9V 4.3V Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller Bits 10~9 (TYPE1 ~ TYPE0): EM78P347N ,EM78P346N , EM78P345N.类型选择 TYPE1, TYPE0 SELECTION NO. 11 10 01 00 EM78P347N (默认) EM78P346N EM78P345N EM78P347N Bit 8 (CLKS): 指令周期选择位 0 = 两个时钟周期 1 = 四个时钟周期 (默认) 参考指令表部分 Bit 7 (ENWDTB): 看门狗使能位 0 = 使能 1 = 禁止 (默认) Bits 6, 5 & 4 (OSC2, OSC1 & OSC0): 振荡模式选择位 OSC2 OSC1 OSC0 1 Oscillator Modes 0 0 0 1 0 0 1 0 1 0 ERC (外部 RC 振荡模式); P54/OSCO 作为 P54 引脚 ERC (外部 RC 振荡模式); P54/OSCO 作为 OSCO 2 IRC (内部 RC 震荡模式); P54/OSCO 作为 P54 2 IRC (内部 RC 震荡模式); P54/OSCO 作为 OSCO 0 1 1 LXT1 ( LXT1 频率范围是 1MHz ~ 100kHz) 1 0 0 HXT1 ( HXT1 频率范围是 16MHz ~ 6MHz) 1 0 1 LXT2 (L XT2 频率范围是 32kHz) 1 1 0 HXT2 (H XT2 频率范围是 6MHz ~ 1MHz) (默认) 1 1 1 1 In ERC 模式, OSCI 用作 oscillator引脚. OSCO/P54由 code option Word 0 Bit 6 ~ Bit 4.选择设置 2 In IRC 模式, P54作为IO引脚. OSCO/P54 由 option Word 0 Bit 6 ~ Bit 4选择设置 Bit 3 (HLP): 功耗选项 0:低功耗 1:高功耗 Bit 2 ~ 0 (PR2 ~ PR0): 保护位 PR2 ~ PR0 保护位. 保护类型如下: PR2 PR1 PR0 Protect 0 0 0 Enable 1 1 1 Disable 6.13.2 代码选项寄存器 (Word 1) Word 1 Bit 12 Bit 11 Bit 10 Bit 9 – – – Bits 12: Bit 8 Bit 7 RCOUT NRHL NRE Bit 6 - Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 C3 C2 C1 C0 Bit 0 RCM1 RCM0 固定为 “0” Bits 11~10: 未用, 一直置为 “1” Bit 9 (RCOUT): 系统时钟输出选择使能位 Product Specification (V1.0) 08.30.2007 • 61 EM78P345/6/7N 8-Bit Microcontroller 0 = OSCO 引脚漏极开路 1 = OSCO 输出系统时钟(默认) Bit 8 (NRHL): 燥声抑制高低使能位. INT 是下降沿触发 0 =脉冲等于8/fc [s]被视作为信号 1 =脉冲等于32/fc [s]被视作为信号 注意 噪音抑制功能在睡眠模式下失效 Bit 7(NRE): 噪音抑制使能 0 = 禁止噪音抑制 1 = 使能噪音抑制(默认). 但是在低晶振模式下噪音抑制功能是 禁 止的 Bit 6 (CYES): 未使用 Bits 5, 4, 3 & Bit2 (C3, C2, C1, & C0):IRC 校正 这些 位必须为1 C3 C2 C1 C0 *Cycle Time (ns) *Frequency (MHz) 0 0 0 0 390.6 2.56 0 0 0 1 365.0 2.74 0 0 1 0 342.5 2.92 0 0 1 1 322.6 3.1 0 1 0 0 304.9 3.28 0 1 0 1 289.0 3.46 0 1 1 0 274.7 3.64 0 1 1 1 261.8 3.82 1 1 1 1 250.0 4.00 1 1 1 0 239.2 4.18 1 1 0 1 229.4 4.36 1 1 0 0 220.3 4.54 1 0 1 1 211.9 4.72 1 0 1 0 204.1 4.9 1 0 0 1 196.7 5.08 1 0 0 0 190.1 5.26 * 理论值仅供参考. 实际值因情况而有所变化. Bit 1 & Bit 0 (RCM1 & RCM0): RC 模式选择位 RCM 1 RCM 0 Frequency (MHz) 1 1 4 1 0 16 0 1 1 0 0 455kHz 6.13.3代码选项和客户ID寄存器 (Word 2) 62 • Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller Word 2 Bit 12 Bit 11 Bit 10 Bit 9 – – – Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 NRM RESETENB × – × × × × × × Bits 12 ~ 11, 7: 固定为“1” Bit 10: 固定为 “0” Bit 9 (NRM): 噪音抑制模式 0 = .噪音抑制模式 2, 应用广泛, 列如按键扫描和 LED 输出 1 = 噪音抑制模式 1. 一般用于输入和输出. (默认) Bit 8 (RESETENB): 复位使能位 0 : P75/RESET作为复位引脚 1 : P75/RESET 作为 P75(默认) Bits 6 ~ 0: 客户ID代码 6.14 低电压检测 在电源不稳定的情况下,例如外部电源干扰或EMS测试下,导致电压波动,VDD未作处 理,系统电压有可能小于工作电压,当系统提供的电压小于工作电压将自动保持寄存器 的状态。 6.14.1 低电压复位 低电压复位在代码选项 Word 0, Bits 10, 9选择,详细选项如下 Word 0 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 LVR1 LVR0 Type1 Type0 CLKS ENWDTBOSC2 OSC1 OSC0 HLP PR2 PR1 PR0 Bits 12~11 (LVR1 ~ LVR0): 低电压复位使能位 LVR1, LVR0 VDD Reset Level 11 10 01 00 2.4V 3.7V 4.1V VDD Release Level NA (Power-on Reset) 2.6V 3.9V 4.3V 6.14.2 低电压检测 LVD 通过RA,RE寄存器设置, 详细选项如下:: 6.14.2.1 Bank 1 R6 (LVD 控制寄存器) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 - LVDIF /LVD LVDIE LVDWE LVDEN LVD1 LVD0 Product Specification (V1.0) 08.30.2007 • 63 EM78P345/6/7N 8-Bit Microcontroller 注意 ■ Bank 1 R6<4> 可擦写 ■ Bank 1 R6<4> 为 "1."设置不分中断 ■ 总中断通过ENI使能和DISI禁止. 如图. 6-8 (中断输入电路) Bit 6 (LVDIF): 低电压检测中断标志 LVDIF 由软件或硬件清零. Bit 5 (/LVD): 低电压检测状态.这是一个只读,当VDD上的电压小于检测电压时这 个位被清零. 0 = 电压小于检测电压 1 = 没有检测到低电压或低电压检测功能禁止. Bit 4 of Bank 1 R6: “1” 意思有中断, “0” 没有中断. Bit 4 (LVDIE): 低电压检测使能中断位. 0 = 禁止检测低电压中断. 1 = 使能检测低电压中断. 当检测到电压小于设置的检测电压时进中断或执行下条指令LVDIE必 须使能。 Bit 3 (LVDWE): 低电压唤醒使能位 0 =禁止低电压检测唤醒 1 = 使能低电压检测唤醒 当检测到低电压时进入中断或从睡眠模式下唤醒,LVDWE必须使能 Bit 2 (LVDEN): 低电压检测使能位 0 = 禁止低电压检测 1 =使能低电压检测 Bit 1~0 (LVD1:0): 低电压选择 LVDEN LVD1, LVD0 1 11 1 10 1 01 1 00 0 XX LVD Voltage Interrupt Level /LVD Vdd ≤ 2.3V Vdd > 2.3V Vdd ≤ 3.3V Vdd > 3.3V Vdd ≤ 4.0V Vdd > 4.0V Vdd ≤ 4.5V Vdd > 4.5V NA 0 1 0 1 0 1 0 1 0 6.14.3 编程步骤 低电压实现按以下步骤设置: 1. 设置Bank 1-R6 (LVDCR)的 (LVD1: LVD0) 位设置低电压检测的 电压等级 2. 如果需要唤醒,设置 LVDWE位 为1 64 • Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller 3. 如果需要中断功能,设置 LVDIE为1 4. 如过需要 中断功能,开总中断 5. 置 LVDEN 位为 1 6. 如果 需要进入睡眠模式 7. 进入中断向量时,清中断标志位。 内部LVD模块使用内部电路,当选择低电压检测时电流大约增加5µA.在睡眠模式下LVD 仍然在运行,如果IC电压慢慢降至或低于检测电压,LVDIF将被置1,从睡眠模式下唤醒, 置LVD中断标志位优先,当复位时中断标志清零。检测外部电压模块如图 6-23所示。 当VDD电压降到不小于VLVD时,LVDIF保持为0,当VDD电压降到小于VLVD时,LVDIF 置为1。如果开总中断,下一条指令进入中断向量,LVDIF标志由软件清零。 当VDD降到小于VRESER并且小于80µs,IC将所有寄存器保持以前状态,停止工作但振 荡器振荡。当VDD降到小于VRESER并且大于80µs,IC将复位,有关复位详细描述如表 6.5.1 LVDIF is cleared by software Vdd VLVD VRESET LVDIF Internal Reset 18ms <LVR Voltage drop >LVR Voltage drop Vdd < Vreset not longer than 80us, the system still keeps on operating System occur reset 图 6-23 LVD 波形状态 6.15 指令系统 每条指令为13位,包括一个操作码和一个或多个操作数。大多数指令只需一个指令周期 (一个指令周期为两个振荡周期)。但改变程序计数器R2的指令(如MOV R2,A;ADD R2,A)和对R2进行算术和逻辑运算的指令(如SUB R2,A;BS(C)R2,6;CLR R2;…) 则需要一个或两个指令周期,这个由代码寄存器的CYES位决定。此外,指令集还有以 下特点: (1)任何寄存器的每一位均可直接置1,清0或测试。 (2)I/O口寄存器可视为一般的寄存器。即操作通用寄存器的指令同样可以用来操作I/O 寄存器。 以下用符号“R”表示某个寄存器(包括工作寄存器和通用寄存器),符号“b”表示寄存器 中的某一位,符号“k”表示一个8/10位的常数或立即数。 Product Specification (V1.0) 08.30.2007 • 65 EM78P345/6/7N 8-Bit Microcontroller 指令系统 表如下: 范例: R = 寄存器 R4 寄存器的 6 ,7 位选择BANK b = 寄存器的位 Binary Instruction 0 0 0 0 0 0 0 0 0 66 • 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001 0001 0001 0000 0001 0010 0011 0100 rrrr 0000 0001 0010 k = 8 or 10-bit常数或变数 Hex 0000 0001 0002 0003 0004 000r 0010 0011 0012 Mnemonic NOP DAA CONTW SLEP WDTC IOW R ENI DISI RET 0 0000 0001 0011 0013 RETI 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0014 001r 00rr 0080 00rr 01rr 01rr 01rr 01rr 02rr 02rr 02rr 02rr 03rr 03rr 03rr 03rr 04rr 04rr 04rr 04rr 05rr 05rr 05rr 05rr CONTR IOR R MOV R,A CLRA CLR R SUB A,R SUB R,A DECA R DEC R OR A,R OR R,A AND A,R AND R,A XOR A,R XOR R,A ADD A,R ADD R,A MOV A,R MOV R,R COMA R COM R INCA R INC R DJZA R DJZ R 0 0110 00rr rrrr 06rr RRCA R 0 0110 01rr rrrr 06rr RRC R 0 0110 10rr rrrr 06rr RLCA R 0 0110 11rr rrrr 06rr RLC R 0 0111 00rr rrrr 07rr SWAPA R 0000 0000 0000 0000 0000 0001 0001 0001 0001 0010 0010 0010 0010 0011 0011 0011 0011 0100 0100 0100 0100 0101 0101 0101 0101 0001 0001 01rr 1000 11rr 00rr 01rr 10rr 11rr 00rr 01rr 10rr 11rr 00rr 01rr 10rr 11rr 00rr 01rr 10rr 11rr 00rr 01rr 10rr 11rr 0100 rrrr rrrr 0000 rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr rrrr Operation Status Affected No Operation Decimal Adjust A A → CONT 0 → WDT, Stop oscillator 0 → WDT A → IOCR Enable Interrupt Disable Interrupt [Top of Stack] → PC [Top of Stack] → PC, Enable Interrupt CONT → A IOCR → A A→R 0→A 0→R R-A → A R-A → R R-1 → A R-1 → R A ∨ VR → A A ∨ VR → R A&R→A A&R→R A⊕R→A A⊕R→R A+R→A A+R→R R→A R→R /R → A /R → R R+1 → A R+1 → R R-1 → A, skip if zero R-1 → R, skip if zero R(n) → A(n-1), R(0) → C, C → A(7) R(n) → R(n-1), R(0) → C, C → R(7) R(n) → A(n+1), R(7) → C, C → A(0) R(n) → R(n+1), R(7) → C, C → R(0) R(0-3) → A(4-7), R(4-7) → A(0-3) None C None T, P T, P 1 None None None None None None 1 None None Z Z Z, C, DC Z, C, DC Z Z Z Z Z Z Z Z Z, C, DC Z, C, DC Z Z Z Z Z Z None None C C C C None Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller Binary Instruction 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0111 0111 0111 100b 101b 110b 111b 00kk 01kk 1000 1001 1010 1011 1100 1101 1110 Mnemonic 07rr 07rr 07rr 0xxx 0xxx 0xxx 0xxx 1kkk 1kkk 18kk 19kk 1Akk 1Bkk 1Ckk 1Dkk 1E9K SWAP R JZA R JZ R BC R,b BS R,b JBC R,b JBS R,b CALL k JMP k MOV A,k OR A,k AND A,k XOR A,k RETL k SUB A,k BANK k 1 1110 1000 kkkk 1EAK LCALL k 1 1110 1000 kkkk 1EBK LJMP k 1 1111 kkkk kkkk ADD A,k 注意: 1 01rr rrrr 10rr rrrr 11rr rrrr bbrr rrrr bbrr rrrr bbrr rrrr bbrr rrrr kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk kkkk 1000 kkkk Hex 1Fkk Operation Status Affected R(0-3) ↔ R(4-7) R+1 → A, skip if zero R+1 → R, skip if zero 0 → R(b) 1 → R(b) if R(b)=0, skip if R(b)=1, skip PC+1 → [SP], (Page, k) → PC (Page, k) → PC k→A A∨k→A A&k→A A⊕k→A k → A, [Top of Stack] → PC k-A → A K→R4(7:6) Next instruction : k kkkk kkkk kkkk PC+1→[SP], k→PC Next instruction : k kkkk kkkk kkkk k→PC k+A → A None None None 2 None 3 None None None None None None Z Z Z None Z, C, DC None None None Z, C, DC 这条指令仅用与 IOC50~IOCF0, IOC51 ~ IOCF1 . 2 这条指令建议不要使用于对 RF操作. 3 这条指令不能对 RF进行操作. 7 最大绝对偏移量 Items Rating 偏移下温度 -40°C to 85°C 储存温度 -65°C to 150°C 输入电压 Vss-0.3V to Vdd+0.5V 输出电压 Vss-0.3V to Vdd+0.5V 2.5V to 5.5V DC to 20MHz 电压 工作频率 8 直流电气特性 Ta= 25 °C, VDD= 5.0V, VSS= 0V Symbol FXT ERC VIHRC IERC1 VILRC Parameter Crystal: VDD to 5V ERC: VDD to 5V Input High Threshold Voltage (Schmitt Trigger) Sink current Input Low Threshold Condition Two cycle with two clocks R: 5.1KΩ, C: 100 pF Min. 32.768k 760 Typ. 4 950 Max. 16 1140 Unit MHz kHz OSCI in RC mode 3.9 4 4.1 V VI from low to high, VI=5V OSCI in RC mode 21 1.7 22 1.8 23 1.9 mA V Product Specification (V1.0) 08.30.2007 • 67 EM78P345/6/7N 8-Bit Microcontroller Symbol IPH IPL Parameter Voltage (Schmitt Trigger) Sink current Input Leakage Current for input pins Input High Voltage (Schmitt Trigger) Input Low Voltage (Schmitt Trigger ) Input High Threshold Voltage (Schmitt Trigger) Input Low Threshold Voltage (Schmitt trigger) Input High Threshold Voltage (Schmitt Trigger) Input Low Threshold Voltage (Schmitt Trigger) Clock Input High Voltage Clock Input Low Voltage Output High Voltage (Ports 5, 6, 7) Output Low Voltage (Ports 5, 6,7) Output Low Voltage (Ports 50, 51,66, 67) Pull-high current Pull-low current ISB1 Power down current ISB2 Power down current ICC1 Operating supply current at two clocks ICC2 Operating supply current at two clocks ICC3 Operating supply current at two clocks ICC4 Operating supply current at two clocks IERC2 IIL VIH1 VIL1 VIHT1 VILT1 VIHT2 VILT2 VIHX1 VILX1 IOH1 IOL1 IOL2 Condition Min. Typ. Max. Unit VI from high to low, VI=2V 16 17 18 mA VIN = VDD, VSS -1 0 1 µA Ports 5, 6, 7 0.7Vdd − Vdd+0.3V V Ports 5, 6, 7 -0.3V − 0.3Vdd V /RESET 0.7Vdd − Vdd+0.3V V /RESET -0.3V − 0.3Vdd V TCC,INT 0.7Vdd − Vdd+0.3V V TCC,INT -0.3V − 0.3Vdd V 2.9 1.7 3.0 1.8 3.1 1.9 V V OSCI in crystal mode OSCI in crystal mode VOH = 0.9VDD -10 mA VOL = 0.1VDD 20 mA VOL = 1.5V 70 mA Pull-high active, input pin at VSS Pull-low active, input pin at Vdd All input and I/O pins at VDD, output pin floating, WDT disabled All input and I/O pins at VDD, output pin floating, WDT enabled /RESET= 'High', Fosc=32kHz (Crystal type, CLKS="0"), Output pin floating, WDT disabled /RESET= 'High', Fosc=32kHz (Crystal type,CLKS="0"), output pin floating, WDT enabled /RESET= 'High', Fosc=4MHz (Crystal type, CLKS="0"), output pin floating, WDT enabled /RESET= 'High', Fosc=10MHz (Crystal type, CLKS="0"), Output pin floating, WDT enabled -50 25 -75 40 -240 210 µA µA 2.0 µA 8 µA 28 µA 30 µA 1.7 mA 3.5 mA Internal RC Electrical Characteristics (Ta=25°C, VDD=5 V, VSS=0V) Internal RC Drift Rate Temperature Voltage Min. Typ. Max. 4MHz 25° 5V 3.84MHZ 4MHz 4.16MHz 16MHz 25° 5V 15.36MHz 16MHz 16.64MHz 1MHz 25° 5V 0.96MHz 1MHz 1.04MHz 455kHz 25° 5V 436.8kHz 455kHz 473.2kHz Internal RC Electrical Characteristics (Ta=-40 ~85°C, VDD=2.2~5.5 V, VSS=0V) Internal RC 4MHz 68 • Drift Rate Temperature Voltage Min. Typ. Max. -40 ~85° 2.2~5.5 V 3.44MHZ 4MHz 4.56MHz Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller 16MHz -40 ~85° 2.2~5.5 V 13.76MHz 16MHz 18.24MHz 1MHz -40 ~85° 2.2~5.5 V 0.86MHz 1MHz 1.14MHz 455kHz -40 ~85° 2.2~5.5 V 391.3kHz 455kHz 518.7kHz 8.1 AD 转换器特性 Vdd=2.5V to 5.5V, Vss=0V, Ta=-40 to 85°C Symbol VAREF Parameter Analog reference voltage Condition VAREF - VASS ≥ 2.5V Min. Typ. Max. Unit 2.5 − Vdd V Vss − Vss V Analog input voltage − VASS − VAREF V Analog supply current VDD=VAREF=5.0V, VASS = 0.0V (V reference from Vdd) 750 850 1000 µA -10 0 +10 µA Analog supply current VDD=VAREF=5.0V, VASS = 0.0V (V reference from VREF) 500 600 820 µA 200 250 300 µA IOP OP current VDD=5.0V, OP used Output voltage swing from 0.2V to 4.8V 450 550 650 µA RN1 Resolution ADREF=0, Internal VDD VDD=5.0V, VSS = 0.0V 9 −10 Bits RN2 Resolution VDD=VREF=5.0V, VSS = 0.0V − 11 12 Bits LN1 Linearity error VDD = 2.5 to 5.5V Ta=25°C 0 ±4 ±8 LSB VASS VAI IAI1 IAI2 Ivdd Ivref Ivdd IVref ADREF=1, External VREF LN2 Linearity error VDD= 2.5 to 5.5V Ta=25℃ 0 ±2 ±4 LSB DNL Differential nonlinear error VDD = 2.5 to 5.5V Ta=25°C 0 ±0.5 ±0.9 LSB FSE1 Full scale error VDD=VAREF=5.0V, VASS = 0.0V ±0 ±4 ±8 LSB FSE2 Full scale error VDD=VREF=5.0V, VSS = 0.0V ±0 ±2 ±4 LSB OE Offset error VDD=VAREF=5.0V, VASS = 0.0V ±0 ±2 ±4 LSB ZAI Recommended impedance of analog voltage source − 0 8 10 KΩ TAD ADC clock duration VDD=VAREF=5.0V, VASS = 0.0V 4 − − µs TCN AD conversion time VDD=VAREF=5.0V, VASS = 0.0V 15 − 15 TAD ADIV ADC OP input voltage range VDD=VAREF=5.0V, VASS = 0.0V 0 − VAREF V ADOV ADC OP output voltage swing VDD=VAREF=5.0V, VASS =0.0V, RL=10KΩ 0 0.2 0.3 4.7 4.8 5 ADSR ADC OP slew rate VDD=VAREF=5.0V, VASS = 0.0V 0.1 0.3 − V/µs Power Supply Rejection VDD=5.0V±0.5V ±0 − ±2 LSB PSR V 注意: 1. 这些参数是特性而不是测试结果,这些参数仅供设计参考 2. 与漏电电流不同,当A/D关闭,它不会消耗任何电流 3. A/D转换结果不会减少输入电压,没有遗漏码. 4. 规格书可能随时改变 Product Specification (V1.0) 08.30.2007 • 69 EM78P345/6/7N 8-Bit Microcontroller 8.2 比较器(OP) 特性 Vdd = 5.0V,Vss=0V, Ta=-40 to 85°C Symbol Parameter SR Slew rate Vos Input offset voltage IVR Input voltage range OVS Output voltage swing Iop Ico Supply current of OP Supply current of Comparator Power-supply Rejection Ratio for OP Operating range PSRR Vs Condition – RL=5.1K, (Note 1) Vdd =5.0V, VSS = 0.0V Vd =5.0V, VSS = 0.0V, RL=10KΩ – – Vdd= 5.0V, VSS = 0.0V – Min. 0.1 Typ. 0.2 Max. – Unit V/us 1 5 10 mV 5 V 0 0 0.2 0.3 4.7 4.8 5 250 – 350 300 500 – µA µA 50 60 70 dB 5.5 V 2.5 V 注意: 1. 这些参数是特性而不是测试结果,这些参数仅供设计参考. 2. 规格书可能随时改变 9 交流电气特性 Ta=-40 to 85 °C, VDD=5V±5%, VSS=0V Symbol Parameter Conditions Type Max Unit 45 50 55 % Crystal type 100 – DC ns RC type 500 – DC ns (Tins+20)/N* – – ns – Min Dclk Input CLK duty cycle Tins Instruction cycle time (CLKS="0") Ttcc TCC input time period Tdrh Device reset hold time Ta = 25°C 11.3 16.2 21.6 ms Trst /RESET pulse width Ta = 25°C 2000 – – ns Twdt Watchdog timer duration Ta = 25°C 11.3 16.2 21.6 ms Tset Input pin setup time – 0 – ns Thold Input pin hold time – 15 20 25 ns Tdelay Output pin delay time Cload=20pF 45 50 55 ns Tdrc ERC delay time Ta = 25°C 1 3 5 ns – – 注意: *选择的预分频比率 70 • Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller 10 时序图 AC Test Input/Output Waveform VDD-0.5V 0.75VDD 0.75VDD 0.25VDD 0.25VDD TEST POINTS GND+0.5V AC Testing : Input is driven at VDD-0.5V for logic "1",and GND+0.5V for logic "0".Timing measurements are made at 0.75VDD for logic "1",and 0.25VDD for logic "0". RESET Timing (CLK="0") NOP Instruction 1 Executed CLK /RESET Tdrh TCC Input Timing (CLKS="0") Tins CLK TCC Ttcc Product Specification (V1.0) 08.30.2007 • 71 EM78P345/6/7N 8-Bit Microcontroller 附件 A 封装形式 OTP MCU Package Type Pin Count Package Size EM78P345NP DIP 18 pin 300mil EM78P345NPS/NPJ DIP 18 pin 300mil EM78P345NM SOP 18 pin 300mil EM78P345NMS/NMJ SOP 18 pin 300mil EM78P346NP DIP 20 pin 300mil EM78P346NPS/NPJ DIP 20 pin 300mil EM78P346NM SOP 20 pin 300mil EM78P346NMS/NMJ SOP 20 pin 300mil EM78P346NKM SSOP 20 pin 209mil EM78P346NKMS/NKMJ SSOP 20 pin 209mil EM78P347NP Skinny DIP 24 pin 300mil EM78P347NPS/NPJ Skinny DIP 24 pin 300mil EM78P347NM SOP 24 pin 300mil EM78P347NMS/NMJ SOP 24 pin 300mil EM78P347NKM SSOP 24 pin 150mil EM78P347NKMS/NKMJ SSOP 24 pin 150mil 安全产品不含有危险物质. SS-00259 有三个标准 Pb 必须小于 100ppm Part No. Electroplate type Pure Tin Ingredient (%) Sn: 100% Melting point(°C) 72 • EM78P345/6/7NS/J 232°C Electrical resistivity (µΩ-cm) 11.4 Hardness (hv) 8~10 Elongation (%) >50% Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller B 封装结构 B.1 18-Lead Plastic Dual in line (PDIP) — 300 mil Product Specification (V1.0) 08.30.2007 • 73 EM78P345/6/7N 8-Bit Microcontroller B.2 18-Lead Plastic Small Outline (SOP) — 300 mil 74 • Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller B.3 20-Lead Plastic Dual in line (PDIP) — 300 mil Product Specification (V1.0) 08.30.2007 • 75 EM78P345/6/7N 8-Bit Microcontroller B.4 20-Lead Plastic Small Outline (SOP) — 300 mil 76 • Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller B.5 20-Lead Plastic Shrink Small Outline (SSOP) — 209 mil Product Specification (V1.0) 08.30.2007 • 77 EM78P345/6/7N 8-Bit Microcontroller B.6 24-Lead Plastic Dual in line (PDIP) — 300 mil 78 • Product Specification (V1.0) 08.30.2007 EM78P345/6/7N 8-Bit Microcontroller B.7 24-Lead Plastic Small Outline (SOP) — 300 mil Product Specification (V1.0) 08.30.2007 • 79 EM78P345/6/7N 8-Bit Microcontroller C 质量确保和可靠性 Test Category 可焊性 Test Conditions Remarks 焊接温度=245±5°C, 用助焊剂松香 5 秒钟可焊上 – 步骤 1: TCT, 65°C (15mins)~150°C (15mins), 10 cycles 步骤 2: 125°C 烤, TD (耐久性)=24 hrs 步骤 3: 浸泡在 30°C/60%,TD (耐久性)=192 hrs 情形 Step 4: IR 循环三个周期 (Pkg thickness ≥ 2.5mm or Pkg volume ≥ 350mm3 ----225±5°C) For SMD IC (such as SOP, QFP, SOJ, etc) (Pkg thickness ≤ 2.5mm or Pkg volume ≤ 350mm3 ----240±5°C) 温度测试 -65°C (15mins)~150°C (15mins), 200 cycles – 耐压测试 TA =121°C, RH=100%, pressure=2 atm, TD (endurance)= 96 hrs – 高温高湿测试 TA=85°C , RH=85%,TD (endurance) = 168 , 500 hrs – 高温保持期限 TA=150°C, TD (endurance) = 500, 1000 hrs – 高湿保持期限 TA=125°C, VCC = Max. operating voltage, TD (endurance) = 168, 500, 1000 hrs – 锁存 TA=25°C, VCC = Max. operating voltage, 150mA/20V – ESD (HBM) TA=25°C, ≥∣± 3KV∣ IP_ND,OP_ND,IO_ND IP_NS,OP_NS,IO_NS IP_PD,OP_PD,IO_PD, ESD (MM) C.1 TA=25°C, ≥ ∣± 300V∣ IP_PS,OP_PS,IO_PS, VDD-VSS(+),VDD_VSS (-) mode 地址误差侦测 地址误差检测是一种内在的安全检测功能,此功能是用来侦测MCU被噪音或者类似干扰 引起的MCU故障,无论MCU何时在ROM的一部份取得一条指令,内部恢复电路都会自 动触发。如果噪音引起的地址错误被侦测到,MCU将会重复执行进程直到噪音被清楚。 然后MCU再继续执行下一个程序。 80 • Product Specification (V1.0) 08.30.2007