SC92F7490

Similar documents
SC92F742X

SinOne SC92F7447B/7446B/7445B 超高速 1T 8051 内核 Flash MCU,1 Kbytes SRAM,16 Kbytes Flash,128 bytes 独立 EEPROM,12 位 ADC,1 个模拟比较器,LCD/LED Driver,12 位 PWM,3 个

92 系列产品命名规则 名称 SC 92 F X P 48 R 序号 序号 Sinone Chip 缩写 产品系列名称 产品类型 (F:Flash MCU) 系列号 :7:GP 系列,8:TK 系列 含义 ROM

92 系列产品命名规则 名称 SC 92 F X P 48 R 序号 序号 Sinone Chip 缩写 产品系列名称 产品类型 (F:Flash MCU) 系列号 :7:GP 系列,8:TK 系列 含义 ROM

DPJJX1.DOC

目录 1 总体描述 主要功能... 1 目录 管脚定义 管脚配置 管脚定义 内部方框图 FLASH ROM 和 SRAM 结构 flash rom Customer

92 系列产品命名规则 名称 SC 92 F X P 32 R 序号 序号 Sinone Chip 缩写 产品系列名称 产品类型 (F:Flash MCU) 系列号 :7:GP 系列,8:TK 系列 含义 ROM

W77E58中文手册

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

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

SC91F711v1.2

128K Flash EPROM 的程序?\(Bank=64K\) 切?

7688使用手冊V10.doc

目 录

SC91F844

Microsoft Word - 專題封面.doc

SH79F161B I/O 1. SH79F161B SH79F161B IO 30 I/O I/O 4 I/O SH79F161B 30 I/O Px I/O PxCRy I/O PxPCRy x = 0-3 y = IO PxCRy IO x=0-3 y=0-7

SC91F844

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

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

Microsoft Word - 第1章 MCS-51单片机基础.docx

2 PIC PIC 1 / CPU PIC MCU PIC RC

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

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

51 C 51 isp 10 C PCB C C C C KEIL

CH559指令周期.doc

SST SPAC SST SoftICE SST89C5x/SST89x554RC /564RD /SST89x516/5xRD / SoftICE SoftICE MCU SoftICE SS

四位微控制器ML64168_ _.doc

General Description: Preliminary TTP916 Consumer IC VCD/DVD LCD Green mode Stand-by mode( 1W ) Features: 2.2V-5.5V LCD RAM read condition 2.6V-5.5V RC

Microsoft Word - IRFWX_A051_C_SyncMOS_with_STC_APN_SC_.doc

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

1

untitled

USB解决方案.ppt

从MCS51向AVR的快速转换.PDF

專題最終版.doc

中文手册排版标准

图 内部结构图 8251 的外部引脚如图 所示, 共 28 个引脚, 每个引脚信号的输入输出方式如图中的箭 头方向所示

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

12232A LED LED LED EL EL CCFL EL CCF

1 TPIS TPIS 2 2

at89S52.doc

untitled

Microsoft Word - BL5372_UMAN_V1.1.doc

µPSD3000 系列

FM1935X智能非接触读写器芯片

ICD ICD ICD ICD ICD

untitled

DATASHEET SEARCH SITE ==

Ps22Pdf


HD61202 HD HD61203 HD61202, HY HY HD61202 HD61202 HD61203 HD =4096 RAMRAM LCD 2HD HD HD /32--

单片机原理及应用实验指导书.doc

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

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

CM ZT1

33023A.book(31026A_cn.fm)

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

2005.book

另外,AT89S52 可降至 0Hz 静态逻辑操作, 支持 2 种软件可选择节电模式 空闲模式下,CPU 停止工作, 允许 RAM 定时器/ 计数器 串口 中断继续工作 掉电保护方式下,RAM 内容被保存, 振荡器被冻结, 单片机一切工作停止, 直到下一个中断或硬件复位为止 8 位微控制器 8K 字

Microsoft Word - ~ doc

第一章

79F161 V0.2

微處理機期末專題

SPMC75F2413A_EVM_使用说明_V1.2.doc

DS_MM32P021_Ver1.9.0

《手机维修原理及维修实例详解》目录

AT89C2051中文资料.doc

<4D F736F F D203034CAB5D1E9CBC D20B5C4494F20BDD3BFDACAB5D1E92E646F63>

ARM Cortex-M3 (STM32F) STMicroelectronics ( ST) STM32F103 Core: ARM 32-bit Cortex -M3 CPU 72 MHz, 90 DMIPS with 1.25 DMIPS/MHz Single-cycle multiplica

33023A.book(31005A_cn.fm)

TSINGTEK DISPLAY CO.,LTD LCD CONTROLLER & DRIVER ST7920 OR EQUIVALENT (f) 639 2A f B1

5. P0.0 P0.7 P0 4 2 P0.3~P0.6 ADC P1.0 P P1.2(SCL) P1.3(SDA) P1.5 RST P1.5 2 XTAL1(P2.1) 1 XTAL0(P2.0) 2 XTAL1 I/O VDD VSS 6. H5815 4T 16K Flas

Microsoft PowerPoint - 第一章(07版).PPT

Applications

() () () () () () () () DDRAM () II

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

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

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

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

N79A8211系列单片机内部NVM

第 16 章 SPI 串行同步通讯接口模式 这个 5 系列通用串行通信接口支持一个硬件模块下的多通道串行通信模式 本章节主要讨论同步外围接口的运行或称 SPI 模式的运行 16.1 USCI 的概述通用串行通信接口模块支持多道串行通信模式 不同的 USCI 支持不同的模式 每一个不同的 USCI 模

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

部分编号派生器件编号 (P89CXX) 操作频率, 最大 (V) 温度范围 (B) 封装 (AA,BB,PN) P89C51 FLASH U=33MHz B=0 70 AA=PLCC P89C52 FLASH F= BB=PQFP P89C54 FLASH PN=PDIP P89C58

IC芯片自主创新设计实验

ISO h.PDF

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

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

» n ¹ú KS0108 x ÍÍÙ q n KS0108 KS KS0107 KS0108 KS *32 128*64 192*64 KS0108 KS0108 KS0107 KS =4096 RAM RAM LCD 2 KS

第5章:汇编语言程序设计

为 边 数 的 两 倍, 显 然 必 为 偶 数 而 ii 和 iii 则 不 一 定 正 确, 如 : 对 顶 点 数 N 1 无 向 完 全 图 不 存 在 一 个 顶 点 的 度 为 1, 并 且 边 数 与 顶 点 数 的 差 要 大 于 1 8. 考 查 m 阶 B- 树 的 定 义 A

Cerris IROS

JX-300X DCS 3.1 SP202 SP201S SP211 SP243X SP233 SP244 SP221 SP251 SP251-1 SP *600* *425*1000 RS-232/RS-485 5V24V 110W 24V 110W SP291 SB

ETA104 数据采集模块数据手册

PowerPoint 演示文稿

untitled

Transcription:

多通信接口 8PIN Flash MCU,512 bytes SRAM,16 Kbytes Flash,128 bytes 独立 EEPROM,12 位 ADC,3 个定时器,2 个 SSI 接口,Check Sum 校验模块,STOP 电流 <1μA 1 总体描述 是一颗集成有多通信接口的高速 1T 8051 内核工业级 Flash 微控制器, 指令系统完全兼容传统 8051 产品系列 集成有 16 Kbytes Flash ROM 256 bytes+256 bytes SRAM 128 bytes EEPROM 最多 6 个 GP I/O 所有 IO 可外部中断 3 个 16 位定时器 3 路 12 位高精度 ADC IO 驱动分级控制 ( P0 和 P2 口 ) 内部 ±1% 高精度高频 16/8/4/1.33MHz 振荡器和 ±4% 精度低频 128K 振荡器 SSI 等通讯接口等资源 为提高可靠性及简化客户电路, 内部也集成有 4 级可选电压 LVR 2.4V 基准 ADC 参考电压 WDT 等高可靠电路 具有非常优异的抗干扰性能, 非常适合应用于各种物联网控制 大小智能家电和智能家居 充电器 电源 航模 对讲机 无线通讯 游戏机等工业控制和消费应用领域 2 主要功能 工作电压 : 2.4V~5.5V 工作温度 : -40 ~ 85 封装 : SOP8 内核 : 高速 1T 8051 Flash ROM: 16 Kbytes Flash ROM(MOVC 禁止寻址 0000H~00FFH) 可重复写入 1 万次 IAP: 可 code option 成 0K 0.5K 1K 或 16K EEPROM: 独立的 128 bytes, 可重复写入 10 万次, 10 年以上保存寿命 SRAM: 内部 256 bytes+ 外部 256 bytes 系统时钟 (f SYS): 内建高频 16MHz 振荡器 (fhrc) IC 工作的系统时钟, 可通过编程器选择设定为 16MHz(2.9-5.5V) 8/4/1.33MHz (2.4-5.5V) 频率误差 : 跨越 (2.9V~5.5V) 及 (-20 ~ 85 ) 应用环境, 不超过 ±1% 内建低频 128kHz LRC 振荡器 : 可作为 BaseTimer 的时钟源, 并唤醒 STOP 可作为 WDT 的时钟源 频率误差 : 跨越 (2.9V ~ 5.5V) 及 (-20 ~ 85 ), 频率误差不超过 ±4% 低电压复位 (LVR): 复位电压有 4 级可选 : 分别是 :4.3V 3.7V 2.9V 2.3V 缺省值为用户烧写 Code Option 所选值 Flash 烧写和仿真 : 2 线 JTAG 烧写和仿真接口 可通过 Code Option 设为 JTAG 专用模式和常规模式 中断 (INT): Timer0, Timer1, Timer2, INT0, INT2, ADC, SSI0,SSI1,Base Timer 共 9 个中断源 外部中断有 2 个中断向量, 共 6 个中断口, 全部可设上升沿 下降沿 双沿中断 两级中断优先级可设 数字外围 : 最大 6 个双向可独立控制的 I/O 口, 可独立设定上拉电阻 P0 P2 口源驱动能力分四级控制 全部 IO 具有大灌电流驱动能力 (75mA) 11 位 WDT, 可选时钟分频比 3 个标准 80C51 定时器 Timer0 Timer1 和 Timer2 2 个 UART/SPI/TWI 三选一通讯口 :SSI0, SSI1 模拟外围 : 3 路 12 位 ±2LSB ADC 内建基准的 2.4V 参考电压 ADC 的参考电压有 2 种选择, 分别是 VDD 以及内部 2.4V 内部一路 ADC 可直接测量 VDD 电压 可设 ADC 转换完成中断 省电模式 : IDLE Mode, 可由任何中断唤醒 STOP Mode, 电流 <1μA, 可由 INT0,INT2 和 BaseTimer 唤醒 Page 1 of 62 V0.2

目录 1 总体描述... 1 2 主要功能... 1 目录... 2 3 管脚定义... 5 3.1 管脚配置... 5 3.2 管脚定义... 5 4 内部方框图... 6 5 FLASH ROM 和 SRAM 结构... 7 5.1 flash rom... 7 5.2 Option 区域 ( 用户烧写设置 )... 8 5.2.1 Option 相关 SFR 操作说明... 10 5.3 sram... 10 5.3.1 内部 256 bytes SRAM... 10 5.3.2 外部 256 bytes SRAM... 12 6 特殊功能寄存器 (SFR)... 13 6.1 SFR 映像... 13 6.2 SFR 说明... 14 6.2.1 8051 CPU 内核常用特殊功能寄存器介绍... 15 7 电源 复位和时钟... 16 7.1 电源电路... 16 7.2 上电复位过程... 16 7.2.1 复位阶段... 16 7.2.2 调入信息阶段... 16 7.2.3 正常操作阶段... 16 7.3 复位方式... 16 7.3.1 外部 RST 复位... 16 7.3.2 低电压复位 LVR... 16 7.3.3 上电复位 POR... 17 7.3.4 看门狗复位 WDT... 17 7.3.5 复位初始状态... 18 Page 2 of 62 V0.2

7.4 高频系统时钟电路... 19 7.5 低频振荡器及低频时钟定时器... 21 7.6 STOP 模式和 IDLE 模式... 21 8 中央处理单元 CPU 及指令系统... 23 8.1 CPU... 23 8.2 寻址方式... 23 8.2.1 立即寻址... 23 8.2.2 直接寻址... 23 8.2.3 间接寻址... 23 8.2.4 寄存器寻址... 23 8.2.5 相对寻址... 23 8.2.6 变址寻址... 23 8.2.7 位寻址... 23 9 INTERRUPT 中断... 24 9.1 中断源 向量... 24 9.2 中断结构图... 25 9.3 中断优先级... 26 9.4 中断处理流程... 26 9.5 中断相关 SFR 寄存器... 26 10 定时器 TIMER0 TIMER1... 29 10.1 T0 和 T1 相关特殊功能寄存器... 29 10.2 T0 工作模式... 31 10.3 T1 工作模式... 33 11 定时器 TIMER2... 35 11.1 T2 相关特殊功能寄存器... 35 11.2 T2 工作模式... 36 12 GP I/O... 37 12.1 GPIO 结构图... 37 12.2 I/O 端口相关寄存器... 38 13 SPI/TWI/UART 三选一串行接口 SSI0 SSI1... 39 Page 3 of 62 V0.2

13.1 SPI... 40 13.1.1 SPI 操作相关寄存器... 40 13.1.2 信号描述... 42 13.1.3 工作模式... 42 13.1.4 传送形式... 43 13.1.5 出错检测... 44 13.2 TWI... 44 13.2.1 信号描述... 45 13.2.2 工作模式... 45 13.2.3 操作步骤... 47 13.3 UART... 48 14 模数转换 ADC... 49 14.1 ADC 相关寄存器... 49 14.2 ADC 转换步骤... 51 15 EEPROM 及 IAP 操作... 52 15.1 EEPROM / IAP 操作相关寄存器... 52 15.2 EEPROM / IAP 操作流程... 54 15.2.1 128 bytes 独立 EEPROM 操作例程... 54 15.2.2 Code 区域 IAP 操作例程... 55 16 CHECK SUM 模块... 56 16.1 check sum 校验操作相关寄存器... 56 17 电气特性... 57 17.1 极限参数... 57 17.2 推荐工作条件... 57 17.3 直流电气特性... 57 17.4 交流电气特性... 58 17.5 ADC 电气特性... 59 18 订购信息... 60 19 封装信息... 61 20 规格更改记录... 62 Page 4 of 62 V0.2

