Microsoft Word - EM78F561N_F661N_CN_ v2.2_FromDCC¦³¼Ð°O_ _.doc

Similar documents
Chapter 1

Microsoft Word - EM78F662N562N_CN_ v1.0_ _.doc

Chapter 1

EM65101

Microsoft Word - EM78P156K Product Spec v1[1].3 _ _.doc

一、

Microsoft Word - EM78P372N_Product_Specification_CN___ __ver 1.0.doc

Microsoft Word - EM78P372N_Product_Specification_CN___ __ver 1.0.doc

Microsoft Word - PDF_EM78F64X_54XSeriesProdSpec__CN__v1.2.doc

Chapter 1

(CN)EM78P v

2 PIC PIC 1 / CPU PIC MCU PIC RC

DS_MM32P021_Ver1.9.0

untitled

HT46R47 f SYS =4MHz 3.3~5.5V f SYS =8MHz 4.5~5.5V 13 位双向输入 / 输出口 1 个与输入 / 输出共用引脚的外部中断输入 8 位带溢出中断的可编程定时 / 计数器 具有 7 级预分频器 石英晶体或 RC 振荡器 位的程序存储器 P

33023A.book(31026A_cn.fm)

1. 介绍 义隆 8 位单片机指令介绍 Application Notes 义隆 8 位单片机指令介绍 EM78/EM88 系列是基于 RISC 的精简指令微控制器, 每条指令是 13 位 15 位, 除 LCALL LJMP MOV R2,A ADD R2,A 改变 PC 指针的指令是 2 个指令

XNS104 产品说明书 AD 型 2.4G 高速无线收发单片机概述 2.4GHz 高速无线收发单片机 XNS104 是一个带 12 位 ADC, 以 OTP 为程序存储基础, 带 2.4G 高速无线收发芯片的单片机 无线收发单元工作在 GHz 世界通用 ISM 频段, 它集

Chapter 1

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

Microsoft Word - sim6xF0xC-0225.doc

EMC单片机学习笔记.doc

商标告知 : IBM 为一个注册商标,PS/2 是 IBM 的商标之一 Windows 是微软公司的商标 ELAN 和 ELAN 标志 是义隆电子股份有限公司的商标 版权所有 2016 义隆电子股份有限公司 所有权利保留台湾印制 本使用说明文件内容如有变动恕不另作通知 关于该规格书的准确性 适当性或

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L

,Microchip Technology PIC LCD, PIC16F913/914/ 916/917/946 PIC18F6390/6490/8390/8490 PIC16F65J90/85J90 Microchip LCD LCD, Microchip 的优势 LCD PIC, LCD LC

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0

Microsoft Word - S153B.doc

MSP430X1XX 系列微控制器具有以下特征 结构框图 超低功耗结构体系 A 额定工作电流在 1MHz V 工作电压 C11X P11X 和 E11X 为 V 从备用模式唤醒为 6 S 丰富的中断能力减少了查询的需要灵活强大的处理能力源操作数有七种寻址模

Application Note Transient Voltage Suppressors (TVS) for 表 1 VISHAY 的 SM6T 系列的电特性 25 C 型号 击穿电压 器件标识码 V BR AT I T I T 测试电流 (ma) 关态电压 V RM 漏电流 I RM AT V

2 14 PORTC.1 PORTB.3 PORTA.2/T0 GND PORTB.2 PORTA.0 PORTC.3 PORB.0/OSCO PORTB.1/OSCI PORTC.0 PORTC.2 SH69P21 /SOP PORTA

BJ2C004ANB

目录 1. 产品简介 功能特性 引脚图 引脚描述 中央处理器 (CPU) 程序存储器 (OTP ROM) 堆栈 数据存储器 (RAM) INDF 寄存器.

Chapter 1

DPJJX1.DOC

Chapter 1

SPMC75F2413A_EVM_使用说明_V1.2.doc

33023A.book(31031A_cn.fm)

untitled

Hz 10MHz 0.5V 5V 0.01% 10s 2 0.5V 5V 1Hz 1kHz 10% 90% 1% 3 1Hz 1MHz 1% EPM7128SLC84-15 LM361 LM361 Zlg

Ps22Pdf

奥运档案(三).doc

Cerris IROS

(CN)EM78P374N ver1.8_

STC15W4K60S4系列增强型PWM波形发生器应用

版权声明 龙芯 免责声明 据 龙芯 2 Building No.2, Loongson Industrial Park, Zhongguancun Environmental Protection Park (Tel) (Fax)

untitled

控制器 EtherCAT EtherCAT EtherCAT 接下一个电机驱动模块 (X4) 接下一个电机驱动模块 (X5) X11 IN X4 IN X3 OUT X5 IN X6 OUT X2 X1 X4 IN X3 OUT X5 IN X6 OUT X2 X1 SYS STA DC BUS D

目 录

DATASHEET SEARCH SITE ==

Applications

Microsoft Word - Ö¸Á.doc

untitled

N79A8211系列单片机内部NVM

HS2303-P

33023A.book(31005A_cn.fm)

PowerPoint Presentation

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

Microsoft Word - TM1621.doc

目录

额定规格 / 性能 单相 标准认证 UL CSA. NO. EN-- 额定规格输入 环境温度 项目电压电平额定电压使用电压范围输入电流型号动作电压复位电压 - B ma 以下 DC~V DC.~V DC.V 以下 DC.V 以上 - BL ma 以下 输出 项目 * 根据环境温度的不同而不同 详情请

ATMEL AT90S8515 AVR CPU AVR AVR AVR ATMEL RISC 32 8 r0 r X Y Z R0 R1 R2 R13 R14 R15 R16 R17 R26 R27 R28 R29 R30 R31 0x00 0x

管脚配置 底板插口配置 芯片大小 (mil) 2-2 -

RESET OSCO OSCI OSC CPU WDTEN RC RESET PRESCALER PORTA (4-BITS) WATCHDOG TIMER Power on PORTB (4-BITS) PORTA [0:3] PORTB [0:3] LPD PORTC (4-BITS) LPDO

SMART 7P 0 HR7P OTPMCU A/D I/O OTP ROM RAM HR7P HR7P HR7PPMB MSOP0 7+input HR7PPSC HR7PPSD SOP SOP6 +input input HR7PERB SSOP0 7

物品重量分級器.doc

Cost_Effective C Handbook

SM2965

<4D F736F F D20C9EEDBDACAD0B6ABB3CFD0C5B5E7D7D3BFC6BCBCD3D0CFDEB9ABCBBEBDE9C9DCBCB0BFE2B4E6>

《计算机应用基础》学习材料(讲义)

PowerPoint 演示文稿

标题

16位A/D转换器

untitled

HD ( ) 18 HD ( ) 18 PC 19 PC 19 PC 20 Leica MC170 HD Leica MC190 HD 22 Leica MC170 HD Leica MC190 HD Leica MC170 HD

Microsoft Word - ~ doc

SH69P848A 2K 一次性编程 10 位 ADC 型 4 位单片机 特性 基于 SH6610D 的 10 位 ADC 型 4 位单片机 OTPROM:2K X 16 位 RAM:253 X 4 位 - 61 个系统控制寄存器 个数据存储器 工作电压 : - f OSC = 30kH

A (QFP-48-12x ) RANGE IF70K AL-OUT AL-SIG VSS CLKFREQ-SEL HR-SET MIN-SET AM/FM-SEL AL-DISP A AL-

<4D F736F F D203034CAB5D1E9CBC D20B5C4494F20BDD3BFDACAB5D1E92E646F63>


2 12

adsd

untitled

商标告知 : IBM 为一个注册商标,PS/2 是 IBM 的商标之一 Windows 是微软公司的商标 ELAN 和 ELAN 标志 是义隆电子股份有限公司的商标 版权所有 2015 义隆电子股份有限公司 所有权利保留台湾印制 本使用说明文件内容如有变动恕不另作通知 关于该规格书的准确性 适当性或

OTP-Based 8-Bit Microcontroller Series

(Microsoft PowerPoint - EM78Fxxx Flash \263\346\244\371\276\367_\301\277\270q_v02)

! *!"#$%&'()*+,-./#01 6, 8 6, 8 6, 8 8!"# ( / )!"# ( / )!"# ( / )! ( ) 3SB3!" Ø22mm!"# ( / ) 6, 8 6, 8 6, 8 8!"# ( / )!"# ( / )!"# ( ) 7, 10 7, 9 7, 8

目 录

DESCRIPTION


单片机应用编程技巧(专家:邓宏杰)

XT1861

untitled

南華大學數位論文