3 管脚定义 3.1 管脚配置 VSS RST/SCK0/INT01/P1.1 tck/t0/rx0/miso0/int02/p1.2 tdio/t1/sda0/tx0/mosi0/int03/p1.3 1 2 3 4 8 7 6 5 VDD P0.5/INT21/SCK1 P2.0/INT24/MOSI1/TX1/SDA1/AIN0 P2.1/INT25/MISO1/RX1/AIN1 管脚配置图 3.2 管脚定义 8PIN 管脚名称类型功能说明 1 VSS Power 接地 2 P1.1/INT01/SCK0/RST I/O P1.1: GPIO P1.1 INT01: 外部中断 0 的输入 1 SCK0: SSI0 接口 SPI0 及 TWI0 的 SCK RST: 复位管脚 3 P1.2/INT02/MISO0/RX0/T0/tCK I/O P1.2: GPIO P1.2 INT02: 外部中断 0 的输入 2 MISO0: SSI0 接口 SPI0 主输入从输出 RX0: SSI0 接口 UART0 接收 T0: 计数器 0 外部输入 tck: 烧录和仿真口时钟线 4 P1.3/INT03/MOSI0/TX0/SDA0/T1/tDIO I/O P1.3: GPIO P1.3 INT03: 外部中断 0 的输入 3 MOSI0: SSI0 接口 SPI0 主输出从输入 TX0: SSI0 接口 UART0 发送 SDA0: SSI0 接口 TWI0 的 SDA T1: 计数器 1 外部输入 tdio: 烧录和仿真口数据线 5 P2.1/INT25/MISO1/RX1/AIN1 I/O P2.1: GPIO P2.1 INT25: 外部中断 2 的输入 5 MISO1: SSI1 接口 SPI 1 主输入从输出 RX1: SSI1 接口 UART1 接收 AIN1: ADC 输入通道 1 6 P2.0/INT24/MOSI1/TX1/SDA1/AIN0 I/O P2.0: GPIO P2.0 INT24: 外部中断 2 的输入 4 MOSI1: SSI1 接口 SPI 1 主输出从输入 TX1: SSI1 接口 UART1 发送 SDA1: SSI1 接口 TWI1 的 SDA AIN0: ADC 输入通道 0 7 P0.5/INT21/SCK1 I/O P0.5: GPIO P0.5 INT21: 外部中断 2 的输入 1 SCK1: SSI1 接口 SPI1 及 TWI1 的 SCK 8 VDD Power 电源 Page 5 of 62 V0.2

4 内部框图 LVD LVR Controller reset Internal 256 bytes RAM 128kHz LRC WDT WAKECNT Controller External 256 bytes RAM 128 bytes EEPROM HRC Regulator HRC Voltage Reference 16MHz HRC Clock Controller clock 2.4V REG BandGap Voltage Reference ADC LDO & Power Manager ADC Controller SSI0 SSI1 TIMER0 TIMER1 TIMER2 I/O INT 1T 8051 CORE 16 Kbytes Program ROM (Flash) Interrupt Interrupt Controller BLOCK DIAGRAM Page 6 of 62 V0.2

5 FLASH ROM 和 SRAM 结构 的 Flash ROM 和 SRAM 结构如下 : 7Fh 00h 3FFFh 0000h 5.1 FLASH ROM 用户 ID 区域 EEPROM Flash ROM For Program FFh 00h FFh 80h 7Fh 00h Flash ROM 和 SRAM 结构图 外部 RAM ( 通过 MOVX/DPTR 寻址 ) RAM ( 间接寻址 ) SFR ( 直接寻址 ) RAM ( 直接寻址或间接寻址 ) 有 16 Kbytes 的 Flash ROM,ROM 地址为 0000H~3FFFH 此 16 Kbytes Flash ROM 可反复写入 1 万次, 可通过 SinOne 提供的专用 ICP 烧写器 (SOC PRO52/DPT52/SC LINK) 来进行编程及擦除 地址为 0000H~00FFH 地址的 256 bytes 区间 MOVC 指令不可寻址 EEPROM 为独立于 16 Kbytes ROM 之外的一块区间, 其地址为 00H~7FH, 可在程序中对其进行单 byte 读写操作, 具体操作方法参考 15 EEPROM 及 IAP 操作 的 16 Kbytes Flash ROM 能提供查空 BLANK 编程 PROGRAM 校验 VERIFY 和擦除 ERASE 功能, 但不提供读取 READ 的功能 此 Flash ROM 和 EEPROM 通常写入前无需进行擦除操作, 直接写入数据即可实现新数据的覆盖 的 Flash ROM 通过 tdio tck VDD VSS 来进行编程, 具体连接关系如下 : Page 7 of 62 V0.2

MCU SOC PRO52 SOC DPT52 SC LINK VDD tck tdio VSS VDD CLK DIO GND 用户应用电路 Jumper ICP 模式 Flash Writer 编程连接示意图 tdio tck 是 2 线 JTAG 烧写和仿真的信号线, 用户在烧录时可通过 Code Option 项配置这两根口的模式 : 1. JTAG 专用模式 : tdio tck 为烧写仿真专用口, 与之复用的其它功能不可用 此模式一般用于在线调试阶段, 方便用户仿真调试 ; 2. 常规模式 : JTAG 功能不可用, 与之复用的其它功能可正常使用 此模式可防止烧录口占用 MCU 管脚, 方便用户最大化利用 MCU 资源 具体配置如下 : OP_CTM1 (C2H@FFH) Customer Option 寄存器 1( 读 / 写 ) 符号 VREFS - - DISJTG IAPS[1:0] - - 读 / 写读 / 写 - - 读 / 写读 / 写读 / 写 - - 上电初始值 n x x n n n x x 位编号 位符号 说明 4 DISJTG JTAG 模式使能开关 0 :JTAG 模式使能 1 : 常规模式 (Normal),JTAG 功能无效 5.2 OPTION 区域 ( 用户烧写设置 ) 内部有单独的一块 Flash 区域用于保存客户的上电初始值设置, 此区域称为 Customer Option 区域 用户在烧写 IC 时将此部分代码写入 IC 内部,IC 在复位初始化时, 就会将此设置调入 SFR 作为初始设置 Option 相关 SFR 操作说明 : Option 相关 SFR 的读写操作由 OPINX 和 OPREG 两个寄存器进行控制, 各 Option SFR 的具体位置由 OPINX 确定, 如下表所示 : OPINX 值 OPREG 上电初始值符号说明 7 6 5 4 3 2 1 0 83H@FFH OP_HRCR 高频 RC 震荡频率调节 ( 细调 ) OP_HRCR[7:0] nnnnnnnnb C1H@FFH OP_CTM0 Customer Option 寄存器 0 ENWDT - SCLKS[1:0] DISRST DISLVR LVRS[1:0] nxnnnnnnb C2H@FFH OP_CTM1 Customer Option 寄存器 1 VREFS - - DISJTG IAPS[1:0] - - nxxnnnxxb Page 8 of 62 V0.2

OP_HRCR (83H@FFH) 系统时钟改变寄存器 ( 读 / 写 ) 符号 OP_HRCR[7:0] 读 / 写 读 / 写 上电初始值 n n n n n n n n 位编号位符号说明 7~0 OP_HRCR[7:0] 内部高频 RC 频率调校 中心值 10000000b 对应 HRC 中心频率, 数值变大频率加快, 数值变小 频率变慢 OP_CTM0 (C1H@FFH) Customer Option 寄存器 0( 读 / 写 ) 符号 ENWDT - SCLKS[1:0] DISRST DISLVR LVRS[1:0] 读 / 写 读 / 写 - 读 / 写 读 / 写 读 / 写 读 / 写 上电初始值 n x n n n n 位编号 位符号 说明 7 ENWDT WDT 开关 0:WDT 无效 1:WDT 有效 ( 但 IC 在执行 IAP 过程中 WDT 停止计数 ) 5~4 SCLKS[1:0] 系统时钟频率选择 : 00: 系统时钟频率为高频振荡器频率除以 1; 01: 系统时钟频率为高频振荡器频率除以 2; 10: 系统时钟频率为高频振荡器频率除以 4; 11: 系统时钟频率为高频振荡器频率除以 12 3 DISRST IO/RST 复位切换控制 0 :P1.1 当复位脚使用 1 :P1.1 当正常的 I/O 管脚使用 2 DISLVR LVR 使能设置 0:LVR 正常使用 1:LVR 无效 1~0 LVRS [1:0] LVR 电压选择控制 11: 4.3V 复位 10: 3.7V 复位 01: 2.9V 复位 00: 2.3V 复位 OP_CTM1 (C2H@FFH) Customer Option 寄存器 1( 读 / 写 ) 符号 VREFS - - DISJTG IAPS[1:0] - - 读 / 写读 / 写 - - 读 / 写读 / 写读 / 写 - - 上电初始值 n x x n n n x x 位编号 位符号 说明 7 VREFS 参考电压选择 ( 初始值从 Code Option 调入, 用户可修改设置 ) 0: 设定 ADC 的 VREF 为 VDD 1: 设定 ADC 的 VREF 为内部准确的 2.4V 4 DISJTG JTAG 模式使能开关 0 :JTAG 模式使能 1 : 常规模式 (Normal),JTAG 功能无效 3~2 IAPS[1:0] IAP 空间范围选择 Page 9 of 62 V0.2

00: Code 区域禁止 IAP 操作, 仅 EEPROM 区域可作为数据存储使用 01: 最后 0.5K Code 区域允许 IAP 操作 (3E00H ~3FFFH) 10: 最后 1K Code 区域允许 IAP 操作 (3C00H~3FFFH) 11: 全部 Code 区域允许 IAP 操作 (0000H~3FFFH) 5.2.1 OPTION 相关 SFR 操作说明 Option 相关 SFR 的读写操作由 OPINX 和 OPREG 两个寄存器进行控制, 各 Option SFR 的具体位置由 OPINX 确定, 各 Option SFR 的写入值由 OPREG 确定 : 符号地址说明上电初始值 OPINX FEH Option 指针 OPINX[7:0] 00000000b OPREG FFH Option 寄存器 OPREG[7:0] nnnnnnnnb 操作 Option 相关 SFR 时 OPINX 寄存器存放相关 OPTION 寄存器的地址,OPREG 寄存器存放对应的值 例如 : 要将 OP_HRCR 配置为 0x01, 具体操作方法如下 : C 语言例程 : OPINX = 0x83; // 将 OP_HRCR 的地址写入 OPINX 寄存器 OPREG = 0x01; // 对 OPREG 寄存器写入 0x01( 待写入 OP_HRCR 寄存器的值 ) 汇编例程 : MOV OPINX,#83H ; 将 OP_HRCR 的地址写入 OPINX 寄存器 MOV OPREG,#01H ; 对 OPREG 寄存器写入 0x01( 待写入 OP_HRCR 寄存器的值 ) 注意 : 禁止向 OPINX 寄存器写入 Customer Option 区域 SFR 地址之外的数值! 否则会造成系统运行异常! 5.3 SRAM 单片机的 SRAM, 分为内部 256 bytes RAM 和外部 256 bytes RAM 内部 RAM 的地址范围为 00H~FFH, 其中高 128 bytes( 地址 80H~FFH) 只能间接寻址, 低 128 bytes( 地址 00H~7FH) 可直接寻址也可间接寻址 特殊功能寄存器 SFR 的地址也是 80H~FFH 但 SFR 同内部高 128 bytes SRAM 的区别是 :SFR 寄存器是直接寻址, 而内部高 128 bytes SRAM 只能是间接寻址 外部 RAM 的地址为 00H~FFH, 但需通过 MOVX 指令来寻址 5.3.1 内部 256 BYTES SRAM 内部低 128 bytes SRAM 区可分为三部分 :1 工作寄存器组 0~3, 地址 00H~1FH, 程序状态字寄存器 PSW 中的 RS0 RS1 组合决定了当前使用的工作寄存器, 使用工作寄存器组 0~3 可加快运算的速度 ;2 位寻址区 20H~2FH, 此区域用户可以用作普通 RAM 也可用作按位寻址 RAM; 按位寻址时, 位的地址为 00H~7FH,( 此地 址按位编地址, 不同于通用 SRAM 按字节编地址 ), 程序中可由指令区分 ;3 用户 RAM 和堆栈区, 复 位过后,8 位的堆栈指针指向堆栈区, 用户一般会在初始化程序时设置初值, 建议设置在 E0H~FFH 的单元区间 Page 10 of 62 V0.2

FFH FFH 高 128 bytes RAM ( 只能间接寻址 ) 特殊功能寄存器 SFR ( 直接寻址 ) 80H 80H 7FH 低 128 bytes RAM ( 可直接寻址 ; 也可间接寻址 ) 00H 内部 256 bytes RAM 结构图 Page 11 of 62 V0.2

内部低 128 bytes RAM 结构如下 : 7FH 用户 RAM 及堆栈 RAM 区 7F 7E 7D 7C 7B 7A 79 78 2FH 77 76 75 74 73 72 71 70 2EH 6F 6E 6D 6C 6B 6A 69 68 2DH 67 66 65 64 63 62 61 60 2CH 5F 5E 5D 5C 5B 5A 59 58 2BH 2FH 位寻址 RAM 区 30H 57 56 55 54 53 52 51 50 2AH 4F 4E 4D 4C 4B 4A 49 48 29H 47 46 45 44 43 42 41 40 28H 3F 3E 3D 3C 3B 3A 39 38 27H 20H 17H 10H 07H 00H 工作寄存器组 3 工作寄存器组 2 工作寄存器组 1 工作寄存器组 0 1FH 18H 0FH 08H 37 36 35 34 33 32 31 30 26H 2F 2E 2D 2C 2B 2A 29 28 25H 27 26 25 24 23 22 21 20 24H 1F 1E 1D 1C 1B 1A 19 18 23H 17 16 15 14 13 12 11 10 0F 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00 22H 21H 20H 5.3.2 外部 256 BYTES SRAM SRAM 结构图 外部 256 bytes SRAM 支持传统的访问外部 RAM 方法 使用 MOVX A, @Ri 或 MOVX @Ri, A 来访问外部低位 256 bytes RAM; 也可以用 MOVX A, @ DPTR 或 MOVX @DPTR, A 来访问外部 256 bytes RAM Page 12 of 62 V0.2

6 特殊功能寄存器 (SFR) 6.1 SFR 映像 系列有一些特殊功能寄存器, 我们称为 SFR 这些 SFR 寄存器的地址位于 80H~FFH, 有些可以位寻址, 有些不能位寻址 能够进行位寻址操作的寄存器的地址末位数都是 0 或 8, 这些寄存器在需要改变单个位的数值时非常方便 所有的 SFR 特殊功能寄存器都必须使用直接寻址方式寻址 的特殊功能寄存器名称及地址如下表 : 0/8 1/9 2/A 3/B 4/C 5/D 6/E 7/F F8h - - - - CHKSUML CHKSUMH OPINX OPREG F0h B IAPKEY IAPADL IAPADH IAPADE IAPDAT IAPCTL - E8h - - - - - - - OPERCON E0h ACC - - - - - - - D8h - - - - - - - - D0h PSW - - - - - - - C8h T2CON T2MOD RCAP2L RCAP2H TL2 TH2 BTMCON WDTCON C0h - - - - - - INT2F INT2R B8h IP IP1 INT0F INT0R - - - - B0h - - - - - - - - A8h IE IE1 - ADCCFG0 - ADCCON ADCVL ADCVH A0h P2 P2CON P2PH - SS0CON2 SS0CON0 SS0CON1 SS0DAT 98h - - P0CON P0PH - SS1CON0 SS1CON1 SS1DAT 90h P1 P1CON P1PH - - SS1CON2 - IOHCON 88h TCON TMOD TL0 TL1 TH0 TH1 TMCON OTCON 80h P0 SP DPL DPH - - - PCON 可位寻址 不可位寻址 说明 : 1. SFR 寄存器中空的部分代表没有此寄存器 RAM, 不建议用户使用 Page 13 of 62 V0.2

6.2 SFR 说明 特殊功能寄存器 SFR 的具体解释说明如下 : 符号地址说明 7 6 5 4 3 2 1 0 上电初始值 P0 80H P0 口数据寄存器 - - Page 14 of 62 V0.2 P05 - - - - - xx0xxxxxb SP 81H 堆栈指针 SP[7:0] 00000111b DPL 82H DPTR 数据指针低位 DPL[7:0] 00000000b DPH 83H DPTR 数据指针高位 DPH[7:0] 00000000b PCON 87H 电源管理控制寄存器 SMOD - - - - - STOP IDL 0xxxxx00b TCON 88H 定时器控制寄存器 TF1 TR1 TF0 TR0 - - IE0-0000xx0xb TMOD 89H 定时器工作模式寄存器 - C/T1 M11 M01 - C/T0 M10 M00 x000x000b TL0 8AH 定时器 0 低 8 位 TL0[7:0] 00000000b TL1 8BH 定时器 1 低 8 位 TL1[7:0] 00000000b TH0 8CH 定时器 0 高 8 位 TH0[15:8] 00000000b TH1 8DH 定时器 1 高 8 位 TH1[15:8] 00000000b TMCON 8EH 定时器频率控制寄存器 - - - - - T2FD T1FD T0FD xxxxx000b OTCON 8FH 输出控制寄存器 SSMOD1[1:0] SSMOD0[1:0] - - - - 0000xxxxb P1 90H P1 口数据寄存器 - - - - P13 P12 P11 - xxxx000xb P1CON 91H P1 口输入 / 输出控制寄存器 - - - - P1C3 P1C2 P1C1 - xxxx000xb P1PH 92H P1 口上拉电阻控制寄存器 - - - - P1H3 P1H2 P1H1 - xxxx000xb SS1CON2 95H SSI1 控制寄存器 2 SS1CON2[7:0] 00000000b IOHCON 97H 输出电流设置寄存器 - - P2L[1:0] P0H[1:0] - - xx0000xxb P0CON 9AH P0 口输入 / 输出控制寄存器 - - P0C5 - - - - - xx0xxxxxb P0PH 9BH P0 口上拉电阻控制寄存器 - - P0H5 - - - - - xx0xxxxxb SS1CON0 9DH SSI1 控制寄存器 0 SS1CON0[7:0] 00000000b SS1CON1 9EH SSI1 控制寄存器 1 SS1CON1[7:0] 00000000b SS1DAT 9FH SSI1 数据寄存器 SS1D[7:0] 00000000b P2 A0H P2 口数据寄存器 - - - - - - P21 P20 xxxxxx00b P2CON A1H P2 口输入 / 输出控制寄存器 - - - - - - P2C1 P2C0 xxxxxx00b P2PH A2H P2 口上拉电阻控制寄存器 - - - - - - P2H1 P2H0 xxxxxx00b SS0CON2 A4H SSI0 控制寄存器 2 SS0CON2[7:0] 00000000b SS0CON0 A5H SSI0 控制寄存器 0 SS0CON0[7:0] 00000000b SS0CON1 A6H SSI0 控制寄存器 1 SS0CON1[7:0] 00000000b SS0DAT A7H SSI0 数据寄存器 SS0D[7:0] 00000000b IE A8H 中断使能寄存器 EA EADC ET2 ESSI0 ET1 - ET0 EINT0 00000x00b IE1 A9H 中断使能寄存器 1 - - - - EINT2 EBTM - ESSI1 xxxx00x0b ADCCFG0 ABH ADC 设置寄存器 0 - - - - - - EAIN1 EAIN0 xxxxxx00b ADCCON ADH ADC 控制寄存器 ADCEN ADCS LOWSP EOC/ ADCIF ADCIS[3:0] 00000000b ADCVL AEH ADC 结果寄存器 ADCV[3:0] - - - - 0000xxxxb ADCVH AFH ADC 结果寄存器 ADCV[11:4] 00000000b IP B8H 中断优先级控制寄存器 - IPADC IPT2 IPSSI0 IPT1 - IPT0 IPINT0 x0000x00b IP1 B9H 中断优先级控制寄存器 1 - - - - IPINT2 IPBTM - IPSSI1 xxxx00x0b INT0F BAH INT0 下降沿中断控制寄存器 - - - - INT0F3 INT0F2 INT0F1 - xxxx000xb INT0R BBH INT0 上升沿中断控制寄存器 - - - - INT0R3 INT0R2 INT0R1 - xxxx000xb INT2F C6H INT2 下降沿中断控制寄存器 - - INT2F5 INT2F4 - - INT2F1 - xx00xx0xb INT2R C7H INT2 上升沿中断控制寄存器 - - INT2R5 INT2R4 - - INT2R1 - xx00xx0xb T2CON C8H 定时器 2 控制寄存器 TF2 - - - - TR2 - - 0xxxx0xxb T2MOD C9H 定时器 2 工作模式寄存器 - - - - - - T2OE DCEN xxxxxx00b RCAP2L CAH 定时器 2 重载低 8 位 RCAP2L[7:0] 00000000b RCAP2H CBH 定时器 2 重载高 8 位 RCAP2H[7:0] 00000000b TL2 CCH 定时器 2 低 8 位 TL2[7:0] 00000000b TH2 CDH 定时器 2 高 8 位 TH2[7:0] 00000000b BTMCON CEH 低频定时器控制寄存器 ENBTM BTMIF - - BTMFS[3:0] 00xx0000b WDTCON CFH WDT 控制寄存器 - - - CLRWDT - WDTCKS[2:0] xxx0x000b PSW D0H 程序状态字寄存器 CY AC F0 RS1 RS0 OV F1 P 00000000b ACC E0H 累加器 ACC[7:0] 00000000b OPERCON EFH 运算控制寄存器 - - - - - - - CHKSUMS xxxxxxx0b B F0H B 寄存器 B[7:0] 00000000b

IAPKEY F1H IAP 保护寄存器 IAPKEY[7:0] 00000000b IAPADL F2H IAP 写入地址低位寄存器 IAPADR[7:0] 00000000b IAPADH F3H IAP 写入地址高位寄存器 - - IAPADR[13:8] xx000000b IAPADE F4H IAP 写入扩展地址寄存器 IAPADER[7:0] 00000000b IAPDAT F5H IAP 数据寄存器 IAPDAT[7:0] 00000000b IAPCTL F6H IAP 控制寄存器 - - - - PAYTIMES[1:0] CMD[1:0] xxxx0000b CHKSUML FCH Check Sum 结果寄存器低位 CHKSUML[7:0] 00000000b CHKSUMH FDH Check Sum 结果寄存器高位 CHKSUMH[7:0] 00000000b OPINX FEH Option 指针 OPINX[7:0] 00000000b OPREG FFH Option 寄存器 OPREG[7:0] nnnnnnnnb 6.2.1 8051 CPU 内核常用特殊功能寄存器介绍 程序计数器 PC 程序计数器 PC 不属于 SFR 寄存器 PC 有 16 位, 是用来控制指令执行顺序的寄存器 单片机上电或者复位后,PC 值为 0000H, 也即是说单片机程序从 0000H 地址开始执行程序 累加器 ACC (E0H) 累加器 ACC 是 8051 内核单片机的最常用的寄存器之一, 指令系统中采用 A 作为助记符 常用来存放参加计算或者逻辑运算的操作数及结果 B 寄存器 (F0H) B 寄存器在乘除法运算中必须与累加器 A 配合使用 乘法指令 MUL A, B 把累加器 A 和寄存器 B 中的 8 位无符号数相乘, 所得的 16 位乘积的低位字节放在 A 中, 高位字节放在 B 中 除法指令 DIV A, B 是用 A 除以 B, 整数商放在 A 中, 余数放在 B 中 寄存器 B 还可以作为通用的暂存寄存器使用 堆栈指针 SP (81H) 堆栈指针是一个 8 位的专用寄存器, 它指示出堆栈顶部在通用 RAM 中的位置 单片机复位后,SP 初始值为 07H, 即堆栈会从 08H 开始向上增加 08H~1FH 为工作寄存器组 1~3 PSW (D0H) 程序状态字寄存器 ( 读 / 写 ) 符号 CY AC F0 RS1 RS0 OV F1 P 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 上电初始值 0 0 0 0 0 0 0 0 位编号位符号说明 7 CY 标志位 1: 加法运算最高位有进位, 或者减法运算最高位有借位时 0: 加法运算最高位无进位, 或者减法运算最高位无借位时 6 AC 进位辅助标志位 ( 可在 BCD 码加减法运算时方便调整 ) 1: 加法运算时在 bit3 位有进位, 或减法运算在 bit3 位有借位时 0: 无借位 进位 5 F0 用户标志位 4~3 RS1 RS0 工作寄存器组选择位 : 2 OV 溢出标志位 1 F1 F1 标志 RS1 RS0 当前使用的工作寄存器组 0~3 0 0 组 0 (00H~07H) 0 1 组 1 (08H~0FH) 1 0 组 2 (10H~17H) 1 1 组 3 (18H~1FH) Page 15 of 62 V0.2

用户自定义标志 0 P 奇偶标志位 此标志位为累加器 ACC 中 1 的个数的奇偶值 1:ACC 中 1 的个数为奇数 0:ACC 中 1 的个数为偶数 ( 包括 0 个 ) 数据指针 DPTR (82H 83H) 数据指针 DPTR 是一个 16 位的专用寄存器, 由低 8 位 DPL(82H) 和高 8 位 DPH(83H) 组成 DPTR 是以传统 8051 内核单片机中唯一可以直接进行 16 位操作的寄存器, 也可以分别对 DPL 和 DPH 按字节进行操作 7 电源 复位和时钟 7.1 电源电路 电源核心包括了 BG LDO POR LVR 等电路, 可实现在 2.4~5.5V 范围内可靠工作 此外, IC 内建了一个经调校过的精准 2.4V 电压, 可用作 ADC 内部参考电压 用户可在 14 模数转换 ADC 查找具体设置内容 7.2 上电复位过程 上电后, 在客户端软件执行前, 会经过以下的过程 : 复位阶段 调入信息阶段 正常操作阶段 7.2.1 复位阶段 是指 会一直处于复位的情况, 直到供应给 的电压高过某一电压, 内部才开始有效的 Clock 复位阶段的时间长短和外部电源的上升速度有关, 外部电源达到内建 POR 电压后, 复位阶段才会完成 7.2.2 调入信息阶段 在 内部有一个预热计数器 在复位阶段期间, 此预热计数器一直被清为 0, 直到电压过了 POR 电压后, 内部 RC 振荡器开始起振, 该预热计数器开始计数 当内部的预热计数器计数到一定数目后, 每隔一定数量个 HRC clock 就会从 Flash ROM 中的 IFB( 包含 Code Option) 读出一个 byte 数据存放到内部系统寄存器中 直到预热完成后, 该复位信号才会结束 7.2.3 正常操作阶段 结束调入信息阶段后, 开始从 Flash 中读取指令代码即进入正常操作阶段 这时的 LVR 电压值是用户写入 Code Option 的设置值 7.3 复位方式 有 4 种复位方式 :1 外部 RST 复位 2 低电压复位 LVR3 上电复位 POR4 看门狗 WDT 复位 7.3.1 外部 RST 复位 外部 RST 复位就是从外部 RST 给 一定宽度的复位脉冲信号, 来实现 的复位 用户在烧录程序前可通过烧录上位机软件配置 Customer Option 项将 RST/P1.1 管脚配置为 RST( 复位脚 ) 使用 7.3.2 低电压复位 LVR 内建了一个低电压复位电路 而复位的门限电压有 4 种选择 :4.3V 3.7V 2.9V 2.3V 缺省值 Default 是用户写入的 Option 值 Page 16 of 62 V0.2

OP_CTM0 (C1H@FFH) Customer Option 寄存器 0( 读 / 写 ) 符号 ENWDT - SCLKS[1:0] DISRST DISLVR LVRS[1:0] 读 / 写读 / 写 - 读 / 写读 / 写读 / 写读 / 写 上电初始值 n x n n n n 位编号 位符号 说明 2 DISLVR LVR 使能设置 0:LVR 正常使用 1:LVR 无效 1~0 LVRS [1:0] LVR 电压选择控制 11: 4.3V 复位 10: 3.7V 复位 01: 2.9V 复位 00: 2.3V 复位 的复位部分电路结构图如下 : RSTN pin LVR 4.3V 3.7V 2.9V 2.3V Code option POR (Power-Up Reset) WatchDogTimer Overflow SFR De-Bounce De-Bounce (~2uS) RESET 7.3.3 上电复位 POR 复位电路图 内部有上电复位电路, 当电源电压 VDD 达到 POR 复位电压时, 系统自动复位 7.3.4 看门狗复位 WDT 有一个 WDT, 其时钟源为内部的 128kHz 振荡器 用户可以通过编程器的 Code Option 选择是否开启看门狗复位功能 OP_CTM0 (C1H@FFH) Customer Option 寄存器 0( 读 / 写 ) 符号 ENWDT - SCLKS[1:0] DISRST DISLVR LVRS[1:0] 读 / 写读 / 写 - 读 / 写读 / 写读 / 写读 / 写 上电初始值 n x n n n n Page 17 of 62 V0.2