MICROMASTER 410/420/440 DA kW 200kW MICROMASTER Eco & MIDIMASTER Eco MICROMASTER, MICROMASTER Vector DA64 MIDIMASTER Vector 90kW (Low-Vol

Transcription:

8 位微控制器 产品规格书 版本 2.2 义隆电子股份有限公司 2010.04 本文内容是由英文规格书翻译而来, 目的是为了您的阅读更加方便 它无法跟随原稿的更新, 文中可能存在翻译上的错误, 请您参考英文规格书以获得更准确的信息

商标告知 : IBM 为一个注册商标,PS/2 是 IBM 的商标之ㄧ. Windows 是微软公司的商标 ELAN 和 ELAN 标志是义隆电子股份有限公司的商标 版权所有 2009~2010 义隆电子股份有限公司所有权利保留台湾印制 本规格书内容如有变动恕不另作通知 关于该规格书的准确性 适当性或者完整性, 义隆电子股份有限公司不承担任何责任 义隆电子股份有限公司不承诺对本规格书之内容及信息有更新及校正之义务 本规格书的内容及信息将为符合确认之指示而变更 在任何情况下, 义隆电子股份有限公司对本规格书中的信息或内容的错误 遗漏, 或者其它不准确性不承担任何责任 由于使用本规格书中的信息或内容而导致的直接, 间接, 特别附随的或结果的损害, 义隆电子股份有限公司没有义务负责 本规格书中提到的软件 ( 如果有 ), 都是依据授权或保密合约所合法提供的, 并且只能在这些合约的许可条件下使用或者复制 义隆电子股份有限公司的产品不是专门设计来应用于生命维持的用具, 装置或者系统 义隆电子股份有限公司的产品不支持而且禁止在这些方面的应用 未经义隆电子股份有限公司书面同意, 任何个人或公司不得以任何形式或方式对本规格书的内容之任一部分进行复制或传输 义隆电子股份有限公司 总公司 : 地址 : 台湾新竹科学园区创新一路 12 号电话 :886 3 563-9977 传真 :886 3 563-9966 webmaster@emc.com.tw http://www.emc.com.tw Korea: Elan Korea Electronics Company, Ltd. 301 Dong-A Building 632 Kojan-Dong, Namdong-ku Incheon City, KOREA Tel: 82 32 814-7730 Fax: 82 32 813-7730 香港分公司 : 义隆电子 ( 香港 ) 有限公司九龙观塘巧明街 95 号世达中心 19 楼 A 室电话 :852 2723-3376 传真 :852 2723-7780 深圳分公司 : 义隆电子 ( 深圳 ) 有限公司地址 : 深圳市高新技术产业园南区高新南一道国微大厦 3F 邮编 :518057 电话 :86 755 2601-0565 传真 :86 755 2601-0500 elan-sz@elanic.com.cn USA: Elan Information Technology Group (USA) P.O. Box 601 Cupertino, CA 95015 USA Tel: 1 408 366-8225 Fax: 1 408 366-8225 上海分公司 : 义隆电子 ( 上海 ) 有限公司地址 : 上海市浦东新区张江高科碧波路 572 弄 116 号 13 幢 3 層邮编 :201203 电话 :86 21 5080-3866 传真 :86 21 5080-4600 elan-sh@elanic.com.cn

Contents 目录 1 综述...1 2 产品特性... 1 3 引脚配置... 2 4 引脚描述... 3 5 结构图... 5 6 功能描述... 6 6.1 操作寄存器... 6 6.1.1 R0 ( 间接寻址寄存器 )... 6 6.1.2 R1 ( 定时器时钟 )... 6 6.1.3 R2 ( 程序计数器和堆栈 )... 6 6.1.4 R3( 状态寄存器 )... 8 6.1.5 R4 (RAM 选择寄存器 )... 9 6.1.6 Bank 0 R5 ~ R6, R8 (Port 5 ~ Port 6, Port 8)... 9 6.1.7 Bank 0 R9 (TBLP: TBRD 指令的表格指针寄存器 )... 9 6.1.8 Bank 0 RA ( 唤醒控制寄存器 )... 9 6.1.9 Bank 0 RB (EEPROM 控制寄存器, 只适用于 EM78F661N)... 10 6.1.10 Bank 0 RC (128 字节 EEPROM 地址, 只适用于 EM78F661N)... 10 6.1.11 Bank 0 RD (128 字节 EEPROM 数据, 只适用于 EM78F661N)... 10 6.1.12 Bank 0 RE ( 模式选择寄存器 )...11 6.1.13 Bank 0 RF ( 中断标志位寄存器 1)... 12 6.1.14 R10 ~ R3F... 13 6.1.15 Bank 1 R5~R7... 13 6.1.16 Bank 1 R8 (IRC 选择寄存器 )... 13 6.1.17 Bank 1 R9~RE... 14 6.1.18 Bank 1 RF ( 中断状态寄存器 2)... 15 6.1.19 Bank 2 R5 AISR (ADC 输入选择寄存器 )... 15 6.1.20 Bank 2 R6 ADCON (A/D 控制寄存器 )... 16 6.1.21 Bank 2 R7... 17 6.1.22 Bank 2 R8 ADDH (AD 高 8- 位数据缓存 )... 17 6.1.23 Bank 2 R9 ADDL (AD 低 2- 位数据缓存 )... 17 6.1.24 Bank 2 RA~RF... 17 6.1.25 Bank 3 R5... 17 6.1.26 Bank 3 R6 (TBHP: TBRD 指令的表格指针寄存器 )... 17 6.1.27 Bank 3 R7 (CMPCON: 比较器 2 控制寄存器 )... 17 6.1.28 Bank 3 R8 ~ RC... 18 6.1.29 Bank 3 RD TC3CR ( 定时器 3 控制 )... 18 6.1.30 Bank 3 RE TC3D ( 定时器 3 数据缓存 )... 20 6.1.31 Bank 3 RF... 20 6.2 特殊功能寄存器... 20 6.2.1 A ( 累加器 )... 20 版本号 (V2.2) 04.10.2010 iii

Contents 6.2.2 CONT ( 控制寄存器 )... 20 6.2.3 IOC5 ~ IOC6, IOC8 (I/O 端口控制寄存器 )... 21 6.2.4 IOC7, IOC9... 21 6.2.5 IOCA (WDT 控制寄存器 )... 21 6.2.6 IOCB ( 下拉控制寄存器 2)... 22 6.2.7 IOCC ( 漏极开路控制寄存器 )... 22 6.2.8 IOCD ( 上拉控制寄存器 2)... 23 6.2.9 IOCE ( 中断屏蔽寄存器 2)... 23 6.2.10 IOCF ( 中断屏蔽寄存器 1)... 24 6.3 TCC/WDT 与预分频器... 24 6.4 I/O 端口... 25 6.5 复位和唤醒... 28 6.5.1 复位... 28 6.5.2 状态寄存器的 RST,T 与 P 的状态... 36 6.6 中断... 38 6.7 数据 EEPROM ( 只适用于 EM78F661N)... 39 6.7.1 数据 EEPROM 控制寄存器... 39 6.7.1.1 RB (EEPROM 控制寄存器 )... 39 6.7.1.2 RC (128 字节 EEPROM 地址 )... 40 6.7.1.3 RD (128 字节 EEPROM 数据 )... 40 6.7.2 编程步骤 / 范例... 40 6.7.2.1 编程步骤... 40 6.7.2.2 程序范例... 41 6.8 模数转换器 (ADC)... 41 6.8.1 ADC 控制寄存器 (AISR/R5, ADCON/R6)... 42 6.8.1.1 Bank 2 R5 AISR (ADC 输入选择寄存器 )... 42 6.8.1.2 Bank 2 R6 ADCON (A/D 控制寄存器 )... 42 6.8.2 ADC 数据缓存 (ADDH, ADDL/R8, R9)... 43 6.8.3 A/D 采样时间... 43 6.8.4 A/D 转换时间... 44 6.8.5 休眠期间 A/D 运行... 44 6.8.6 编程步骤 / 事项... 44 6.8.6.1 编程步骤... 44 6.8.6.2 程序实例... 45 6.9 定时 / 计数器 3... 46 6.10 比较器... 48 6.10.1 外部参考信号... 48 6.10.2 比较器输出... 48 6.10.3 中断... 49 6.10.4 从休眠模式唤醒... 49 iv 版本号 (V2.2) 04.10.2010

Contents 6.11 振荡器... 49 6.11.1 振荡模式... 49 6.11.2 晶体振荡器 / 陶瓷谐振器 ( 晶体 )... 51 6.11.3 外部 RC 振荡器模式... 52 6.11.4 内部 RC 振荡模式... 53 6.12 代码选项寄存器... 54 6.12.1 代码选项寄存器 (Word 0)... 54 6.12.2 代码选项寄存器 (Word 1)... 55 6.12.3 用户 ID 寄存器 (Word 2)... 56 6.13 上电探讨... 56 6.14 外部上电复位电路... 57 6.15 残留电压保护... 57 6.16 指令集... 58 7 时序图... 62 8 最大绝对值... 62 9 DC 电气特性... 63 10 AC 电气特性... 67 附录 A 封装类型... 68 B 封装形式... 69 B.1 EM78Fx61NMS10... 69 B.2 EM78Fx61NAD16... 70 B.3 EM78Fx61NASO16A... 71 C 品质保证和可靠性... 72 C.1 地址缺陷检测... 72 版本号 (V2.2) 04.10.2010 v

Contents 规格书修订历史 版本号修订本描述日期 1.0 首发行版 2009/06/17 2.0 2.1 2.2 1. 删除了 ICE652N 信息. 2. 增加 CPU 低速 / 空闲模式与 TBRD 指令. 3. 赞成使用 ICE660N 来仿真 EM78F661N. 1. 重新定义 CPU 操作模式信息. 2. 增加了 IRC 模式选择信息在 Bank 1 R8<7,6> 和 Word 1<12>. 1. 修改了引脚描述的格式和唤醒信号表. 2. 整合了 EM78F561N 和 EM78F661N 规格说明书. 2009/09/08 2010/01/06 2010/04/10 vi 版本号 (V2.2) 04.10.2010

8 位微控制器 1 综述 EM78Fx61N 是采用低功耗高速 CMOS 工艺开发的 8 位高抗干扰性的微控制器 它们拥有 1K 13- 位片内 Flash 存储器,EM78F661N 有 128 8- 位在系统可编程 EEPROM 提供三个保护位用以保护用户代码, 十二个代码选项位可用于满足用户需求 基于增强 FLASH-ROM 的特性,EM78Fx61N 提供一种便利的开发和校验客户程序的途径 而且, 在使用开发编程工具的情况下, 利用开发工具可给这些 FLASH-ROM 的器件提供一种容易和有效的程序更新的优势 用户可以使用义隆烧录器容易地烧写自己的开发代码 2 产品特性 CPU 配置 1K 13 位片上 Flash 存储器 48 8 位片上寄存器 (SRAM) 128 字节系统可编程 EEPROM ( 只适用于 EM78F661N) * 擦写寿命 : 1,000,000 写 / 擦周期 数据保留超过 10 年 8- 级堆栈用于子程序嵌套 3 级可编程复位电压 LVR : 4.0V, 3.5V, 2.7V 耗电流小于 1.5 ma 在 5V / 4 MHz 耗电流典型值为 20 µa, 在 3V / 32kHz 在休眠模式下耗电流典型值为 1.5 µa I/O 端口配置 3 组双向 I/O 端口 : P5, P6 和 P8 14 I/O 引脚 唤醒端口 : P6 高灌端口 : P6 6 个可编程上拉 I/O 引脚 5 个可编程下拉 I/O 引脚 6 可编程漏极开漏 I/O 引脚 外部中断唤醒引脚 : P60 工作电压范围 2.4V~5.5V 在 -40 C~85 C ( 工规 ) 2.2V~5.5V 在 0 C~70 C ( 商规 ) 工作频率范围 ( 基于 2 个时钟 ) 晶振模式 : DC~16MHz @ 4.5V~5.5V ; DC~8MHz @ 3V~5.5V ; DC~4MHz @ 2.2V~5.5V ERC mode : DC~16MHz @ 4.5V~5.5V ; DC~8MHz @ 3V~5.5V ; IRC 模式 : DC~16MHz @ 4.5V~5.5V ; DC~4MHz @ 2.2V~5.5V 内部 RC 频率 温度 (-40 C~85 C) 偏移率 电压 (2.4V~5.5V) 制程 总计 4 MHz ± 3% ± 5% ± 2.5% ± 10.5% 16 MHz ± 3% ± 5% ± 2.5% ± 10.5% 8 MHz ± 3% ± 5% ± 2.5% ± 10.5% 6 个可用中断 内部中断 : 3 外部中断 : 3 6 通道 10 位精度模数转换器 一组比较器偏差电压 : 小于 5 mv 一个 8- 位定时 / 计数器 TC3 : 定时器 / 计数器 / PDO( 可编程分频器输出 )/PWM( 脉宽可调制 ) 外设配置 8- 位实时时钟 (TCC) 带有溢出中断 外部中断输入引脚 代码选项可选择一条指令周期含 2/4/8/16 个时钟周期 掉电 ( 休眠 ) 模式 高抗 EFT 特性 单指令周期命令 特性 可编程自由运行的看门狗 上电电压检测 (2.0V ~ 2.1V) 封装类型 : 10- 引脚 MSOP 118mil : EM78Fx61NMS10J/S 16- 引脚 DIP 300mil : EM78Fx61NAD16J/S 16- 引脚 SOP 150mil : EM78Fx61NASO16AJ/S 注意 : 绿色产品, 不含有害物质. DC~4MHz @ 2.2V~5.5V 版本号 (V2.2) 04.10.2010 1

8-Bit Microcontroller 3 引脚配置 (1) 10- 引脚 MSOP (2) 16- 引脚 DIP/SOP 图 3-1 EM78Fx61NMS10 图 3-2 EM78Fx61NAD16/EM78Fx61NASO16A 2 版本号 (V2.2) 04.10.2010

8 位微控制器 4 引脚描述 引脚名称功能输入类型输出类型描述 P50/VREF P50 ST CMOS 双向输入 / 输出引脚且可以下拉 VREF AN ADC 外部电压参考 P54 ST CMOS 双向输入 / 输出引脚 P54/OSCI/RCOUT P55/OSCO/ERCin OSCI XTAL 晶体 / 谐振振荡器时钟输入 RCOUT CMOS 内部 RC 振荡器的时钟输入外部 RC 振荡器的时钟输出 ( 漏极开路 ) P55 ST CMOS 双向输入 / 输出引脚 OSCO XTAL 晶体 / 谐振振荡器时钟输出 ERCin AN 外部 RC 输入引脚 P57 ST CMOS 双向输入 / 输出引脚 P57/TC3/PDO TC3 ST 定时器 3 时钟输入 PDO CMOS 可编程分频器输出 P60/AD0//INT P60 ST CMOS AD0 AN ADC0 输入 双向输入 / 输出引脚且可以编程下拉, 上拉, 漏极开路, 引脚状态改变唤醒 /INT ST 外部中断引脚 P61/AD1 P62/AD2 P63/AD3 P64/AD4 P65/AD5 P61 ST CMOS AD1 AN ADC1 输入 P62 ST CMOS AD2 AN ADC2 输入 P63 ST CMOS AD3 AN ADC3 输入 P64 ST CMOS AD4 AN ADC4 输入 P65 ST CMOS AD5 AN ADC5 输入 双向输入 / 输出引脚且可以编程下拉, 上拉, 漏极开路, 引脚状态改变唤醒 双向输入 / 输出引脚且可以编程下拉, 上拉, 漏极开路, 引脚状态改变唤醒 双向输入 / 输出引脚且可以编程下拉, 上拉, 漏极开路, 引脚状态改变唤醒 双向输入 / 输出引脚且可以编程上拉, 漏极开路, 引脚状态改变唤醒 双向输入 / 输出引脚且可以编程上拉, 漏极开路, 引脚状态改变唤醒 版本号 (V2.2) 04.10.2010 3

8-Bit Microcontroller 引脚名称功能输入类型输出类型描述 P80/CO2 P80 ST CMOS 双向输入 / 输出引脚 CO2 CMOS 比较器 2 的输出 (DATA) (DATA) ST CMOS 烧录引脚的数据引脚 P81/CIN2 P81 ST CMOS 双向输入 / 输出引脚 CIN2 AN 比较器 2 的正端 (CLK) (CLK) ST 烧录引脚的时钟引脚 P82/CIN2- P83//RESET (/RESET) P82 ST CMOS 双向输入 / 输出引脚 CIN2- AN 比较器 2 的负端 P83 ST CMOS 双向输入 / 输出引脚 /RESET ST 内部上拉复位引脚 (/RESET) ST 烧录引脚的复位引脚 VDD VDD 电源 电源 VSS VSS 电源 地 标识 : ST: 施密特触发输入 XTAL: 晶体 / 谐振振荡器的晶振引脚 AN: 模拟引脚 CMOS: CMOS 输出 4 版本号 (V2.2) 04.10.2010

8 位微控制器 5 结构图 图 5-1 功能结构图 版本号 (V2.2) 04.10.2010 5

8-Bit Microcontroller 6 功能描述 6.1 操作寄存器 6.1.1 R0 ( 间接寻址寄存器 ) R0 并不是实际的物理寄存器 它的主要功能是作为间接寻址指针 任何以 R0 为指针的指令实际上是对 RAM 选择寄存器 (R4) 所指的 RAM 寄存器进行操作 6.1.2 R1 ( 定时器时钟 ) R1 对来自 TCC 引脚的外部信号边沿或内部指令时钟周期进行加一计数,TCC 引脚信号边沿由 CONT 寄存器的 TE 位设定 ;R1 和其他寄存器一样可读写, 通过复位 PSTE(CONT-3) 设定 如果 PSTE(CONT-3) 置 1, 则预分频器分配给 TCC 当 TCC 寄存器写入一个值时, 预分频器的内容将清零 6.1.3 R2 ( 程序计数器和堆栈 ) 基于器件的型号,R2 和硬件堆栈都是 10 位宽的 结构描述如图 6-1 所示 产生 1KX13 位片内 FLASH-ROM 地址以获取对应的程序指令编码 一个程序页面是 1024 字长 当复位产生时, 程序计数器 R2 所有位被清 0 "JMP" 指令可直接装载程序计数器低 10 位 因此, JMP 可以在同一个页面内任意跳转 "CALL" 指令装载程序计数器的低 10 位 并将 PC1 值压入堆栈 因此子程序入口地址可定位在一个程序页的任一位置 "RET" ("RETL k", "RETI") 指令将栈顶数据装入 PC "ADD R2, A" 允许把 A 寄存器的内容加到当前 PC 上, 同时 PC 依次增加 的第九位及以上各位 "MOV R2, A" 允许从 A 寄存器装载一个地址值到 PC 的低 8 位, 同时 PC 的第九位及第十位 (A8 ~ A9) 保持不变 执行任何 ( 例如 : "MOV R2, A", "BC R2, 6" 等 ) 对 R2 进行写入操作的指令 ( 除 ADD R2,A 外 ),PC 的第九位及第十位 (A8 ~ A9) 都会保持不变 除了那些改变 R2 内容的指令和 TBRD 指令需要多于一个指令周期外, 所有指令都是单指令周期 (fclk/2,fclk/4,fclk/8 或 fclk/16) 6 版本号 (V2.2) 04.10.2010

8 位微控制器 图 6-1 程序计数器结构图 版本号 (V2.2) 04.10.2010 7

8-Bit Microcontroller Bank 0 Bank 1 Bank 2 Bank 3 01 R1 (TCC 缓存 ) 02 R2 (PC) 03 R3 ( 状态 ) 04 R4 (RSR,bank 选择 ) R4(7,6) (0,1) (1,0) (1,1) 05 06 R5 (Port 5 /IO 数据 ) R6 (Port 6 I/O 数据 ) R5 ( 保留 ) R6 ( 保留 ) R5 (ADC 输入选择寄存器 ) R6 (ADC 控制寄存器 ) R5 ( 保留 ) R6 (TBHP: 表格指针寄存器 ) IOC5 (Port 5 I/O 控制 ) IOC6 (Port 6 I/O 控制 ) 07 R7 ( 保留 ) R7 ( 保留 ) R7 ( 保留 ) R7 ( 比较器 2 控制寄存器 ) IOC7 ( 保留 ) 08 09 0A 0B 0C 0D 0E R8 (Port 8 I/O 数据 ) R9 (TBLP: 表格指针寄存器 ) RA ( 唤醒控制寄存器 ) RB (EEPROM 控制寄存器 ) RC (EEPROM 地址寄存器 ) RD (EEPROM 数据寄存器 ) RE ( 模式选择寄存器 ) R8 (IRC 选择寄存器 ) R9 ( 保留 ) RA ( 保留 ) RB ( 保留 ) RC ( 保留 ) R9 (AD 低 2- 位数据缓存 ) RC ( 保留 ) RD ( 保留 ) RD( 保留 ) RD ( 定时器 3 控制 ) IOCD ( 上拉控制 2) RE ( 保留 ) R8 (AD 高 8- 位数据缓存 ) RA ( 保留 ) RB ( 保留 ) RE( 保留 ) R8 ( 保留 ) R9 ( 保留 ) RA ( 保留 ) RB ( 保留 ) RC ( 保留 ) RE ( 定时器 3 数据缓存 ) IOC8 (Port 8 I/O 控制 ) IOC9 ( 保留 ) IOCA (WDT 控制 ) IOCB ( 下拉控制 2) IOCC ( 漏极开漏控制 1) IOCE ( 中断屏蔽 2) 0F RF ( 中断状态标志 1) RF ( 中断状态标志 2) RF ( 保留 ) RF ( 保留 ) IOCF ( 中断屏蔽 1) 10 : 1F 16- 字节通用寄存器 20 : 3F Bank 0 32x8 6.1.4 R3( 状态寄存器 ) 图 6-2 数据存储器结构图 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 - - - T P Z DC C Bit 7 ~ Bit 5 : 未用, 一直置为 0 Bit 4 (T): 时间溢出位 当执行 SLEP 和 WDTC 指令或上电后该位置 1, 当 WDT 溢出时清 0 Bit 3 (P): 省电标志位 执行 WDTC 指令或上电后该位置 1, 执行 SLEP 指令后该位清 0 Bit 2 (Z): 零标志位 8 版本号 (V2.2) 04.10.2010

8 位微控制器 算术运算或逻辑运算结果为 0 时该位置 1 Bit 1 (DC): 辅助进位标志位 Bit 0 (C): 进位标志位 6.1.5 R4 (RAM 选择寄存器 ) Bits 7 ~ 6: 用于选择 BANK0 ~ BANK3 Bits 5~0: 在间接寻址方式中用于选择寄存器 ( 地址 : 00~3F) 参见数据存储器结构图, 图 6-2 6.1.6 Bank 0 R5 ~ R6, R8 (Port 5 ~ Port 6, Port 8) R5 ~ R6, R8 是 I/O 寄存器. 6.1.7 Bank 0 R9 (TBLP: TBRD 指令的表格指针寄存器 ) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 RBit7 RBit6 RBit5 RBit4 RBit3 RBit2 RBit1 RBit0 Bits 7 ~ 0: 机器码地址的低 8 位. 注意 Bank 0 R9 溢出时将会向 Bank 3 R 进位. Bank 0 R9 下溢时将会从 Bank 3 R6 借位. 6.1.8 Bank 0 RA ( 唤醒控制寄存器 ) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 CMP2WE ICWE ADWE EXWE - - - - Bit 7 (CMP2WE): 比较器 2 唤醒使能位. 0: 禁止比较器 2 唤醒 1: 使能比较器 2 唤醒当比较器 2 输出状态改变中断用于进入中断向量或从休眠模式唤醒 EM78Fx61N, 则 CMP2WE 位必需设置为 使能. Bit 6 (ICWE): 端口 6 输入状态改变唤醒使能位 0: 禁止端口 6 输入状态改变唤醒 1: 使能端口 6 输入状态改变唤醒 Bit 5 (ADWE): ADC 唤醒使能位 0: 禁止 ADC 唤醒 1: 使能 ADC 唤醒在 A/D 转换器运行情况下, 当 AD 转换完成用来进入中断向量或将 EM78Fx61N 从休眠模式下运行的 A/D 唤醒时,ADWE 位必须先设置为使能 版本号 (V2.2) 04.10.2010 9

8-Bit Microcontroller Bit 4 (EXWE): 外部中断唤醒使能位 0: 禁止外部 /INT 引脚唤醒 1: 使能外部 /INT 引脚唤醒 Bits 3 ~ 0: 未用, 一直置为 0 6.1.9 Bank 0 RB (EEPROM 控制寄存器, 只适用于 EM78F661N) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 RD WR EEWE EEDF EEPC - - - Bit 7 (RD): 读控制寄存器 0: 不执行 EEPROM 的读操作 1: 读 EEPROM 的内容 (RD 可由软件置 1, 读指令完成后由硬件清 0) Bit 6 (WR): 写控制寄存器 0: 一个写 EEPROM 的周期完成 1: 一个写 EEPROM 的周期开始 (WR 由软件置 1, 写周期完成后由硬件清 0) Bit 5 (EEWE): EEPROM 写使能位 0: 禁止写 EEPROM 1: 允许写 EEPROM Bit 4 (EEDF): EEPROM 侦测标志位 0: 写周期完成 1: 写周期未完成 Bit 3 (EEPC): EEPROM 掉电控制位 0: 关断 EEPROM 1: EEPROM 正在运行 Bits 2 ~ 0: 未使用, 一直置为 0 6.1.10 Bank 0 RC (128 字节 EEPROM 地址, 只适用于 EM78F661N) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 - EE_A6 EE_A5 EE_A4 EE_A3 EE_A2 EE_A1 EE_A0 Bits 6 ~ 0: 128 字节 EEPROM 地址 6.1.11 Bank 0 RD (128 字节 EEPROM 数据, 只适用于 EM78F661N) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 EE_D7 EE_D6 EE_D5 EE_D4 EE_D3 EE_D2 EE_D1 EE_D0 Bits 7 ~ 0: 128 字节 EEPROM 数据 10 版本号 (V2.2) 04.10.2010

8 位微控制器 6.1.12 Bank 0 RE ( 模式选择寄存器 ) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 - TIMERSC CPUS IDLE - - - - Bit 7: 未使用, 一直置为 0. Bit 6 (TIMERSC): TCC, TC3 时钟源选择. 0: Fs 用于 Fc 1: Fm 用于 Fc Bit 5 (CPUS): CPU 振荡源选择. 0: Fs : 副频,WDT 内部 RC 的时基 1: Fm : 主振荡时钟当 CPUS=0,CPU 振荡器选择副振荡器, 主振荡器停止 Bit 4 (IDLE): 空闲模式使能位. 0: IDLE= 0 SLEP 指令 休眠模式 1: IDLE= 1 SLEP 指令 空闲模式 CPU 操作模式 版本号 (V2.2) 04.10.2010 11

8-Bit Microcontroller 振荡器 ( 正常模式源 ) CPU 模式状态 振荡器稳定时间 (s) 1 正常模式 / 低速模式切换后数的时钟数 (CLK) 2 晶振 ; 1M ~ 16 MHz 休眠 / 空闲 正常 254 CLK 0.5 ms ~ 2 ms 低速 正常 254 CLK 休眠 / 空闲 低速 < 100 µs 32 CLK ERC ; 3.5 MHz IRC ; 4M, 8M, 16 MHz 休眠 / 空闲 正常 < 5 µs 低速 正常休眠 / 空闲 低速 < 100 µs 休眠 / 空闲 正常 < 2 µs 低速 正常休眠 / 空闲 低速 < 100 µs 32 CLK 32 CLK 1 振荡器的稳定时间依赖于振荡器的特性. 注意 2 振荡器稳定后, CPU 将数 254/32 CLK 在正常 / 低速模式下然后再工作在正常 / 低速模式 例 1 : 当工作在 4 MHz IRC 模式下, 从休眠模式唤醒到正常模式, 总的唤醒时间是 2 µs 32 CLK @ 4 MHz. 例 2 : 当工作在 4 MHz IRC 模式下, 从休眠模式唤醒到低速模式, 总的唤醒时间是 100 µs 32 CLK @ 16kHz. Bits 3 ~ 0: 未使用, 一直置为 0. 6.1.13 Bank 0 RF ( 中断标志位寄存器 1) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 - ADIF - - - EXIF ICIF TCIF 注意 : 1 表示中断请求 0 表示没有中断发生 Bit 7: 未使用, 一直置为 0 Bit 6 (ADIF): 模数转换器中断标志位 当 AD 转换完成时置位, 由软件清 0 Bits 5 ~ 3: 未使用, 一直置为 0 Bit 2 (EXIF): 外部中断标志位 /INT 引脚下降沿发生时置位, 由软件清 0 Bit 1 (ICIF): 端口 6 输入状态改变中断标志位 当端口 6 输入状态改变时置位, 由软件清 0 Bit 0 (TCIF): TCC 溢出中断标志位 当 TCC 溢出时置位, 由软件清 0 12 版本号 (V2.2) 04.10.2010

8 位微控制器 注意 RF 可由指令清零但不能置位 IOCF 为中断屏蔽寄存器 读 RF 的结果是 RF 与 IOCF 逻辑与 的结果 6.1.14 R10 ~ R3F 所有这些寄存器是 8 位通用寄存器 6.1.15 Bank 1 R5~R7 这些寄存器保留. 6.1.16 Bank 1 R8 (IRC 选择寄存器 ) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 RCM1 RCM0 - - - - - - Bits 7 ~ 6 (RCM1 ~ RCM0): IRC 模式选择位. Bank 1 R8<7, 6> 将使能当 Word 1<12> COBS0 = 1. Bank 1 R8<7,6> 烧录器校正 IRC RCM1 RCM0 频率 工作电压范围 稳定时间 0 0 4 MHz ± 2.5% 2.2V ~ 5.5V < 5 µs 4 MHz 0 1 16 MHz ± 10% 4.5V ~ 5.5V < 1.5 µs 1 0 8 MHz ± 10% 3.0V ~ 5.5V < 3 µs 1 1 x - - 0 0 4 MHz ± 10% 2.2V ~ 5.5V < 6 µs 16 MHz 0 1 16 MHz ± 2.5% 4.5V ~ 5.5V < 1.25 µs 1 0 8 MHz ± 10% 3.0V ~ 5.5V < 3 µs 1 1 x - - 0 0 4 MHz ± 10% 2.2V ~ 5.5V < 6 µs 8 MHz 0 1 16 MHz ± 10% 4.5V ~ 5.5V < 1.5 µs 1 0 8 MHz ± 2.5% 3.0V ~ 5.5V < 2.5 µs 1 1 x - - 注意 Bank1 R8<7,6> 的初值将保持与 Word 1<3,2> 的值一致. 当从 A 频率切换到 B 频率时, 需等待一段时间猜能工作. 等待的时间取决于 B- 频率. 版本号 (V2.2) 04.10.2010 13

8-Bit Microcontroller 例如 : 1 st 步骤当客户在烧录器上选择 4 MHz, Bank 1 R8<7,6> 的初始值为 00, 同样 Word 1<3,2> 的值为 00. 如果 MCU 自由运行, 它将工作在 4 MHz ± 2.5%. 请参考下表. Bank 1 R8<7,6> 烧录器校正 IRC 频率工作电压范围稳定时间 RCM1 RCM0 0 0 4 MHz ± 2.5% 2.2V ~ 5.5V < 5 µs 4 MHz 0 1 16 MHz ± 10% 4.5V ~ 5.5V < 1.5 µs 1 0 8 MHz ± 10% 3.0V ~ 5.5V < 3 µs 1 1 x - - 2 nd 步骤如果想要设置 Bank 1 R8<7,6> = 01 当 MCU 工作在 4 MHz ± 2.5% 时, 则 MCU 需要等待 1.5 µs, 然后将继续工作在 16 MHz ± 10%. Bank 1 R8<7,6> 烧录器校正 IRC RCM1 RCM0 频率 工作电压范围 稳定时间 0 0 4 MHz ± 2.5% 2.2V ~ 5.5V < 5 µs 4 MHz 0 1 16 MHz ± 10% 4.5V ~ 5.5V < 1.5 µs 1 0 8 MHz ± 10% 3.0V ~ 5.5V < 3 µs 1 1 x - - 3 rd 步骤如果想要设置 Bank 1 R8<7,6> = 10 当 MCU 工作在 16 MHz ± 10% 时, 则 MCU 需要等待 3 µs, 然后将继续工作在 8 MHz ± 10%. Bank 1 R8<7,6> 烧录器校正 IRC RCM1 RCM0 频率 工作电压范围 稳定时间 0 0 4 MHz ± 2.5% 2.2V ~ 5.5V < 5 µs 4 MHz 0 1 16 MHz ± 10% 4.5V ~ 5.5V < 1.5 µs 1 0 8 MHz ± 10% 3.0V ~ 5.5V < 3 µs 1 1 x - - 4 th 步骤如果想要设置 Bank 1 R8<7,6> = 00 当 MCU 工作在 8 MHz ± 10% 时, 则 MCU 需要等待 5 µs, 然后见继续工作在 4 MHz ± 2.5%. Bank 1 R8<7,6> 烧录器校正 IRC RCM1 RCM0 频率 工作电压范围 稳定时间 0 0 4 MHz ± 2.5% 2.2V ~ 5.5V < 5 µs 4 MHz 0 1 16 MHz ± 10% 4.5V ~ 5.5V < 1.5 µs 1 0 8 MHz ± 10% 3.0V ~ 5.5V < 3 µs 6.1.17 Bank 1 R9~RE 这些寄存器保留. 1 1 x - - 14 版本号 (V2.2) 04.10.2010

8 位微控制器 6.1.18 Bank 1 RF ( 中断状态寄存器 2) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 CMP2IF - TC3IF - - - - - Bit 7 (CMP2IF): 比较器 2 中断标志. 当比较器 2 的输出发生改变时, 由软件置位. Bit 6: 未用, 一直置为 0. Bit 5 (TC3IF): 8- 位定时器 / 计数器 3 中断标志位. Bits 4 ~ 0: 未用, 一直置为 0. 注意 中断标志位由软件自动置位. 必需由软件清零. 6.1.19 Bank 2 R5 AISR (ADC 输入选择寄存器 ) AISR 寄存器定义了 Port 6 的引脚作为模拟输入或数字 I/O. Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 - - ADE5 ADE4 ADE3 ADE2 ADE1 ADE0 Bits 7 ~ 6: 未使用, 一直置为 0. Bit 5 (ADE5): P65 引脚 AD 转换器使能位 0: 禁止 ADC5, P65 作为 I/O 引脚. 1: 使能 ADC5 作为模拟输入引脚. Bit 4 (ADE4): P64 引脚 AD 转换器使能位 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 作为模拟输入引脚. 版本号 (V2.2) 04.10.2010 15

8-Bit Microcontroller 下表列出了 P60/ADC0//INT 的优先级. P60 / ADC0 / /INT 引脚优先级 高 中 低 /INT ADC0 P60 6.1.20 Bank 2 R6 ADCON (A/D 控制寄存器 ) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 VREFS CKR1 CKR0 ADRUN ADPD ADIS2 ADIS1 ADIS0 Bit 7 (VREFS): ADC 的 Vref 输入源 0: ADC 的 Vref 与 Vdd 连接 ( 默认 ), 并且 P50/VREF 引脚作为 P50 1: ADC 的 Vref 与 P50/VREF 连接 Bit 6 ~ Bit 5 (CKR1 ~ CKR0): ADC 振荡时钟预分频比 00 = 1: 4 ( 默认值 ) 01 = 1: 1 10 = 1: 16 11 = 1: 2 CKR1/CKR0 工作模式最大工作频率 00 F OSC/4 4 MHz 01 F OSC 1 MHz 10 F OSC/16 16 MHz 11 F OSC/2 2 MHz Bit 4 (ADRUN): ADC 开始运行 0: 转换完成时复位, 此位不能通过软件复位 1: AD 转换开始, 此位能通过软件置位 A/D Bit 3 (ADPD): ADC 省电模式 0: 在 CPU 保持运行的条件下关掉参考电阻节省功耗 1: ADC 正在运行 Bits 2 ~ 0 (ADIS2~ADIS0): 模拟输入选择 000 = AN0/P60 001 = AN1/P61 010 = AN2/P62 011 = AN3/P63 100 = AN4/P64 101 = AN5/P65 16 版本号 (V2.2) 04.10.2010

8 位微控制器 110 = x 111 = x 下表列出了 P50/VREF 引脚的优先级. 它们只有在 ADIF 位和 ADRUN 位都为低时才可以改变. P50/VREF 引脚优先级高低 VREF P50 6.1.21 Bank 2 R7 这些寄存器保留. 6.1.22 Bank 2 R8 ADDH (AD 高 8- 位数据缓存 ) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 AD9 AD8 AD7 AD6 AD5 AD4 AD3 AD2 档 A/D 转换完成时, 转换结果的高 8- 位被加载到 ADDH. ADRUN 位被清零, ADIF 置位. R8 只读. 6.1.23 Bank 2 R9 ADDL (AD 低 2- 位数据缓存 ) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 - - - - - - AD1 AD0 Bits 7 ~ 2: 未用, 读作 0 Bits 1 ~ 0 (AD1~AD0): AD 低 2- 位数据缓存. R9 只读. 6.1.24 Bank 2 RA~RF 这些寄存器保留. 6.1.25 Bank 3 R5 这些寄存器保留. 6.1.26 Bank 3 R6 (TBHP: TBRD 指令的表格指针寄存器 ) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 MLB - - - - - RBit9 RBit8 Bit 7 (MLB): 选择机器码的 MSB 或 LSB 放入此寄存器. 机器码由 TBLP 和 TBHP 寄存器为指针. Bits 6 ~ 2: 未用, 一直置为 0. Bits 1 ~ 0: 机器码地址的高 2 位. 6.1.27 Bank 3 R7 (CMPCON: 比较器 2 控制寄存器 ) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 - - - CPOUT2 COS21 COS20 - - Bit 7 ~ Bit 5: 未用, 一直置为 0. 版本号 (V2.2) 04.10.2010 17

8-Bit Microcontroller Bit 4 (CPOUT2): 比较器 2 的输出结果 Bit 3 ~ Bit 2 (COS21: COS20): 比较器 2 选择位. COS21 COS20 功能描述 0 0 比较器 2 未使用, P80 作为通用 I/O 引脚 0 1 作为比较器 2 且 P80 作为通用 I/O 引脚 1 0 作为比较器 2 且 P80 作为比较器 2 的输出引脚 (CO) 1 1 未使用 Bit 1 ~ Bit 0: 未用, 一直置为 0. 6.1.28 Bank 3 R8 ~ RC 这些寄存器保留. 6.1.29 Bank 3 RD TC3CR ( 定时器 3 控制 ) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 TC3FF1 TC3FF0 TC3S TC3CK2 TC3CK1 TC3CK0 TC3M1 TC3M0 Bits 7 ~ 6 (TC3FF1 ~ TC3FF0): 定时器 / 计数器 3 触发控制 TC3FF1 TC3FF0 工作模式 0 0 清零 0 1 触发 1 0 置位 1 1 保留 Bit 5 (TC3S): 定时器 / 计数器 3 启动控制 0: 停止并清除计数器 1: 启动 Bits 4 ~ 2 (TC3CK2 ~ TC3CK0): 定时 / 计数器 3 时钟源选择 TC3CK2 TC3CK1 TC3CK0 时钟源分辨率最大时间分辨率最大时间 正常, 空闲模式 Fc=4M Fc=4M Fc=16K Fc=16K 0 0 0 Fc/2 11 512 µs 131072 µs 128 ms 32768 ms 0 0 1 Fc/2 7 32 µs 8192 µs 8 ms 2048 ms 0 1 0 Fc/2 5 8 µs 2048 µs 2 ms 512 ms 0 1 1 Fc/2 3 2 µs 512 µs 500 µs 128 ms 1 0 0 Fc/2 2 1 µs 256 µs 250 µs 64 ms 1 0 1 Fc/2 1 500 ns 128 µs 125 µs 32 ms 1 1 0 Fc 250 ns 64 µs 62.5 µs 16 ms 1 1 1 外部时钟 (TC3 引脚 ) - - - - 18 版本号 (V2.2) 04.10.2010

8 位微控制器 Bits 1 ~ 0 (TC3M1 ~ TC3M0): 定时器 / 计数器 3 工作模式选择位 TC3M1 TC3M0 工作模式 0 0 定时器 / 计数器 0 1 保留 1 0 可编程分频器输出 1 1 脉冲宽度调制输出 图 6-3 定时器 / 计数器 3 配置定时器模式下, 用内部时钟 ( 上升沿触发 ) 执行加计数操作, 当加计数器内容与 TCR3 内容相匹配时, 中断产生且计数器清零, 计数器清零之后加操作重新开始 计数器模式下, 用输入引脚 (TC3 引脚 ) 的外部时钟执行加计数操作, 当加计数器内容与 TCR3 内容相匹配时, 中断产生且计数器清零, 计数器清零之后加操作重新开始 可编程分频器输出 (PDO) 模式下, 用内部时钟执行加计数操作,TCR3 内容与加计数器内容做比较,F/F 输出被触发, 每次匹配被发现时计数器被清零,F/F 输出被取反并输出到 /PDO 引脚 该模式可产生 50% 占空比的脉冲输出 F/F 可被程序初始化, 复位时其初始值为 0, 每次 /PDO 输出被触发时 TC3 都产生中断 图 6-4 PDO 模式时序图 版本号 (V2.2) 04.10.2010 19

8-Bit Microcontroller 脉冲宽度调制 (PWM) 输出模式下, 用内部时钟执行加计数操作,TCR3 内容与加计数器内容作比较, 当匹配被发现时 F/F 被触发 当计数器正在计数, 而计数器溢出时 F/F 又被触发, 则计数器清零 F/F 输出被反向并输出到 /PWM 引脚, 每次溢出发生时即产生 TC3 中断 TCR3 被设置成 2 级移位寄存器, 输出期间输出不会改变直到一个输出周期完成, 即使 TCR3 被重写 因此, 输出可不断地被改变, 在数据载入 TCR3 后通过置 TC3S 位为 1 TRC3 第一次被移位 图 6-5 PWM 模式时序图 6.1.30 Bank 3 RE TC3D ( 定时器 3 数据缓存 ) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 TC3D7 TC3D6 TC3D5 TC3D4 TC3D3 TC3D2 TC3D1 TC3D0 Bits 7 ~ 0 (TC3D7 ~ TC3D0): 8 位计数器 / 定时器 3 数据缓存. 6.1.31 Bank 3 RF 这些寄存器保留. 6.2 特殊功能寄存器 6.2.1 A ( 累加器 ) 用于内部数据传输或指令操作数通常暂存在累加器中,A 为不可寻址的寄存器 6.2.2 CONT ( 控制寄存器 ) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 INTE /INT - - PSTE PST2 PST1 PST0 Bit 7 (INTE): INT 信号边沿 0: 在 INT 引脚上升沿时产生中断 1: 在 INT 引脚下降沿时产生中断 Bit 6 (/INT): 中断使能位 0: 由指令 DISI 或硬件屏蔽中断 1: 由 ENI/RETI 指令使能 20 版本号 (V2.2) 04.10.2010

8 位微控制器 Bits 5 ~ 4: 未用, 一直置为 0 Bit 3 (PSTE): TCC 预分频器使能位 0: 禁止预分频器,TCC 预分频比为 1:1 1: 预分频使能器, TCC 预分频比由 Bit 2 ~ Bit 0 定义. Bit 2 ~ Bit 0 (PST 2 ~ PST0): TCC 分频比位 PST2 PST1 PST0 TCC 分频比 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 CONT 寄存器可读写. 6.2.3 IOC5 ~ IOC6, IOC8 (I/O 端口控制寄存器 ) 1 定义相关引脚为高阻抗输入状态, 0 定义相关引脚为输出状态 IOC5 ~ IOC6, IOC8 寄存器可读写 6.2.4 IOC7, IOC9 保留寄存器 6.2.5 IOCA (WDT 控制寄存器 ) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 WDTE EIS - - PSWE PSW2 PSW1 PSW0 Bit 7 (WDTE): 控制位用于使能看门狗定时器 0: 禁止 WDT 1: 使能 WDT WDTE 可读写 Bit 6 (EIS): 控制位用于定义 P60(/INT) 引脚的功能 0: P60, 双向 I/O 引脚 1: /INT, 外部中断引脚 此时,P60 的控制位 (IOC6 的第 0 位 ) 必须设为 1 当 EIS 为 0 时,/INT 被屏蔽 当 EIS 为 1 时, 也可以通过读 PORT6(R6) 而知道 /INT 引脚的状态 EIS 可读写 Bits 5~4: 未使用, 一直置为 0 Bit 3 (PSWE): WDT 预分频器使能位版本号 (V2.2) 04.10.2010 21

8-Bit Microcontroller 0: 禁止预分频器,WDT 预分频比为 1:1 1: 使能预分频器,WDT 预分频比由 Bit 0~Bit 2 定义 Bit 2 ~ Bit 0 (PSW2 ~ PSW0): WDT 分频比位 PSW2 PSW1 PSW0 WDT 分频比 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 6.2.6 IOCB ( 下拉控制寄存器 2) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 /PD63 /PD62 /PD61 /PD60 - - - /PD50 Bit 7 (/PD63): 控制位用于使能 P63 引脚下拉功能. 0: 使能内部下拉 1: 禁止内部下拉 Bit 6 (/PD62): 控制位用于使能 P62 引脚下拉功能. Bit 5 (/PD61): 控制位用于使能 P61 引脚下拉功能. Bit 4 (/PD60): 控制位用于使能 P60 引脚下拉功能. Bits 3 ~ 1: 未用, 一直置为 0. Bit 0 (/PD50): 控制位用于使能 P50 引脚下拉功能. IOCB 寄存器可读写. 6.2.7 IOCC ( 漏极开路控制寄存器 ) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 - - OD65 OD64 OD63 OD62 OD61 OD60 Bits 7 ~ 6: 未用, 一直置为 0. Bit 5 (OD65): 控制位用于使能 P65 引脚漏极开路功能 0: 禁止漏极开路输出 1: 使能漏极开路输出 Bit 4 (OD64): 控制位用于使能 P64 引脚漏极开路功能 Bit 3 (OD63): 控制位用于使能 P63 引脚漏极开路功能 Bit 2 (OD62): 控制位用于使能 P62 引脚漏极开路功能 22 版本号 (V2.2) 04.10.2010

8 位微控制器 Bit 1 (OD61): 控制位用于使能 P61 引脚漏极开路功能 Bit 0 (OD60): 控制位用于使能 P60 引脚漏极开路功能 IOCC 寄存器可读写. 6.2.8 IOCD ( 上拉控制寄存器 2) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 - - /PH65 /PH64 /PH63 /PH62 /PH61 /PH60 Bits 7 ~ 6: 未用, 一直置为 0. Bit 5 (/PH65): 控制位用于使能 P65 引脚上拉功能 0: 使能上拉功能 1: 禁止上拉功能 Bit 4 (/PH64): 控制位用于使能 P64 引脚上拉功能. Bit 3 (/PH63): 控制位用于使能 P63 引脚上拉功能. Bit 2 (/PH62): 控制位用于使能 P62 引脚上拉功能. Bit 1 (/PH61): 控制位用于使能 P61 引脚上拉功能. Bit 0 (/PH60): 控制位用于使能 P60 引脚上拉功能. IOCD 寄存器可读写. 6.2.9 IOCE ( 中断屏蔽寄存器 2) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 CMP2IE - TC3IE - - - - - Bit 7 (CMP2IE): CMP2IF 中断使能位. 0; 禁止 CMP2IF 中断 1: 使能 CMP2IF 中断当比较器 2 输出状态改变用于进入中断向量或进入下一条指令,CMP2IE 位必需设置为 使能. Bit 6: 未用, 一直置为 0 Bit 5 (TC3IE): 中断使能位 0; 禁止 TC3IF 中断 1: 使能 TC3IF 中断 Bits 4 ~ 0: 未用, 一直置为 0 注意 用户必需设置 IOCE 寄存器的 Bit 6 为 0. IOCE 寄存器可读写. 版本号 (V2.2) 04.10.2010 23

8-Bit Microcontroller 6.2.10 IOCF ( 中断屏蔽寄存器 1) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 - ADIE - - - EXIE ICIE TCIE Bit 7: 未用, 一直置为 0 Bit 6 (ADIE): ADIF 中断使能位 0: 禁止 ADIF 中断 1: 使能 ADIF 中断当 ADC 完成用于进入中断向量或进入下一条指令时,ADIE 位必需设置为 使能 Bits 5 ~ 3: 未用, 一直置为 0 Bit 2 (EXIE): EXIF 中断使能位 0: 禁止 EXIF 中断 1: 使能 EXIF 中断 Bit 1 (ICIE): ICIF 中断使能位 0: 禁止 ICIF 中断 1: 使能 ICIF 中断 Bit 0 (TCIE): TCIF 中断使能位 0: 禁止 TCIF 中断 1: 使能 TCIF 中断注意 用户必需设置 IOCF 寄存器的 Bit 7 为 0. 通过置 IOCF 中相应的控制位为 1, 使能各个相关中断 总中断是由 ENI 指令使能, 由 DISI 指令禁止. IOCF 寄存器可读写. 6.3 TCC/WDT 与预分频器 有两个 8 位的计数器分别作为 TCC 和 WDT 的预分频器 CONT 寄存器的 PST2~PST0 位用于确定 TCC 的预分频比 同样的,IOCA 寄存器的 PSW2~PSW0 位用于确定 WDT 的预分频比 每次写 TCC 都会将预分频器清 0 执行 WDTC 和 SLEP 指令会将 WDT 和其预分频器清 0 图 6.6-1 描述了 EM78Fx61N 的 TCC/WDT 的电路结构 R1(TCC) 是一个 8 位定时器 TCC 的时钟源只可以是内部时钟 如果 TCC 的信号源是来自内部时钟, 每一 Fc 时钟 TCC 就加 1( 没有预分频器 ) 若进入休眠 TCC 将停止工作 看门狗定时器是一个自由运行的片内 RC 振荡器 即使在其它振荡器关闭的情况下 ( 也就是休眠模式下 ),WDT 仍保持运行 不管是在正常模式还是在休眠模式,WDT 定时器溢出 ( 若使能 ) 都将使 MCU 复位 在正常模式下, 通过软件设置可任意地禁止和使 24 版本号 (V2.2) 04.10.2010

8 位微控制器 能 WDT, 参考 IOCA 寄存器的 WDTE 位设置 在没有 WDT 预分频器情况下,WDT 溢出时间大约是 18 ms 1 ( 振荡器的启动时间 ). 6.4 I/O 端口 图 6.6-1 EM78Fx61N 的 TCC 与 WDT 结构框图 I/O 寄存器 Port5, 6 与 8 均为三态双向 I/O 端口 Port6 可由软件设置为内部上拉, 此外,Port 6 也可由软件设置为漏极开路输出 Port 6 具有输入状态改变中断 ( 或唤醒 ) 的功能 P50,P60 ~ P63 与引脚可由软件设置为下拉 每个 I/O 引脚都可通过其对应的 I/O 控制寄存器 (IOC5 ~ IOC6, IOC8) 设置为 输入 或 输出 I/O 寄存器和控制寄存器都是可读写的 Ports 5 ~ 6 与 Port8 I/O 接口电路如下列图所示 : 图 6-7, 6-8 (a), 6-8 (b) 图 6-9 PCRD Q P R D _ Q CLK C L PCWR PORT Q _ Q P R D CLK C L PDWR IOD PDRD 0 1 M U X 注 : 下拉电路没在图中显示 图 6-7 Ports 5 ~ 6, Port 8 的 I/O 端口与 I/O 控制寄存器电路 1 VDD=5V, WDT 溢出周期 = 16ms ± 7.5% 版本号 (V2.2) 04.10.2010 VDD=3V, WDT 溢出周期 = 18ms ± 7.5% 25

8-Bit Microcontroller PCRD Q _ Q P R D CLK C L PCWR P60 /INT PORT Bit 2 of IOCF Q _ Q P R D CLK C L PDWR IOD D P R CLK C L Q _ Q 0 1 M U X PDRD T10 P D R CLK C L Q _ Q INT 注 : 上 ( 下 ) 拉与漏极开路没有在图中显示 图 6-8 (a) P60 (/INT) 的 I/O 端口与 I/O 控制寄存器电路 PCRD Q _ Q P R D CLK C L PCWR P61~P63 PORT Q _ Q P R D CLK C L PDWR IOD 0 1 M U X PDRD TIN D P R CLK C L Q _ Q 注 : 上 ( 下 ) 拉与漏极开路没有在图中显示 图 6-8 (b) P61~P65 I/O 端口与 I/O 控制寄存器电路 26 版本号 (V2.2) 04.10.2010

8 位微控制器 图 6-9 Port 6 I/O 端口输入状态改变中断 / 唤醒结构图 表 6.4-1 Port6 输入状态改变中断 / 唤醒功能的用法 (I) 由 Port 6 输入状态改变唤醒 (a) 休眠之前 端口 6 输入状态改变中断 / 唤醒功能的用法 (II) Port 6 输入状态改变中断 1. 读 Port 6 (MOV R6,R6) 1. 禁止 WDT 2 ( 小心使用 ) 2. 执行 "ENI" 2. 读 Port 6 (MOV R6,R6) 3. 使能中断 ( 设置 IOCF.1) 3 a. 使能中断 ( 置 IOCF.1), 唤醒之后, 如果 ENI 则跳转到中断矢量地址 (006H), 如果 DISI 则执行下一条指令 3 b. 禁止中断 ( 清 IOCF.1), 总是执行下一条指令 4. 使能唤醒使能位 ( 置 RA.6) 5. 执行 "SLEP" 指令 (b) 唤醒之后 1. 如果 "ENI" 中断向量 (006H) 2. 如果 "DISI" 下一条指令 4. 如果 Port 6 状态改变 ( 中断 ) 中断矢量地址 (006H) 2 软件禁止 WDT, 但是, 使用 Port 6 状态改变唤醒功能之前硬件必须使能 WDT. ( 代码配置寄存器 Word0 的第 6 位 (ENWDTB) 设为 1). 版本号 (V2.2) 04.10.2010 27

8-Bit Microcontroller 6.5 复位和唤醒 6.5.1 复位 下面的任何事件之一可以触发复位 : (1) 上电复位 (2) /RESET 引脚输入低电平 (3) WDT 溢出 ( 如果使能 ) 在检测到复位信号之后, 器件将保持约 18 ms 3 ( 振荡器启动时间 ) 的复位状态 振荡器继续运行, 或起振 程序计数器 (R2) 被清 0 所有 I/O 引脚被设为输入模式 ( 高阻抗状态 ) 看门狗计数器和预分频器被清 0 上电时,R3 的高三位清 0 RB,RC,RD,RE 寄存器的所有位都保持原来的状态 CONT 寄存器的所有位置为 "0". IOCA 寄存器的所有位置为 "0". IOCB 寄存器的所有位置为 "1". IOCC 寄存器的所有位置为 "0". IOCD 寄存器的所有位置为 "1". IOCE 寄存器的所有位置为 "0". IOCF 寄存器的所有位置为 "0". 执行 SLEP 指令进入休眠模式 ( 省电模式 ), 当进入休眠模式时,WDT( 如果使能 ) 清 0 但会继续运行 唤醒后, 在 RC 模式中, 唤醒时间是 10 µs 在高频晶体模式中, 唤醒时间是 800ms 控制器可被如下情况唤醒 : (1) /RESET 引脚上输入的外部复位信号 (2) WDT 溢出 ( 若使能 ) (3) Port 6 输入状态改变 ( 若使能 ) (4) 比较器输出状态改变 ( 若 CMPWE 使能 ) (5) A/D 转换完成 ( 若 ADWE 使能 ) 3 Vdd = 5V, 起振周期 = 16ms ± 7.5% Vdd = 3V, 起振周期 = 18ms ± 7.5% 28 版本号 (V2.2) 04.10.2010

8 位微控制器 (6) 外部中断引脚 (P60, /INT) 状态变化 ( 若 EXWE 使能 ) 前两种情况会引起 EM78Fx61N 复位 R3 的 T 和 P 标志位可用来判断复位 ( 唤醒 ) 的来源, 第 3, 4, 5, 6 种情况唤醒后程序继续执行, 全局中断 ( 执行 ENI 或 DISI) 决定唤醒后控制器是否跳到中断向量地址 如果在 SLEP 指令执行之前执行 ENI 指令, 唤醒后程序将从地址 0 6, 0 15, 0 30, 0 3 处执行中断处理 如果在 SLEP 指令执行之前执行 DISI 指令, 唤醒后从 SLEP 的下一条指令开始执行 唤醒后, 在 RC 模式中, 唤醒时间是 10 µs 在高频晶体模式中, 唤醒时间是 800ms 在进入休眠模式之前, 第 2~6 种情况可被使能, 如下 : [a] 如果 WDT 在休眠之前使能,RE 的所有位禁止, 因此,EM78Fx61N 只能被情况 1,2 唤醒, 更多细节请参考 中断 章节 [b] 如果 Port6 输入状态改变用于唤醒 EM78Fx61N 且休眠前使能 RA 寄存器的 ICWE 位,WDT 须禁止, 因此,EM78Fx61N 只能由情况 3 唤醒 [c] 如果比较器 2 输出状态改变用于唤醒 EM78Fx61N 且在休眠之前 RA 寄存器的 CMPWE 位使能,WDT 须由软件禁止, 因此,EM78Fx61N 只能由情况 4 唤醒 [d] 如果 AD 转换完成用于唤醒 EM78Fx61N 且在休眠前 RA 寄存器的 ADWE 位使能, WDT 须由软件禁止, 因此,EM78Fx61N 只能由情况 5 唤醒 [e] 如果外部 (P60,/INT) 引脚状态改变用于唤醒 EM78Fx61N 且在休眠前 RA 寄存器的 EXWE 位使能,WDT 须由软件禁止, 因此,EM78Fx61N 只能由情况 6 唤醒 如果 Port6 输入状态改变中断被用来唤醒 EM78Fx61N( 情况 [b]), 在 SLEP 指令之前必须执行如下指令 : MOV A, @0xxx1000b ; 选择 WDT 分频比, 禁止 WDT IOW IOCA WDTC ; 清 WDT 和分频比 MOV R6, R6 ; 读 Port 6 ENI ( 或 DISI) ; 使能 ( 或禁止 ) 全局中断 BC R4, 7 ; 选择 Bank0 BC R4, 6 MOV A, @0100xxxxb ; 使能 Port 6 输入状态改变唤醒 MOV RA,A MOV A, @xxxxxx1xb ; 使能 Port 6 输入状态改变中断 IOW IOCF SLEP ; 休眠 同样, 如果使用比较器 2 中断用于唤醒 EM78Fx61N( 如上面的情况 [C]), 在进入休眠 之前必须按如下步骤设置 : BS R4, 7 ; 选择 Bank 3 BS R4, 6 MOV A, @xxxx10xxb ; 选择比较器且 P80 作为 CO 引脚 MOV R7,A MOV A, @0xxx1000b ; 选择 WDT 分频比并禁止 WDT IOW IOCA WDTC ; 清 WDT 和分频比 ENI ( 或 DISI) ; 使能 ( 或禁止 ) 全局中断 BC R4, 7 ; 选择 Bank 0 BC R4, 6 MOV A, @1000xxxxb ; 使能比较器输出状态改变唤醒 MOV RA,A MOV A, @10000000b ; 使能比较器输出状态改变中断 IOW IOCE SLEP ; 休眠 版本号 (V2.2) 04.10.2010 29

8-Bit Microcontroller 唤醒和中断模式所有项目描述如下 : 唤醒信号 外部 INT Port 6 引脚改变 条件信号 EXWE = 0, EXIE = 0 EXWE = 0, EXIE = 1 EXWE = 1, EXIE = 0 EXWE = 1, EXIE = 1 ICWE = 0, ICIE = 0 ICWE = 0, ICIE = 1 ICWE = 1, ICIE = 0 ICWE = 1, ICIE = 1 休眠模式空闲模式低速模式正常模式 DISI ENI DISI ENI DISI ENI DISI ENI 唤醒 下一条指令 唤醒 下一条指令 唤醒无效唤醒无效中断无效中断无效 唤醒无效唤醒无效下一条指令 唤醒 下一条指令 唤醒 中断向量 唤醒 下一条指令 唤醒 下一条指令 唤醒 中断向量 下一条指令 中断无效 中断 中断向量 中断 中断向量 下一条指令 下一条指令 中断无效 唤醒无效唤醒无效中断无效中断无效 唤醒无效唤醒无效下一条指令 唤醒 下一条指令 唤醒 中断向量 唤醒 下一条指令 唤醒 下一条指令 唤醒 中断向量 下一条指令 中断 中断向量 下一条指令 中断无效. 中断无效. 中断 中断向量 下一条指令 中断 中断向量 中断 中断向量 中断 中断向量 中断 中断向量 TCIE = 0 唤醒无效唤醒无效中断无效. 中断无效. TCC 溢出 TCIE = 1 唤醒无效 唤醒 下一条指令 唤醒 中断向量 下一条指令 中断 中断向量 下一条指令 中断 中断向量 30 版本号 (V2.2) 04.10.2010

8 位微控制器 唤醒信号比较器 2 ( 比较器输出状态改变 ) 条件信号 CMP2WE = 0, CMP2IE = 0 CMP2WE = 0, CMP2IE = 1 CMP2WE = 1, CMP2IE = 0 CMP2WE = 1, CMP2IE = 1 休眠模式空闲模式低速模式正常模式 DISI ENI DISI ENI DISI ENI DISI ENI 唤醒 下一条指令 唤醒无效唤醒无效中断无效中断无效 唤醒无效唤醒无效下一条指令 唤醒 下一条指令 唤醒 中断向量 唤醒 下一条指令 唤醒 下一条指令 唤醒 中断向量 下一条指令 中断无效 中断 中断向量 中断 中断向量 下一条指令 下一条指令 中断无效 中断 中断向量 中断 中断向量 TC3IE = 0 唤醒无效唤醒无效中断无效中断无效 TC3 中断 AD 转换完成中断 TC3IE = 1 ADWE = 0, ADIE = 0 ADWE = 0, ADIE = 1 ADWE = 1, ADIE = 0 ADWE = 1, ADIE = 1 唤醒 下一条指令 唤醒无效 唤醒 下一条指令 唤醒 中断向量 下一条指令 中断 中断向量 下一条指令 唤醒无效唤醒无效中断无效中断无效 唤醒无效唤醒无效下一条指令 唤醒 下一条指令 唤醒 中断向量 唤醒 下一条指令 唤醒 下一条指令 唤醒 中断向量 下一条指令 中断无效 中断 中断向量 中断 中断向量 下一条指令 下一条指令 中断无效 中断 中断向量 中断 中断向量 中断 中断向量 版本号 (V2.2) 04.10.2010 31

8-Bit Microcontroller 表 6.5-1 寄存器初始值概述 地址名称复位类型 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 位名 C57 - C55 C54 - - - C50 N/A N/A N/A N/A IOC5 IOC6 IOC8 CONT 上电 1 1 1 1 1 1 1 1 /RESET 和 WDT 1 1 1 1 1 1 1 1 引脚状态改变唤醒 P P P P P P P P 位名 - - C65 C64 C63 C62 C61 C60 上电 1 1 1 1 1 1 1 1 /RESET 和 WDT 1 1 1 1 1 1 1 1 引脚状态改变唤醒 P P P P P P P P 位名 - - - - C83 C82 C81 C80 上电 1 1 1 1 1 1 1 1 /RESET 和 WDT 1 1 1 1 1 1 1 1 引脚状态改变唤醒 P P P P P P P P 位名 INTE INT - - PSTE PST2 PST1 PST0 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT 0 0 0 0 0 0 0 0 引脚状态改变唤醒 P P P P P P P P 位名 - - - - - - - - 0 00 R0 (IAR) 上电 U U U U U U U U /RESET 和 WDT P P P P P P P P 引脚状态改变唤醒 P P P P P P P P 位名 - - - - - - - - 0 01 R1 (TCC) 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT 0 0 0 0 0 0 0 0 引脚状态改变唤醒 P P P P P P P P 位名 - - - - - - - - 0 02 R2 (PC) 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT 0 0 0 0 0 0 0 0 引脚状态改变唤醒 跳到中断向量地址或继续执行下一条指令 32 版本号 (V2.2) 04.10.2010

8 位微控制器 地址名称复位类型 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 位名 - - - T P Z DC C 0 03 R3 (SR) 上电 0 0 0 1 1 U U U /RESET 和 WDT 0 0 0 t t P P P 引脚状态改变唤醒 P P P t t P P P 位名 Bank 1 Bank 0 - - - - - - 0 04 R4 (RSR) 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT 0 0 0 0 0 0 0 0 0 05 0 06 0 08 0 09 0 0A 0 0B P5 (Bank 0) P6 (Bank 0) P8 (Bank 0) R9 (Bank 0) RA (Bank 0) RB (ECR) (Bank 0) 引脚状态改变唤醒 P P P P P P P P 位名 P57 - P55 P54 - - - P50 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT 0 0 0 0 0 0 0 0 引脚状态改变唤醒 P P P P P P P P 位名 - - P65 P64 P63 P62 P61 P60 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT 0 0 0 0 0 0 0 0 引脚状态改变唤醒 P P P P P P P P 位名 - - - - P83 P82 P81 P80 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT 0 0 0 0 0 0 0 0 引脚状态改变唤醒 P P P P P P P P 位名 RBit7 RBit6 RBit5 RBit4 RBit3 RBit2 RBit1 RBit0 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT 0 0 0 0 0 0 0 0 引脚状态改变唤醒 P P P P P P P P 位名 CMP2WE ICWE ADWE EXWE - - - - 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT 0 0 0 0 0 0 0 0 引脚状态改变唤醒 P P P P P P P P 位名 RD WR EEWE EEDF EEPC - - - 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT P P P P P P P P 引脚状态改变唤醒 P P P P P P P P 版本号 (V2.2) 04.10.2010 33

8-Bit Microcontroller 地址名称复位类型 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 位名 - EE_A6 EE_A5 EE_A4 EE_A3 EE_A2 EE_A1 EE_A0 0 0C 0 0D 0 0E 0 0F RC (Bank 0) RD (Bank 0) RE (Bank 0) RF (ISR) (Bank 0) 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT P P P P P P P P 引脚状态改变唤醒 P P P P P P P P 位名 EE_D7 EE_D6 EE_D5 EE_D4 EE_D3 EE_D2 EE_D1 EE_D0 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT P P P P P P P P 引脚状态改变唤醒 P P P P P P P P 位名 - TIMERSC CPUS IDLE - - - - 上电 0 1 1 1 0 0 0 0 /RESET 和 WDT 0 1 1 1 0 0 0 0 引脚状态改变唤醒 P P P P P P P P 位名 - ADIF - - - EXIF ICIF TCIF 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT 0 0 0 0 0 0 0 0 引脚状态改变唤醒 P P P P P P P P 位名 RCM1 RCM0 - - - - - - 0 08 R8 (Bank 1) 上电 Word 1<3,2> 0 0 0 0 0 0 /RESET 和 WDT Word 1<3,2> 0 0 0 0 0 0 0 0F RF (Bank 1) 引脚状态改变唤醒 P P P P P P P P 位名 CMP2IF - TC3IF - - - - - 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT 0 0 0 0 0 0 0 0 引脚状态改变唤醒 P P P P P P P P 位名 - - ADE5 ADE4 ADE3 ADE2 ADE1 ADE0 0 05 R5 (Bank 2) 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT 0 0 0 0 0 0 0 0 引脚状态改变唤醒 P P P P P P P P 34 版本号 (V2.2) 04.10.2010

8 位微控制器 地址名称复位类型 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 位名 VREFS CKR1 CKR0 ADRUN ADPD ADIS2 ADIS1 ADIS0 0 06 0 08 0 09 0 06 0 07 0 0D 0 0E R6 (Bank 2) R8 (Bank 2) R9 (Bank 2) R6 (Bank 3) R7 (Bank 3) RD (Bank 3) RE (Bank 3) 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT 0 0 0 0 0 0 0 0 引脚状态改变唤醒 P P P P P P P P 位名 AD9 AD8 AD7 AD6 AD5 AD4 AD3 AD2 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT 0 0 0 0 0 0 0 0 引脚状态改变唤醒 P P P P P P P P 位名 - - - - - - AD1 AD0 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT 0 0 0 0 0 0 0 0 引脚状态改变唤醒 P P P P P P P P 位名 MLB - - - - - RBit9 RBit8 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT 0 0 0 0 0 0 0 0 引脚状态改变唤醒 P P P P P P P P 位名 - - - CPOUT2 COS21 COS20 - - 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT 0 0 0 0 0 0 0 0 引脚状态改变唤醒 P P P P P P P P 位名 TC3FF1 TC3FF0 TC3S TC3CK2 TC3CK1 TC3CK0 TC3M1 TC3M0 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT 0 0 0 0 0 0 0 0 引脚状态改变唤醒 P P P P P P P P 位名 TCR3 D7 TCR3D6 TCR3D5 TCR3D4 TCR3D3 TCR3D2 TCR3D1 TCR3D0 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT 0 0 0 0 0 0 0 0 引脚状态改变唤醒 P P P P P P P P 版本号 (V2.2) 04.10.2010 35

8-Bit Microcontroller 地址名称复位类型 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 位名 WDTE EIS - - PSWE PSW2 PSW1 PSW0 0 0A IOCA 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT 0 0 0 0 0 0 0 0 引脚状态改变唤醒 P P P P P P P P 位名 /PD63 /PD62 /PD61 /PD60 - - - /PD50 0 0B IOCB 上电 1 1 1 1 1 1 1 1 /RESET 和 WDT 1 1 1 1 1 1 1 1 引脚状态改变唤醒 P P P P P P P P 位名 - - OD65 OD64 OD63 OD62 OD61 OD60 0 0C IOCC 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT 0 0 0 0 0 0 0 0 引脚状态改变唤醒 P P P P P P P P 位名 - - /PH65 /PH64 /PH63 /PH62 /PH61 /PH60 0 0D IOCD 上电 1 1 1 1 1 1 1 1 /RESET 和 WDT 1 1 1 1 1 1 1 1 引脚状态改变唤醒 P P P P P P P P 位名 CMP2IE - TC3IE - - - - - 0 0E IOCE 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT 0 0 0 0 0 0 0 0 引脚状态改变唤醒 P P P P P P P P 位名 - ADIE - - - EXIE ICIE TCIE 0 0F IOCF 上电 0 0 0 0 0 0 0 0 /RESET 和 WDT 0 0 0 0 0 0 0 0 0 10 ~ 0 3F R10~R3F 引脚状态改变唤醒 P P P P P P P P 位名 - - - - - - - - 上电 U U U U U U U U /RESET 和 WDT P P P P P P P P 引脚状态改变唤醒 P P P P P P P P 标识 : = 未使用 P = 复位前的值 u = 未知或不用关心 t = 参考表 6-5-2-1 6.5.2 状态寄存器的 RST,T 与 P 的状态 复位由以下事件引起 1. 上电复位 2. 复位引脚输入高 - 低 - 高脉冲 3. 看门狗定时器溢出 36 版本号 (V2.2) 04.10.2010

8 位微控制器 表 6-5-2-1 列出了 T,P 的值, 用来检测是什么类型的唤醒 表 6-5-2-2 列出了可能影响 T,P 位的事件 表 6-5-2-1 复位后 T 和 P 的值 复位类型 T P 上电 1 1 /RESET 在运行模式 *P *P /RESET 在休眠模式下唤醒 1 0 WDT 在运行模式 0 *P WDT 在休眠模式下唤醒 0 0 在休眠模式下引脚变化唤醒 1 0 * P: 复位前的状态 表 6-5-2-2 T,P 被事件影响后的状态 事件 T P 上电 1 1 WDTC 指令 1 1 WDT 溢出 0 *P SLEP 指令 1 0 在休眠模式下引脚变化唤醒 1 0 * P: 复位前的状态 图 6-10 控制器复位方框图 版本号 (V2.2) 04.10.2010 37

8-Bit Microcontroller 6.6 中断 EM78Fx61N 有 6 个中断 (3 个外部, 3 个内部 ) 列表如下 : 内部 / 外部 中断源使能条件中断标志中断向量优先级 复位 - - 0000 高 0 外部 INT ENI EXIE=1 EXIF 0003 1 外部 Port 6 引脚改变 ENI ICIE=1 ICIF 0006 2 内部 TCC ENI TCIE=1 TCIF 0009 3 外部比较器 2 ENICMP2IE=1 CMP2IF 0015 4 内部 TC3 ENI TC3IE=1 TC3IF 0027 5 内部 AD ENIADIE=1 ADIF 0030 6 RE 和 RF 是中断状态寄存器, 其相关的标志 / 位中记录中断需求 IOCE 和 IOCF 是中断屏蔽寄存器 全局中断由 ENI 指令使能, 由 DISI 指令禁止 当一个中断发生时 ( 使能情况下 ), 下一条指令将进入它们各自的中断向量地址 在返回中断之前必须清中断标志位以避免循环的进入中断 中断状态寄存器 (RE 和 RF) 的标志位 ( 除了 ICIF) 的置位, 与其屏蔽位和全局中断是否使能无关 RETI 指令结束中断, 使能全局中断 ( 执行 ENI) 外部中断带有片内数字噪声抑制电路 ( 输入脉冲 ( 脉宽 ) 小于 8 倍系统时钟周期则被当作噪声滤除 ), 但在低频晶体振荡模式 (LXT) 下, 应禁止噪声滤除电路 当外部中断 ( 下降沿 )( 如果使能 ) 发生时, 下一条指令将从地址 003H 执行 在中断子程序执行前, 硬件保存 ACC,R3 和 R4 寄存器的值, 如果另外一个中断发生,ACC, R3 和 R4 将被新的中断覆盖 中断服务程序结束后 ACC, R3 和 R4 的值恢复 VCC /IRQn D PR CLK CL RF Q _ Q RFRD IRQn IRQm ENI/DISI INT IOCF Q _ Q PR D CLK CL IOCFWR IOD /RESET IOCFRD RFWR 图 6-11 中断输入电路 38 版本号 (V2.2) 04.10.2010

8 位微控制器 图 6-12 中断备份框图 6.7 数据 EEPROM ( 只适用于 EM78F661N) 在整个 Vdd 正常工作范围内, 数据 EEPROM 都是可读写的 数据 EEPROM 的操作是基于单字节的 一个字节的写操作包含先擦后写的流程 数据 EEPROM 存储器可多次擦写 一个字节的写包括自动擦除并写入新值 6.7.1 数据 EEPROM 控制寄存器 6.7.1.1 RB (EEPROM 控制寄存器 ) EECR (EEPROM 控制寄存器 ) 是用来配置和初始化控制寄存器状态的控制寄存器 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 RD WR EEWE EEDF EEPC - - - Bit 7: 读控制寄存器 0: 不执行 EEPROM 的读操作 1: 读 EEPROM 的内容 (RD 由软件置 1, 读指令完成后由硬件清 0) Bit 6: 写控制位 0: 写 EEPROM 周期完成 1: 启动一个写周期 (WR 由软件置 1, 写周期完成后由硬件清 0) Bit 5: EEPROM 写使能位 0: 禁止写 EEPROM 1: 允许写 EEPROM Bit 4: EEPROM 侦测标志位 0: 写周期完成 1: 写周期未完成 Bit 3: EEPROM 省电控制位 0: 关断 EEPROM 1: EEPROM 正在运行 Bits 2 ~ 0: 未使用, 一直置为 0 版本号 (V2.2) 04.10.2010 39

8-Bit Microcontroller 6.7.1.2 RC (128 字节 EEPROM 地址 ) 当要访问 EEPROM 数据存储器时,RC(128 字节 EEPROM 地址寄存器 ) 存储要访 问的地址 依照操作,RD(128 字节 EEPROM 数据寄存器 ) 保存的是在 RC 地址上 要写入的或要从中读出的数据 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 - EE_A6 EE_A5 EE_A4 EE_A3 EE_A2 EE_A1 EE_A0 Bits 6 ~ 0: 128 字节 EEPROM 地址 6.7.1.3 RD (128 字节 EEPROM 数据 ) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 EE_D7 EE_D6 EE_D5 EE_D4 EE_D3 EE_D2 EE_D1 EE_D0 Bits 7 ~ 0: 128 字节 EEPROM 数据 6.7.2 编程步骤 / 范例 6.7.2.1 编程步骤 从 EEPROM 中读写数据须按如下步骤 : (1) 置 RB.EEPC 位为 1 以使能 EEPROM (2) 写地址值到 RC (128 字节 EEPROM 地址寄存器 ) a.1. 置 RB.EEWE 位为 1, 如果使用写入功能 a.2. 写 8 位待写数据值到 RD (128 字节 EEPROM 数据寄存器 ) a.3. 置 RB.WR 位为 1, 接着执行写功能 b. 置 RB.READ 位为 1, 接着执行读功能 (3) a. 等待 RB.EEDF 或 RB.WR 被清 0 b. 等待 RB.EEDF 被清 0 (4) 下一操作, 跳至步骤二 ( 若需要 ) (5) 如果用户想省电并确定 EEPROM 数据不用, 可清 RB.EEPC 位 40 版本号 (V2.2) 04.10.2010

8 位微控制器 6.7.2.2 程序范例 ; 定义控制寄存器 ; 写数据到 EEPROM RC == 0x0C RB == 0x0B RD == 0x0D Read == 0x07 WR == 0x06 EEWE == 0x05 EEDF == 0x04 EEPC == 0x03 BS RB, EEPC MOV A,@0x0A MOV RC,A BS RB, EEWE MOV A,@0x55 MOV RD,A BS RB,WR JBC RB,EEDF JMP $-1 ; 使能 EEPROM 电源 ; 写 EEPROM 地址值 ; 使能 EEPROM 的写功能 ; 写数据到 EEPROM 数据寄存器 ; 写值到 EEPROM ; 检查数据是否写完 6.8 模数转换器 (ADC) A/D 转换电路包括一个 10 位模拟多路复用器, 两个控制寄存器 [AISR/R5 (Bank 2), ADCON/R6 (Bank 2),2 个数据寄存器 (ADDH, ADDL/R8, R9) 和一个分辨率为 10 位的 ADC 图 6-13 所示为 ADC 的功能框图 模拟参考电压 (Vref) 和模拟地由独立引脚接入 逐次逼近式 ADC 模块将未知的模拟信号转换为数字值, 结果存放在 ADDH 和 ADDL 可通过多路复用器 ADCON 寄存器的 ADIS2 ~ ADIS0 位选择模拟输入通道 图 6-13 A/D 转换功能框图 版本号 (V2.2) 04.10.2010 41

8-Bit Microcontroller 6.8.1 ADC 控制寄存器 (AISR/R5, ADCON/R6) 6.8.1.1 Bank 2 R5 AISR (ADC 输入选择寄存器 ) AISR 寄存器定义 Port 6 引脚作为模拟输入或数字 I/O Bit Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 符号 - - ADE5 ADE4 ADE3 ADE2 ADE1 ADE0 * 初始值 0 0 0 0 0 0 0 0 Bits 7 ~ 6: 未用, 一直置为 0 Bit 5(ADE5): P65 引脚 AD 转换器使能位 0: 禁止 ADC5,P65 作为 I/O 引脚 1: 使能 ADC5 作为模拟输入引脚 Bit 4 (ADE4): P64 引脚 AD 转换器使能位 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: 禁止 ADC1,P60 作为 I/O 引脚 1: 使能 ADC1 作为模拟输入引脚 6.8.1.2 Bank 2 R6 ADCON (A/D 控制寄存器 ) ADCON 寄存器控制着 A/D 的转换及决定哪根引脚被激活. Bit Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 符号 VREFS CKR1 CKR0 ADRUN ADPD ADIS2 ADIS1 ADIS0 Bit 7 (VREFS): ADC 参考电压输入源 0: ADC 的参考电压接到 Vdd( 默认值 ),P50/VREF 引脚用作 P50 功能 1: ADC 的参考电压接到 P50/VREF Bit 6 ~ Bit 5 (CKR1 ~ CKR0): ADC 时钟频率预分频比 00 = 1: 4 ( 默认值 ) 42 版本号 (V2.2) 04.10.2010

8 位微控制器 01 = 1: 1 10 = 1: 16 11 = 1: 2 CKR1/CKR0 工作模数 最大工作频率 00 F OSC/4 4 MHz 01 F OSC 1 MHz 10 F OSC/16 16 MHz 11 F OSC/2 2 MHz Bit 4 (ADRUN): ADC 启动 0: AD 转换结束清零 该位不可由软件清零 1: AD 转换开始 该位可由软件置 1 Bit 3 (ADPD): ADC 省电模式 0: 关闭参考电阻以省电, 即使 CPU 正在运行 1: ADC 在运行 Bit 2 ~ Bit 0 (ADIS2 ~ ADIS0):AD 输入选择 000 = AN0/P60 001 = AN1/P61 010 = AN2/P62 011 = AN3/P63 100 = AN4/P64 101 = AN5/P65 110 = X 111 = X 只有当 ADIF 位和 ADRUN 位都为低时它们才可以被改变. 6.8.2 ADC 数据缓存 (ADDH, ADDL/R8, R9) A/D 转换结束后, 转换结果存放到 ADDH, ADDL ADRUN 位清零,ADIF 位置 1 6.8.3 A/D 采样时间 逐次逼近式 AD 转换器的精确性 线性 速度由 AD 转换器和比较器特性决定 阻抗源和内部采样阻抗直接影响采样电路中电容的充电时间 应用程序控制采样时间长短以满足特定精度需要 一般来说, 对于每千欧姆模拟输入阻抗, 程序应等待 2µs, 对于低阻源应至少等待 2µs, 建议外部 AD 电路在 Vdd=5V 时的输入最大阻抗为 10KΩ 模拟输入通道选定后, 在转换开始之前这个采样时间应先满足 版本号 (V2.2) 04.10.2010 43

8-Bit Microcontroller 6.8.4 A/D 转换时间 CKR0 和 CKR1 依照指令周期来选择转换时间 (Tct) 在不影响 A/D 转换精度的条件 下, 这允许 MCU 运行在最高频率 对于 EM78Fx61N, 每位转换时间约为 1µs 表 6-8-4-1 列出了 Tct 与最高频率的关系 表 6-8-4-1 Tct 与最大工作频率 CKR1: CKR0 工作模式 最大工作频率 最大转换速率 / 位 最大转换速率 00 Fosc/4 4 MHz 1 MHz (1 µs) 16 1 µs = 16 µs (62.5kHz) 01 Fosc 1 MHz 1 MHz (1 µs) 16 1 µs = 16 µs (62.5kHz) 10 Fosc/16 16 MHz 1 MHz (1 µs) 16 1 µs = 16 µs (62.5kHz) 11 Fosc/2 2 MHz 1 MHz (1 µs) 16 1 µs = 16 µs (62.5kHz) 6.8.5 休眠期间 A/D 运行 44 版本号 (V2.2) 04.10.2010 注意 没有被用作模拟输入的引脚可以被用作普通输入输出引脚 转换期间, 不要执行输出指令以保持所有引脚的稳定 为了得到更精确的 ADC 值并降低功耗,AD 转换可以在休眠模式下进行 当执行 SLEP 指令后,MCU 停止工作, 但振荡器,TCC, TC2, TC3 和 AD 转换继续工作 当下列情况发生时说明 AD 转换结束 : 1 R6 寄存器的 ADRUN 位清零 2 在休眠模式下保持运行, 由 A/D 转换唤醒 转换结束后, 结果送入 ADDATA, ADOC 如果 ADWE 使能, 控制器将唤醒 否则, A/D 转换器将关闭, 不论 ADPD 位是什么状态 6.8.6 编程步骤 / 事项 6.8.6.1 编程步骤 按照以下步骤可获得 ADC 数据 : 1. 设置 R5(AISR) 寄存器的 6 个位 (ADE5~ADE0) 以定义 R6 的特性 :( 数字 I/O, 模拟通道或参考电压引脚 ) 2. 写 R6/ADCON 寄存器以配置 AD 模块 : a) 选择 A/D 输入通道 (ADIS2 : ADIS0) b) 定义 A/D 转换时钟比率 (CKR1 ~ CKR0) c) 选择 ADC 的参考电压输入源 VREFS d) ADPD 位置 1, 开始采样 3. 如果使用唤醒功能, 请设置 ADWE 位 4. 如果使用中断功能, 请设置 ADIE 位 5. 如果使用中断功能, 请执行 ENI 指令 6. ADRUN 位置 1