位编号位符号说明 7 ENWDT WDT 开关 ( 此位由系统将用户 Code Option 所设的值调入 ) 1: WDT 开始工作 0: WDT 关闭 WDTCON (CFH) WDT 控制寄存器 ( 读 / 写 ) 符号 - - - CLRWDT - WDTCKS[2:0] 读 / 写 - - - 读 / 写 - 读 / 写 上电初始值 x x x 0 x 0 0 0 位编号位符号说明 4 CLRWDT WDT 清 0 位 ( 写 1 有效 ) 1 :WDT 计数器从 0 开始计数 此位由系统硬件自动置 0 2~0 WDTCKS [2:0] 看门狗时钟选择 7~5,3 - 保留 7.3.5 复位初始状态 WDTCKS[2:0] WDT 溢出时间 000 500ms 001 250ms 010 125ms 011 62.5ms 100 31.5ms 101 15.75ms 110 7.88ms 111 3.94ms 当 处于复位状态时, 多数寄存器会回到其初始状态 看门狗 WDT 处于关闭的状态 程序计数器 PC 初始值为 0000h, 堆栈指针 SP 初始值为 07h 热启动 的 Reset( 如 WDT LVR 等 ) 不会影响到 SRAM, SRAM 值始终是复位前的值 SRAM 内容的丢失会发生在电源电压低到 RAM 无法保存为止 SFR 寄存器的上电复位初始值如下表 : SFR 名称 初始值 SFR 名称 初始值 ACC 00000000b OPREG nnnnnnnnb B 00000000b IOHCON xx0000xxb PSW 00000000b P0 xx0xxxxxb SP 00000111b P0CON xx0xxxxxb DPL 00000000b P0PH xx0xxxxxb DPH 00000000b P1 xxxx000xb PCON 0xxxxx00b P1CON xxxx000xb ADCCFG0 xxxxxx00b P1PH xxxx000xb ADCCON 00000000b P2 xxxxxx00b ADCVH 00000000b P2CON xxxxxx00b ADCVL 0000xxxxb P2PH xxxxxx00b BTMCON 00xx0000b RCAP2H 00000000b IAPADE 00000000b RCAP2L 00000000b IAPADH xx000000b TCON 0000xx0xb Page 18 of 62 V0.2

IAPADL 00000000b TMCON xxxxx000b IAPCTL xxxx0000b TMOD x000x000b IAPDAT 00000000b TH0 00000000b IAPKEY 00000000b TL0 00000000b IE 00000x00b TH1 00000000b IE1 xxxx00x0b TL1 00000000b INT0R xxxx000xb T2CON 0xxxx0xxb INT2R xx00xx0xb TH2 00000000b INT0F xxxx000xb TL2 00000000b INT2F xx00xx0xb T2MOD xxxxxx00b IP x0000x00b WDTCON xxx0x000b IP1 xxxx00x0b OPERCON xxxxxxx0b OTCON 0000xxxxb CHKSUML 00000000b OPINX 00000000b CHKSUMH 00000000b 7.4 高频系统时钟电路 内建了一个振荡频率可调的高精度 HRC,HRC 出厂时被精确地调校至 16MHz@5V/25, 用户 可以通过编程器的 Code Option 将系统时钟设置为 16/8/4/1.33MHz 使用 调校过程是过滤掉制程上的偏差对精度 所造成的影响 此 HRC 受工作的环境温度和工作电压影响会有一定的漂移, 对于压漂 (2.9V~5.5V) 以及 (-20 ~85 ) 的温漂一般状况会在 ±1% 以内 16MHz HRC fhrc SCLKS[1:0] /1 /2 /4 /12 fsys SSI TIMER0 TIMER1 TIMER2 I/O 内部时钟关系 OP_CTM0 (C1H@FFH) Customer Option 寄存器 0( 读 / 写 ) 符号 ENWDT - SCLKS[1:0] DISRST DISLVR LVRS[1:0] 读 / 写读 / 写 - 读 / 写读 / 写读 / 写读 / 写 上电初始值 n x n n n n 位编号位符号说明 5~4 SCLKS[1:0] 系统时钟频率选择 : Page 19 of 62 V0.2

00: 系统时钟频率为高频振荡器频率除以 1; 01: 系统时钟频率为高频振荡器频率除以 2; 10: 系统时钟频率为高频振荡器频率除以 4; 11: 系统时钟频率为高频振荡器频率除以 12 有一个特殊的功能 : 用户可修改 SFR 的值实现 HRC 频率在一定范围的调整 用户可以通过配置 OP_HRCR 寄存器实现, 该寄存器的配置方法可参考章节 :5.2.1 Option 相关 SFR 操作说明 OP_HRCR (83H@FFH) 系统时钟改变寄存器 ( 读 / 写 ) 符号 读 / 写 OP_HRCR[7:0] 上电初始值 n n n n n n n n 读 / 写 位编号位符号说明 7~0 OP_HRCR[7:0] HRC 频率改变寄存器用户可通过修改此寄存器的值实现高频振荡器频率 fhrc 的改变, 进而改变 IC 的系统时钟频率 fsys: 1. OP_HRCR[7:0] 上电后的初始值 OP_HRCR[s] 是一个固定值, 以确 保 fhrc 为 16MHz, 每颗 IC 的 OP_HRCR[s] 都可能会有差异 2. 初始值为 OP_HRCR[s] 时 IC 的系统时钟频率 fsys 可通过 Option 项设置为准确的 16/8/4/1.33MHz,OP_HRCR [7:0] 每改变 1 则 fsys 频率改变约 0.23% OP_HRCR [7:0] 和 fsys 输出频率的关系如下 : OP_HRCR [7:0] 值 fsys 实际输出频率 (16M 为例 ) OP_HRCR [s]-n 16000*(1-0.23%*n)kHz...... OP_HRCR [s]-2 16000*(1-0.23%*2) = 15926.4kHz OP_HRCR [s]-1 OP_HRCR [s] OP_HRCR [s]+1 OP_HRCR [s]+2 16000*(1-0.23%*1) = 15963.2kHz 16000kHz 16000*(1+0.23%*1) = 16036.8kHz 16000*(1+0.23%*2) = 16073.6kHz...... OP_HRCR [s]+n 16000*(1+0.23%*n)kHz 说明 : 1.IC 每次上电后 OP_HRCR[7:0] 的值都是高频振荡器频率 fhrc 最接近 16MHz 的值 ; 用户可借助 EEPROM 在每次上电后修正 HRC 的值以让 IC 的系统时钟频率 fsys 工作在用户需要的频率 ; 2.IC 最高工作频率尽量勿超过 16MHz 的 10% 即 17.6MHz; 3. 请用户确认 HRC 频率的改变不会影响其它功能 Page 20 of 62 V0.2

7.5 低频振荡器及低频时钟定时器 内建一个频率为 128kHz 的 RC 可作为低频时钟定时器 Base Timer 的时钟源 该振荡器直接连接一个 Base Timer, 可以把 CPU 从 STOP mode 唤醒, 并且产生中断 BTMCON (CEH) 低频定时器控制寄存器 ( 读 / 写 ) 符号 ENBTM BTMIF - - BTMFS[3:0] 读 / 写读 / 写读 / 写 - - 读 / 写 上电初始值 0 0 x x 0 0 0 0 位编号 位符号 说明 7 ENBTM 低频 Base Timer 启动控制 0:128kHz LRC 及 Base Timer 不启动 1:128kHz LRC 及 Base Timer 启动 6 BTMIF Base Timer 中断申请标志当 CPU 接受 Base Timer 的中断后, 此标志位会被硬件自动清除 3~0 BTMFS [3:0] 低频时钟中断频率选择 0000: 每 15.625ms 产生一个中断 0001: 每 31.25ms 产生一个中断 0010: 每 62.5ms 产生一个中断 0011: 每 125ms 产生一个中断 0100: 每 0.25 秒产生一个中断 0101: 每 0.5 秒产生一个中断 0110: 每 1.0 秒产生一个中断 0111: 每 2.0 秒产生一个中断 1000: 每 4.0 秒产生一个中断 1001~1111: 保留 5~4 - 保留 7.6 STOP 模式和 IDLE 模式 提供了一个特殊功能寄存器 PCON 配置该寄存器的 bit0 和 bit1 可控制 MCU 进入不同的工作模式 对 PCON.1 写入 1, 内部的高频系统时钟就会停止, 进到 STOP 模式, 达到省电功能 在 STOP 模式下, 用户可以通过外部中断 INT0,INT2 和低频时钟中断把 唤醒, 也可以通过外部复位将 STOP 唤醒 对 PCON.0 写入 1, 程序停止运行, 进入 IDLE 模式, 但外部设备及时钟继续运行, 进入 IDLE 模式前所有 CPU 状态都被保存 IDLE 模式可由任何中断唤醒 PCON (87H) 电源管理控制寄存器 ( 只写 * 不可读 *) 符号 SMOD - - - - - STOP IDL 读 / 写只写 - - - - - 只写只写 上电初始值 0 x x x x x 0 0 位编号位符号说明 1 STOP STOP 模式控制 0: 正常操作模式 1: 节能模式, 高频振荡器停止工作, 低频振荡器及 WDT 可根据设定选择工作与否 0 IDL IDLE 模式控制 0: 正常操作模式 1: 节能模式, 程序停止运行, 但外部设备及时钟继续运行, 进入 Page 21 of 62 V0.2

IDLE 模式前所有 CPU 状态都被保存 注意 : 配置 MCU 进入 STOP 或 IDLE 模式时, 对 PCON 寄存器进行配置操作的语句后面要加上 8 个 NOP 指令, 不能直接跟其它指令, 否则在唤醒后无法正常执行后续的指令! 例如 : 设置 MCU 进入 STOP 模式 : C 语言例程 : #include intrins.h PCON = 0x02; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); 汇编例程 : ORL PCON,#02H NOP NOP NOP NOP NOP NOP NOP NOP //PCON 的 bit1 STOP 位写 1, 配置 MCU 进入 STOP 模式 // 至少需要 8 个 _nop_() ; PCON 的 bit1 STOP 位写 1, 配置 MCU 进入 STOP 模式 ; 至少需要 8 个 NOP Page 22 of 62 V0.2

8 中央处理单元 CPU 及指令系统 8.1 CPU 所用的 CPU 是一个高速的 1T 标准 8051 内核, 其指令完全兼容传统 8051 内核单片机 8.2 寻址方式 的 1T 8051 CPU 指令的寻址方式有 :1 立即寻址 2 直接寻址 3 间接寻址 4 寄存器寻址 5 相对寻 址 6 变址寻址 7 位寻址 8.2.1 立即寻址 立即寻址也称为立即数, 它是在指令操作数中直接给出参加运算的操作数, 指令举例如下 : MOV A, #50H ( 这条指令是将立即数 50H 送到累加器 A 中 ) 8.2.2 直接寻址 在直接寻址方式中, 指令操作数域给出的是参加运算操作数的地址 直接寻址方式只能用来表示特殊功能寄存器 内部数据寄存器和位地址空间 其中特殊功能寄存器和位地址空间只能用直接寻址方式访问 举例如下 : ANL 50H, #91H ( 表示 50H 单元中的数与立即数 91H 相 与, 结果存放在 50H 单元中 其中 50H 为直接地址, 表示内部数据寄存器 RAM 中的一个单元 ) 8.2.3 间接寻址 间接寻址采用 R0 或 R1 前添加 @ 符号来表示 假设 R1 中的数据是 40H, 内部数据存储器 40H 单元的数据为 55H, 则指令为 MOV A, @R1 ( 把数据 55H 传送至累加器 A) 8.2.4 寄存器寻址 寄存器寻址时对选定的工作寄存器 R7~R0 累加器 A 通用寄存器 B 地址寄存器和进位 C 中的数进行操作 其中寄存器 R7~R0 由指令码的低 3 位表示,ACC B DPTR 及进位位 C 隐含在指令码中 因此, 寄存器寻址也包含一种隐含寻址方式 寄存器工作区的选择由程序状态字寄存器 PSW 中的 RS1 RS0 来决定 指令操作数指定的寄存器均指当前工作区的寄存器 INC R0 是指 (R0)+1 R0 8.2.5 相对寻址 相对寻址是将程序计数器 PC 中的当前值与指令第二字节给出的数相加, 其结果作为转移指令的转移地址 转移地址也成为转移目的地址,PC 中的当前值成为基地址, 指令第二字节给出的数成为偏移量 由于目的地址是相对于 PC 中的基地址而言, 所以这种寻址方式成为相对寻址 偏移量为带符号的数, 所能表示的范围为 +127~- 128. 这种寻址方式主要用于转移指令 JC $+50H 表示若进位位 C 为 0, 则程序计数器 PC 中的内容不改变, 即不转移 若进位位 C 为 1, 则以 PC 中的当前值及基地址, 加上偏移量 50H 后所得到的结果作为该转移指令的目的地址 8.2.6 变址寻址 在变址寻址方式中, 指令操作数制定一个存放变址基址的变址寄存器 变址寻址时, 偏移量与变址基值相加, 其结果作为操作数的地址 变址寄存器有程序计数器 PC 和地址寄存器 DPTR MOVC A, @A+DPTR 表示累加器 A 为偏移量寄存器, 其内容与地址寄存器 DPTR 中的内容相加, 其结果作为操作数的地址, 取出该单元中的数送入累加器 A 中 8.2.7 位寻址 位寻址是指对一些可进行位操作的内部数据存储器 RAM 和特殊功能寄存器进行位操作时的寻址方式 在进行位操作时, 借助于进位位 C 作为位操作累加器, 指令操作数直接给出该位的地址, 然后根据操作码的性质对该位进行位操作 位地址与字节直接寻址中的字节地址编码方式完全一样, 主要由操作指令的性质加以区分, 使用时 Page 23 of 62 V0.2