8 位微控制器 7. 等待唤醒或 ADRUN 位被清零 8. 读转换数据寄存器 ADDATAH 和 ADDATAL. 9. 当 A/D 中断功能发生, 清除中断标志位 (ADIF) 10. 下一次转换, 若需要则跳至步骤 1 或步骤 2, 下一次采样之前需至少等待 2Tct 时间 注意 为了获得准确的结果, 在 AD 转换期间需避免有任何数据在 I/O 引脚上传输 6.8.6.2 程序实例 ; 定义通用寄存器 R_0 == 0 PSW == 3 PORT5 == 5 PORT6 == 6 RA== 0XA RF== 0XF ; 定义控制寄存器 IOC50 == 0X5 IOC60 == 0X6 C_INT == 0XF ; 间接地址寄存器 ; 状态寄存器 ; 唤醒控制寄存器 ; 中断状态寄存器 ; Port 5 控制寄存器 ; Port 6 控制寄存器 ; 中断控制寄存器 ;ADC 控制寄存器 ADDATAH == 0x8 ; 内容为 ADC 结果 ADDATAL == 0x9 ; 内容为 ADC 结果 AISR == 0x05 ; ADC 输出选择寄存器 ADCON == 0x6 ; 7 6 5 4 3 2 1 0 (VREFS)(CKR1:0)(ADRUN)(ADPD)(ADIS2:0) ADOC == 0x07 ; ADC 偏差校正寄存器 ; 定义位 ;In ADCON ADRUN == 0x4 ADPD == 0x3 ; 该位置 1 则 ADC 执行 ; ADC 电源 ORG 0 ; 初始地址 JMP INITIAL ORG 0x30 ; 中断向量 ( 用户程序 ) ; 由客户决定 BANK 0 CLR RF ; 清除 ADIF 位 BANK 2 BS ADCON, ADRUN ; 如果需要, 开始执行下一次 AD 转换 RETI 版本号 (V2.2) 04.10.2010 45

8-Bit Microcontroller 初始化 : BANK 2 MOV A, @0B00000001 ; 定义 P60 作为模拟输入 MOV AISR, A MOV A, @0B00001000 ; 选择 P60 作为模拟输入通道, AD 电源打开 MOV ADCON, A ; 定义 P60 作为输入引脚且设置时钟频率为 ; fosc/4 MOV A, @0B00000000 MOV ADOC, A ; 校正校正 En_ADC: MOV A, @0BXXXXXXX1 ; 定义 P60 作为输入引脚, 其它的根据应用来 IOW PORT6 ; 设置 BANK 0 MOV A, @0BXX1XXXXX ; 使能 ADC 唤醒功能 ADWE 位, X 根据实际 ; 应用定义 MOV RA, A MOV A, @0BX1XXXXXX ; 使能 ADC 中断功能 ADIE 位, X 根据实际 ; 应用定义 IOW C_INT ENI ; 使能中断功能 BANK 2 BS ADCON, ADRUN ; 开始运行 ADC ; 如果使用中断功能, 接下来的三行可不用 SLEP ; 进入休眠模式 POLLING: JBC ADCON, ADRUN ; 持续检测 ADRUN 位 JMP POLLING ; 当 AD 转换完成后 ADRUN 位将被复位 ( 用户程序 ) ; 从 ADDATAH/L 读 AD 转换数据 6.9 定时 / 计数器 3 图 6-14 定时 / 计数器 3 结构图 定时器模式下, 用内部时钟执行加计数操作 ( 上升沿触发 ), 当加计数器内容与 TCR3 内容相匹配时, 中断产生且计数器清零, 计数器清零后加操作重新开始 46 版本号 (V2.2) 04.10.2010