应特别注意 MOV C, 20H ( 将地址为 20H 的位操作寄存器值送入进位位 C 中 ) 9 INTERRUPT 中断 单片机提供 9 个中断源 :Timer0,Timer1,Timer2,INT0,INT2,ADC,SSI0,SSI1,Base Timer 这 9 个中断源分为 2 个中断优先级, 并可以单独分别设置为高优先级或者低优先级 三个外部中断可以分别设定其中每个中断源的触发条件为上升 下降或上下沿, 每个中断分别有独立的优先级设置位 中断标志 中断向量和使能位, 总的使能位 EA 可以实现所有中断的打开或者关闭 9.1 中断源 向量 的中断源 中断向量 及相关控制位列表如下 : 中断源 INT0 Timer0 Timer1 SSI0 Timer2 ADC SSI1 BTM INT2 中断发生时间 外部中断 0 条件符合 Timer0 溢出 Timer1 溢出 接收或发送完成 Timer2 溢出 ADC 转换完成 接收或发送完成 Base timer 溢出 外部中断 2 条件符合 中断标志 中断使能控制 中断优先权控制 中断向量查询优先级 中断号 (C51) 标志清除方式 能否唤醒 STOP IE0 EINT0 IPINT0 0003H 1 ( 高 ) 0 H/W Auto 能 TF0 ET0 IPT0 000BH 2 1 H/W Auto 不能 TF1 ET1 IPT1 001BH 3 3 H/W Auto 不能 SSIF0 ESSI0 IPSSI0 0023H 4 4 必须用户 清除 TF2 ET2 IPT2 002BH 5 5 ADCIF EADC IPADC 0033H 6 6 必须用户清除 必须用户清除 SSIF1 ESSI1 IPSSI1 003BH 7 7 必须用户 清除 BTMIF EBTM IPBTM 004BH 8 9 H/W Auto 能 - EINT2 IPINT2 0053H 9 10 - 能 在 EA=1 及各中断使能控制为 1 的情况下, 各中断发生情况如下 : 定时器中断 :Timer0 和 Timer1 溢出时会产生中断并将中断标志 TF0 和 TF1 置为 1, 当单片机执行该定时器中断时, 中断标志 TF0 和 TF1 会被硬件自动清 0 Timer2 溢出时会产生中断并将中断标志 TF2 置为 1, 在 Timer2 中断发生后, 硬件并不会自动清除 TF2 位, 此 bit 必须由使用者的软件负责清除 ADC 中断 :ADC 中断的发生时间为 ADC 转换完成时, 其中断标志就是 ADC 转换结束标志 EOC/ADCIF (ADCCON.4) 当使用者设定 ADCS 开始转换后,EOC 会被硬件自动清除为 0 ; 当转换完成后,EOC 会被硬件自动置为 1 使用者在 ADC 中断发生之后, 进入中断服务程序时, 必须用软件去清除它 外部中断 INT0,INT2: 当外部中断口有中断条件发生时, 外部中断就发生了 INT0 和 INT2 各有三个外部中断源, 用户可以根据需要设成上沿 下沿或者双沿中断, 可通过设置 SFR (INTxF 和 INTxR) 来实现 用户可通过 IP 寄存器来设置每个中断的优先级级别 外部中断 INT0,INT2 还可以唤醒单片机的 STOP 不能 不能 不能 不能 Page 24 of 62 V0.2

9.2 中断结构图 的中断结构如下图所示 : INT0 IE[7] (EA) IE[0](EINT0) TCON[1] (IE0) Interrupt to 03h Timer-0 IE[7] (EA) IE[1] (ET0) TCON[5] (TF0) Interrupt to 0Bh Timer-1 IE[7] (EA) IE[3] (ET1) TCON[7] (TF1) Interrupt to 1Bh SSI0 Timer-2 ADC SSI1 BTM IE[7] (EA) IE[4] (ESSI0) SSIF0 IE[7] (EA) IE[5] (ET2) T2CON[7] (TF2) IE[7] (EA) IE[6] (EADC) ADCCON[4] (EOC/ADCIF) IE[7] (EA) IE1[0] (ESSI1) SSIF1 IE[7] (EA) IE1[2] (EBTM) BTMCON[6] (BTMIF) Interrupt to 23h Interrupt to 2Bh Interrupt to 33h Interrupt to 3Bh Interrupt to 4Bh INT2 IE[7] (EA) IE1[3] (EINT2) Interrupt to 53h 中断结构和向量 Page 25 of 62 V0.2

9.3 中断优先级 单片机的中断具有两个中断优先级, 这些中断源的请求可编程为高优先级中断或者低优先级中断, 即可实现两级中断服务程序的嵌套 一个正在执行的低优先级中断能被高优先级中断请求所中断, 但不能被另一个同一优先级的中断请求所中断, 一直执行到结束, 遇到返回指令 RETI, 返回主程序后再执行一条指令才能响应新的中断请求 也就是说 : 1 低优先级中断可被高优先级中断请求所中断, 反之不能 ; 2 任何一种中断, 在响应过程中, 不能被同一优先级的中断请求所中断 中断查询顺序 : 单片机的同一优先级中断, 如果同时来几个中断, 则中断响应的优先顺序同 C51 中的中断查询号相同, 即查询号小的会优先响应, 查询号大的会慢响应 9.4 中断处理流程 当一个中断产生并且被 CPU 响应, 则主程序运行被中断, 将执行下述操作 1 当前正在执行的指令执行完 ; 2 PC 值被压入堆栈, 保护现场 ; 3 中断向量地址载入程序计数器 PC; 4 执行相应的中断服务程序 ; 5 中断服务程序结束并 RETI; 6 将 PC 值退栈, 并返回执行中断前的程序 在此过程中, 系统不会立即执行其它同一优先级的中断, 但会保留所发生的中断请求, 在当前中断处理结束后, 转去执行新的中断请求 9.5 中断相关 SFR 寄存器 IE (A8H) 中断使能寄存器 ( 读 / 写 ) 符号 EA EADC ET2 ESSI0 ET1 - ET0 EINT0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 - 读 / 写读 / 写 上电初始值 0 0 0 0 0 x 0 0 位编号位符号说明 7 EA 中断使能的总控制 0: 关闭所有的中断 1: 打开所有的中断 6 EADC ADC 中断使能控制 0: 关闭 ADC 中断 1: 允许 ADC 转换完成时产生中断 5 ET2 Timer2 中断使能控制 0: 关闭 TIMER2 中断 1: 允许 TIMER2 中断 4 ESSI0 SSI0 中断使能控制 0: 关闭 SSI0 中断 1: 允许 SSI0 中断 3 ET1 Timer1 中断使能控制 0: 关闭 TIMER1 中断 1: 允许 TIMER1 中断 1 ET0 Timer0 中断使能控制 0: 关闭 TIMER0 中断 1: 允许 TIMER0 中断 0 EINT0 外部中断 0 使能控制 Page 26 of 62 V0.2

0: 关闭 INT0 中断 1: 打开 INT0 中断 2 - 保留 IP (B8H) 中断优先级控制寄存器 ( 读 / 写 ) 符号 - IPADC IPT2 IPSSI0 IPT1 - IPT0 IPINT0 读 / 写 - 读 / 写 读 / 写 读 / 写 读 / 写 - 读 / 写 读 / 写 上电初始值 x 0 0 0 0 x 0 0 位编号 位符号 说明 6 IPADC ADC 中断优先权选择 0:ADC 中断优先权为低 1:ADC 中断优先权为高 5 IPT2 Timer2 中断优先权选择 0:Timer2 中断优先权为低 1:Timer2 中断优先权为高 4 IPSSI0 SSI0 中断优先权选择 0:SSI0 中断优先权为低 1:SSI0 中断优先权为高 3 IPT1 Timer1 中断优先权选择 0:Timer1 中断优先权为低 1:Timer1 中断优先权为高 1 IPT0 Timer0 中断优先权选择 0:Timer0 中断优先权为低 1:Timer0 中断优先权为高 0 IPINT0 INT0 计数器中断优先权选择 0:INT0 中断优先权为低 1:INT0 中断优先权为高 7,2 - 保留 IE1 (A9H) 中断使能寄存器 1( 读 / 写 ) 符号 - - - - EINT2 EBTM - ESSI1 读 / 写 - - - - 读 / 写 读 / 写 - 读 / 写 上电初始值 x x x x 0 0 x 0 位编号 位符号 说明 3 EINT2 外部中断 2 使能控制 0: 关闭 INT2 中断 1: 打开 INT2 中断 2 EBTM Base Timer 中断使能控制 0: 关闭 Base Timer 中断 1: 允许 Base Timer 中断 0 ESSI1 SSI1 中断使能控制 0: 关闭 SSI1 中断 1: 允许 SSI1 中断 7~4,1 - 保留 Page 27 of 62 V0.2

IP1 (B9H) 中断优先级控制寄存器 1( 读 / 写 ) 符号 - - - - IPINT2 IPBTM - IPSSI1 读 / 写 - - - - 读 / 写 读 / 写 - 读 / 写 上电初始值 x x x x 0 0 x 0 位编号 位符号 说明 3 IPINT2 INT2 计数器中断优先权选择 0:INT2 中断优先权为低 1:INT2 中断优先权为高 2 IPBTM Base Timer 中断优先权选择 0:Base Timer 中断优先权为低 1:Base Timer 中断优先权为高 0 IPSSI1 SSI1 中断优先权选择 0:SSI1 中断优先权为低 1:SSI1 中断优先权为高 7~4,1 - 保留 TCON (88H) 定时器控制寄存器 ( 读 / 写 ) 符号 TF1 TR1 TF0 TR0 - - IE0 - 读 / 写读 / 写读 / 写读 / 写读 / 写 - - 读 / 写 - 上电初始值 0 0 0 0 x x 0 x 位编号位符号说明 1 IE0 INT0 溢出中断请求标志 INT0 产生溢出, 发生中断时, 硬件将 IE0 置 为 1, 申请中断,CPU 响应时, 硬件清 0 3~2,0 - 保留 INT0F (BAH) INT0 下降沿中断控制寄存器 ( 读 / 写 ) 符号 - - - - INT0F3 INT0F2 INT0F1 - 读 / 写 - - - - 读 / 写读 / 写读 / 写 - 上电初始值 x x x x 0 0 0 x 位编号 位符号 说明 3~1 INT0Fn (n=1~3) INT0 下降沿中断控制 0 : INT0n 下降沿中断关闭 1: INT0n 下降沿中断使能 7~4,0 - 保留 INT0R (BBH) INT0 上升沿中断控制寄存器 ( 读 / 写 ) 符号 - - - - INT0R3 INT0R2 INT0R1 - 读 / 写 - - - - 读 / 写读 / 写读 / 写 - 上电初始值 x x x x 0 0 0 x 位编号 位符号 说明 3~1 INT0Rn (n=1~3) INT0 上升沿中断控制 0 : INT0n 上升沿中断关闭 1: INT0n 上升沿中断使能 Page 28 of 62 V0.2

7~4,0 - 保留 INT2F (C6H) INT2 下降沿中断控制寄存器 ( 读 / 写 ) 符号 - - INT2F5 INT2F4 - - INT2F1 - 读 / 写 - - 读 / 写读 / 写 - - 读 / 写 - 上电初始值 x x 0 0 x x 0 x 位编号 位符号 说明 5~4,1 INT2Fn (n=1,4~5) INT2 下降沿中断控制 0 : INT2n 下降沿中断关闭 1: INT2n 下降沿中断使能 7~6,3~2,0 - 保留 INT2R (C7H) INT2 上升沿中断控制寄存器 ( 读 / 写 ) 符号 - - INT2R5 INT2R4 - - INT2R1 - 读 / 写 - - 读 / 写读 / 写 - - 读 / 写 - 上电初始值 x x 0 0 x x 0 x 位编号 位符号 说明 5~4,1 INT2Rn (n=1,4~5) INT2 上升沿中断控制 0 : INT2n 上升沿中断关闭 1: INT2n 上升沿中断使能 7~6,3~2,0 - 保留 10 定时器 TIMER0 TIMER1 T0 和 T1 是 单片机内部的两个 16 位定时器 / 计数器, 它们具有计数方式和定时方式两种工作模 式 特殊功能寄存器 TMOD 中有一个控制位 C/Tx 来选择 T0 和 T1 是定时器还是计数器 它们本质上都是一个加法计数器, 只是计数的来源不同 定时器的来源为系统时钟或者其分频时钟, 但计数器的来源为外部管脚的输入脉冲 只有在 TRx=1 的时候,T0 和 T1 才会被打开计数 计数器模式下, 计数器外部输入管脚 T0 和 T1 管脚上每来一个脉冲,T0 和 T1 的计数值分别增加 1 定时器模式下, 可通过特殊功能寄存器 TMCON 来选择 T0 和 T1 的计数来源是 fsys/12 或 fsys (fsys 为系统时钟 ) 定时器 / 计数器 T0 有 4 种工作模式, 定时器 / 计数器 T1 有 3 种工作模式 ( 模式三不存在 ): 1 模式 0:13 位定时器 / 计数器模式 2 模式 1:16 位定时器 / 计数器模式 3 模式 2: 8 位自动重载模式 4 模式 3: 两个 8 位定时器 / 计数器模式在上述模式中,T0 和 T1 的模式 0 1 2 都相同, 模式 3 不同 10.1 T0 和 T1 相关特殊功能寄存器 符号地址说明 7 6 5 4 3 2 1 0 Reset 值 TCON 88H 定时器控制寄存器 TF1 TR1 TF0 TR0 - - IE0-0000xx0xb TMOD 89H 定时器工作模式寄存器 - C/T1 M11 M01 - C/T0 M10 M00 x000x000b TL0 8AH 定时器 0 低 8 位 TL0[7:0] 00000000b TL1 8BH 定时器 1 低 8 位 TL1[7:0] 00000000b TH0 8CH 定时器 0 高 8 位 TH0[7:0] 00000000b TH1 8DH 定时器 1 高 8 位 TH1[7:0] 00000000b Page 29 of 62 V0.2

TMCON 8EH 定时器频率控制寄存器 - - - - - T2FD T1FD T0FD xxxxx000b 各寄存器的解释说明如下 : TCON (88H) 定时器控制寄存器 ( 读 / 写 ) 符号 TF1 TR1 TF0 TR0 - - IE0 - 读 / 写读 / 写读 / 写读 / 写读 / 写 - - 读 / 写 - 上电初始值 0 0 0 0 x x 0 x 位编号位符号说明 7 TF1 T1 溢出中断请求标志 T1 产生溢出, 发生中断时, 硬件将 TF1 置为 1, 申请中断,CPU 响应时, 硬件清 0 6 TR1 定时器 T1 的运行控制位 此位由软件置 1 和清 0 当 TR1=1 时, 允许 T1 开始计数 TR1=0 时禁止 T1 计数 5 TF0 T0 溢出中断请求标志 T0 产生溢出, 发生中断时, 硬件将 TF0 置为 1, 申请中断,CPU 响应时, 硬件清 0 4 TR0 定时器 T0 的运行控制位 此位由软件置位和清 0 当 TR0=1 时, 允许 T0 开始计数 TR0=0 时禁止 T0 计数 TMOD (89H) 定时器工作模式寄存器 ( 读 / 写 ) 符号 - C/T1 M11 M01 - C/T0 M10 M00 读 / 写 - 读 / 写读 / 写读 / 写 - 读 / 写读 / 写读 / 写 上电初始值 x 0 0 0 x 0 0 0 T1 T0 位编号位符号说明 6 C/T1 TMOD[6] 控制定时器 1 0: 定时器,T1 计数来源于 fsys 分频 1: 计数器,T1 计数来源于外部管脚 T1 5~4 M11,M01 定时器 / 计数器 1 模式选择 00 : 13 位定时器 / 计数器,TL1 高 3 位无效 01 : 16 位定时器 / 计数器,TL1 和 TH1 全 10 : 8 位自动重载定时器, 溢出时将 TH1 存放的值自动重装入 TL1 11 : 定时器 / 计数器 1 无效 ( 停止计数 ) 2 C/T0 TMOD[2] 控制定时器 0 0: 定时器,T0 计数来源于 fsys 分频 1: 计数器,T0 计数来源于外部管脚 T0 1~0 M10,M00 定时器 / 计数器 0 模式选择 00 : 13 位定时器 / 计数器,TL0 高 3 位无效 01 : 16 位定时器 / 计数器,TL0 和 TH0 全 10 : 8 位自动重载定时器, 溢出时将 TH0 存放的值自动重装入 TL0 11 : 定时器 0 此时作为双 8 位定时器 / 计数器 TL0 作为一个 8 位定时器 / 计数器, 通过标准定时器 0 的控制位控制 ;TH0 仅作为一个 8 位定时器, 由定时器 1 的控制位控制 7,3 - 保留 TMOD 寄存器中 TMOD[0]~TMOD[2] 是设置 T0 的工作模式 ;TMOD[4]~TMOD[6] 是设置 T1 的工作模式 定时器和计数器 Tx 功能由特殊功能寄存器 TMOD 的控制位 C/Tx 来选择,M0x 和 M1x 都是用来选择 Tx 的工作模式 TRx 作为 T0 和 T1 的开关控制, 只有 TRx=1 时 T0 和 T1 才打开 Page 30 of 62 V0.2