8 位微控制器 计数器模式下, 用输入引脚 (TC3 引脚 ) 的外部时钟执行加计数操作, 当加计数器内容与 TCR3 内容相匹配时, 中断产生且计数器清零, 计数器清零后加操作重新开始 可编程分频器输出 (PDO) 模式下, 用内部时钟执行加计数操作,TCR3 内容与加计数器内容做比较,F/F 输出被触发, 每次匹配被发现时计数器被清零,F/F 输出被取反并输出到 /PDO 引脚 该模式可产生 50% 占空比的脉冲输出 F/F 可被程序初始化, 复位时其初始值为 0, 每次 /PDO 输出被触发时 TC3 都产生中断 图 6-15 PDO 模式时序图脉冲宽度调制 (PWM) 输出模式下, 用内部时钟执行加计数操作,TCR3 内容与加计数器内容作比较, 当匹配被发现时 F/F 被触发 当计数器正在计数, 而计数器溢出时 F/F 又被触发, 则计数器清零 F/F 输出被反向并输出到 /PWM 引脚, 每次溢出发生时即产生 TC3 中断 TCR3 被设置成 2 级移位寄存器, 输出期间输出不会改变直到一个输出周期完成, 即使 TCR3 被重写 因此, 输出可不断地被改变, 在数据载入 TCR3 后通过置 TC3S 位为 1 TRC3 第一次被移位 图 6-16 PWM 模式时序图 版本号 (V2.2) 04.10.2010 47