TMCON (8EH) 定时器频率控制寄存器 ( 读 / 写 ) 符号 - - - - - T2FD T1FD T0FD 读 / 写 - - - - - 读 / 写 读 / 写 读 / 写 上电初始值 x x x x x 0 0 0 位编号位符号说明 1 T1FD T1 输入频率选择控制 0:T1 频率源自于 fsys/12 1:T1 频率源自于 fsys 0 T0FD T0 输入频率选择控制 0:T0 频率源自于 fsys/12 1:T0 频率源自于 fsys IE (A8H) 中断使能寄存器 ( 读 / 写 ) 符号 EA EADC ET2 ESSI0 ET1 - ET0 EINT0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 - 读 / 写读 / 写 上电初始值 0 0 0 0 0 x 0 0 位编号位符号说明 3 ET1 Timer1 中断使能控制 0: 关闭 TIMER1 中断 1: 允许 TIMER1 中断 1 ET0 Timer0 中断使能控制 0: 关闭 TIMER0 中断 1: 允许 TIMER0 中断 IP (B8H) 中断优先级控制寄存器 ( 读 / 写 ) 符号 - IPADC IPT2 IPSSI0 IPT1 - IPT0 IPINT0 读 / 写 - 读 / 写读 / 写读 / 写读 / 写 - 读 / 写读 / 写 上电初始值 x 0 0 0 0 x 0 0 位编号位符号说明 3 IPT1 Timer1 中断优先权 0: 设定 Timer 1 的中断优先权是 低 1: 设定 Timer 1 的中断优先权是 高 1 IPT0 Timer0 中断优先权 0: 设定 Timer 0 的中断优先权是 低 1: 设定 Timer 0 的中断优先权是 高 10.2 T0 工作模式 通过对寄存器 TMOD 中的 M10 M00(TMOD[1] TMOD[0]) 的设置, 定时器 / 计数器 0 可实现 4 种不同的工作模式 工作模式 0: 13 位计数器 / 定时器 TH0 寄存器存放 13 位计数器 / 定时器的高 8 位 (TH0.7~TH0.0),TL0 存放低 5 位 (TL0.4~TL0.0) TL0 的高三位 (TL0.7~TL0.5) 是不确定值, 读取时应被忽略掉 当 13 位定时器 / 计数器递增溢出时, 系统会将定时器溢出标志 TF0 置 1 如果定时器 0 中断被允许, 将会产生一个中断 Page 31 of 62 V0.2

C/T0 位选择计数器 / 定时器的时钟输入源 如果 C/T0=1, 定时器 0 输入脚 T0 的电平从高到低的变化, 会使定时器 0 数据寄存器加 1 如果 C/T0=0, 选择系统时钟的分频为定时器 0 的时钟源 当 TR0 置 1 打开定时器 T0 TR0 置 1 并不强行复位定时器, 意味着如果 TR0 置 1, 定时器寄存器将从上次 TR0 清 0 时的值开始计数 所以, 在允许定时器之前, 应该设定定时器寄存器的初始值 当作为定时器应用时, 可配置 T0FD 来选择时钟源的分频比例 Fsys T0=P1.2 /12 T0FD=0 /1 T0FD=1 TMOD.2=0 (C/T0) TMOD.2=1 (C/T0) TL0 5 bit TH0 8 bit (TF0) TCON.5 T0 中断请求 (TR0) TCON.4 定时器 / 计数器工作模式 0: 13 位定时器 / 计数器 工作模式 1: 16 位计数器 / 定时器除了使用 16 位 (TL0 的 8 位数据全部有效 ) 计数器 / 定时器之外, 模式 1 和模式 0 的运行方式相同 打开和配置计数器 / 定时器方式也相同 Fsys T0=P1.2 /12 T0FD=0 /1 T0FD=1 TMOD.2=0 (C/T0) (TR0) TCON.4 TMOD.2=1 (C/T0) TL0 8 bit 定时器 / 计数器工作模式 0: 16 位定时器 / 计数器 TH0 8 bit (TF0) TCON.5 T0 中断请求 工作模式 2: 8 位自动重载计数器 / 定时器在工作模式 2 中, 定时器 0 是 8 位自动重载计数器 / 定时器 TL0 存放计数值,TH0 存放重载值 当在 TL0 中的计数器溢出至 0x00 时, 定时器溢出标志 TF0 被置 1, 寄存器 TH0 的值被重载入寄存器 TL0 中 如果定时器中断使能, 当 TF0 置 1 时将产生一个中断, 但在 TH0 中的重载值不会改变 在允许定时器正确计数开始之前,TL0 必须初始化为所需要的值 除了自动重载功能外, 工作模式 2 中的计数器 / 定时器的使能和配置方式同模式 0 和 1 是相同的 当作为定时器应用时, 可配置寄存器 TMCON.0(T0FD) 来选择定时器时钟源被系统时钟 fsys 分频的比例 Fsys T0=P1.2 /12 T0FD=0 /1 T0FD=1 TMOD.2=0 (C/T0) TMOD.2=1 (C/T0) (TR0) TCON.4 TL0 8 bit Set (TF0) TCON.5 T0 中断请求 TH0 8 bit 定时器 / 计数器工作模式 2: 自动重载的 8 位定时器 / 计数器 Page 32 of 62 V0.2

工作模式 3: 两个 8 位计数器 / 定时器 ( 仅限于定时器 0) 在工作模式 3 中, 定时器 0 用作两个独立的 8 位计数器 / 定时器, 分别由 TL0 和 TH0 控制 TL0 通过定时器 0 的控制位 ( 在 TCON 中 ) 和状态位 ( 在 TMOD 中 ):TR0 C/T0 TF0 控制 定时器 0 可通过 T0 的 TMOD.2(C/T0) 来选择是定时器模式还是计数器模式 TH0 通过定时器 1 的控制 TCON 来设置相关的控制, 但 TH0 仅被限定为定时器模式, 无法通过 TMOD.2(C/T0) 来设定为计数器模式 TH0 由定时器控制位 TR1 的控制使能, 需设定 TR1=1 当发生溢出及产生中断时,TF1 会置 1, 并按 T1 发生中断来进行相应的处理 在 T0 被设为工作模式 3 时,TH0 定时器占用了 T1 的中断资源及 TCON 中寄存器,T1 的 16 位计数器会停止计数, 相当于 TR1=0 当采用 TH0 定时器工作时, 需设置 TR1=1 10.3 T1 工作模式 通过对寄存器 TMOD 中的 M11 M01(TMOD[5] TMOD[4]) 的设置, 定时器 / 计数器 1 可实现 3 种不同的工作模式 工作模式 0: 13 位计数器 / 定时器 TH1 寄存器存放 13 位计数器 / 定时器的高 8 位 (TH1.7~TH1.0);TL1 存放低 5 位 (TL1.4~TL1.0) TL1 的高三位 (TL1.7~TL1.5) 是不确定值, 读取时应被忽略掉 当 13 位定时器计数器递增溢出时, 系统会将定时器溢出标志 TF1 置 1 如果定时器 1 中断被允许, 将会产生一个中断 C/T1 位选择计数器 / 定时器的时钟源 如果 C/T1=1, 定时器 1 输入脚 T1 的电平从高到低的变化, 会使定时器 1 数据寄存器加 1 如果 C/T1=0, 选择系统时钟的分频为定时器 1 的时钟源 TR1 置 1 打开定时器 TR1 置 1 并不强行复位定时器, 意味着如果 TR1 置 1, 定时器寄存器将从上次 TR1 清 0 时的值开始计数 所以, 在允许定时器之前, 应该设定定时器寄存器的初始值 当作为定时器应用时, 可配置 T1FD 来选择时钟源的分频比例 Fsys T1=P1.3 /12 T1FD=0 /1 T1FD=1 TMOD.6=0 (C/T1) (TR1) TCON.6 TMOD.6=1 (C/T1) TL1 5 bit TH1 8 bit (TF1) TCON.7 T1 中断请求 定时器 / 计数器工作模式 0: 13 位定时器 / 计数器 工作模式 1: 16 位计数器 / 定时器除了使用 16 位 (TL1 的 8 位数据全部有效 ) 计数器 / 定时器之外, 模式 1 和模式 0 的运行方式相同 打开和配置计数器 / 定时器方式也相同 Fsys T1=P1.3 /12 T1FD=0 /1 T1FD=1 TMOD.6=0 (C/T1) TMOD.6=1 (C/T1) TL1 8 bit TH1 8 bit (TF1) TCON.7 T1 中断请求 (TR1) TCON.6 定时器 / 计数器工作模式 0: 16 位定时器 / 计数器 工作模式 2: 8 位自动重载计数器 / 计数器在工作模式 2 中, 定时器 1 是 8 位自动重载计数器 / 定时器 TL1 存放计数值,TH1 存放重载值 当在 TL1 Page 33 of 62 V0.2

中的计数器溢出至 0x00 时, 定时器溢出标志 TF1 被置 1, 寄存器 TH1 的值被重载入寄存器 TL1 中 如果定时器中断使能, 当 TF1 置 1 时将产生一个中断, 但在 TH1 中的重载值不会改变 在允许定时器正确计数开始之前,TL1 必须初始化为所需要的值 除了自动重载功能外, 工作模式 2 中的计数器 / 定时器的使能和配置方式同方式 0 和 1 是相同的 当作为定时器应用时, 可配置寄存器 TMCON.4(T1FD) 来选择定时器时钟源被系统时钟 fsys 分频的比例 Fsys T1=P1.3 /12 T1FD=0 /1 T1FD=1 TMOD.6=0 (C/T1) TMOD.6=1 (C/T1) (TR1) TCON.6 TL1 8 bit Set TCON.7 T1 中断请求 TH1 8 bit 定时器 / 计数器工作模式 2: 自动重载的 8 位定时器 / 计数器 Page 34 of 62 V0.2

11 定时器 TIMER2 单片机内部的 Timer2 作为定时器本质上都是一个加法计数器, 定时器的时钟来源为系统时钟或者其分频时钟 TR2 是 T2 计数的开关控制, 只有在 TR2=1 的时候,T2 才会被打开计数 定时器模式下, 可通过特殊功能寄存器 TMCON 来选择 T2 的计数来源是 fsys/12 或 fsys 定时器 T2 工作在模式 1:16 位自动重载定时器模式 11.1 T2 相关特殊功能寄存器 符号地址说明 7 6 5 4 3 2 1 0 Reset 值 T2CON C8H 定时器 2 控制寄存器 TF2 - - - - TR2 - - 0xxxx0xxb T2MOD C9H 定时器 2 工作模式寄存器 - - - - - - T2OE DCEN xxxxxx00b RCAP2L CAH 定时器 2 重载低 8 位 RCAP2L[7:0] 00000000b RCAP2H CBH 定时器 2 重载高 8 位 RCAP2H[7:0] 00000000b TL2 CCH 定时器 2 低 8 位 TL2[7:0] 00000000b TH2 CDH 定时器 2 高 8 位 TH2[7:0] 00000000b TMCON 8EH 定时器频率控制寄存器 - - - - - T2FD T1FD T0FD xxxxx000b 各寄存器的解释说明如下 : T2CON (C8H) 定时器 2 控制寄存器 ( 读 / 写 ) 符号 TF2 - - - - TR2 - - 读 / 写读 / 写 - - - - 读 / 写 - - 上电初始值 0 x x x x 0 x x 位编号 位符号 说明 7 TF2 定时器 2 溢出标志位 0: 无溢出 ( 必须由软件清 0) 1: 溢出 2 TR2 定时器 2 开始 / 停止控制位 0: 停止定时器 2 1: 开始定时器 2 6~3,1~0 - 固定写 0 T2MOD (C9H) 定时器 2 工作模式寄存器 ( 读 / 写 ) 符号 - - - - - - T2OE DCEN 读 / 写 - - - - - - 读 / 写 读 / 写 上电初始值 x x x x x x 0 0 位编号 位符号 说明 1 T2OE 定时器 2 输出允许位 0: 设置 T2 作为时钟输入或 I/O 端口 1: 设置 T2 作为时钟输出 0 DCEN 递减计数允许位 0: 禁止定时器 2 作为递增 / 递减计数器, 定时器 2 仅作为递增计数器 1: 允许定时器 2 作为递增 / 递减计数器 7~2 - 保留 Page 35 of 62 V0.2

TMCON (8EH) 定时器频率控制寄存器 ( 读 / 写 ) 符号 - - - - - T2FD T1FD T0FD 读 / 写 - - - - - 读 / 写 读 / 写 读 / 写 上电初始值 x x x x x 0 0 0 位编号位符号说明 2 T2FD T2 输入频率选择控制 0:T2 频率源自于 fsys/12 1:T2 频率源自于 fsys IE (A8H) 中断使能寄存器 ( 读 / 写 ) 符号 EA EADC ET2 ESSI0 ET1 - ET0 EINT0 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 - 读 / 写 读 / 写 上电初始值 0 0 0 0 0 x 0 0 位编号位符号说明 5 ET2 Timer2 中断使能控制 0: 关闭 TIMER2 中断 1: 允许 TIMER2 中断 IP (B8H) 中断优先级控制寄存器 ( 读 / 写 ) 符号 - IPADC IPT2 IPSSI0 IPT1 - IPT0 IPINT0 读 / 写 - 读 / 写 读 / 写 读 / 写 读 / 写 - 读 / 写 读 / 写 上电初始值 x 0 0 0 0 x 0 0 位编号 位符号 说明 5 IPT2 Timer2 中断优先权 0: 设定 Timer 2 的中断优先权是 低 1: 设定 Timer 2 的中断优先权是 高 11.2 T2 工作模式 工作模式 1: 16 位自动重载定时器在 16 位自动重载方式下, 定时器 2 递增到 0xFFFFH, 在溢出后置起 TF2 位, 同时定时器自动将用户软件写好的寄存器 RCAP2H 和 RCAP2L 的 16 位值装入 TH2 和 TL2 寄存器 T2FD = 0 /12 Fsys /1 T2FD = 1 TR2 TL2 TH2 Reload RCAP2L RCAP2H Overflow TF2 Timer2 模式 1: 16 位自动重载 DCEN = 0 Page 36 of 62 V0.2

注意 : 1. 当事件发生时或其它任何时间都能由软件设置 TF2 为 1, 只有软件以及硬件复位才能使之清 0; 2. 当 EA = 1 且 ET2 = 1 时, 设置 TF2 为 1 能引起定时器 2 中断 12 GP I/O 提供了最多 6 个可控制的双向 GPIO 端口, 输入输出控制寄存器用来控制各端口的输入输出状态, 当端口作为输入时, 每个 I/O 端口带有由 PxPHy 控制的内部上拉电阻 此 6 个 IO 同其他功能复用 I/O 端口在输入或输出状态下, 从端口数据寄存器里读到的都是端口的实际状态值 注意 : 未使用及封装未引出的 IO 口均要设置为强推挽输出模式 12.1 GPIO 结构图 强推挽输出模式强推挽输出模式下, 能够提供持续的大电流驱动 : 大于 20mA 的输出高, 大于 75mA 的输出低 强推挽输出模式的端口结构示意图如下 : VDD P PxCy = 1 output register 强推挽输出模式 N GND PORT 带上拉的输入模式带上拉的输入模式下, 输入口上恒定接一个上拉电阻, 仅当输入口上电平被拉低时, 才会检测到低电平信号 带上拉的输入模式的端口结构示意图如下 : VDD 上拉电阻 PxCy = 0 PxHy = 1 Input PORT 带上拉的输入模式 高阻输入模式 (Input only) 高阻输入模式的端口结构示意图如下所示 : Page 37 of 62 V0.2

PxCy = 0 PxHy = 0 Input PORT 12.2 I/O 端口相关寄存器 高阻输入模式 P0CON (9AH) P0 口输入 / 输出控制寄存器 ( 读 / 写 ) 符号 - - P0C5 - - - - - 读 / 写 - - 读 / 写 - - - - - 上电初始值 x x 0 x x x x x P0PH (9BH) P0 口上拉电阻控制寄存器 ( 读 / 写 ) 符号 - - P0H5 - - - - - 读 / 写 - - 读 / 写 - - - - - 上电初始值 x x 0 x x x x x P1CON (91H) P1 口输入 / 输出控制寄存器 ( 读 / 写 ) 符号 - - - - P1C3 P1C2 P1C1 - 读 / 写 - - - - 读 / 写读 / 写读 / 写 - 上电初始值 x x x x 0 0 0 x P1PH (92H) P1 口上拉电阻控制寄存器 ( 读 / 写 ) 符号 - - - - P1H3 P1H2 P1H1 - 读 / 写 - - - - 读 / 写读 / 写读 / 写 - 上电初始值 x x x x 0 0 0 x P2CON (A1H) P2 口输入 / 输出控制寄存器 ( 读 / 写 ) 符号 - - - - - - P2C1 P2C0 读 / 写 - - - - - - 读 / 写 读 / 写 上电初始值 x x x x x x 0 0 P2PH (A2H) P2 口上拉电阻控制寄存器 ( 读 / 写 ) 符号 - - - - - - P2H1 P2H0 读 / 写 - - - - - - 读 / 写 读 / 写 上电初始值 x x x x x x 0 0 位编号 位符号 说明 7~0 PxCy Px 口输入输出控制 : (x=0~2, y=0~5) 0:Pxy 为输入模式 ( 上电初始值 ) 1:Pxy 为强推挽输出模式 7~0 PxHy Px 口上拉电阻设置, 仅在 PxCy=0 时有效 : (x=0~2, y=0~5) Page 38 of 62 V0.2

0:Pxy 为高阻输入模式 ( 上电初始值 ), 上拉电阻关闭 ; 1:Pxy 上拉电阻打开 P0 (80H) P0 口数据寄存器 ( 读 / 写 ) 符号 - - P0.5 - - - - - 读 / 写 - - 读 / 写 - - - - - 上电初始值 x x 0 x x x x x P1 (90H) P1 口数据寄存器 ( 读 / 写 ) 符号 - - - - P1.3 P1.2 P1.1 - 读 / 写 - - - - 读 / 写读 / 写读 / 写 - 上电初始值 x x x x 0 0 0 x P2 (A0H) P2 口数据寄存器 ( 读 / 写 ) 符号 - - - - - - P2.1 P2.0 读 / 写 - - - - - - 读 / 写 读 / 写 上电初始值 x x x x x x 0 0 IOHCON (97H) IOH 设置寄存器 ( 读 / 写 ) 符号 - - P2L[1:0] P0H[1:0] - - 读 / 写 - - 读 / 写读 / 写读 / 写读 / 写 - - 上电初始值 x x 0 0 0 0 x x 位编号 位符号 说明 5~4 P2L[1:0] P2 低四位 IOH 设置 00: 设置 P20/P21 的 IOH 等级 0( 最大 ); 01: 设置 P20/P21 的 IOH 等级 1; 10: 设置 P20/P21 的 IOH 等级 2; 11: 设置 P20/P21 的 IOH 等级 3( 最小 ); 3~2 P0H[1:0] P0 高四位 IOH 设置 00: 设置 P05 的 IOH 等级 0( 最大 ); 01: 设置 P05 的 IOH 等级 1; 10: 设置 P05 的 IOH 等级 2; 11: 设置 P05 的 IOH 等级 3( 最小 ); 7~6,1~0 - 保留 13 SPI/TWI/UART 三选一串行接口 SSI0 SSI1 符号地址说明 7 6 5 4 3 2 1 0 Reset 值 OTCON 8FH 输出控制寄存器 SSMOD1[1:0] SSMOD0[1:0] - - - - 0000xxxxb SS1CON2 95H SSI1 控制寄存器 2 SS1CON2[7:0] 00000000b SS1CON0 9DH SSI1 控制寄存器 0 SS1CON0[7:0] 00000000b SS1CON1 9EH SSI1 控制寄存器 1 SS1CON1[7:0] 00000000b SS1DAT 9FH SSI1 数据寄存器 SS1D[7:0] 00000000b SS0CON2 A4H SSI0 控制寄存器 2 SS0CON2[7:0] 00000000b Page 39 of 62 V0.2

SS0CON0 A5H SSI0 控制寄存器 0 SS0CON0[7:0] 00000000b SS0CON1 A6H SSI0 控制寄存器 1 SS0CON1[7:0] 00000000b SS0DAT A7H SSI0 数据寄存器 SS0D[7:0] 00000000b 内部集成了两个三选一串行接口电路 :SSI0 SSI1, 可方便 MCU 与不同接口的器件或者设备的 连接 用户可通过配置寄存器 OTCON 的 SSMODn[1:0](n=0,1) 位将 SSI 接口配置为 SPI TWI 和 UART 中任 意一种通信模式 其特点如下 : 1. SPI 模式可配置为主模式或从属模式中的一种 2. TWI 模式通信时只能做从机 3. UART 模式可工作在模式 1(10 位全双工异步通信 ) 和模式 3(11 位全双工异步通信 ) 具体配置方式如下 : OTCON (8FH) 输出控制寄存器 ( 读 / 写 ) 符号 SSMOD1[1:0] SSMOD0[1:0] - - - - 读 / 写读 / 写读 / 写读 / 写读 / 写 - - - - 上电初始值 0 0 0 0 x x x x 位编号 位符号 说明 7~6 SSMOD1[1:0] SSI1 通信模式控制位 00:SSI1 关闭 01:SSI1 设置为 SPI 通信模式 ; 10:SSI1 设置为 TWI 通信模式 ; 11:SSI1 设置为 UART 通信模式 ; 5~4 SSMOD0[1:0] SSI0 通信模式控制位 00:SSI0 关闭 01:SSI0 设置为 SPI 通信模式 ; 10:SSI0 设置为 TWI 通信模式 ; 11:SSI0 设置为 UART 通信模式 ; 13.1 SPI SSMOD0[1:0] = 01, 三选一串行接口 SSI0 配置为 SPI0 接口, 对应信号口 :SCK0 MOSI0 MISO0; SSMOD1[1:0] = 01, 三选一串行接口 SSI1 配置为 SPI1 接口, 对应信号口 :SCK1 MOSI1 MISO1 串行外部设备接口 ( 简称 SPI) 是一种高速串行通信接口, 允许 MCU 与外围设备 ( 包括其它 MCU) 进行全双工, 同步串行通信 13.1.1 SPI 操作相关寄存器 SS0CON0 (A5H) SPI0 控制寄存器 ( 读 / 写 ) SS1CON0 (9DH) SPI1 控制寄存器 ( 读 / 写 ) 符号 SPEN - MSTR CPOL CPHA SPR[2:0] 读 / 写 读 / 写 - 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 上电初始值 0 x 0 0 0 0 0 0 位编号位符号说明 7 SPEN SPI 使能控制 0: 关闭 SPI 1: 打开 SPI 5 MSTR SPI 主从选择 0: SPI 为从设备 1: SPI 为主设备 4 CPOL 时钟极性控制位 Page 40 of 62 V0.2

0:SCK 在空闲状态下为低电平 1:SCK 在空闲状态下为高电平 3 CPHA 时钟相位控制位 0:SCK 周期的第一沿采集数据 1:SCK 周期的第二沿采集数据 2~0 SPR[2:0] SPI 时钟速率选择位 6 - 保留 SS0CON1 (A6H) SPI0 状态寄存器 ( 读 / 写 ) SS1CON1 (9EH) SPI1 状态寄存器 ( 读 / 写 ) 000:fSYS 001:fSYS /2 010:fSYS /4 011:fSYS /8 100:fSYS /16 101:fSYS /32 110:fSYS /64 111:fSYS /128 符号 SPIF WCOL - - TXE DORD - TBIE 读 / 写 读 / 写 读 / 写 - - 读 / 写 读 / 写 - 读 / 写 上电初始值 0 0 x x 0 0 x 0 位编号位符号说明 7 SPIF SPI 数据传送标志位 0: 由软件清 0 1: 表明已完成数据传输, 由硬件置 1 6 WCOL 写入冲突标志位 0: 由软件清 0, 表明已处理写入冲突 1: 由硬件置 1, 表明检测到一个冲突 3 TXE 发送缓存器空标志 0: 发送缓存器不空 1: 发送缓存器空, 必须由软件清零 2 DORD 传送方向选择位 0:MSB 优先发送 1:LSB 优先发送 0 TBIE 发送缓存器中断允许控制位 0: 不允许发送中断 1: 允许发送中断, 当 SPIF=1 时,TBIE=1 将产生 SPI 中断 5~4,1 - 保留 SS0DAT (A7H) SPI0 数据寄存器 ( 读 / 写 ) SS1DAT (9FH) SPI1 数据寄存器 ( 读 / 写 ) 符号 SPD[7:0] 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 上电初始值 0 0 0 0 0 0 0 0 位编号位符号说明 7~0 SPD[7:0] SPI 数据缓存寄存器 Page 41 of 62 V0.2

写入 SSnDAT 的数据被放置到发送移位寄存器中 读取 SSnDAT 时将获得接收移位寄存器的数据 13.1.2 信号描述 主输出从输入 (MOSI): 该路信号连接主设备和一个从设备 数据通过 MOSI 从主设备串行传送到从设备, 主设备输出, 从设备输入 主输入从输出 (MISO): 该路信号连接从设备和主设备 数据通过 MISO 从从设备串行传送到主设备, 从设备输出, 主设备输入 当 SPI 配置为从设备并未被选中, 从设备的 MISO 引脚处于高阻状态 SPI 串行时钟 (SCK): SCK 信号用作控制 MOSI 和 MISO 线上输入输出数据的同步移动 每 8 时钟周期线上传送一个字节 如果从设备未被选中,SCK 信号被此从设备忽略 13.1.3 工作模式 SPI 可配置为主模式或从属模式中的一种 SPI 模块的配置和初始化通过设置 SSnCON0(n=0,1) 寄存器 (SPI 控制寄存器 ) 和 SSnCON1(SPI 状态寄存器 ) 来完成 配置完成后, 通过设置 SSnCON0,SSnCON1, SSnDAT(SPI 数据寄存器 ) 来完成数据传送 在 SPI 通讯期间, 数据同步地被串行的移进移出 串行时钟线 (SCK) 使两条串行数据线 (MOSI 和 MISO) 上数据的移动和采样保持同步 如果从设备没有被选中, 则不能参与 SPI 总线上的活动 当 SPI 主设备通过 MOSI 线传送数据到从设备时, 从设备通过 MISO 线发送数据到主设备作为响应, 这就实现了在同一时钟下数据发送和接收的同步全双工传输 发送移位寄存器和接收移位寄存器使用相同的特殊功能器地址, 对 SPI 数据寄存器 SSnDAT 进行写操作将写入发送移位寄存器, 对 SSnDAT 寄存器进行读操作将获得接收移位寄存器的数据 有些设备的 SPI 接口会引出 SS 脚 ( 从设备选择引脚, 低有效 ), 与 的 SPI 通信时, SPI 总线上其它设备的 SS 脚的连接方式需根据不同的通信模式进行连接 下表列出了 的 SPI 不同通信模式下, SPI 总线上其它设备 SS 脚的连接方式 : SPI SPI 总线上其它设备模式从机的 SS( 从设备选择引脚 ) 主模式从模式一主一从拉低 一主多从 引出多根 I/O, 分别接至从 机的 SS 脚 在数据传送之前, 从设备的 SS 引脚必须被置低 从模式 主模式 一主一从 拉高 主模式 模式启动 : SPI 主设备控制 SPI 总线上所有数据传送的启动 当 SSnCON0 寄存器中的 MSTR 位置 1 时,SPI 在主模式下运行, 只有一个主设备可以启动传送 发送 : 在 SPI 主模式下, 写一个字节数据到 SPI 数据寄存器 SSnDAT, 数据将会写入发送移位缓冲器 如果发送移位寄存器已经存在一个数据, 那么主 SPI 产生一个 WCOL 信号以表明写入太快 但是在发送移位寄存器中的数据不会受到影响, 发送也不会中断 另外如果发送移位寄存器为空, 那么主设备立即按照 SCK 上的 SPI 时钟频率串行地移出发送移位寄存器中的数据到 MOSI 线上 当传送完毕,SSnCON1 寄存器中 SPIF 位被置 1 如果 SPI 中断被允许, 当 SPIF 位置 1 时, 也会产生一个中断 接收 : 当主设备通过 MOSI 线传送数据给从设备时, 相对应的从设备同时也通过 MISO 线将其发送移位寄存器的内容传送给主设备的接收移位寄存器, 实现全双工操作 因此,SPIF 标志位置 1 即表示传送完成也表示接收数据完毕 从设备接收的数据按照 MSB 或 LSB 优先的传送方向存入主设备的接收移位寄存器 当一个字节的数据完全被移入接收寄存器时, 处理器可以通过读 SSnDAT 寄存器获得该数据 Page 42 of 62 V0.2