8-Bit Microcontroller 6.10 比较器 EM78Fx61N 有两个比较器, 各包含 2 个模拟输入端和 1 个输出端的比较器, 它可用于从休眠模式唤醒, 比较器电路如下图 6-17 所示 6.10.1 外部参考信号 图 6-17 比较器工作模式 Cin- 端的模拟信号和 Cin 端的信号做比较, 比较器的输出 (CO) 据此改变. 参考信号须在 Vss 与 Vdd 之间. 参考电压可取比较器两个引脚中一个引脚. 阈值检测器应用可与参考的一致. 比较器可通过相同或不同的参考源工作. 6.10.2 比较器输出 比较器输出存储在 Bank 3 的 R7 的 Bit 4 CPOUT2 位. 通过编程 Bank 3 的 R7 的 Bit 3, Bit 2 <COS21, COS20> 设置 CO2 (P80) 为比较器输出口. 图 6-18 是比较器输出框图. 48 版本号 (V2.2) 04.10.2010

8 位微控制器 6.10.3 中断 图 6-18 比较器输出框图 CMP2IE (IOCE.7) 须使能, 以使 ENI 指令有效. 比较器输出状态改变时产生中断 输出引脚的实际变化可通过读寄存器 Bank 3 的 R7 的 Bit 4 CPOUT2 位. CMP2IF (RF.7 Bank 1), 为比较器中断标志位, 只可软件清零 6.10.4 从休眠模式唤醒 如果使能比较器, 即使进入休眠模式, 比较器仍然保持激活状态和中断功能 如果错误匹配发生, 中断将使器件从休眠模式中唤醒 由于能量是守恒的, 所以电源损耗也应该考虑 在休眠模式下如果不使用比较器功能, 则进入休眠模式前须将比较器关闭 6.11 振荡器 6.11.1 振荡模式 EM78Fx61N 可运行在四种不同的振荡模式下, 即 : 内部 RC 振荡模式 (IRC) 外部 RC 振荡模式 (ERC) 高频晶体振荡模式(HXT) 和低频晶体振荡模式 (LXT) 用户可通过编程设置代码选项寄存器 OSC2, OCS1, 和 OSC0 位来选择其中一种振荡模式 表 6-16-1 描述了如何定义这四种振荡模式 版本号 (V2.2) 04.10.2010 49

8-Bit Microcontroller 不同 VDD 下晶体 / 谐振模式的上限工作频率如表 6-11-1 所示 : 表 6-11-1 由 OSC2 ~ OSC0 定义的振荡模式 模式 OSC2 OSC1 OSC0 XT ( 晶体振荡器模式 ) 0 0 0 HXT ( 高频晶体振荡器模式 ) 0 0 1 LXT1 ( 低频晶体振荡器模式 1) 0 1 0 LXT2 ( 低频晶体振荡器模式 2) 0 1 1 IRC ( 内部 RC 振荡模式 ); P55, P54 作为 I/O 引脚 IRC ( 内部 RC 振荡模式 ); P55 作为 I/O 引脚 P54 作为 RCOUT 引脚 ERC ( 外部 RC 振荡模式 ); P55 作为 ERCin 引脚 P54 作为 I/O 引脚 ERC ( 外部 RC 振荡模式 ); P55 作为 ERCin 引脚 P54 作为 RCOUT 漏极开漏引脚 1 0 0 1 0 1 1 1 0 1 1 1 OSCI 和 OSCO 是在 LXT2, LXT1, XT, HXT 和 ERC 模式使用. 它们不能用作 I/O 引脚. 在 IRC 模式, P55 用作通用 I/O 引脚. 注意 HXT 模式的频率范围是 16 MHz ~ 6 MHz. XT 模式的频率范围是 6 MHz ~ 1 MHz. LXT1 模式的频率范围是 1 MHz ~ 100kHz. LXT2 模式的频率范围是 32kHz. 表 6-11-2 最大工作频率概述条件 VDD 最大频率 (MHz) 2.5 4.0 一个指令包含两个时钟周期 3.0 8.0 4.5 16.0 50 版本号 (V2.2) 04.10.2010

8 位微控制器 6.11.2 晶体振荡器 / 陶瓷谐振器 ( 晶体 ) EM78Fx61N 可由 OSCI 引脚输入的外部时钟信号驱动, 如下图 6-19 所示 图 6-19 外部时钟输入电路在大多数应用中,OSCI 和 OSCO 引脚连接一个晶体或陶瓷谐振器以产生振荡, 图 6-20 描绘了这样的电路,HXT 模式和 LXT 模式都是以此种方式产生振荡 表 6-14-3 提供 C1 和 C2 的推荐值 由于每个谐振器都有其各自的属性, 用户应参考其规格书以选择合适的 C1 和 C2 对于切片型晶体或低频模式, 可能需要串接一个电阻 RS 图 6-20 晶体 / 陶瓷谐振器电路 版本号 (V2.2) 04.10.2010 51

8-Bit Microcontroller 表 6-11-3 晶体振荡器或陶瓷谐振器匹配电容选择指南 : 振荡器类型频率模式频率 C1 (pf) C2 (pf) 陶瓷谐振器 晶体振荡器 LXT1 (100K~1 MHz) XT (1M~6 MHz) 100kHz 45pF 45pF 200kHz 20pF 20pF 455kHz 20pF 20pF 1.0 MHz 20pF 20pF 1.0 MHz 25pF 25pF 2.0 MHz 20pF 20pF 4.0 MHz 20pF 20pF LXT2 (32.768kHz) 32.768kHz 40pF 40pF LXT1 (100K~1 MHz) XT (1~6 MHz) HXT (6~16 MHz) 6.11.3 外部 RC 振荡器模式 100kHz 45pF 45pF 200kHz 20pF 20pF 455kHz 20pF 20pF 1.0 MHz 20pF 20pF 455kHz 30pF 30pF 1.0 MHz 20pF 20pF 2.0 MHz 20pF 20pF 4.0 MHz 20pF 20pF 6.0 MHz 20pF 20pF 6.0 MHz 25pF 25pF 8.0 MHz 20pF 20pF 10.0 MHz 20pF 20pF 12.0 MHz 20pF 20pF 16.0 MHz 15pF 15pF 对于一些不需要精确计时的应用中,RC 振荡器 ( 图 6-21) 提供了一种节省成本的振荡方案 然而, 应注意地是 RC 振荡器的频率会受供电电压 电阻 (Rext) 电容(Cext) 甚至工作温度的影响 另外, 因为生产过程的差异, 一个器件与另外一个器件的频率也会存在细微的差别 为了维持在一个稳定的系统频率,Cext 值应不低于 20 pf,rext 值不高于 1 MΩ 如果它们不在此范围内, 系统频率则很容易受噪声 湿度和漏电流的影响 在 RC 振荡模式中,Rext 值越小, 其振荡频率越快 相反, 对一个非常小的 Rext 值, 例如 1 KΩ, 振荡器将变得不稳定, 因为 NMOS 不能及时的释放电容电荷 基于以上原因, 必须时刻牢记地是供电电压 工作温度 RC 振荡器的元件特性 封装类型 PCB 制版等因素都会对系统频率产生影响 52 版本号 (V2.2) 04.10.2010

8 位微控制器 Vcc Rext ERCin Cext 表 6-11-4 RC 振荡频率 图 6-21 外部 RC 振荡模式电路 Cext Rext 平均 Fosc 5V, 25 C 平均 Fosc 3V, 25 C 20 pf 100 pf 300 pf 注意 : 1 : 在 DIP 封装类型下量测. 2 : 仅作为设计参考. 6.11.4 内部 RC 振荡模式 3.3k 3.5 MHz 3.2 MHz 5.1k 2.5 MHz 2.3 MHz 10k 1.30 MHz 1.25 MHz 100k 140kHz 140kHz 3.3k 1.27 MHz 1.21 MHz 5.1k 850kHz 820kHz 10k 450kHz 450kHz 100k 48kHz 50kHz 3.3k 560kHz 540kHz 5.1k 370kHz 360kHz 10k 196kHz 192kHz 100k 20kHz 20kHz EM78Fx61N 提供了一个不稳定的内部 RC 模式, 默认的频率为 4 MHz. 内部 RC 振荡模式还有其它频率 (16 MHz 和 8 MHz), 可以通过代码选项 Word1<3,2> 或改变 Bank1 R8<7,6>, RCM1 和 RCM0 来设置. 这 4 种频率可以通过设置代码选项 Word1<8~4>, C4~C0 ( 自动校正 ) 来校正. 表 6-11-5 内部 RC 偏移率 (Ta=25 C, VDD=5 V± 5%, VSS=0V) 内部 RC 温度 (-40 C~85 C) 电压 (2.4V~5.5V) 偏移率 制程 总计 4 MHz ± 3% ± 5% ± 2.5% ± 10.5% 16 MHz ± 3% ± 5% ± 2.5% ± 10.5% 8 MHz ± 3% ± 5% ± 2.5% ± 10.5% 版本号 (V2.2) 04.10.2010 53

8-Bit Microcontroller 6.12 代码选项寄存器 EM78Fx61N 拥有 1 个代码选项字, 它不属于普通程序存储空间的一部分, 程序执行时 不能被存取 代码选项寄存器与客户 ID 寄存器分配 : Word 0 Word 1 Word 2 Bit 12~Bit 0 Bit 12~Bit 0 Bit 12~Bit 0 6.12.1 代码选项寄存器 (Word 0) Word 0 Bit Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 ~ Bit 0 助记符 NRHL NRE RESETENB CLKS1 CLKS0 ENWDTB OSC2 OSC1 OSC0 Protect 1 8/fc 禁止 /RESET 高高使能高高高使能 0 32/fc 使能 P83 低低禁止低低低禁止 Bit 12: 未用, 一直置为 0. Bit 11 (NRHL): 高低脉冲噪声抑制位,INT 引脚下降沿触发 1: 脉冲宽度为 8/fc [s] 时认为是信号 0: 脉冲宽度为 32/fc [s] 时认为是信号 ( 默认 ) 注意在 LXT2 和休眠模式下噪声抑制功能被关闭. Bit 10 (NRE): 噪声抑制使能位,INT 引脚下降沿触发. 0: 使能噪声抑制 ( 默认 ), 但在低晶体振荡模式下 (LXT2), 噪声抑制电路一 直禁止 1: 禁止噪音抑制 Bit 9 (RESETENB): 复位引脚使能位 0: P83 作为 I/O 引脚 ( 默认 ) 1: P83 作为 /RESET 引脚 Bit 8 ~ Bit 7 (CLKS1 ~ CLKS0): 指令周期选择位 指令周期 CLKS1 CLKS0 4 个时钟 ( 默认 ) 0 0 2 个时钟 0 1 8 个时钟 1 0 16 个时钟 1 1 参考指令集章节. Bit 6 (ENWDTB): 看门狗定时器使能位 54 版本号 (V2.2) 04.10.2010

8 位微控制器 0: 禁止 ( 默认 ) 1: 使能 Bit 5 ~ Bit 3 (OSC2 ~ OSC0): 自动模式选择位 振荡模式由 OSC2 ~ OSC0 定义 模式 OSC2 OSC1 OSC0 XT ( 晶体振荡器模式 ) ( 默认 ) 0 0 0 HXT ( 高频晶体振荡器模式 ) 0 0 1 LXT1 ( 低频晶体振荡器模式 1) 0 1 0 LXT2 ( 低频晶体振荡器模式 2) 0 1 1 IRC ( 内部 RC 振荡模式 ); P55, P54 作为 I/O 引脚 IRC ( 内部 RC 振荡模式 ); P55 作为 I/O 引脚 P54 作为 RCOUT 引脚 ERC ( 外部 RC 振荡模式 ); P55 作为 ERCin 引脚 P54 作为 I/O 引脚 ERC ( 外部 RC 振荡模式 ); P55 作为 ERCin 引脚 P54 作为 RCOUT 漏极开漏引脚 注意 : 1. HXT 模式的频率范围是 16 MHz ~ 6 MHz. 2. XT 模式的频率范围是 6 MHz ~ 1 MHz. 3. LXT1 模式的频率范围是 1 MHz ~ 100kHz. 4. LXT2 模式的频率范围是 32kHz. Bit 2 ~ Bit 0 (Protect): 保护位. 保护类型如下 : Protect 保护 1 使能 0 禁止 6.12.2 代码选项寄存器 (Word 1) Word 1 1 0 0 1 0 1 1 1 0 1 1 1 Bit 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 助记符 COBS0 C4 C3 C2 C1 C0 RCM1 RCM0 LVR1 LVR0 1 Register 高高高高高高高高高 0 Option 低低低低低低低低低 Bit 12 (COBS0): IRC 模式选择位. 0: IRC 频率由代码选项选择 ( 默认 ) 1: IRC 频率由内部寄存器选择. Bit 11: 未用, 一直置为 0 Bit 10: 未用, 一直置为 1 Bit 9: 未用, 一直置为 1 版本号 (V2.2) 04.10.2010 55

8-Bit Microcontroller Bit 8 ~ Bit 4 (C4 ~ C0): 内部 RC 模式校准位,C4 ~ C0 只能设置为 0 ( 自动校准 ). Bit 3 ~ Bit 2 (RCM1 ~ RCM0): RC mode select bits RCM 1 RCM 0 * 频率 (MHz) 0 0 4 ( 默认 ) 0 1 16 1 0 8 1 1 x Bit 1 ~ Bit 0 (LVR1 ~ LVR0): 低电压复位使能位 LVR1 LVR0 Reset 电压 Release 电压 0 0 NA NA 0 1 2.7V 2.9V 1 0 3.5V 3.7V 1 1 4.0V 4.2V LVR1, LVR0= 0, 0 : LVR 禁止, EM78Fx61N 上电复位点为 2.0~2.1V( 默 ) LVR1, LVR0= 0, 1 : 如果 Vdd < 2.7V, EM78Fx61N 复位. LVR1, LVR0= 1, 0 : 如果 Vdd < 3.5V, EM78Fx61N 复位. LVR1, LVR0= 1, 1 : 如果 Vdd < 4.0V, EM78Fx61N 复位. 6.12.3 用户 ID 寄存器 (Word 2) Word 2 Bit 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 助记符 SC3 SC2 SC1 SC0 ID4 ID3 ID2 ID1 ID0 1 高高高高 高高高高高 0 低低低低 低低低低低 Bits 12 ~ 9 (SC3 ~ SC0): 副频校准 (WDT 频率自动校准 ). Bit 8: 未用, 一直置为 0. Bit 7: 未用, 一直置为 1. Bits 6 ~ 5: 未用, 一直置为 0. Bits 4 ~ 0: 用户 ID 码 6.13 上电探讨 在供电电压未达到稳定状态下, 任何微控制器都不能保证正常工作 EM78Fx61N 内置有一个上电电压检测器 (POVD), 其检测电压 2.0V~2.1V 如果 Vdd 上升时间足够快 (50 ms 或更少 ), 它将很好的工作 然而, 在许多要求严格的应用中, 有必要增加额外器件以辅助解决上电问题 56 版本号 (V2.2) 04.10.2010

8 位微控制器 6.14 外部上电复位电路 图 6-22 所示电路是利用外部 RC 电路产生复位脉冲的电路 脉冲宽度 ( 时间常数 ) 应该足够长以使 Vdd 达到最低工作电压 此电路用在供电电压上升很慢的情况 由于 /RESET 引脚的漏电流大约为 ±5µA, 因此建议 R 值不要大于 40 KΩ 此时,/RESET 引脚电压保持在 0.2V 以下 二极管 (D) 在掉电时作为短路回路 电容 C 将快速充分放电 限流电阻 Rin 可防止高电流或 ESD( 静电释放 ) 灌入 /RESET 引脚 Vdd /RESET R D Rin C 图 6-22 外部上电复位电路 6.15 残留电压保护 当更换电池时, 单片机的电源 VDD 断开, 但仍然存在残留电压 残留电压可能小于最低工作电压, 但不为零 这种情况下可能导致不良复位 图 6-23 和图 6-24 给出了如何防止残留电压的保护电路 Vdd Vdd 33K Q1 10K /RESET 40K 1N4684 图 6-23 残留电压保护电路 1 版本号 (V2.2) 04.10.2010 57

8-Bit Microcontroller Vdd Vdd R1 /RESET Q1 40K R2 图 6-24 残留电压保护电路 2 6.16 指令集 指令集的每条指令均是 13 位, 一条指令分为一个 OP 码和一个或多个操作数 一般情况下, 除指令的执行改变了程序计数器的值 ("MOV R2,A", "ADD R2,A") 或对 R2 进行算术或逻辑操作 ( 例如 : "SUB R2,A", "BS (C) R2,6", "CLR R2", 等 ) 需要 2 个指令周期外, 其它所有指令的执行都只需要一个指令周期 ( 一个指令周期含 2 个振荡周期 ) 由于某些因素, 指令周期的说明并不与实际应用相符, 试着做如下修改 : (A) 改变一条指令由 4 个振荡周期组成. (B) "TBRD", "RET", "RETL", "RETI", 或条件跳转指令 ("JBS", "JBC", "JZ", "JZA", "DJZ", "DJZA") 条件为真时执行 2 个指令周期 对程序计数器进行写操作的指令也执行 2 个指令周期 情况 (A) 由代码选项寄存器的 CLK1:0 位选择, 若 CLK1:0 为 01 则一条指令周期由 2 个振荡周期组成, 而若 CLK1:0 为 00 则一条指令周期由 4 个振荡周期组成 需注意地是一旦选择了一个指令周期为 4 个时钟周期, 也就是情况 (A),TCC 的内部时钟源则由 CLK= Fc, 如图 6-6-1 所示 此外, 指令集还具有如下特性 : (1) 任何寄存器的每个位都可被置 1 清零或直接测试 (2) I/O 寄存器可被当作通用寄存器 也就是说, 相同的指令可对 I/O 寄存器操作 58 版本号 (V2.2) 04.10.2010