从模式 模式启动 : 当 SSnCON0 寄存器中的 MSTR 位清 0,SPI 在从模式下运行 发送与接收 : 从属模式下, 按照主设备控制的 SCK 信号, 数据通过 MOSI 引脚移入,MISO 引脚移出 一个位计数器记录 SCK 的边沿数, 当接收移位寄存器移入 8 位数据 ( 一个字节 ) 同时发送移位寄存器移出 8 位数据 ( 一个字节 ), SPIF 标志位被置 1 数据可以通过读取 SSnDAT 寄存器获得 如果 SPI 中断被允许, 当 SPIF 置 1 时, 也会产生一个中断 此时接收移位寄存器保持原有数据并且 SPIF 位置 1, 这样 SPI 从设备将不会接收任何数据直到 SPIF 清 0 SPI 从设备必须在主设备开始一次新的数据传送之前将要传送的数据写入发送移位寄存器 如果在开始发送之前未写入数据, 从设备将传送 0x00 字节给主设备 如果写 SSnDAT 操作发生在传送过程中, 那么 SPI 从设备的 WCOL 标志位置 1, 即如果传送移位寄存器已经含有数据,SPI 从设备的 WCOL 位置 1, 表示写 SSnDAT 冲突 但是移位寄存器的数据不受影响, 传送也不会被中断 13.1.4 传送形式 通过软件设置 SSnCON0 寄存器的 CPOL 位和 CPHA 位, 用户可以选择 SPI 时钟极性和相位的四种组合方式 CPOL 位定义时钟的极性, 即空闲时的电平状态, 它对 SPI 传输格式影响不大 CPHA 位定义时钟的相位, 即定义允许数据采样移位的时钟边沿 在主从通讯的两个设备中, 时钟极性相位的设置应一致 当 CPHA = 0,SCK 的第一个沿捕获数据, 从设备必须在 SCK 的第一个沿之前将数据准备好 SCK Cycle SPEN SCK (CPOL=0) SCK (CPOL=1) MOSI (from Master) MISO (from Slave) MSB 1 2 3 4 5 6 7 8 MSB bit6 bit5 bit4 bit3 bit2 bit1 LSB bit6 bit5 bit4 bit3 bit2 bit1 LSB CPHA = 0 数据传输图 当 CPHA = 1, 主设备在 SCK 的第一个沿将数据输出到 MOSI 线上, 从设备把 SCK 的第一个沿作为开始发送信号,SCK 的第二沿开始捕获数据, 因此用户必须在第一个 SCK 的两个沿内完成写 SSnDAT 的操作 这种数据传输形式是一个主设备一个从设备之间通信的首选形式 SCK Cycle 1 2 3 4 5 6 7 8 SPEN SCK (CPOL=0) SCK (CPOL=1) MOSI (from Master) MSB bit6 bit5 bit4 bit3 bit2 bit1 LSB MISO (from Slave) MSB bit6 bit5 bit4 bit3 bit2 bit1 LSB CPHA = 1 数据传输图 Page 43 of 62 V0.2

13.1.5 出错检测 在发送数据序列期间写入 SSnDAT 寄存器会引起写冲突,SSnCON1 寄存器中的 WCOL 位置 1 WCOL 位置 1 不会引起中断, 发送也不会中止 WCOL 位需由软件清 0 13.2 TWI SSMOD0[1:0] = 10, 三选一串行接口 SSI0 配置为 TWI0 接口, 对应信号口 :SCK0 SDA0; SSMOD1[1:0] = 10, 三选一串行接口 SSI1 配置为 TWI1 接口, 对应信号口 :SCK1 SDA1 在 TWI 通信时只能做从机 SS0CON0 (A5H) TWI0 控制寄存器 ( 读 / 写 ) SS1CON0 (9DH) TWI1 控制寄存器 ( 读 / 写 ) 符号 TWEN TWIF - GCA AA STATE[2:0] 读 / 写 读 / 写 读 / 写 - 读 读 / 写 读 / 写 读 / 写 读 / 写 上电初始值 0 0 x 0 0 0 0 0 位编号 位符号 说明 7 TWEN TWI 使能控制 0: 关闭 TWI 1: 打开 TWI 6 TWIF TWI 中断标志位 0: 由软件清零 1: 在下列条件下, 中断标志位由硬件置 1 1 第一帧地址匹配成功 2 成功接收或发送 8 位数据 3 重新启动 4 从机收到停止信号 4 GCA 通用地址响应标志位 0: 非响应通用地址 1: 当 GC 置 1, 同时通用地址匹配时该位由硬件置 1, 并自动清零 3 AA 接收使能位 0: 不允许接收主机发送的信息 1: 允许接收主机发送的信息 2~0 STATE[2:0] 状态机状态标志位 000: 从机处于空闲状态, 等待 TWEN 置 1, 检测 TWI 启动信号 当从机接收到停止条件后跳会转到此状态 001: 从机正在接收第一帧地址和读写位 ( 第 8 位为读写位,1 为读,0 为写 ) 从机接收到起始条件后会跳转到此状态 010: 从机接收数据状态 011: 从机发送数据状态 100: 在从机发送数据状态中, 当主机回 UACK( 应答位为高电平 ) 时跳转到此状态, 等待重新启动信号或停止信号 101: 从机处于发送状态时, 将 AA 写 0 会进入此状态, 等待重新启动信号或停止信号 5 - 保留 SS0CON1 (A6H) TWI0 地址寄存器 ( 读 / 写 ) SS1CON1 (9EH) TWI1 地址寄存器 ( 读 / 写 ) 符号 TWA[6:0] GC 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 Page 44 of 62 V0.2

上电初始值 0 0 0 0 0 0 0 0 位编号 位符号 说明 7~1 TWA[6:0] TWI 地址寄存器 0 GC TWI 通用地址使能 0: 禁止响应通用地址 1: 允许响应通用地址 SS0DAT (A7H) TWI0 数据缓存寄存器 ( 读 / 写 ) SS1DAT (9FH) TWI1 数据缓存寄存器 ( 读 / 写 ) 符号 TWDAT[7:0] 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 上电初始值 0 0 0 0 0 0 0 0 位编号位符号说明 7~0 TWDAT[7:0] TWI 数据缓存寄存器 13.2.1 信号描述 TWI 时钟信号线 (SCK) 该时钟信号由主机发出, 连接到所有的从机 每 9 个时钟周期传送一个字节数据 前 8 个周期作数据的传送, 最后一个时钟作为接收方应答时钟 TWI 数据信号线 (SDA) SDA 是双向信号线, 空闲时应为高电平, 由 SDA 线上的上拉电阻拉高 13.2.2 工作模式 的 TWI 通信只有从机模式 : 模式启动 : 当 TWI 使能标志位打开 (TWEN = 1), 同时接收到主机发送的启动信号时, 模式启动 从机从空闲模式 (STATE[2:0] = 000) 进入接收第一帧地址 (STATE[2:0] = 001) 状态, 等待主机的第一帧数据 第一帧数据由主机发送, 包括了 7 位地址位和 1 位读写位,TWI 总线上所有从机都会收到主机的第一帧数据 主机发送完第一帧数据后释放 SDA 信号线 若主机所发地址与某一从机自身地址寄存器中的值相同, 说明该从机被选中, 被选中的从机会判断接总线上的第 8 位, 即数据读写位 (=1, 读命令 ;=0, 写命令 ), 然后占用 SDA 信号线, 在 SCL 的第 9 个时钟周期给主机一个低电平的应答信号, 之后会释放总线 从机被选中后, 会根据读写位的不同而进入不同的状态 : 非通用地址响应, 从机接收模式 : 如果第一帧接收到的读写位是写 (0), 则从机进入到从机接收状态 (STATE[2:0] = 010) 等待接收主机发送的数据 主机每发送 8 位, 都要释放总线, 等待第 9 个周期从机的应答信号 1. 如果从机的应答信号是低电平, 主机的通信可以有以下三种方式 : 1) 继续发送数据 ; 2) 重新发送启动信号 (start), 此时从机重新进入接收第一帧地址 (STATE[2:0] = 001) 状态 ; 3) 发送停止信号, 表示本次传输结束, 从机回到空闲状态, 等待主机下一次的启动信号 Page 45 of 62 V0.2

START 写 STOP STOP 主机发送 7 位从机地址 主机发送 8 位数据 SCL 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 SDA MSB W ACK MSB LSB ACK STATE 000 001 010 000 TWIF 2. 如果从机应答的是高电平 ( 在接收过程中, 从机寄存器中的 AA 值改写为 0), 表示当前字节传输完以后, 从机会主动结束本次传输, 回到空闲状态 (STATE[2:0] = 000), 不再接收主机发送的数据 从机接收过程中 AA=0 START 写 STOP STOP 主机发送 7 位从机地址 主机发送 8 位数据 SCL 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 SDA STATE TWIF 000 MSB W ACK MSB LSB 001 010 000 非通用地址响应, 从机发送模式 : 如果第一帧接收到的读写位是读 (1), 则从机会占用总线, 向主机发送数据 每发送 8 位数据, 从机释放总线, 等待主机的应答 : 1. 如果主机应答的是低电平, 则从机继续发送数据 在发送过程中, 如果从机寄存器中的 AA 值被改写为 0, 则传输完当前字节从机会主动结束传输并释放总线, 等待主机的停止信号或重新启动信号 (STATE[2:0] = 101) UACK 从机发送过程中 AA=0 START 写 STOP STOP 主机发送 7 位从机地址 从机发送 8 位数据 SCL 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 SDA MSB R ACK MSB LSB ACK STATE 000 001 011 101 000 TWIF 2. 如果主机应答的是高电平, 则从机 STATE[2:0] = 100, 等待主机的停止信号或重新启动信号 Page 46 of 62 V0.2

START 写 STOP STOP 主机发送 7 位从机地址 从机发送 8 位数据 SCL 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 SDA MSB R ACK MSB LSB UACK STATE 000 001 011 100 000 TWIF 通用地址的响应 : GC=1 时, 此时通用地址允许使用 从机进入到接收第一帧地址 (STATE[2:0] = 001) 状态, 接收的第一帧数据中的地址位数据为 0x00, 此时所有从机响应主机 主机发送的读写位是必须是写 (0), 所有从机接收后进入接收数据 (STATE[2:0] = 010) 状态 主机每发送 8 个数据释放一次 SDA 线, 并读取 SDA 线上的状态 : 1. 如果有从机应答, 则主机的通信可以有以下三种方式 : 1) 继续发送数据 ; 2) 重新启动 ; 3) 发送停止信号, 结束本次通讯 SCL SDA STATE START 000 主机发送 7 位通用地址 MSB 主机发送 8 位数据 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 ACK 001 010 LSB ACK 写 STOP STOP 000 TWIF 2. 如果无从机应答, 则 SDA 为空闲状态 注意 : 在一主多从模式下使用通用地址时, 主机发送的读写位不能为读 (1) 状态, 否则除发送数据的设备, 总线上其它设备均会响应 13.2.3 操作步骤 三合一串口中 TWI 工的操作步骤如下 : 1 配置 SSMODn[1:0] (n=0,1), 选择 TWI 模式 ; 2 配置 SSnCON0 TWI 控制寄存器 ; 3 配置 SSnCON1 TWI 地址寄存器 ; 4 如果从机接收数据, 则等待 SSnCON0 中的中断标志位 TWIF 置 1 从机每接收到 8 位数据, 中断标志位会被置 1 中断标志位需手动清零 ; 5 如果从机发送数据, 则要将待发送的数据写进 TWDAT 中,TWI 会自动将数据发送出去 每发送 8 位, 中断标志位 TWIF 就会被置 1 Page 47 of 62 V0.2

13.3 UART SSMOD0[1:0] = 11, 三选一串行接口 SSI0 配置为 UART0 接口, 对应信号口 :TX0 RX0; SSMOD1[1:0] = 11, 三选一串行接口 SSI1 配置为 UART1 接口, 对应信号口 :TX1 RX1 SS0CON0 (A5H) 串口 0 控制寄存器 ( 读 / 写 ) SS1CON0 (9DH) 串口 1 控制寄存器 ( 读 / 写 ) 符号 SM0 - SM2 REN TB8 RB8 TI RI 读 / 写 读 / 写 - 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 上电初始值 0 x 0 0 0 0 0 0 位编号 位符号 说明 7 SM0 串行通信模式控制位 0: 模式 1,10 位全双工异步通信, 由 1 个起始位,8 个数据位和 1 个停止位组成, 通信波特率可变 ; 1: 模式 3,11 位全双工异步通信, 由 1 个起始位,8 个数据位, 一个可编程的第 9 位和 1 个停止位组成, 通信波特率可变 ; 5 SM2 串行通信模式控制位 2, 此控制位只对模式 3 有效 0: 每收到一个完整的数据帧就置位 RI 产生中断请求 ; 1: 收到一个完整的数据帧时, 只有当 RB8=1 时才会置位 RI 产生中断请求 4 REN 接收允许控制位 0: 不允许接收数据 ; 1: 允许接收数据 3 TB8 只对模式 3 有效, 为发送数据的第 9 位 2 RB8 只对模式 3 有效, 为接收数据的第 9 位 1 TI 发送中断标志位 0 RI 接收中断标志位 6 - 保留 SS0CON1 (A6H) 串口 0 波特率控制寄存器低位 ( 读 / 写 ) SS1CON1 (9EH) 串口 1 波特率控制寄存器低位 ( 读 / 写 ) 符号 BAUDL [7:0] 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 上电初始值 0 0 0 0 0 0 0 0 SS0CON2 (A4H) 串口 0 波特率控制寄存器高位 ( 读 / 写 ) SS1CON2 (95H) 串口 1 波特率控制寄存器高位 ( 读 / 写 ) 符号 BAUDH [7:0] 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 上电初始值 0 0 0 0 0 0 0 0 位编号位符号说明 7~0 BAUD [15:0] 串口波特率控制 SS0DAT (A7H) 串口 0 数据缓存寄存器 ( 读 / 写 ) fsys BaudRate = BAUD1H, BAUD1L 注意 :[BAUD1H,BAUD1L] 必须大于 0x0010 Page 48 of 62 V0.2