8 位微控制器 惯例 : R = 表示一个寄存器指示符, 用来指定指令操作哪个寄存器 ( 包括操作寄存器和通用寄存器 ) b = 表示一个位指示符, 指定位于 R 寄存器中并会影响操作的位 k = 代表一个 8 位或 10 位常数或立即数 二进制指令 十六进制 助记符 操作 受影响标志位 0 0000 0000 0000 0000 NOP 空操作 无 0 0000 0000 0001 0001 DAA A 累加器十进制调整 C 0 0000 0000 0010 0002 CONTW A CONT 无 0 0000 0000 0011 0003 SLEP 0 WDT, 停止振荡 T, P 0 0000 0000 0100 0004 WDTC 0 WDT T, P 版本号 (V2.2) 04.10.2010 59

8-Bit Microcontroller 二进制指令十六进制助记符操作受影响标志位 0 0000 0000 rrrr 000r IOW R A IOCR 无 1 0 0000 0001 0000 0010 ENI 使能中断无 0 0000 0001 0001 0011 DISI 禁止中断无 0 0000 0001 0010 0012 RET [ 栈顶 ] PC 无 0 0000 0001 0011 0013 RETI [ 栈顶 ] PC, 使能中断 0 0000 0001 0100 0014 CONTR CONT A 无 1 0 0000 0001 rrrr 001r IOR R IOCR A 无 0 0000 01rr rrrr 00rr MOV R,A A R 无 0 0000 1000 0000 0080 CLRA 0 A Z 0 0000 11rr rrrr 00rr CLR R 0 R Z 0 0001 00rr rrrr 01rr SUB A,R R-A A Z, C, DC 0 0001 01rr rrrr 01rr SUB R,A R-A R Z, C, DC 0 0001 10rr rrrr 01rr DECA R R-1 A Z 0 0001 11rr rrrr 01rr DEC R R-1 R Z 0 0010 00rr rrrr 02rr OR A,R A R A Z 0 0010 01rr rrrr 02rr OR R,A A R R Z 0 0010 10rr rrrr 02rr AND A,R A & R A Z 0 0010 11rr rrrr 02rr AND R,A A & R R Z 0 0011 00rr rrrr 03rr XOR A,R A R A Z 0 0011 01rr rrrr 03rr XOR R,A A R R Z 0 0011 10rr rrrr 03rr ADD A,R A R A Z, C, DC 0 0011 11rr rrrr 03rr ADD R,A A R R Z, C, DC 0 0100 00rr rrrr 04rr MOV A,R R A Z 0 0100 01rr rrrr 04rr MOV R,R R R Z 0 0100 10rr rrrr 04rr COMA R /R A Z 0 0100 11rr rrrr 04rr COM R /R R Z 0 0101 00rr rrrr 05rr INCA R R1 A Z 0 0101 01rr rrrr 05rr INC R R1 R Z 0 0101 10rr rrrr 05rr DJZA R R-1 A, 为 0 跳转无 0 0101 11rr rrrr 05rr DJZ R R-1 R, 为 0 跳转无 0 0110 00rr rrrr 06rr RRCA R 注意 : 1 此指令只适用于 IOC5~IOC7, IOCA ~ IOCF. R(n) A(n-1), R(0) C, C A(7) 无 C 60 版本号 (V2.2) 04.10.2010

8 位微控制器 二进制指令十六进制助记符操作受影响标志位 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 R(n) R(n-1), R(0) C, C R(7) R(n) A(n1), R(7) C, C A(0) R(n) R(n1), R(7) C, C R(0) R(0-3) A(4-7), R(4-7) A(0-3) 0 0111 01rr rrrr 07rr SWAP R R(0-3) R(4-7) 无 0 0111 10rr rrrr 07rr JZA R R1 A, 为 0 跳转无 0 0111 11rr rrrr 07rr JZ R R1 R, 为 0 跳转无 0 100b bbrr rrrr 0xxx BC R,b 0 R(b) 无 2 0 101b bbrr rrrr 0xxx BS R,b 1 R(b) 无 3 0 110b bbrr rrrr 0xxx JBC R,b 如果 R(b)=0, 跳转无 0 111b bbrr rrrr 0xxx JBS R,b 如果 R(b)=1, 跳转无 1 00kk kkkk kkkk 1kkk CALL k PC1 [SP], (Page, k) PC 1 01kk kkkk kkkk 1kkk JMP k (Page, k) PC 无 1 1000 kkkk kkkk 18kk MOV A,k k A 无 1 1001 kkkk kkkk 19kk OR A,k A k A Z 1 1010 kkkk kkkk 1Akk AND A,k A & k A Z 1 1011 kkkk kkkk 1Bkk XOR A,k A k A Z 1 1100 kkkk kkkk 1Ckk RETL k k A, [ 栈顶 ] PC 1 1101 kkkk kkkk 1Dkk SUB A,k k-a A Z, C, DC 1 1111 kkkk kkkk 1Fkk ADD A,k ka A Z, C, DC 1 1110 1001 kkkk 1E9k BANK k K R4(7:6) 无 1 1110 11rr rrrr 1Err TBRD R 注意 : 2 此指令不建议对中断状态寄存器操作. 3 此指令不能对中断状态寄存器操作. 如果 Bank 3 R6.7=0, 机器码 (7:0) R 或者 Bank 3 R6.7=1, 机器码 (12:8) R(4:0), R(7:5)=(0,0,0) C C C 无 无 无 无 版本号 (V2.2) 04.10.2010 61

8-Bit Microcontroller 7 时序图 AC 测试输入 / 输出波形 注意 : AC 测试 : 输入电压为 2.4V 则为逻辑 1, 0.4V 为逻辑 0 时序的测量则 2.0V 为逻辑 1, 0.8V 为逻辑 0 复位时序 (CLK1:0 = "01") 图 7-1 AC 测试输入输出波形时序图 8 最大绝对值 图 7-2 复位时序图 项目 范围 工作温度 -40 C 到 85 C 存储温度 -65 C 到 150 C 工作电压 2.2V 到 5.5V 工作频率 DC 到 16 MHz 输入电压 Vss-0.3V 到 Vdd0.5V 输出电压 Vss-0.3V 到 Vdd0.5V 注 : 这些参数是理论值, 未经过测试 62 版本号 (V2.2) 04.10.2010

8 位微控制器 9 DC 电气特性 Ta=25 C, VDD=5.0V ± 5%, VSS=0V 符号参数条件最小值典型值最大值单位 Fxt 晶振 : VDD 到 3V DC 8 MHz 指令周期为 2 个时钟周期晶振 : VDD 到 5V DC 16 MHz ERC: VDD 到 5V R: 5.1KΩ, C: 300 pf F-30% 370 F30% khz IRC: VDD 到 5 V 4 MHz, 16 MHz, 8 MHz F-2.5% F F2.5% Hz IIL 输入引脚输入漏电流 VIN = VDD, VSS ±1 µa VIHRC 输入高临界电压 ( 施密特触发 ) OSCI 在 RC 模式 3.5 V IERC1 灌电流 VI 从低到高, VI=5V 21 22 23 ma VILRC 输入低临界电压 ( 施密特触发 ) OSCI 在 RC 模式 1.5 V IERC2 灌电流 VI 从高到低, VI=2V 16 17 18 ma VIH1 输入高电压 ( 施密特触发 ) Ports 5, 6, 8 0.7VDD VDD 0.3V V VIL1 输入低电压 ( 施密特触发 ) Ports 5, 6, 8-0.3V 0.3VDD V VIHT1 VILT1 输入高临界电压 ( 施密特触发 ) 输入低临界电压 ( 施密特触发 ) /RESET 0.7VDD VDD 0.3V V /RESET -0.3V 0.3VDD V 版本号 (V2.2) 04.10.2010 63

8-Bit Microcontroller 符号参数条件最小值典型值最大值单位 VIHT2 VILT2 输入高临界电压 ( 施密特触发 ) 输入低临界电压 ( 施密特触发 ) INT 0.7VDD VDD0.3V V INT -0.3V 0.3VDD V VIHX1 时钟输入高电压 OSCI 在晶振模式 3.0 V VILX1 时钟输入低电压 OSCI 在晶振模式 1.8 V IOH1 输出高电压 (Ports 5, 6, 8) VOH = VDD-0.5V (IOH =3.7mA) -3.0-4.2 ma IOL1 输出低电压 (Ports 5, 8) VOL = GND 0.5V 9 11 ma IOL2 输出低电压 (Port 6) VOL = GND 0.5V 15 18 ma IPH IPL ISB1 ISB2 ICC1 ICC2 ICC3 上拉电流 下拉电流 掉电电流 掉电电流 2 个时钟周期下的工作供电电流 2 个时钟周期下的工作供电电流 2 个时钟周期下的工作供电电流 上拉激活, 输入引脚接 VSS 下拉激活, 输入引脚接 Vdd 所有的输入引脚和 I/O 引脚接 VDD, 输出引脚悬空 WDT 禁止 所有的输入引脚和 I/O 引脚接 VDD, 输出引脚悬空 WDT 使能 /RESET= ' 高 ', Fosc=32kHz ( 晶体类型 ), 输出引脚悬空, WDT 禁止 /RESET= ' 高 ', Fosc=32kHz ( 晶体类型 ), 输出引脚悬空, WDT 使能 /RESET= ' 高 ', Fosc=455kHz ( 晶振类型, CLKS1:0="01"), 输出引脚悬空, WDT 使能. (*VDD = 3V) -70-80 µa 20 30 µa 1.0 1.5 µa 8 10 µa 37 40 µa 39 43 µa 110 120 µa 64 版本号 (V2.2) 04.10.2010

8 位微控制器 符号参数条件最小值典型值最大值单位 ICC4 2 个时钟周期下的工作供电电流 /RESET = ' 高 ', Fosc = 4 MHz ( 晶振类型, CLKS1:0 = "01"), 输出引脚悬空, WDT 使能 1.1 1.5 ma ICC5 2 个时钟周期下的工作供电电流 /RESET = ' 高 ', Fosc = 10 MHz ( 晶振类型, CLKS1:0 = "01"), 输出引脚悬空, WDT 使能 2.7 3 ma 注意 : 这些参数是理论值, 没有经过验证 * 最小值 典型值 最大值栏里的数据基于 25 C 条件下的结果, 这些数据只用于指导设计, 未经测 试 数据 EEPROM 电气特性 ( 只适用于 EM78F661N) 符号 参数 条件 最小值典型值最大值 单位 Tprog 擦 / 写周期 4.0 4.2 ms Treten 数据保留 Vdd = 2.5~ 5.5V 温度 = -40 C ~ 85 C 10 年 Tendu 擦写次数 1000K 次 闪存存储器电气特性 符号 参数 条件 最小值典型值最大值 单位 Tprog 擦 / 写周期 ms Vdd = 5.0V Treten 数据保留 10 年温度 = -40 C ~ 85 C Tendu 擦写次数 100K 次 版本号 (V2.2) 04.10.2010 65

8-Bit Microcontroller IAI1 IAI2 A/D 转换特性 (Vdd=2.5V 到 5.5V, Vss=0V, Ta=25 C) 符号参数条件最小值典型值最大值单位 V AREF 2.5 Vdd V 模拟参考电压 V AREF - V ASS 2.5V Vss Vss V V ASS VAI 模拟输入电压 V ASS V AREF V RN LN DNL FSE OE Ivdd Vdd=VAREF=5.0V, 1150 1300 1450 µa 模拟输入电流 VASS =0V Ivref (V 参考电压为 Vdd) -10 0 10 µa Ivdd Vdd=VAREF=5.0V, 700 800 900 µa 模拟输入电流 VASS =0V IVref (V 参考电压为 VREF) 450 500 550 µa 分辨率 线性误差 差分非线性误差 满标度误差 补偿误差 Vdd=V AREF=5.0V, V ASS =0V Vdd = 2.5 到 5.5V Ta=25 C Vdd = 2.5 到 5.5V Ta=25 C Vdd=V AREF=5.0V, V ASS =0V Vdd=V AREF=5.0V, V ASS =0V 8 9 Bits ±2 ±4 LSB ±0.5 ±0.9 LSB ±1 ±2 LSB ±1 ±2 LSB ZAI 模拟电压源推荐电阻值 8 10 KΩ TAD1 TAD2 TCN ADIV A/D 时钟周期 A/D 时钟周期 A/D 转换时间 A/D OP 输入电压范围 Vdd=V AREF=2.5~5.5V, V ASS =0V Vdd=V AREF=3.0~5.5V, V ASS =0V Vdd=V AREF=5.0V, V ASS =0V Vdd=V AREF=5.0V, V ASS =0V 4 µs 1 µs 14 14 TAD 0 V AREF V PSR 电源抑制比 Vdd=5.0V±0.5V ±2 LSB 注意 : 1 这些参数为理论值, 未经测试 2 当 A/D 关闭时, 不消耗电流除了少量漏电流 3 A/D 转换结果不会因为输入电压升高而减小, 没有丢失码 4 规格书如有改动不另行通知 66 版本号 (V2.2) 04.10.2010

8 位微控制器 比较器电气特性 符号参数条件最小值典型值最大值单位 VOS 输入补偿电压 RL = 5.1K ( 注 1 ) 5 mv Vcm 普通模式电压输入范围 ( 注 2 ) GND VDD V ICO 比较器供电流 200 µa TRS TLRS 响应时间 大信号响应时间 Vin(-)=2.5V, Vdd=5V, CL=15p ( 比较器输出负载, 超载 =30mV ( 注 3 ) Vin(-)=2.5V, Vdd=5V, CL=15p ( 比较器输出负载 ), 0.7 µs 300 ns VS 工作电压范围 2.5 5.5 V 注 : 1. 单位增益电路输出电压, 超出满输入的普通模式范围 2. 普通模式输入电压或输入信号电压需低于 0.3V 普通模式上限电压是 VDD. 3. 响应时间规定为 100 mv 输入, 每一阶为 30 mv 的超驱动. 10 AC 电气特性 EM78Fx61N, 0 Ta 70 C, VDD=5V, VSS=0V -40 Ta 85 C, VDD=5V, VSS=0V 符号参数条件最小值典型值最大值单位 Dclk 输入时钟的占空比 45 50 55 % Tins 指令周期 晶振类型 100 DC ns (CLKS1:0="01") RC 类型 500 DC ns Ttcc TCC 输入时间周期 (Tins20)/N* ns Tdrh 单片机复位持续时间 14 16 18 ms Trst /RESET 脉冲宽度 Ta = 25 C 2000 ns Twdt 看门狗定时器周期 Ta = 25 C 14 16 18 ms Tset 输入引脚建立时间 0 ns Thold 输入引脚保持时间 20 ns Tdelay 输出引脚延迟时间 Cload = 20 pf 50 ns 注意 : 这些参数为理论值, 没有经过测试, 仅供参考 最小值 典型值 最大值栏里的数据是基于 25 C 条件下的结果 *N = 选择预分频比. 版本号 (V2.2) 04.10.2010 67

8-Bit Microcontroller A 封装类型 附录 Flash MCU 封装类型 引脚数 封装尺寸 EM78Fx61NMS10J/S MSOP 10 118 mil EM78Fx61NAD16J/S DIP 16 300 mil EM78Fx61NASO16AJ/S SOP 16 150 mil 绿色产品不包含有害物质, 符合 Sony SS-00259 第三版本标准. Pb 含量小于 100ppm,Pb 含量符合 Sony 规格说明. 项目 EM78Fx61NxJ/xS 电镀类型 纯锡 成份 (%) Sn: 100% 熔点 ( C) 232 C 电阻率 (µω cm) 11.4 硬度 (hv) 8~10 伸长 (%) >50% 68 版本号 (V2.2) 04.10.2010

8 位微控制器 B 封装形式 B.1 EM78Fx61NMS10 b Symbal Min Normal Max A 1.1 A1 0.05 0.15 A2 0.75 0.85 0.95 D 2.90 3.00 3.10 E 2.90 3.00 3.10 E1 4.7 4.9 5.1 b 0.19 0.28 c 0.15 0.2 L 0.4 0.7 e θ 0 0.5BSC - 8 TITLE: MSOP 10L (118MIL)PACKAGE OUTLINE DIMENSION File : Edtion: A MSOP 10 L Unit : mm Scale: Free Material: Sheet:1 of 1 图 B-1 EM78Fx61N 10- 引脚 MSOP 封装类型 版本号 (V2.2) 04.10.2010 69

8-Bit Microcontroller B.2 EM78Fx61NAD16 eb Symbal A A1 A2 c D E E1 eb B B1 L e θ Min Normal Max 4.318 0.381 3.175 3.302 3.429 0.203 0.254 0.356 19.000 19.050 19.100 6.174 6.401 6.628 7.370 7.620 7.870 8.510 9.020 9.530 0.356 0.457 0.559 1.143 1.524 1.778 3.048 3.302 3.556 2.540(TYP) 0 15 File : D16 Edtion: A Unit : mm Scale: Free Material: Sheet:1 of 1 图 B-2 EM78Fx61N 16- 引脚 DIP 封装类型 70 版本号 (V2.2) 04.10.2010