MDT10F630/ MDT10F676

Size: px
Start display at page:

Download "MDT10F630/ MDT10F676"

Transcription

1 1.0 器件概述 数据手册 ( 版本 V1.2) 8 位 MTP CMOS 单片机 存储器 : MTP 空间 :(4K+32)*14 位 可经受 1000 次写操作 SRAM 空间 : ( 程序可选 ) 字节 8 级深硬件堆栈 I/O 引脚配置 - 26 个双向输入 / 输出 IO 口 - PA PB PD 端口独立的可编程弱上拉 - PC 端口独立的可编程弱上 下拉 - PA PB 端口引脚电平变化中断唤醒 - 高灌 (TYP:30mA)/ 高拉 (TYP:20mA) 电流能力 (PA3 除外 ), 可直接驱动 LED 定时器 Timer0: 带 8 位可编程预分频器的 8 位定时器 / 计数器 Timer1:- 带有预分频器的 16 位定时器 / 计数器 - 外部 Timer1 门控 ( 计数使能 ) - 如果选择了 INTOSC 模式, 或者在 LP 模式下可选择使用 OSC1 和 OSC2 作为 Timer1 的振荡器 2 路 PWM 模块 -2 路 10bit 高分辨率 PWM 输出 中断源 - Timer0 Timer1 中断 - PWM 中断 - PA PB 电平变化中断 - 触摸中断 - I2C 中断 - 两路外部中断 (INT0 INT1) - AD 转换完成中断 8 通道 12 位 ADC 最多 8 个模拟输入通道 ADC 参考电压可用软件选择为内部或外部参考 当选择内部参考时, 可通过配置寄存器选择片内 1.024V 2.048V 或者 VDD 作为参考电压 16 通道 Touch KEY 可通过软件单独对每路调节灵敏度 注 : 下表根据不同封装用 / 分隔列出资源数量 双时钟系统外部高速时钟 : 高达 20MHz 内部高速时钟 :16MHz RC Fcpu 支持 16Mhz(VDD 需大于 4.5V) 8MHz 4MHz 2MHZ 1MHZ 500KHz 250KHz 内部低速时钟 :RC 振荡器 31KHz 高性能的 RISCCPU 仅需学习 35 条指令 除跳转指令外的所有指令都是单周期的 直接 间接和相对寻址模式 特殊特性 - 高精度内部振荡器, 出厂时精度校准为 +/-1% - 可用软件选择的频率范围为 250kHz 到 16MHz( - 软件可选的 31kHz 内部振荡器 - 节能的休眠模式 - 宽工作电压范围 (2.2V 到 5.5V) - 工业级温度范围 - 上电复位 (Powe-onReset,POR) - 上电延时定时器 (Power-upTimer,PWRT) 和振荡器起振定时器 (OscillatorStart-upTimer,OST) - 带软件控制选择的 LVR 低电压侦测选择 ( 侦测电压有 1.9V 2.5V 3.8V 可选 ) - 带片上振荡器 ( 振荡器频率可由软件选择, 当预分频比最大时其标称值为 268 秒 ) 并且可软件使能的增强型低电流看门狗定时器 (WatchdogTimer,WDT) - 带上拉的主复位, 可复用为输入引脚 - 可编程代码保护 低功耗特性待机电流 : - 电压为 5V 时, 典型值 1uA( 无触摸 ) 工作电流 : - 频率为 1MHz 电压为 3.3V 时, 典型值为 600uA - 频率为 31kHz 电压为 3.3V 时, 典型值为 400uA 通过两个引脚 (PA0,PA1) 实现在线串行编程和调试 器件 ROM RAM I/O 12 位 A/D 转换器 Timer PWM Touch 封装 YS83B SOP16 YS84B /18/22 2/4/8 2 1/2/2 9/9/12 SOP16/SOP20(SSOP20) /SOP24(SSOP24) YS84C /26 6/8 2 2/2 12/16 SOP24(SSOP24)/SOP28 (SSOP28) 1 Product Specification (V1.2)

2 目录 1.0 器件概述 系统结构图 封装脚位图 引脚说明 存储器构成 程序存储器构成 数据存储器构成 PCL 和 PCLATH 间接寻址 IAR 和 MSR 寄存器 看门狗定时器 (WDT) 复位 概述 上电复位 MCLR 上电延时定时器 (PWRT) 欠压复位 延时时序 电源控制 (PSTA) 寄存器 系统时钟 概述 振荡器控制 时钟源模式 外部时钟模式 内部时钟模式 时钟切换 掉电模式 ( 休眠 ) 故障保护时钟监控器 内部快时钟调频功能 中断 中断特殊功能寄存器 外部中断 TIMER0 中断 PORTA PORTB 电平变化中断 A/D 中断 中断的现场保护 I/O 端口 PORTA 和 CPIOA 寄存器 PORTB 和 CPIOB 寄存器 PORTC 和 CPIOC 寄存器 PORTD 和 CPIOD 寄存器 Product Specification (V1.2)

3 6.5 其它引脚功能 PORTA 引脚说明和引脚图 PORTB 引脚说明和引脚图 PORTC 引脚说明和引脚图 PORTD 引脚说明和引脚图 定时器 TIMER0 模块 带门控的 TIMER1 模块 PWM 模块 模拟数字转换器 (ADC) 模块 ADC 框图 ADC 的配置 ADC 的工作过程 ADC 寄存器定义 I2C 模块 I2C 概述 I2C 模式操作 I2C 从模式操作 I2C 主模式 波特率发生器 寄存器定义 电容触摸模块 原理说明 配置说明 电容感应数据区 寄存器说明 配置寄存器 CONFIG OPTION 指令表 电气特性 绝对极限参数 直流电气特性 交流电气特性 开发支持 仿真信息 烧录信息 封装信息 SOP SOP Product Specification (V1.2)

4 15.3 SSOP SOP SSOP SOP SSOP 汇春知识产权政策 专利权 著作权 Product Specification (V1.2)

5 1.1 系统结构图 配置 INT 程序总线 MTP 4K 14 程序存储器 程序计数器 8 级深堆栈 (12 位 ) 数据总线 RAM 384 字节文件寄存器 8 PORTA PA0 PA1 PA2 PA3 PA4 PA5 OSC1/CLKIN OSC2/CLKOUT 指令寄存器 指令译码和控制 时序发生 8 直接寻址 7 上电延时定时器 振荡器起振定时器 上电复位 看门狗定时器 欠压复位 RAM 地址 8 地址 MUX 间接寻址 FSR 寄存器 状态寄存器 ALU W 寄存器 MUX PORTB PORTC PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PC0 PC1 PC2 PC3 内部振荡电路 MCLR VDD VSS PORTD PD0 PD1 PD2 T1G PD3 PD4 T1CK1 T0CK1 Timer0 Timer1 I2C CS PD5 PD6 PD7 PWM 模数转换器 VREF AN0AN1AN2AN3 AN4 AN5AN6AN7 5 Product Specification (V1.2)

6 1.2 封装脚位图 引脚图 (SOP16) PB3/CCH PB0/CCH0 PB4/CCH PB1/CCH1/ISCK PB5/CCH PB2/CCH2/ISDA PB6/CCH6 PB7/CCH7 4 5 YS83B PA0/ULPWU/SDA PA2/T0CKI/SCL PC0/CCH PA3/MCLR/VPP PC1/CCH VDD PC2/CCH VSS YS83B08 SOP16 PB1/CCH PA0/ISCK/ULPWU/SDA PB2/CCH PA1/ISDA/INT0 PB3/CCH PA2/T0CKI/SCL PB4/CCH4 PB5/CCH5 PB6/CCH PA3/MCLR/VPP PA5 PD7/AN7/PWM0 PD0/CCH12/AN0/VREF PB7/CCH VDD PC0/CCH8 8 9 VSS YS84B08 SOP16 注 :PIN12 为 PA5 与 PD7( 内部短接 ) 共用引脚, 编程时需特别注意信号处理 6 Product Specification (V1.2)

7 引脚图 (SOP20 SSOP20) PB0/CCH PA0/ISCK/ULPWU/SDA PB1/CCH PA1/ISDA/INT0 PB2/CCH PA2/T0CKI/SCL PB3/CCH PA3/MCLR/VPP PB4/CCH PA4/T1G/OSC2/CLKOUT PB5/CCH PA5/T1CKI/OSC1/CLKIN PB6/CCH6 PB7/CCH PD7/AN7/PWM0 PD6/AN6/INT1 VSS 9 12 PD5/AN5/PWM1 VDD PD0/CCH12/AN0/VREF YS84B08 SOP20/SSOP 引脚图 (SOP24 SSOP24) PB0/CCH PA0/ISCK/ULPWU/SDA PB1/CCH PA1/ISDA/INT0 PB2/CCH PA2/T0CKI/SCL PB3/CCH PA3/MCLR/VPP PB4/CCH PA4/T1G/OSC2/CLKOUT PB5/CCH PA5/T1CKI/OSC1/CLKIN PB6/CCH6 PB7/CCH PD7/AN7/PWM0 PD6/AN6/INT1 VSS 9 16 PD5/AN5/PWM1 VDD PD4/AN4 PD0/CCH12/AN0/VREF PD3/CCH15/AN3 PD1/CCH13/AN PD2/CCH14/AN2 YS84B08 SOP24/SSOP24 PB0/CCH PA0/ISCK/ULPWU/SDA PB1/CCH PA1/ISDA/INT0 PB2/CCH PA2/T0CKI/SCL PB3/CCH PA3/MCLR/VPP PB4/CCH PA4/T1G/OSC2/CLKOUT PB5/CCH PA5/T1CKI/OSC1/CLKIN PB6/CCH6 PB7/CCH PD7/AN7/PWM0 PD6/AN6/INT1 PC0/CCH PD5/AN5/PWM1 PC1/CCH PD4/AN4 VSS PD1/CCH13/AN1 VDD PD0/CCH12/AN0/VREF YS84C12 SOP24/SSOP24 7 Product Specification (V1.2)

8 引脚图 (SOP28 SSOP28) PB0/CCH PA0/ISCK/ULPWU/SDA PB1/CCH PA1/ISDA/INT0 PB2/CCH PA2/T0CKI/SCL PB3/CCH PA3/MCLR/VPP PB4/CCH PA4/T1G/OSC2/CLKOUT PB5/CCH PA5/T1CKI/OSC1/CLKIN PB6/CCH6 PB7/CCH PD7/AN7/PWM0 PD6/AN6/INT1 PC0/CCH PD5/AN5/PWM1 PC1/CCH PD4/AN4 PC2/CCH PD3/CCH15/AN3 PC3/CCH PD2/CCH14/AN2 VSS PD1/CCH13/AN1 VDD PD0/CCH12/AN0/VREF YS84C12 SOP28/SSOP 引脚说明 名称 PA0/SCK/ULPWU/SDA PA1/SDA/INT0 PA2/T0CKI/SCL PA3/M C L R /VPP PA4/AN3/T1G /OSC2/ CLKOUT PA5/T1CKI/OSC1/CLKIN PB0/CCH0 PB1/CCH1 功能 输入类型 输出类型 说明 PA0 TTL CMOS 具有可编程上拉和电平变化中断的 PORTA I/O ISCK ST 串行编程和调试时钟输入, ULPWU AN 超低功耗唤醒输入 SDA ST NMOS I2C 数据 PA1 TTL CMOS 具有可编程上拉和电平变化中断的 PORTA I/O ISDA ST/TTL CMOS 串行编程和调试数据输入输出, INT0 ST 外部中断 PA2 ST CMOS 具有可编程上拉和电平变化中断的 PORTA I/O T0CKI ST Timer0 时钟输入 SCL ST CMOS I2C 时钟 PA3 TTL Open Drain M C L R ST 带有内部上拉的主复位 具有可编程下拉和电平变化中断的 PORTA I/O VPP HV 编程电压 (9.5V) PA4 TTL CMOS 具有可编程上拉和电平变化中断的 PORTA I/O T 1 G ST Timer1 门控 ( 计数使能 ) OSC2 XTAL 晶振 / 谐振器 CLKOUT CMOS Fosc/4 输出 PA5 TTL CMOS 具有可编程上拉和电平变化中断的 PORTA I/O T1CKI ST Timer1 时钟 OSC1 XTAL 晶振 / 谐振器 CLKIN ST 外部时钟输入 /RC 振荡器连接 PB0 TTL CMOS 具有可编程上拉和电平变化中断的 PORTB I/O CCH0 NSI 触摸按键通道 0 输入 PB1 TTL CMOS 具有可编程上拉和电平变化中断的 PORTB I/O CCH1 NSI 触摸按键通道 1 输入 8 Product Specification (V1.2)

9 PB2/CCH2 PB3/CCH3 PB4/CCH4 PB5/CCH5 PB6/CCH6 PB7/CCH7 PC0/CCH8 PC1/CCH9 PC2/CCH10 PC3/CCH11 PD0/CCH12/AN0/VREF PD1/CCH13/AN1 PD2/CCH14/AN2 PD3/CCH15/AN3 PD4/AN4 PD5/AN5/PWM1 PD6/AN6/INT1 PD7/AN7/PWM0 PB2 TTL CMOS 具有可编程上拉和电平变化中断的 PORTB I/O CCH2 NSI 触摸按键通道 2 输入 PB3 TTL CMOS 具有可编程上拉和电平变化中断的 PORTB I/O CCH3 NSI 触摸按键通道 3 输入 PB4 TTL CMOS 具有可编程上拉和电平变化中断的 PORTB I/O CCH4 NSI 触摸按键通道 4 输入 PB5 TTL CMOS 具有可编程上拉和电平变化中断的 PORTB I/O CCH5 NSI 触摸按键通道 5 输入 PB6 TTL CMOS 具有可编程上拉和电平变化中断的 PORTB I/O CCH6 NSI 触摸按键通道 6 输入 PB7 TTL CMOS 具有可编程上拉和电平变化中断的 PORTB I/O CCH7 NSI 触摸按键通道 7 输入 PC0 TTL CMOS 具有可编程上 下拉的 PORTC I/O CCH8 NSI 触摸按键通道 8 输入 PC1 TTL CMOS 具有可编程上 下拉的 PORTC I/O CCH9 NSI 触摸按键通道 9 输入 PC2 TTL CMOS 具有可编程上 下拉的 PORTC I/O CCH10 NSI 触摸按键通道 10 输入 PC3 TTL CMOS 具有可编程上 下拉的 PORTC I/O CCH11 NSI 触摸按键通道 11 输入 PD0 TTL CMOS 具有可编程上拉的 PORTD I/O CCH12 NSI 触摸按键通道 12 输入 AN0 AN A/D 通道 0 输入 VREF AN A/D 外部参考电压 PD1 TTL CMOS 具有可编程上拉的 PORTD I/O CCH13 NSI 触摸按键通道 13 输入 AN1 AN A/D 通道 1 输入 PD2 TTL CMOS 具有可编程上拉的 PORTD I/O CCH14 NSI 触摸按键通道 14 输入 AN2 AN A/D 通道 2 输入 PD3 TTL CMOS 具有可编程上拉的 PORTD I/O CCH15 NSI 触摸按键通道 15 输入 AN3 AN A/D 通道 3 输入 PD4 TTL CMOS 具有可编程上拉的 PORTD I/O AN4 AN A/D 通道 4 输入 PD5 TTL CMOS 具有可编程上拉的 PORTD I/O AN5 AN A/D 通道 5 输入 PWM1 CMOS PWM1 输出 PD6 TTL CMOS 具有可编程上拉的 PORTD I/O AN6 AN A/D 通道 6 输入 INT1 ST 外部中断 PD7 TTL CMOS 具有可编程上拉的 PORTD I/O AN7 AN A/D 通道 7 输入 PWM0 CMOS PWM0 输出 VDD VDD 电源 正电源端 VSS VSS 电源 接地参考端 图注 : AN = 模拟输入或输出 CMOS = CMOS 兼容输入或输出 HV = 高压 ST = 带 CMOS 电平的施密特触发器输入 TTL = TLL 兼容输出 XTAL = 晶振 NSI= 无标准输入 9 Product Specification (V1.2)

10 2.0 存储器构成 2.1 程序存储器构成 在物理上实现了 4K 14(0000h-0FFFh) 的存储空间 访问该边界以外的单元将导致实际访问存储器的第一个 4K 14 存储空间 复位向量地址为 0000h, 中断向量地址为 0004h PC<11:0> 12 1 级堆栈 2 级堆栈 8 级堆栈 复位向量 0000h 中断向量 片上程序存储器 回到 0000h-0FFFh 0004h 0005h 0FFFh 1000h FFFFh 图 复位向量 (0000H) 具有一个字长的系统复位向量 (0000H) 上电复位 看门狗复位 外部复位 欠压复位发生上述任一种复位后, 程序将从 0000H 处重新开始执行, 系统寄存器也都将恢复为默认值 根据 STATUS 寄存器中的 TF 和 PF 标志位的内容可以判断系统复位方式 中断向量 (0004H) 中断向量的地址为 0004H 一旦有中断响应, 程序计数器 PC 的当前值就会存入堆栈缓存器并跳转到 0004H 开始执行中断服务程序 2.2 数据存储器构成 数据存储器被分为 4 个存储区 (bank), 其中包含通用寄存器 (GeneralPurposeRegister,GPR) 和特殊 10 Product Specification (V1.2)

11 功能寄存器 (SpecialFunctionRegister,SFR) 特殊功能寄存器位于每个存储区开头的 32 个单元 通用寄存器位于 Bank0 Bank1 Bank2 的 20h-6Fh 中,70H-7FH 是公用存储区域, Bank1 Bank2 和 Bank3 中的寄存器单元 F0h-FFh 指向 Bank0 中的地址单元 70h-7Fh Bank3 中地址 1A0h 到 1DFh 和扩展存储器中地址 3A0h 到 3DFh 的 128Byte 是触摸模块专用存储区域, 在没有使用触摸模块时, 也可以用作通用寄存器 所有其他的 RAM 均未实现, 读取它们时将返回 0 STATUS 寄存器的 RP1 RP0 位为存储区选择位 00 > 选定 Bank0 01 > 选定 Bank1 10 > 选定 Bank2 11 > 选定 Bank 通用文件寄存器 在 中通用寄存器是按 128x8 的形式实现的 可直接访问每个寄存器或通过文件选择寄存器 (FileSelectRegister,MSR) 间接访问每个存储器 特殊功能寄存器 特殊功能寄存器是 CPU 和外设模块用来控制所需的器件操作的寄存器, 这些寄存器都实现为静态 RAM 特殊功能寄存器可分为两类 : 内核与外设 本章仅讲述与 内核 有关的特殊功能寄存器 那些与外设功能部件的操作有关的特殊功能寄存器将在相应的外设功能部件章节中讲述 11 Product Specification (V1.2)

12 IAR TMR0 PCL STATUS MSR PORTA PORTB PORTC PORTD PCLATH INTS PIFB1 PIFB2 TMR1L TMR1H T1STA SSP1STAT SSP1CON1 SSP1CON2 SSP1CON3 SSP1MSK SSP1ADD SSP1BUF WDTCON PIFB3 PWMCON ADRESH 通用寄存器 80 字节 寄存器地址 00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch 0Dh 0Eh 0Fh 10h 11h 12h 13h 14h 15h 16h 17h 18h 19h 1Ah 1Bh 1Ch 1Dh 1Eh 1Fh 20h IAR OPT_REG PCL STATUS MSR CPIOA CPIOB CPIOC CPIOD PCLATH INTS PSTA OSCCON ADINS IRCTRIML IRCTRIMH PAPHR PBPHR PCPHR PDPHR PAINTR PBINTR ADRESL ADC0TH 通用寄存器 80 字节 寄存器地址 80h 81h 82h 83h 84h 85h 86h 87h 88h 89h 8Ah 8Bh 8Ch 8Dh 8Eh 8Fh 90h 91h 92h 93h 94h 95h 96h 97h 98h 99h 9Ah 9Bh 9Ch 9Dh 9Eh 9Fh A0h IAR PCL STATUS MSR PCLATH INTS PRL0L PRL1L T1PRLL ET1PRL ADC0CN 通用寄存器 80 字节 寄存器地址 100h 101h 102h 103h 104h 105h 106h 107h 108h 109h 10Ah 10Bh 10Ch 10Dh 10Eh 10Fh 110h 111h 112h 113h 114h 115h 116h 117h 118h 119h 11Ah 11Bh 11Ch 11Dh 11Eh 11Fh 120h IAR PCL STATUS MSR PCLATH INTS CSCTL THCTL PWM0L PWM1L CHRLTH CHRLTL CHSELH CHSELL EPR0 EPR1 T1PRLH CSTMRH CSTMRL ADS0 CSANA0 CSANA1 触摸专用寄存器 64 字节 禁止访问 寄存器地址 180h 181h 182h 183h 184h 185h 186h 187h 188h 189h 18Ah 18Bh 18Ch 18Dh 18Eh 18Fh 190h 191h 192h 193h 194h 195h 196h 197h 198h 199h 19Ah 19Bh 19Ch 19Dh 19Eh 19Fh 1A0h 1DFh 1E0h 公用 RAM 区 16 字节 6Fh 70h 访问 70h~7Fh EFh F0h 访问 70h~7Fh 16Fh 170h 访问 70h~7Fh 1EFh 1F0h 7Fh BANK 0 BANK 1 FFh 17Fh BANK 2 BANK 3 1FFh 未实现的数据存储单元, 读为 0 未实现的数据存储单元, 读为 0 图 2-2: 数据存储映射 12 Product Specification (V1.2)

13 特殊功能寄存器位定义 (BANK0) 地址名称 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 默认值 BANK0 00H IAR 使用 MSR 的内容对数据存储器进行寻址来寻址此单元 ( 不是物理寄存器 ) xxxx xxxx 01H TMR0 TIMER0 模块寄存器 xxxx_xxxx 02H PCL PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 0000_ H STATUS IRP RP1 RP0 TF PF Z HC C 0001_1xxx 04H MSR 间接数据存储器地址指针 xxxx-xxxx 05H PORTA PA5 PA4 PA3 PA2 PA1 PA0 --x0_x000 06H PORTB PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 0000_ H PORTC PC3 PC2 PC1 PC0 ----_ H PORTD PD7 PD6 PD5 PD4 PD3 PD2 PD1 PD0 0000_ H 未实现 0AH PCLATH PC11 PC10 PC9 PC8 ----_0000 0BH INTS GIE PEIE TIS INT0E PAIE TIF INT0F PAIF 0000_0000 0CH PIFB1 INT1E ADCIE OSFIE TMR1IE INT1F ADCIF OSFIF TMR1IF 0000_0000 0DH PIFB2 SSP1IE CSIE PBIE PWMIE SSP1IF CSIF PBIF PWMIF 0000_0000 0EH TMR1L 16 位 TMR1 低字节的保持寄存器 xxxx-xxxx 0FH TMR1H 16 位 TMR1 高字节的保持寄存器 xxxx-xxxx 10H T1STA T1GINV TMR1GE T1CKPS T1OSCEN T1SYNC TMR1CS TMR1ON 0000_ H SSP1STAT D/A P S R/W UA BF 0000_ H SSP1CON1 WCOL SSP1OV SSP1EN CKP SSP1M3 SSP1M2 SSP1M1 SSP1M0 0000_ H SSP1CON2 GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN SEN 0000_ H SSP1CON3 ACKTIM PCIE SCIE BOEN SBCDE AHEN DHEN 0000_ H SSP1MSK I2C 掩码 0000_ H SSP1ADD 波特率时钟分频与地址 0000_ H SSP1BUF I2C 数据缓存 0000_ H WDTCON WDTPS SWDTEN ---0_ H PIFB3 BCL1IE BCL1IF ---0_---0 1AH PWMCON PWMFS PWM1OE PWM0OE PWM1EN PWM0EN TMR0EN T1GSS -000_0011 1BH 未实现 1CH 未实现 1DH 未实现 1EH ADRESH AD 结果寄存器 0000_0000 1FH 未实现 图注 : = 未实现单元读为 0, u = 不变, x = 未知, q = 取值视情况而定, 阴影 = 未实现 注 : 配置字寄存器中的 CFG_MCLRE 为 1 时 RA3 上拉使能 13 Product Specification (V1.2)

14 特殊功能寄存器位定义 (BANK1) 地址名称 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 默认值 BANK1 80H IAR 使用 MSR 的内容对数据存储器进行寻址来寻址此单元 ( 不是物理寄存器 ) xxxx xxxx 81H OPT_RE G INT1EG INT0EG TCS TCE PSC PS 1111_ H PCL PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 0000_ H STATUS IRP RP1 RP0 TF PF Z HC C 0001_1xxx 84H MSR 间接数据存储器地址指针 xxxx-xxxx 85H CPIOA CPIOA5 CPIOA4 CPIOA3 CPIOA2 CPIOA1 CPIOA0 --11_ H CPIOB CPIOB7 CPIOB6 CPIOB5 CPIOB4 CPIOB3 CPIOB2 CPIOB1 CPIOB0 1111_ H CPIOC CPIOC3 CPIOC2 CPIOC1 CPIOC0 1111_ H CPIOD CPIOD7 CPIOD6 CPIOD5 CPIOD4 CPIOD3 CPIOD2 CPIOD1 CPIOD0 1111_ H 未实现 8AH PCLATH PC11 PC10 PC9 PC8 ----_0000 8BH INTS GIE PEIE TIS INT0E PAIE TIF INT0F PAIF 0000_0000 8CH 未实现 8DH 未实现 8EH PSTA ULPWUE SLVREN MCRL IER POR LVR --01_100q 8FH OSCCON IRCF OSTS HTS LTS SCS -101_x001 90H 未实现 91H ADINS ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0 1111_ H IRCTRIML 内部快时钟校正寄存器低 8 位 0000_ H IRCTRIMH IRCTEN 内部快时钟校正寄存器高 5 位 --00_ H 未实现 95H PAPHR PAPHR5 PAPHR4 PAPHR3 PAPHR2 PAPHR1 PAPHR0 --00_ H PBPHR PBPHR7 PBPHR6 PBPHR5 PBPHR4 PBPHR3 PBPHR2 PBPHR1 PBPHR0 1111_ H PCPHR PDC3 PDC2 PDC1 PDC0 PCPHR3 PCPHR2 PCPHR1 PCPHR0 0000_ H PDPHR PDPHR7 PDPHR6 PDPHR5 PDPHR4 PDPHR3 PDPHR2 PDPHR1 PDPHR0 1111_ H PAINTR PAINTR5 PAINTR4 PAINTR3 PAINTR2 PAINTR1 PAINTR0 0000_0000 9AH PBINTR PBINTR7 PBINTR6 PBINTR5 PBINTR4 PBINTR3 PBINTR2 PBINTR1 PBINTR0 0000_0000 9BH 未实现 9CH 未实现 9DH 未实现 9EH ADRESL AD 结果寄存器 0000_0000 9FH ADC0TH ADC 零点校正寄存器 0000_ Product Specification (V1.2)

15 特殊功能寄存器位定义 (BANK2) 地址名称 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 默认值 BANK2 100H IAR 使用 MSR 的内容对数据存储器进行寻址来寻址此单元 ( 不是物理寄存器 ) xxxx xxxx 101H 未实现 102H PCL PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 0000_ H STATUS IRP RP1 RP0 TF PF Z HC C 0001_1xxx 104H MSR 间接数据存储器地址指针 xxxx-xxxx 105H 未实现 106H 未实现 107H 未实现 108H 未实现 109H 未实现 10AH PCLATH PC11 PC10 PC9 PC8 ----_000 10BH INTS GIE PEIE TIS INT0E PAIE TIF INT0F PAIF 0000_ CH 未实现 10DH 未实现 10EH 未实现 10FH 未实现 110H 未实现 111H 未实现 112H PRL0L PWM0 占空比重载寄存器低字节 0000_ H PRL1L PWM1 占空比重载寄存器低字节 0000_ H 未实现 115H 未实现 116H 未实现 117H T1PRLL PWM0/1 周期寄存器的低字节 0000_ H ET1PRL PWM0/1 周期重载寄存器的低字节 0000_ H 未实现 11AH 未实现 11BH 未实现 11CH 未实现 11DH 未实现 11EH ADC0CN ADCTHSEL ADFM SC1 SC0 ADC_EN GO/DONE 11FH 未实现 CM1 CM0 0000_ Product Specification (V1.2)

16 特殊功能寄存器位定义 (BANK3) 地址名称 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 默认值 BANK3 180H IAR 使用 MSR 的内容对数据存储器进行寻址来寻址此单元 ( 不是物理寄存器 ) xxxx xxxx 181H 未实现 182H PCL PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 0000_ H STATUS IRP RP1 RP0 TF PF Z HC C 0001_1xxx 184H MSR 间接数据存储器地址指针 xxxx-xxxx 185H 未实现 186H 未实现 187H 未实现 188H 未实现 189H 未实现 18AH PCLATH PC10 PC9 PC8 ----_ BH INTS GIE PEIE TIS INT0E PAIE TIF INT0F PAIF 0000_ CH 未实现 18DH 未实现 18EH 未实现 18FH 未实现 190H CSCTL CSEN RAMEN XRAM CSBUSY CSINTS CSACU2 CSACU1 CSACU0 0000_ H THCTL THGAP1 THGAP0 THMOD2 THMOD1 THMOD0 THDS1 THDS0 0010_ H PWM0L PWM0 占空比比较寄存器低字节 0000_ H PWM1L PWM1 占空比比较寄存器低字节 0000_ H CHRLTH 触摸通道结果高 8 位标志 0000_ H CHRLTL 触摸通道结果低 8 位标志 0000_ H CHSELH 触摸通道使能寄存器高 8 位 0000_ H CHSELL 触摸通道使能寄存器低 8 位 0000_ H EPR0 EPR0H( 从动 ) PWM0H ----_ H EPR1 EPR1H( 从动 ) PWM1H ----_ AH T1PRLH ET1PRH ( 从动 ) T1PRLH ----_ BH CSTMRH 触摸扫描周期计数器高 8 位 0000_ CH CSTMRL 触摸扫描周期计数器低 8 位 1111_ DH ADS0 CHNSEL<3:0> REFSL<1:0> VREFSEL 0000_ EH CSANA0 BSTRM2 BSTRM1 BSTRM0 CMPTRM VTSEL1 VTSEL0 0010_ FH CSANA1 DTTRM CTTRM ---0_ Product Specification (V1.2)

17 STATUS 状态寄存器 状态 (STATUS) 寄存器包含 : ALU 的算术运算状态 复位状态 数据存储器 (SRAM) 的存储区选择位 和其他寄存器一样, 状态寄存器也可以作为任何指令的目标寄存器 如果一条影响 Z HC 或 C 位的指令 以状态寄存器作为目标寄存器, 将禁止写这三位 根据器件逻辑, 这些位会被置 1 或清零 此外, 也不能写 TF 和 PF位 因此, 当执行一条把状态寄存器作为目标寄存器的指令后, 状态寄存器的结果可能和预想的不一样 例如, 执行 CLRR STATUS 指令会清零该寄存器的高 3 位并将 Z 位置 1 从而使状态寄存器的值为 000uu1uu ( 其中 u 表示不变 ) 因此, 建议仅使用 BCR BSR SWAPR 和 STWR 指令来改变状态寄存器, 因为这些指令不影响任何状态位 欲知其他不会影响任何状态位的指令, 请参见第 12.0 节 指令表 寄存器 03H/83H/183H: 状态寄存器 (STATUS) R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-x IRP RP1 RP0 TF PF Z HC C bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 IRP: 间接寻址最高位 : 1 = 间接寻址第 2 3 页 0 = 间接寻址第 0 1 页 bit6 bit5 RP1RP0: 寄存器存储区选择位 ( 用于直接寻址 ) 00 = 直接寻址第 0 页 01 = 直接寻址第 1 页 10 = 直接寻址第 2 页 11 = 直接寻址第 3 页 bit4 bit3 bit2 bit1 bit0 注 TF : 超时状态位 1 = 上电后, 执行了 CLRWT 指令或 SLEEP 指令 0 = 发生 WDT 超时溢出 PF: 掉电标志位 1 = 上电复位后或执行了 CLRWT 指令 0 = 执行了 SLEEP 指令 Z: 零标志位 1 = 算术运算或逻辑运算的结果为零 0 = 算术运算或逻辑运算的结果不为零 HC: 半进位 / 借位位 (ADDWR ADDWI SUBWR 和 SUBWI 指令 ) 对于借位, 极性是相反的 1 = 结果的第 4 低位向高位发生了进位 0 = 结果的第 4 低位未向高位发生进位 (1) C: 进位 / 借位位 (ADDWR ADDWI SUBWR 和 SUBWI 指令 ) 1 = 结果的最高位发生了进位 ( 减法时, 没有发生借位时为 1) 0 = 结果的最高位未发生进位 1: 借位的极性是相反的 减法是通过加上第二个操作数的二进制补码 (Two scomplement) 来实现的 对于移位指令 (RRR 和 RLR), 此位的值来自源寄存器的最高位或最低位 17 Product Specification (V1.2)

18 OPT_REG 选项寄存器 选项 (OPT_REG) 寄存器是可读写的寄存器, 包含可对以下各项进行配置的各种配置位 : Timer0/WDT 预分频器分配位 外部中断 Timer0 注 : 要为 Timer0 指定 1:1 的预分频比, 应将 OPT_REG 寄存器的 PSC 位置 1, 以将预分频器分配给 WDT 请参见第 节 软件可编程预分频器 寄存器 81H: 选项寄存器 (OPT_REG) R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 INT1EG INT0EG TCS TCE PSC PS2 PS1 PS0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit6 bit5 bit4 bit3 bit2-0 INT1EG:INT1 中断边沿选择位 1 = 由 PD6/INT1 引脚的上升沿触发中断 0 = 由 PD6/INT1 引脚的下降沿触发中断 INT0EG:INT0 中断边沿选择位 1 = 由 PA1/INT0 引脚的上升沿触发中断 0 = 由 PA1/INT0 引脚的下降沿触发中断 TCS:TMR0 时钟源选择位 1 = PA2/T0CKI 引脚上信号的跳变 0 = 内部指令周期时钟 (FOSC/4) TCE:TMR0 时钟源边沿选择位 1 = 在 PA2/T0CKI 引脚电平发生由高到低的跳变时递增 0 = 在 PA2/T0CKI 引脚电平发生由低到高的跳变时递增 PSC: 预分频器分配位 1 = 将预分频器分配给 WDT 0 = 将预分频器分配给 Timer0 模块 PS<2:0>: 预分频比选择位 TMR0 分频位值 WDT 分频比比 :2 1:4 1:8 1:16 1:32 1:64 1:128 1:256 1:1 1:2 1:4 1:8 1:16 1:32 1:64 1: Product Specification (V1.2)

19 PSTA 寄存器 电源控制 (PSTA) 寄存器包含区分以下复位的标志位 : 上电复位 (POR) 欠压复位 ( LVR ) 看门狗定时器复位 (WDT) 外部 MCLR复位 PSTA 寄存器也用于控制超低功耗唤醒和 LVR 的软件使能 寄存器 8EH: 电源控制寄存器 1(PSTA) U-0 U-0 R/W-0 R/W-1 R/W-1 R/W-0 R/W-0 R/W-x ULPWUE SLVREN MCR IER POR LVR bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -6 未实现 : 读为 0 bit5 ULPWUE: 超低功耗唤醒使能位 1 = 使能超低功耗唤醒 0 = 禁止超低功耗唤醒 (1) bit4 SLVREN: 软件欠压检测使能位 1 = 使能欠压检测 0 = 禁止欠压检测 bit3 MCR : 外部复位状态位 1 = 上电复位值 0 = 发生了外部复位 bit2 IER: 指令错误复位状态位 1 = 发生了指令错误复位 0 = 上电复位值 bit1 POR: 上电复位状态位 1 = 未发生上电复位 0 = 发生了上电复位 ( 必须在上电复位发生后用软件置 1) bit0 LVR : 欠压复位状态位 1 = 未发生欠压复位 0 = 已发生欠压复位 ( 必须在发生欠压复位后用软件置 1) ` 注 1: 当配置字寄存器中的 LVREN<1:0> = 01 时允许使用该位对 LVR 进行控制 19 Product Specification (V1.2)

20 2.3 PCL 和 PCLATH 程序计数器 (PC) 为 12 位宽 其低 8 位来自可读写的 PCL 寄存器, 高 4 位 (PC<11:8>) 来自 PCLATH, 不能直接读写 只要发生复位,PC 就将被清零 图 2-3 显示了装载 PC 值的两种情形 图 2-3 中上方的例子说明在写 PCL(PCLATH<3:0> PCH) 时是如何装载 PC 的 PC PCH PCL 以 PCL 为目标的指令 4 PCLATH<3:0> 8 ALU 结果 PCLATH PC PCH PCL LJUMP, CALL OPCODE<10:0> 图 2-3: 在不同情况下装载 PC 修改 PCL 执行任何以 PCL 寄存器为目标寄存器的指令将同时使程序计数器的 PC<11:8> 位 (PCH) 被 PCLATH 寄存器的内容所取代 这样可通过将所需的高 4 位写入 PCLATH 寄存器来改变程序计数器的所有内容 当低 8 位写入 PCL 寄存器时, 程序计数器的所有 12 位将变为 PCLATH 寄存器中所包含的值以及写入 PCL 寄存器中的值 计算 LJUMP 指令是通过向程序计数器加入偏移量 (ADDWR PCL) 来实现的 通过修改 PCL 寄存器跳转到查找表或程序分支表 ( 计算 LJUMP) 时应特别谨慎 假定 PCLATH 设置为表的起始地址, 如果表长度大于 255 条指令, 或如果存储器地址的低 8 位在表的中间从 0xFF 计满返回到 0x00, 那么在每次表起始地址与表内的目标地址之间发生计满返回时,PCLATH 必须均必须递增 堆栈 器件具有 8 级深 12 位宽的硬件堆栈 ( 见图 2-2 和图 2-4) 堆栈空间既不占用程序存储区空间, 也不占用数据存储区空间, 而且堆栈指针是不可读写的 当执行 CALL 指令或当中断导致程序跳转时, 值 PC 将被压入 (PUSH) 堆栈 而在执行 RET RTIW 或 RTFI 指令时, 堆栈中的断点地址将从堆栈中弹出 (POP) 到 PC 中 PCLATH 不受 PUSH 或 POP 操作的影响 堆栈的工作原理犹如循环缓冲区 这意味着当堆栈压栈 8 次后, 第 9 次压栈的数值将会覆盖第一次压栈时所保存的数值, 而第十次压栈数值将覆盖第二次压栈时保存的数值, 以后依次类推 注 : 1: 不存在指明堆栈是否上溢或下溢的状态标志位 2: 不存在被称为 PUSH 或 POP 的指令 / 助记符 堆栈的压入或弹出是源于执行了 CALL RET RTIW 和 RTFI 指令, 或源于指向中断向量地址 20 Product Specification (V1.2)

21 寄存器 02H/82H/182H: 程序计数器低字节控制寄存器 (PCL) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 Bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -0 PC<7:0>: 程序计数器低 8 位 寄存器 0AH/8AH/18AH: 程序计数器高字节控制寄存器 (PCLATH) U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 PC11 PC10 PC9 PC8 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -4 未实现 : 读为 0 bit3-0 PC<11:8>: 程序计数器高 4 位 2.4 间接寻址 IAR 和 MSR 寄存器 IAR 寄存器不是实际存在的寄存器, 使用 IAR 寄存器寻址将产生间接寻址 使用 IAR 寄存器可进行间接寻址 任何使用 IAR 寄存器的指令, 实际上是对文件选择寄存器 (MSR) 所指向的数据进行存取 间接对 IAR 进行读操作将返回 00h 间接对 IAR 寄存器进行写操作将导致空操作 ( 尽管可能会影响状态标志位 ) 通过将 8 位的 MSR 寄存器与 STATUS 寄存器的 IRP 位进行组合可得到一个有效的 9 位地址, 如图 2-4 所示 例 2-1 给出了一个使用间接寻址将 RAM 地址单元 20h-2Fh 清零的简单程序 例 2-1: 间接寻址 ; 功能 : 地址 20 开始的连续 16 个字节的 RAM 清 0 LDWI 0X20 ; STWR MSR ; 地址指针赋初值 NEXT: CLRR IAR ; 清除 MSR 值对应的寄存器值 INCR MSR,R ; 递增地址指针 BTSS MSR,4 ; 完成没有? LJUMP NEXT ; 没完成, 继续 CONTINUE: ; 完成了 21 Product Specification (V1.2)

22 RP1 (1) RP0 直接寻址 6 来自操作码 0 1RP (1) 间接寻址 7 文件选择寄存器 0 存储区选择单元选择存储区选择单元选择 h 180h 数据存储器 7Fh Bank0 Bank1 Bank2 Bank3 1FFh 欲知详细的存储器映射信息, 请参见图 2-2 图 2-4: 的直接 / 间接寻址 2.5 看门狗定时器 (WDT) WDT 具有以下特性 : 工作于 LFINTOSC(31kHz) 包含 16 位预分频器 与 Timer0 共用 8 位预分频器 配置位和使用软件控制 WDT 在如表 2-1 所述的情况下清零 WDT 振荡器 WDT 的时基来源于 31kHz LFINTOSC OSCCON 寄存器的 LTS 位不反映 LFINTOSC 是否被使能 在所有复位时 WDTCON 的值为 这样标称时基为 17ms 注 : 当执行振荡器起振定时器 (OST) 时,WDT 保持复位状态, 因为 OST 使用 WDT 纹波计数器来执行振荡器延时计数 OST 计数到期后,WDT 将开始计数 ( 如果使能 ) WDT 控制 WDTE 位在配置字寄存器中 该位置 1 时,WDT 连续运行 配置字寄存器中的 WDTE 位置 1 时,WDTCON 寄存器中的 SWDTEN 位不起作用 如果 WDTE 清零, 那么 SWDTEN 位可用于使能和禁止 WDT 该位置 1 使能 WDT, 该位清零禁止 WDT 看门狗定时器框图中 ( 图 2-5) 的 PSC 和 PS<2:0> 位在 OPT_REG 寄存器中 更多信息请参见第 7.1 节 Timer0 模块 22 Product Specification (V1.2)

23 来自 Timer0 时钟源 16 位 WDT 预分频器 0 1 预分频器 (1) 8 31KHz LFINTOSC 时钟 WDTPS<3:0> PSC 0 1 PS<2:0> 至 Timer0 PSC 来自配置字寄存器的 WDTE 来自 WDTCON 的 SWDTEN WDT 超时 注 1: 这是 Timer0 与 WDT 共用的预分频器 更多信息, 请参见第 7.0 节 Timer0 模块 图 2-5: 看门狗定时器框图 寄存器 18H: 看门狗定时器控制寄存器 (WDTCON) U-0 U-0 U-0 R/W-0 R/W-1 R/W-0 R/W-0 R/W-0 WDTPS3 WDTPS2 WDTPS1 WDTPS0 SWDTEN bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -5 未实现 : 读为 0 Bit4-1 WDTPS<3:0>: 看门狗定时器周期选择位位值 = 预分频 0000 = 1: = 1: = 1: = 1: = 1:512 ( 复位值 ) 0101 = 1: = 1: = 1: = 1: = 1: = 1: = 1: = 保留 1101 = 保留 1110 = 保留 1111 = 保留 (1) Bit0 SWDTEN: 软件使能或禁止看门狗定时器位 1 = WDT 开启 0 = WDT 关闭 ( 复位值 ) 23 Product Specification (V1.2)

24 注 1: 如果配置字寄存器 (CONFIG) 的 WDTE 配置位 =1, 则 WDT 始终被使能, 而与该控制位的状态无关 如果配置字寄存器 (CONFIG) 的 WDTE 配置位 =0, 则可以使用该控制位开启 / 关闭 WDT 表 2-1:WDT 状态 条件 CLRWT 命令振荡器失效检测退出休眠 + 系统时钟 = T1OSC EXTRC NTRC 或 EXTCLK 退出休眠 + 系统时钟 = XT HS 或 LP WDT 清零 清零直到 OST 结束 表 2-2: 与看门狗定时器相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 LVR 时的值 所有其他 WDTCON WDTPS3 WDTPS2 WDTPS1 WDTPS0 SWDTEN xxxx xxxx OPT_REG TCS TCE PSC PS2 PS1 PS xxxx xxxx CONFIG0 CPB MCLRE PWRTE 图注 : 看门狗定时器不使用阴影单元 注 1: 关于配置字寄存器中所有位的操作, 请参见寄存器 CCFG0 复位值 WDTE FOSC2 FOSC1 FOSC0 24 Product Specification (V1.2)

25 3.0 复位 3.1 概述 有以下几种不同类型的复位 : a) 上电复位 (POR) b) 正常工作期间的 WDT 复位 c) 休眠期间的 WDT 复位 d) 休眠期间的 MCLR复位 e) 欠压复位 (LVR) 有些寄存器不受任何复位的影响 ; 在上电复位时它们的状态未知, 而在其他复位时状态不变 大多数寄存器在以下复位时会复位到各自的 复位状态 : 上电复位 MCLR 复位 休眠期间的 MCLR复位 WDT 复位 WDT 唤醒不会导致寄存器像 WDT 复位那样复位, 这是因为唤醒被视为恢复正常工作 TF 和 PF 位在不同的复位情形下会分别被置 1 或清零, 如表 3-1 所示 软件可使用这些位判断复位的性质 图 3-1 给出了片上复位电路的简化框图 MCLR复位路径上有一个噪声滤波器, 用来检测并滤除小脉冲 关于脉冲宽度规范, 请参见第 13.0 节 电气特性 外部复位 MCLR NPP 引脚 WDT 模块 SLEEP WDT 超时复位 VDD VDD 上升检测 上电复位 欠压 (1) 复位 BOREN SBOREN S OST/PWRT OST OSC1/ CLK1 引脚 10 位纹波 ( 异步 ) 计数器 R 片选 PWRT LFINTOSC 11 位纹波计数器 使能 PWRT 使能 OST 图 3-1: 片上复位电路的简化框图 表 3-1:STATUS/PSTA 位及其含义 POR LV R TF PF 0 x 1 1 上电复位 u 欠压复位 u u 0 u WDT 复位 u u 0 0 WDT 唤醒 条件 u u u u 正常工作期间的 M C L R复位 U u 1 0 休眠期间的 M C L R复位 图注 : u = 不变, x = 未知 25 Product Specification (V1.2)

26 3.2 上电复位 在 VDD 达到足以使器件正常工作的电平之前, 片上上电复位电路将使器件保持在复位状态 要有效利用 POR, 只要将 MCLR引脚通过一个电阻连接到 VDD 即可 需要一个最大上升时间才能达到 VDD 详见第 13.0 节 电气特性 如果使能了欠压复位, 那么该最大上升时间规范将不再适用 欠压复位电路将使器件保持在复位状态, 直到 VDD 达到 VLVR( 见第 3.5 节 欠压复位 (LVR)) 注 : 当 VDD 降低时, 上电复位电路不会产生内部复位 要重新使能上电复位,VDD 必须至少保持 100us Vss 电压 的 当器件开始正常工作 ( 退出复位状态 ) 时, 器件的工作参数 ( 即电压 频率和温度等 ) 必须得到满足, 以确保其正常工作 如果不满足这些条件, 那么器件必须保持在复位状态, 直到满足工作条件为止 3.3 MCLR 在 MCLR复位路径中有一个噪声滤波器 该滤波器检测并滤除小脉冲 应注意,WDT 复位不会将 MCLR 引脚驱动为低电平 若施加在 MCLR 引脚上的电压超出规范值, 则在 ESD 事件发生期间可导致 MCLR 复位且器件中流过超过 规范值的过电流 因此, 建议不要把 MCLR引脚直接连接到 VDD 建议使用图 3-3 给出的 RC 网络 通过清零配置字寄存器中的 MCLR 位, 可使能内部 MCLR选项 当 MCLRE = 0 时, 在内部产生芯片的复 位信号 当 MCLRE = 1 时,PA3/MCLR引脚变成外部复位输入 在这种模式下,PA3/MCLR 引脚具有到 VDD 的弱上拉功能 MCU MCLRB SW1 ( 可选 ) C1 0.1uF( 可选 ) 图 3-3: 建议的 MCLR电路 3.4 上电延时定时器 (PWRT) 上电延时定时器仅在上电时 ( 上电复位或欠压复位 ) 提供一个 55ms( 标称值 ) 的固定延时 上电延时定时器采用 LFINTOSC 振荡器作为时钟源, 工作频率为 31kHz 更多信息, 请参见第 4.5 节 内部时钟模式 只要 PWRT 处于活动状态, 芯片就保持在复位状态 配 PWRT 延时使 VDD 有足够的时间上升到所需的电 平 置位 PWRTE 可以禁止 ( 如果置 1) 或使能 ( 如果清零或被编程 ) 上电延时定时器 虽然不是必需的, 但是在使能欠压复位时也应使能上电延时定时器 由于以下原因不同芯片的上电延时定时器的延时也各不相同 : 26 Product Specification (V1.2)

27 VDD 差异 温度差异 制造工艺差异 详见直流参数 ( 第 13.0 节 电气特性 ) 注 : 在 MCLR引脚的低于 VSS 的电压尖峰, 包括大于 80mA 的电流, 可导致闭锁 因此, 在 MCLR 引脚上施加 低 电平时, 应使用阻值在 Ω 的串联电阻, 而不是将该引脚直接拉到 VSS 3.5 欠压复位 配置字寄存器中的 LVREN0 和 LVREN1 位用于选择 4 种欠压复位模式中的一种 其中添加了两种允许使用软件或硬件对 LVR 的使能进行控制的模式 当 LVREN<1:0> = 01 时, 可由 PSTA 寄存器的 SLVREN 位使能 / 禁止 LVR, 从而能用软件对其进行控制 通过选择 LVREN<1:0>, 可使欠压复位在休眠时被自动禁止, 从而节约功耗 ; 而在唤醒后被重新使能 在此模式下,SLVREN 位被禁止 关于配置字的定义, 请参见寄存器 PSTA 如果 VDD 下降到 VLVR 以下, 且持续时间超过参数值 (TLVR)( 见第 13.0 节 电气特性, 欠压状况将使 ) 器件复位 不管 VDD 的变化速率如何, 上述情况都会发生 如果 VDD 低于 VLVR 的时间少于参数值 (TLVR), 则不一定会发生复位 任何复位 ( 上电复位 欠压复位或看门狗定时器复位等 ) 都会使芯片保持复位状态, 直到 VDD 上升到 VLVR 以上 ( 见图 3-5) 如果使能了上电延时定时器, 此时它将启动, 并且会使器件保持复位状态的时间延长 64ms 注 : 配置字寄存器中的 PWRTE 位用于使能上电延时定时器 如果在上电延时定时器运行过程中,VDD 降低到 VLVR 以下, 芯片将重新回到欠压复位状态并且上电延时定时器会恢复为初始状态 一旦 VDD 上升到 VLVR 以上, 上电延时定时器将执行一段 64ms 的复位 VDD 内部复位 64 ms (1) VBOR VDD 内部复位 VDD 内部复位 < 64 ms 64 ms (1) 64 ms (1) VBOR VBOR 注 1: 仅在 PWRTE 位被设置为 0 时, 才增加 64 ms 延时 图 3-5: 欠压情形 表 3-5: 与欠压有关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 LVR 时的值 所有其他 PSTA ULPWUE SLVREN MCR IER POR LVR x xxxx xxxx STATUS IRP PR1 PAGE TF 图注 : u = 不变, x = 未知, = 未实现位, 读为 0, q = 取值视具体情况而定 LVR 不使用阴影单元 注 1: 其他 ( 非上电 ) 复位包括正常工作时的 MCLR复位和看门狗定时器复位 PF 复位值 Z HC C xxx xxxx xxxx 27 Product Specification (V1.2)

28 3.6 延时时序 上电时的延时时序如下 : 在 POR 延时结束后, 施加一段 PWRT 延时 PWRT 超时后激活 OST 总延时时间取决于振荡器配置和 PWRTE 位的状态 例如, 在 EC 模式且 PWRTE 位被擦除 (PWRT 禁止 ) 的情况下, 根本不会出现延时 图 和 分别给出了各种情形下的延时时序 当振荡器起振后, 通过使能故障保护监控器, 器件将以 INTOSC 作为时钟源来执行代码 ( 第 4.9 节 故障保护时钟监控器 ) 由于延时是由上电复位脉冲触发的, 因此如果 MCLR 保持足够长时间的低电平, 所有延时都将结束 将 MCLR 电平拉高后, 器件将立即开始执行代码 ( 见图 ) 这对于测试或同步多个并行工作的 器件来说是非常有用的 表 给出了一些特殊寄存器的复位条件, 而表 3-2 给出了所有寄存器的复位条件 VDD MCLR 内部 POR TPWRT PWRT 超时 TOST OST 超时 内部复位 图 3-6-1: 上电时的超时时序 (MCLR延时): 情形 1 VDD MCLR 内部 POR TPWRT PWRT 超时 TOST OST 超时 内部复位 图 3-6-2: 上电时的超时时序 (MCLR延时): 情形 2 28 Product Specification (V1.2)

29 VDD MCLR 内部 POR TPWRT PWRT 超时 TOST OST 超时 内部复位 图 3-6-3: 上电时的超时时序 (MCLR及 VDD) 表 3-6-1: 特殊寄存器的初始状态 条件程序计数器状态寄存器 PSTA 寄存器 上电复位 0000h xxx x 正常工作期间的 MCLR复位 0000h 000u uuuu --0u --uu 休眠期间的 MCLR复位 0000h uuu --0u --uu WDT 复位 0000h 0000 uuuu --0u --uu WDT 唤醒 PC + 1 uuu0 0uuu --uu --uu 欠压复位 0000h uuu u0 通过中断从休眠唤醒 PC + 1 (1) uuu1 0uuu --uu --uu 图注 : u = 不变, x = 未知, = 未实现位, 读为 0 注 1: 当器件被中断唤醒且全局中断允许位 GIE 位置 1 时, 执行 PC+1 后,PC 装入中断向是 (0004h) 表 3-6-2: 各种情形下的超时 振荡器配置 上电 欠压复位 PWRTE = 0 PWRTE = 1 PWRTE = 0 PWRTE = 1 从休眠状态唤醒 XT,HS,LP T PWRT * T OSC 1024 * T OSC T PWRT * T OSC 1024 * T OSC 1024 * T OSC RC,EC,INTOSC T PWRT T PWRT 3.7 电源控制 (PSTA) 寄存器 电源控制寄存器 PSTA( 寄存器 8EH) 有两个状态位, 用于指示上次发生的复位的类型 bit0 是 LVR( 欠压复位 ) 标志位 LVR 在上电复位时未知 然后, 用户必须将该位置 1, 并在随后的复位发时检查 LVR 是否为 0, 如果是, 则表示已发生欠压复位 当禁止欠压复位电路 ( 配置字寄存器中的 LVREN<1:0> = 00) 时,LVR 状态位是 无关位 并且不一定预测得到 bit1 是 POR( 上电复位 ) 标志位, 在上电复位时值为 0, 其他情况下不受影响 上电复位后, 用户必须对该位写 1 发生后续复位后, 如果 POR 为 0, 则表示发生了上电复位 ( 即 VDD 可能已经变为了低电平 ) 更多信息, 请参见第 节 超低功耗唤醒 和第 3.5 节 欠压复位 (LVR) 29 Product Specification (V1.2)

30 4.0 系统时钟 4.1 概述 振荡器有多种时钟源和选择功能, 从而使其应用非常广泛, 并可最大限度地提高性能和降低功耗 图 4-1 给出了振荡器模块的框图 时钟源可以配置为由外部振荡器 石英晶体谐振器 陶瓷谐振器以及阻容 (RC) 电路提供 此外, 系统时钟源可以配置为由两个内部振荡器中的一个提供, 并可以通过软件选择速度 其他时钟功能包括 : 通过软件选择外部或内部系统时钟源 ( 注意 : 上电默认系统时钟为内部时钟 ) 故障保护时钟监视器 (FSCM) 旨在检测外部时钟源的故障 (LP XT HS EC 或 RC 模式 ) 并自动切换到内部振荡器 振荡器模块可配置为以下 8 种时钟模式之一 1. EC 外部时钟,I/O 在 PA4 上, 时钟从 PA5 输入 2. LP 32kHz 低功耗晶振模式 3. XT 中等增益晶振或陶瓷谐振振荡器模式 4. HS 高增益晶振或陶瓷谐振器模式 5. RC 外部阻容 (RC), FOSC/4 输出到 OSC2/CLKOUT 6. RC+IO 外部阻容,I/O 在 PA4 上 7. IRC 内部振荡器,PA4 输出 1/4 系统时钟频率,PA5 为 I/O PIN 8. IRC+IO 内部振荡器,PA4 PA5 作为 I/O PIN 通过配置字寄存器 (CONFIG) 的 FOSC<2:0> 位来配置时钟源模式 内部时钟可用两个内部振荡器产生 HFINTOSC 是经过校准的高频振荡器 LFINTOSC 是未经校准的低频振荡器 CFG_CLK_MODE[2:0] CCFG0 配置字寄存器 LP XT HS RC RCIO EC IRCF[2:0] OSCCON 寄存器 SCS[0] OSCCON 寄存器 FOSC/16MHz SOSC/31KHz 分频器 16MHz 8MHz 4MHz 2MHz 1MHz 500KHz 250KHz 31KHz MUX_8 0 1 MUX_2 系统时钟 上电延时定时器 (PWRT) 看门狗定时器 (WDT) 故障保护时钟监控器 (FSCM) 图 4-1:MCU 时钟源框图 30 Product Specification (V1.2)

31 4.2 振荡器控制 振荡器控制 (OSCCON) 寄存器 ( 图 4-1) 控制系统时钟和频率选择等选项 OSCCON 寄存器包含以下位 : 频率选择位 (IRCF) 频率状态位 (HTS 和 LTS) 系统时钟控制位 (OSTS 和 SCS) 寄存器 8FH: 振荡器控制寄存器 (OSCCON) U-0 R/W-1 R/W-0 R/W-1 R-1 R-0 R-0 R/W-1 IRCF2 IRCF1 IRCF0 OSTS (1) HTS LTS SCS bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 未实现 : 读为 0 bit6-4 IRCF<2:0>: 内部振荡器频率选择位 000 = 31kHz 001 = 250kHz 010 = 500kHz 011 = 1MHz 100 = 2MHz 101 = 4MHz ( 缺省值 ) 110 = 8MHz 111 = 16MHz (1) bit3 OSTS: 振荡器起振超时状态位 1 = 器件运行在 FOSC<2:0> 定义的外部时钟之下 0 = 器件运行在内部振荡器之下 (HFINTOSC 或 LFINTOSC) bit2 HTS:HFINTOSC( 高频 16MHz 到 250kHz) 状态位 1 = HFINTOSC 稳定 0 = HFINTOSC 不稳定 bit1 LTS:LFINTOSC( 低频 31kHz) 状态位 1 = LFINTOSC 稳定 0 = LFINTOSC 不稳定 bit0 SCS: 系统时钟选择位 1 = 内部振荡器用于系统时钟 0 = 时钟源由 FOSC<2:0> 决定注 1: 故障保护模式使能时, 该位将复位为 时钟源模式 时钟源模式可分为外部和内部模式 外部时钟模式依靠外部电路提供时钟源 例子有 : 振荡器模块 (EC 模式 ) 石英晶体谐振器或陶瓷谐振器 (LP XT 和 HS 模式 ) 以及阻容 (RC) 模式电路 内部时钟源内置于振荡器模块中 振荡器模块有两个内部振荡器, 一个是 16MHz 高频内部振荡器 (HFINTOSC), 另一个是 31kHz 低频内部振荡器 (LFINTOSC) 可通过 OSCCON 寄存器的系统时钟选择 (SCS) 位, 在外部或内部时钟源之间选择系统时钟 ( 欲了解更多信息, 请参见第 4.6 节 时钟切换 ) 31 Product Specification (V1.2)

32 4.4 外部时钟模式 振荡器起振定时器 (OST) 如果振荡器模块配置为 LP XT 或 HS 模式, 振荡器起振定时器 (OST) 对来自 OSC1 的振荡计数 1024 次 这发生在上电复位 (POR) 之后以及上电延时定时器 (PWRT) 延时结束 ( 如果配置了 ) 时, 或从休眠中唤醒后 在此期间, 程序计数器不递增, 程序执行暂停 OST 确保使用石英晶体谐振器或陶瓷谐振器的振荡器电路已经启动并向振荡器模块提供稳定的系统时钟信号 当在时钟源之间切换时, 需要一定的延时以使新时钟稳定 表 给出了振荡器延时的例子 表 4-4-1: 振荡器延时示例 休眠 /POR 切换自切换到频率振荡器延时 LFINTOSC HFINTOSC 31kHz 250kHz 到 16MHz 休眠 /POR EC,RC DC 20MHz 双周期 LFINTOSC(31kHz) EC,RC DC 20MHz 每次一周期 振荡器预热延时 (T WARM) 休眠 /POR LP,XT,HS 32kHz 到 20MHz 1024 个时钟周期 (OST) LFINTOSC(31kHz) HFINTOSC 250kHz 到 16MHz 1us( 近似值 ) EC 模式 外部时钟 (EC) 模式允许外部产生的逻辑电平作为系统时钟源 工作在此模式下时, 外部时钟源连接到 OSC1 输入,OSC2 引脚可用作通用 I/O 图 给出了 EC 模式的引脚连接 当选取 EC 模式时, 振荡器起振定时器 (OST) 被禁止 因此, 上电复位 (POR) 后或者从休眠中唤醒后的操作不存在延时 因为 MCU 的设计是完全静态的, 停止外部时钟输入将使器件暂停工作并保持所有数据完整 当再次启动外部时钟时, 器件恢复工作, 就好像没有停止过一样 来自外部系统的时钟 OSC1/CLKIN MCU I/O OSC2/CLKOUT (1) 注 1: 此引脚的其他功能列在第 1.0 节 器件概述 中 LP XT 和 HS 模式 图 4-4-2: 外部时钟 (EC) 模式的工作原理 LP XT 和 HS 模式支持连接到 OSC1 和 OSC2 的石英晶体谐振器或陶瓷谐振器的使用 ( 图 ) 模式选择内部反相放大器的低 中或高增益设定, 以支持各种谐振器类型及速度 LP 振荡器模式选择内部反相放大器的最低增益设定 LP 模式的电流消耗在三种模式中最小 该模式设计仅用于驱动 kHz 音叉 (Tuning Fork) 式晶振 ( 钟表晶振 ) XT 振荡器模式选择内部反相放大器的中等增益设定 XT 模式的电流消耗在三种模式中居中 该模式最适用于驱动具备中等驱动电平规格要求的谐振器 HS 振荡器模式选择内部反相放大器的最高增益设定 HS 模式的电流消耗在三种模式中最大 该模式最适用于驱动需要高驱动设定的谐振器 图 和图 分别给出了石英晶体谐振器和陶瓷谐振器的典型电路 32 Product Specification (V1.2)

33 注 1: 石英晶振的特性随类型 封装和制造商而变化 要了解规格说明和推荐应用, 应查阅制造商提供的数据手册 2: 应始终验证振荡器在应用预期的 VDD 和温度范围内的性能 MDT MCU C1 石英晶体 OSC1/CLKIN RF (2) 休眠 至内部逻辑 C2 RS (1) OSC2/CLKOUT 注 1: 低驱动电平的石英晶振可能需要串联一个电阻 (RS) 2: RF 的值根据所选的振荡模式变化 ( 典型值在 2 MΩ 到 10 MΩ 之间 ) 图 : 石英晶体的工作原理 (LP XT 或 HS 模式 ) MDT MCU C1 OSC1/CLKIN 至内部逻辑 RP (3) RF (2) Sleep C2 陶瓷谐振器 RS (1) OSC2/CLKOUT 注 1: 低驱动电平的石英晶振可能需要串联一个电阻 (RS) 2: RF 的值根据所选的振荡模式变化 ( 典型值在 2 MΩ 到 10 MΩ 之间 ) 3: 要使陶瓷谐振器正常工作, 可能需要并联一个反馈电阻 (RP)( 典型值 1 MΩ ) 图 : 陶瓷谐振器的工作原理 (XT 或 HS 模式 ) 外部 RC 模式 外部阻容 (RC) 模式支持使用外部 RC 电路 对时钟精度要求不高时, 这使设计人员有了很大的频率选择空间, 且保持成本最低 有 RC 和 RCIO 两种模式 在 RC 模式下, 电路连接到 OSC1 RCOSC2/CLKOUT 输出 RC 振荡频率的 4 分频 该信号可用来为外部电路 同步 校准 测试或其他应用需求提供时钟 图 给出了外部 RC 模式的连接图 33 Product Specification (V1.2)

34 VDD MDT MCU REXT CEXT OSC1/CLKIN 内部时钟 VSS FOSC/4 或 I/O (2) OSC2/CLKOUT (1) 建议值 : 10 kω REXT 100 kω, < 3V 3 kω REXT 100 kω, 3-5 V CEXT > 20 PF, 2-5V 注 1: 该引脚的其他功能列在第 1.0 节 器件概述 中 2: 输出取决于 RC 或 RCIO 时钟模式 图 4-4-4: 外部 RC 模式 在 RCIO 模式下,RC 电路连接到 OSC1 OSC2 成为额外的通用 I/O 引脚 I/O 引脚成为 PORTA 的 bit4 (PA4) 图 给出了 RCIO 模式的连接图 RC 振荡器频率是供电电压 电阻 (R EXT ) 和电容 (C EXT ) 值以及工作温度的函数 影响振荡器频率的其他因素有 : 电压门限值变化 元件容差 不同封装的电容 用户还应考虑因所使用的外部 RC 元件的容差而导致的差异 4.5 内部时钟模式 振荡器模块有两个独立的内部振荡器, 可配置或选取为系统时钟源 1. HFINTOSC( 高频内部振荡器 ) 出厂时已校准, 工作频率为 16MHz, 精度范围为 ±1% 2. LFINTOSC( 低频内部振荡器 ) 未经校准, 工作频率为 31kHz 通过软件对 OSCCON 寄存器的内部振荡器频率选择位 IRCF<2:0> 进行操作, 可选择系统时钟速度 可通过 OSCCON 寄存器的系统时钟选择 (SCS) 位, 在外部或内部时钟源之间选择系统时钟 ( 见第 4.6 节 时钟切换 ) INTOSC 和 INTOSCIO 模式 当在配置字寄存器 (CONFIG) 中使用振荡器选择位 FOSC<2:0> 设置器件时, 在 INTOSC 和 INTOSCIO 模式下将内部振荡器配置为系统时钟源 在 INTOSC 模式下,OSC1/CLKIN 可用作通用 I/O OSC2/CLKOUT 输出所选内部振荡器频率的 4 分频 CLKOUT 信号可用来为外部电路 同步 校准 测试或其他应用需求提供时钟 在 INTOSCIO 模式下,OSC1/CLKIN 和 OSC2/CLKOUT 引脚可用作通用 I/O HFINTOSC 高频内部振荡器 (HFINTOSC) 是出厂时已校准的 16MHz 内部时钟源 HFINTOSC 的输出连接到后分频器和多路复用器 ( 见图 4-1) 使用 OSCCON 寄存器的 IRCF<2:0> 位, 34 Product Specification (V1.2)

35 可通过软件选择七个频率之一 更多信息, 请参见第 节 频率选择位 (IRCF) 将 OSCCON 寄存器的 ICRF<2:0> 位设置为 000 选择 16MHz 到 250kHz 之间的任一频率, 可使能 HFINTOSC OSCCON 寄存器的 HF 内部振荡器 (HTS) 位用于显示 HFINTOSC 是否稳定 LFINTOSC 低频内部振荡器 (LFINTOSC) 是未经校准的 31kHz 内部时钟源 LFINTOSC 的输出连接到后分频器和多路复用器 ( 见图 4-1) 通过软件对 OSCCON 寄存器的 IRCF<2:0> 位进行操作, 选取 31kHz 更多信息, 请参见第 节 频率选择位 (IRCF) LFINTOSC 还是上电延时定时器 (PWRT) 看门狗定时器 (WDT) 以及故障保护时钟监控器 (FSCM) 的时钟源 选取 31kHz( 将 OSCCON 寄存器的 IRCF<2:0> 位设置为 000) 为系统时钟源 (OSCCON 寄存器的位 SCS = 1), 或者使能以下任一项时,LFINTOSC 将被使能 : 上电延时定时器 (PWRT) 看门狗定时器 (WDT) 故障保护时钟监控器 (FSCM) OSCCON 寄存器的 LF 内部振荡器 (LTS) 位用于指示 LFINTOSC 是否稳定 频率选择位 (IRCF) 16MHz HFINTOSC 和 31kHz LFINTOSC 的输出连接到后分频器和多路复用器 ( 见图 4-1) OSCCON 寄存器的内部振荡器频率选择位 IRCF<2:0> 用于选择内部振荡器的频率输出 可通过软件选择以下 8 个频率之一 : 16MHz 8MHz 4MHz ( 复位后的缺省值 ) 2MHz 1MHz 500kHz 250kHz 31kHz 注 : 任何复位后,OSCCON 寄存器的 IRCF<2:0> 位将被置为 101 且频率选择置为 4MHz 用户可修改 IRCF 位来选择其他频率 HFINTOSC 和 LFINTOSC 时钟切换时序 当在 LFINTOSC 和 HFINTOSC 之间切换时, 新的振荡器可能为了省电已经关闭 ( 见图 4-5-5) 在这种情况下,OSCCON 寄存器的 IRCF 位被修改之后 频率选择生效之前, 存在一个延时 OSCCON 寄存器的 LTS 和 HTS 位将反映 LFINTOSC 和 HFINTOSC 振荡器的当前活动状态 频率选择时序如下 : 1. OSCCON 寄存器的 IRCF<2:0> 位被修改 2. 如果新时钟是关闭的, 开始一个时钟启动延时 3. 时钟切换电路等待当前时钟下降沿的到来 4. CLKOUT 保持为低, 时钟切换电路等待新时钟上升沿的到来 5. 现在 CLKOUT 连接到新时钟 OSCCON 寄存器的 HTS 和 LTS 位按要求被更新 6. 时钟切换完成 更多信息请参见图 4-1 如果选取的内部振荡器速度在 16MHz 到 250kHz 之间, 选取新频率不存在启动延时 这是因为新旧频率都来自经过后分频器和多路复用器的 HFINTOSC 35 Product Specification (V1.2)

36 启动延时规范在第 13.0 节 电气特性 中与振荡器相关的表格中 HFINTOSC LFINTOSC( 禁止 FSCM 和 WDT) HFINTOSC LFINTOSC 起振时间 2 周期同步运行 IRCF<2:0> 0 =0 系统时钟 HFINTOSC HFINTOSC LFINTOSC IRCF<2:0> LFINTOSC( 禁止 FSCM 和 WDT) 0 =0 2 周期同步运行 系统时钟 LFINTOSC LFINTOSC HFINTOSC IRCF<2:0> HFINTOSC 除非使能 WDT 或 FSCM, 否则 LFINTOSC 将关闭 起振时间 2 周期同步 运行 =0 0 系统时钟 4.6 时钟切换 图 4-5-5: 内部振荡器切换时序 通过软件对 OSCCON 寄存器的系统时钟选择 (SCS) 位进行操作, 可将系统时钟源在外部和内部时钟源之间切换 系统时钟选择 (SCS) 位 OSCCON 寄存器的系统时钟选择 (SCS) 位选择用于 CPU 和外设的系统时钟源 OSCCON 寄存器的位 SCS = 0 时, 系统时钟源由配置字寄存器 (CONFIG) 中 FOSC<2:0> 位的配置决定 OSCCON 寄存器的位 SCS = 1 时, 根据 OSCCON 寄存器的 IRCF<2:0> 位所选的内部振荡器频率选取系统时钟源 复位后,OSCCON 寄存器的 SCS 总是被清零 注 : 任何自动时钟切换 ( 可能产生自故障保护时钟监控器 ) 都不更新 OSCCON 寄存器的 SCS 位 用户可监控 OSCCON 寄存器的 OSTS 位以确定当前的系统时钟源 36 Product Specification (V1.2)

37 4.6.2 振荡器起振超时状态 (OSTS) 位 OSCCON 寄存器的振荡器起振超时状态 (OSTS) 位用于指示系统时钟是来自外部时钟源, 还是来自内部时钟源 外部时钟源由配置字寄存器 (CONFIG) 的 FOSC<2:0> 定义 OSTS 还特别指明在 LP XT 或 HS 模式下, 振荡器起振定时器 (OST) 是否已超时 4.7 掉电模式 ( 休眠 ) 通过执行 SLEEP 指令可进入掉电模式 如果使能看门狗定时器 : WDT 将被清零并保持运行 状态寄存器中的 PF 位被清零 TF 位被置 1 关闭振荡器驱动器 I/O 端口保持执行 SLEEP 指令之前的状态 ( 驱动为高电平 低电平或高阻状态 ) 为使这种模式下的电流消耗降至最低, 所有 I/O 引脚都应保持为 VDD 或 VSS, 以确保没有外部电路从 I/O 引脚消耗电流 为了避免输入引脚悬空而引入开关电流, 应在外部将高阻输入的 I/O 引脚拉为高电平或低电平 为使电流消耗降至最低,T0CKI 输入也应保持为 VDD 或 VSS 还应考虑 PORTA 片上上拉的影响 MCLR引脚必须为逻辑高电平 注 : 请注意, 由于 WDT 超时产生的复位不会将 MCLR引脚驱动为低电平 从休眠状态唤醒 由于在休眠期间没有片上时钟处于工作状态, 下列外设中断可以将器件从休眠状态唤醒 : 1. TMR1 中断 Timer1 必须用作异步计数器 2. PORTA PORTB 电平变化中断 3. 来自 INT0 与 INT1 引脚的外部中断 4. 看门狗定时器唤醒 ( 如果 WDT 使能 ) MCLR引脚上的有效信号会导致器件复位 其他事件被认为是程序执行的继续 状态寄存器中的 TF 和 PF 位用于确定器而在执行 SLEEP 件复位的原因 PF 位在上电时被置 1, 执行指令时被清零 TF 位在发生 WDT 唤醒时被清零 当执行 SLEEP 指令时, 下一条指令 (PC+1) 将预先取出 如果希望通过中断事件唤醒器件, 则必须将相应的中断允许位置 1( 使能 ) 发生唤醒与 GIE 位的状态无关 如果 GIE 位被清零 ( 禁止 ), 器件将继续执行 SLEEP 指令之后的指令 如果 GIE 位被置 1( 使能 ), 器件执行 SLEEP 指令之后的指令, 然后跳转到中断地址 (0004h) 处执行代码 如果不希望执行 SLEEP 指令之后的指令, 用户应该在 SLEEP 指令后面放置一条 NOP 指令 注 : 如果禁止了全局中断 (GIE 被清零 ), 但有任一中断源将其中断允许位以及相应的中断标志位置 1, 器件将立即从休眠状态唤醒 器件从休眠状态唤醒时,WDT 都将被清零, 而与唤醒原因无关 37 Product Specification (V1.2)

38 4.7.2 使用中断唤醒 当禁止全局中断 (GIE 被清零 ) 时, 并且有任一中断源将其中断允许位和中断标志位置 1, 将会发生下列事件之一 : 如果在执行 SLEEP 之前产生了中断, 那么 SLEEP 指令将被作为一条 NOP 指令执行 因此,WDT 及其预分频器和后分频器 ( 如果使能 ) 将不会被清零, 并且 TF 位将不会被置 1, 同时 PF 位也不会被清零 如果在执行 SLEEP 指令期间或之后产生了中断, 那么器件将被立即从休眠状态唤醒 SLEEP 指令将在唤醒之前执行完毕 因此,WDT 及其预分频器和后分频器 ( 如果使能 ) 将被清零, 并且 TF 位将被置 1, 同时 PF 位也将被清零 即使在执行 SLEEP 指令之前, 检查到标志位为 0, 它也可能在 SLEEP 指令执行完毕之前被置 1 要确定是否执行了 SLEEP 指令, 可测试 PF 位 如果 PF 位置 1, 则说明 SLEEP 指令被当作一条 NOP 指令执行了 在执行 SLEEP 指令之前, 必须先执行一条 CLRWT 指令, 来确保将 WDT 清零 详情请参见图 OSC1 CLKOUT (4) TSOT (2) INT 引脚 INTF 标志 (INTCON 寄存器 ) 中断响应延时 (3) GIE bit (INTCON 寄存器 ) 处理器 休眠 指令流 PC PC PC+1 PC+2 PC+2 PC h 0005h 取指令 { Inst(PC) = Sleep Inst(PC + 1) Inst(PC + 2) Inst(0004h) Inst(0005h) 执行指令 { Inst(PC - 1) 休眠 Inst(PC + 1) 空周期 空周期 Inst(0004h) 注 1: 假设为 XT HS 或 LP 振荡器模式 2: TOST = 1024 TOSC ( 图中未按比例绘制 ) 该延时不适用于 EC 和 RC 振荡器模式 3: 假设 GIE = 1 在这种情形下, 处理器被唤醒后, 将跳转到 0004h 处执行代码 如果 GIE = 0, 程序将继续执行 4: 在 XT HS LP 或 EC 振荡器模式下, 不输出 CLKOUT 信号, 在此处仅作为时序参考 图 4-8: 通过中断将器件从休眠状态唤醒 4.8 故障保护时钟监控器 故障保护时钟监控器 (FSCM) 使得器件在出现外部振荡器故障时仍能继续工作 FSCM 能在振荡器起振延时定时器 (OST) 到期后的任一时刻检测振荡器故障 FSCM 通过将配置字寄存器 (CONFIG) 中的 FCMEN 位置 1 来使能 FSCM 可用于所有外部振荡模式 (LP XT HS EC RC 和 RCIO) 38 Product Specification (V1.2)

39 外部时钟 时钟监控器锁存器 (CM) ( 边沿触发 ) S LFINTOSC 振荡器 +64 R 31KHz (~32 µs) 采样时钟 488 Hz (~2 ms) 检测到时钟故障 图 4-9:FSCM 框图 故障保护检测 FSCM 模块通过将外部振荡器与 FSCM 采样时钟比较来检测振荡器故障 LFINTOSC 除以 64, 就产生了采样时钟 请参见图 4-9 故障检测器内部有一个锁存器 在外部时钟的每个下降沿, 锁存器被置 1 在采样时钟的每个上升沿, 锁存器被清零 如果采样时钟的整个半周期流逝而主时钟依然未进入低电平, 就检测到故障 故障保护操作 当外部时钟出现故障时,FSCM 将器件时钟切换到内部时钟源, 并将 PIFB 寄存器的 OSFIF 标志位置 1 如果在 PIFB 寄存器的 OSFIE 位置 1 的同时将该标志位置 1, 将产生中断 器件固件随后会采取措施减轻可能由故障时钟所产生的问题 系统时钟将继续来自内部时钟源, 直到器件固件成功重启外部振荡器并切换回外部操作 FSCM 所选的内部时钟源由 OSCCON 寄存器的 IRCF<2:0> 位决定 这使内部振荡器可以在故障发生前就得以配置 故障保护条件清除 复位 执行 SLEEP 指令或翻转 OSCCON 寄存器的 SCS 位后, 故障保护条件被清除 OSCCON 寄存器的 SCS 位被修改后,OST 将重新启动 OST 运行时, 器件继续从 OSCCON 中选定的 INTOSC 进行操作 OST 超时后, 故障保护条件被清除, 器件将从外部时钟源进行操作 必须先清除故障保护条件, 才能清零 OSFIF 标志位 复位或从休眠中唤醒 FSCM 设计为能在振荡器起振延时定时器 (OST) 到期后的任一时刻检测振荡器故障 OST 的使用场合为从休眠状态唤醒后以及任何类型的复位后 OST 不能在 EC 或 RC 时钟模式下使用, 所以一旦复位或唤醒完成, FSCM 就处于激活状态 当 OST 运行时, 器件总是处于代码执行阶段 注 : 由于振荡器起振时间的范围变化较大, 在振荡器起振期间 ( 即, 从复位或休眠中退出时 ), 故障保护电路不处于激活状态 经过一段适当的时间后, 用户应检查 OSCCON 寄存器的 OSTS 位, 以验证振荡器是否已成功起振以及系统时钟是否切换成功 39 Product Specification (V1.2)

40 4.9 内部快时钟调频功能 当系统时钟为内部快时钟 (IRC) 且需要对频率进行调节时, 可设置 IRC 频率调节使能位 IRCTEN 为 1, 使能 IRC 校准功能 此时通过设置 IRCTRIM{IRCTRIMH<4:0>,IRCTRIML<7:3>} 的值可对 IRC 频率进行粗调, 每个 LSB( 步长 ) 变化约为 50KHz; 设置 IRCFT<2:0> 值则可以微调, 每个 LSB( 步长 ) 变化约为 6KHz IRCTRIM 值变化对应频率变化的规律如下 : b9 b0 最大 频率 两个值频率相邻 注 : 最小 IRCTEN 为 0 时, 对 IRC 的调节失效, 此时 IRC 频率为出厂校准值 ; 2 频率的变化步长并非是绝对的; 3 由于 IRC 可能会存在小幅抖动,IRCFT 微调功能仅供参考 ; 寄存器 92H: 快时钟校正寄存器低 8 位 < IRCTRIML > R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 bit0 IRCTRIM<4:0> IRCFT 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -3 bit2-0 IRCTRIM<4:0>:IRC 频率调节位低 5 位 IRCFT:IRC 频率微调位 寄存器 93H: 快时钟校正寄存器高 5 位 < IRCTRIMH > R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 IRCTEN IRCTRIM<9:5> bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit6 bit5 bit4-0 未实现位未实现位 IRCTEN:IRC 频率调节使能位 1 = IRC 频率调节使能 0 = IRC 频率调节禁止 IRCTRIM<9:5>:IRC 频率调节位高 5 位 40 Product Specification (V1.2)

41 5.0 中断 有以下多种中断源 : 外部中断 PA1/INT0 PD6/INT1 Timer0 Timer1 溢出中断 PWM 中断 PA PB 电平变化中断 A/D 中断 触摸中断 I2C 中断 时钟丢失中断 中断控制寄存器 (INTS) 和外设中断请求寄存器 (PIFB1 PIFB2 PIFB3) 在各自的标志位中记录各种中断请求 INTS 寄存器还包括各个中断允许位和全局中断允许位 INTS 寄存器中的全局中断允许位 GIE 在置 1 时允许所有未屏蔽的中断, 而在清零时禁止所有中断 可以通过 INTS 和 PIFB(1 2 3) 寄存器中相应的允许位来禁止各个中断 复位时 GIE 被清零 响应中断时, 自动发生以下动作 : GIE 被清零以禁止任何其他中断 返回地址被压入堆栈 在 PC 中装入 0004h 执行 从中断返回 指令 RTFI 退出中断程序并将 GIE 位置 1, 从而重新使能未屏蔽的中断 INTS 寄存器包含以下中断标志位 : INT0 引脚中断 PORTA 电平变化中断 Timer0 溢出中断 外设中断允许和标志位在 PIFB1 PIFB2 PIFB3 寄存器中 对于外部中断事件, 如 INT0 INT1 引脚或 PORTA PORTB 电平变化中断, 中断响应延时将为 3 到 4 个指令周期 确切的延时时间取决于发生中断事件的时间 ( 见图 5-1-1) 对于单周期或双周期指令, 中断响应延时完全相同 进入中断服务程序之后, 就可以通过查询中断标志位来确定中断源 在重新允许中断前, 必须用软件将中断标志位清零, 以避免重复响应该中断 注 : 1: 各中断标志位的置 1 不受相应的中断屏蔽位或 GIE 位状态的影响 2: 当执行一条清零 GIE 位的指令后, 任何等待在下一周期执行的中断都将被忽略 当 GIE 位被再次置 1 后, 被忽略的中断仍会继续等待处理 关于 Timer1 A/D 模块的更多信息, 请参见相应的外设章节 41 Product Specification (V1.2)

42 PA0 PAINTR0 PA1 PAINTR1 PA2 PAINTR2 PA3 PAINTR3 PA4 PAINTR4 PA5 PAINTR5 OSFIF OSFIE TMR1IF TMR1IE INT1IF INT1IE ADCIF ADCIE PAIF PAIE TMR0IF TMR0IE INT0IF INT0IE PEIF PEIE GIE 唤醒 ( 如果处于睡眠模式 ) 产生中断 SSP1IF SSP1IE CSIF CSIE PBIF PBIE PWMIF PWMIE BCL1IF BCL1IE 图 5-1-1: 中断逻辑 OSC CLKOUT (3) INT 引脚 (4) (1) INTF 标志 (INTS 寄存器 ) (1) (5) (2) 中断响应延时 GIE 位 (INTS 寄存器 ) 指令流 PC 取指令 { PC PC + 1 PC h Inst(PC) Inst(PC + 1) Inst(0004h) Inst(0005h) 执行指令 { Inst(PC - 1) Inst(PC) 空周期 空周期 Inst(0004h) 注 1: 在此采样 INTF 标志 ( 每个 1 周期 ) 2: 异步中断响应延时为 3-4 个 TCY 同步中断响应延时为 3 个 TCY, 其中 TCY 为一个指令周期, 无论 Inst ( PC ) 是单周期还是双周期指令, 中断响应延时都是相同的 3: 只有在 INTS 和 RC 振荡器模式下 CLKOUT 才有效 4: 关于 INT 脉冲的最小宽度, 请参见第 13.0 节 电气特性 中的交流规范 5: 允许在 4-1 周期内的任何时间将 INTF 置 1 图 5-1-2:INT 引脚中断时序 42 Product Specification (V1.2)

43 5.1 中断特殊功能寄存器 INTS 寄存器 INTS 寄存器是可读写的寄存器, 包含 TMR0 寄存器溢出 PORTA 电平变化和外部 PA1/INT0 引脚中断的各种允许和标志位 注 : 当有中断条件产生时, 不管相应的中断允许位或 INTS 寄存器的全局允许位 GIE 状态如何, 中断标志位都将置 1 用户软件应该在允许中断之前确保将相应的中断标志位清零 寄存器 0BH/8BH/10BH/18BH: 中断控制寄存器 (INTS) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 GIE PEIE TIS INT0E PAIE TIF INT0F PAIF bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit6 bit5 bit4 bit3 bit2 bit1 bit0 注 GIE: 全局中断允许位 1 = 允许所有未屏蔽的中断 0 = 禁止所有中断 PEIE: 外设中断允许位 1 = 允许所有未屏蔽的外设中断 0 = 禁止所有外设中断 TIS:Timer0 溢出中断允许位 1 = 允许 Timer0 中断 0 = 禁止 Timer0 中断 INT0E:PA1/INT0 外部中断允许位 1 = 允许 PA1/INT0 外部中断 0 = 禁止 PA1/INT0 外部中断 (1) PAIE:PORTA 电平变化中断允许位 1 = 允许 PORTA 电平变化中断 0 = 禁止 PORTA 电平变化中断 (2) TIF:Timer0 溢出中断标志位 1 = Timer0 寄存器已经溢出 ( 必须用软件清零 ) 0 = Timer0 寄存器没有溢出 INT0F:PA1/INT0 外部中断标志位 1 = 发生了 PA1/INT0 外部中断 ( 必须用软件清零 ) 0 = 未发生 PA1/INT0 外部中断 (1) PAIF:PORTA 电平变化中断标志位 1 = 至少一个 PORTA<5:0> 引脚的电平状态发生了改变 ( 必须用软件清零 ) 0 = 没有一个 PORTA<5:0> 引脚的电平状态发生改变 1: 必须同时使能 PAINTR 寄存器 2: 当 TMR0 计满回零时,TIF 位置 1 复位时 TMR0 的状态不变, 它应该在清零 TIF 位之前被初始化 43 Product Specification (V1.2)

44 5.1.2 外设中断允许寄存器 PIFB1 PIFB2 PIFB3 寄存器包含外设中断允许和标志位 注 : 当有中断条件产生时, 不管相应的中断允许位或 INTS 寄存器的全局允许位 GIE 状态如何, 中断标志位都将置 1 用户软件应该在允许中断之前确保将相应的中断标志位清零 寄存器 0CH: 外设中断请求寄存器 1(PIFB1) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 INT1E ADCIE OSFIE TMR1IE INT1F ADCIF OSFIF TMR1IF bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit6 bit5 bit4 bit3 bit2 bit1 bit0 INT1E:PD6/INT1 外部中断允许位 1 = 允许 PD6/INT1 外部中断 0 = 禁止 PD6/INT1 外部中断 ADCIF:ADC 转换器中断允许位 1 = 允许 A/D 转换器中断 0 = 禁止 A/D 转换器中断 OSFIE: 振荡器故障中断允许位 1 = 允许振荡器故障中断 0 = 禁止振荡器故障中断 TMR1IE:Timer1 溢出中断允许位 1 = 允许 Timer1 溢出中断 0 = 禁止 Timer1 溢出中断 INT1F:PD6/INT1 外部中断标志位 1 = 发生了 PD6/INT1 外部中断 ( 必须用软件清零 ) 0 = 未发生 PD6/INT1 外部中断 ADCIF:ADC 中断标志位 1 = A/D 转换完成 0 = A/D 转换尚未完成或尚未启动 OSFIF: 振荡器故障中断标志位 1 = 系统振荡器发生故障, 时钟输入切换为 INTOSC( 必须用软件清零 ) 0 = 系统时钟正常运行 TMR1IF:Timer1 溢出中断标志位 1 = Timer1 寄存器已经溢出 ( 必须用软件清零 ) 0 = Timer1 寄存器未溢出 寄存器 0DH: 外设中断请求寄存器 2(PIFB2) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 SSP1IE CSIE PBIE PWMIE SSP1IF CSIF PBIF PWMIF bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 44 Product Specification (V1.2)

45 bit6 bit5 bit4 bit3 bit2 bit1 bit0 SSP1IE:I2C 中断允许位 1 = 允许 I2C 中断 0 = 禁止 I2C 中断 CSIE: 触摸中断允许位 1 = 允许触摸中断 0 = 禁止触摸中断 PBIE:PORTB 电平变化中断允许位 1 = 允许 PORTB 电平变化中断 0 = 禁止 PORTB 电平变化中断 PWMIE:PWM 中断允许位 1 = 允许 PWM 中断 0 = 禁止 PWM 中断 SSP1IF:I2C 中断标志位 1 = 发生了 I2C 中断 ( 必须用软件清零 ) 0 = 未发生 I2C 中断 CSIF: 触摸中断标志位 1 = 发生了触摸中断 0 = 未发生触摸中断 PBIF:PORTB 电平变化中断标志位 1 = 至少一个 PORTB<7:0> 引脚的电平状态发生了改变 ( 必须用软件清零 ) 0 = 没有一个 PORTB<7:0> 引脚的电平状态发生改变 PWMIF:PWM 中断标志位 1 = 发生 PWM 中断 ( 必须用软件清零 ) 0 = 未发生 PWM 中断 寄存器 19H: 外设中断请求寄存器 3(PIFB3) R-0 R-0 R-0 R/W-0 R-0 R-0 R-0 R/W-0 BCL1IE BCL1IF bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit6 bit5 bit4 bit3 bit2 bit1 bit0 未实现未实现 未实现 BCL1IE:I2C 总线冲突中断允许位 1 = 允许 I2C 总线冲突中断 0 = 禁止 I2C 总线冲突中断未实现 未实现未实现 BCL1IF:I2C 总线冲突中断标志位 1 = 发生了 I2C 总线冲突中断 0 = 未发生 I2C 总线冲突中断 45 Product Specification (V1.2)

46 表 5-1: 与中断相关的寄存器 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 LVR 时的值 所有其他 复位值 INTS GIE PEIE TIS INS PAIE TIF INTF PAIF xxxx xxxx PAINTRA PAINTRA5 PAINTRA4 PAINTRA3 PAINTRA2 PAINTRA1 PAINTRA xxxx xxxx PBINTRB PAINTRB7 PAINTRB6 PAINTRB5 PAINTRB4 PAINTRB3 PAINTRB2 PAINTRB1 PAINTRB xxxx xxxx PIFB1 INT1IE ADCIE OSFIE TMR1IE INT1IF ADCIF OSFIF TMRIF xxxx xxxx PIFB2 SSP1IE CSIE PBIE PWMIE SSP1IF CSIF PBIF PWMIF xxxx xxxx PIFB3 BCL1IE BCL1IF xxxx xxxx 图注 : x = 未知, u = 不变, = 未实现 ( 读为 0), q = 取值视情况而定 中断模块不使用阴影单元 5.2 外部中断 INT0(PA1) INT1(PD6) 引脚上的外部中断是边沿触发的 ; 当 OPT_REG 寄存器的 INT1EG 与 INT0EG 位被置 1 时在上升沿触发, 而当 INT1EG 与 INT0EG 位被清零时在下降沿触发 当 INT0(PA1) INT1(PD6) 引脚上出现有效边沿时,INTS 寄存器的 INT0F 位 PIFB1 寄存器的 INT1F 位置 1 可以通过将 INTS 寄存器的 INT0E PIFB1 寄存器的 INT1E 控制位清零来禁止该中断 在重新允许该中断前, 必须在中断服务程序中先用软件将 INT0F INT1F 位清零 如果 INT0E 与 INT1F 位在进入休眠状态前被置 1, 则 INT0(PA1) INT1(PD6) 引脚上中断能将处理器从休眠状态唤醒 关于 INT0(PA1) INT1(PD6) 引脚上中断将处理器从休眠状态唤醒的时序, 请参见图 4-8 注 : 必须对 ADINS 和 CPIOA CPIOD 寄存器进行初始化, 以将模拟通道配置为数字输入 配置为模拟输入的引脚总是读为 Timer0 中断 TMR0 寄存器溢出 (FFh 00h) 会将 INTS 寄存器的 T0IF 位置 1 可以通过置 1/ 清零 INTS 寄存器的 T0IE 位来使能 / 禁止该中断 关于 Timer0 模块的操作, 请参见第 7.1 节 Timer0 模块 5.4 PORTA PORTB 电平变化中断 PORTA PORTB 输入电平的变化会使的 PAIF PBIF 位置 1 可以通过置 1/ 清零的 PAIE PBIE 位来使能 / 禁止该中断 此外, 可通过 PAINTAR PAINTBR 寄存器对该端口的各个引脚进行配置 注 : 当读操作正在执行时发生了 I/O 引脚电平变化, 则 PAIF PBIF 中断标志位可能不会被置 A/D 中断 ADC 模块在模数转换完成时,PIFB1 寄存器中的 ADCIF 中断标志位均置 1 可以通过置 1/ 清零 PIFB1 寄存器中的 ADCIE 位来使能 / 禁止该中断 5.6 中断的现场保护 在中断期间, 仅将返回的 PC 值压入堆栈 通常情况下, 用户可能希望在中断期间保存关键寄存器 ( 例如, W 寄存器和状态寄存器 ) 这必须用软件实现 应将临时保存寄存器 W_TEMP 和 STATUS_TEMP 置于 GPR 46 Product Specification (V1.2)

47 的末 16 字节中 ( 见图 2-2) 这 16 个单元是所有存储区共用的, 无需分区 这样就简化了现场保护和恢复操作 例 5-7 中所示的代码可用于 : 保存 W 寄存器 保存状态寄存器 执行 ISR 代码 恢复状态寄存器 ( 和存储区选择位寄存器 ) 恢复 W 寄存器 注 : 通常不需要保存 PCLATH 但是, 如果要在 ISR 和主程序中使用计算 LJUMP, 就必须在 ISR 中保存和恢复 PCLATH 例 5-7: 将状态寄存器和 W 寄存器保存在 RAM 中 STWR W_TEMP ; 保存 W 寄存器到 W_TEMP SWAPR STATUS,W ; 将 STATUS 寄存器高低四位交换后保存到 W( 目的 : 不改变标志 ) STWR STATUS_TEMP ; 保存 STATUS 寄存器内容到 STATUS_TEMP ; ;(ISR) ; 中断服务程序 ; SWAPR STATUS_TEMP,W ; 交换 STATUS_TEMP 高低四个字节 STWR STATUS ; 恢复标志状态寄存器 SWAPR W_TEMP,R ; 恢复 W 寄存器值 ( 用交换指令的目的 : 不改变状态寄存器值 ) SWAPR W_TEMP,W 47 Product Specification (V1.2)

48 6.0 I/O 端口 共有 26 个通用 I/O 引脚 根据使能的外设不同, 有些 ( 或全部 ) 引脚不能用作通用 I/O 通常使能了一个外设后, 相关的引脚就不能用作通用 I/O 引脚了 6.1 PORTA 和 CPIOA 寄存器 PORTA 是 6 位宽的双向端口 PORTA 对应的数据方向寄存器是 CPIOA( 寄存器 85H) 将 CPIOA 位置 1( = 1) 可以使对应的 PORTA 引脚作为输入引脚 ( 即禁止相应的输出驱动器 ) 将 CPIOA 位清零 ( = 0) 将使对应的 PORTA 引脚作为输出引脚 ( 即使能输出驱动器并将输出锁存器的内容置于所选的引脚上 ) PA3 是个例外, 它是开漏极输出, 且驱动能力很弱, 最大只能 5ma 的灌电流 例 6-1 给出了初始化 PORTA 的方法 读 PORTA 寄存器 ( 寄存器 05H) 将读取引脚的状态而写该寄存器将会写入端口锁存器 所有写操作都是读 - 修改 - 写操作 因此, 写一个端口就意味着读该端口的引脚电平, 修改读到的值, 然后再将改好的值写入端口数据锁存器 当 MCLRE = 1 时,PA3 读为 0 即使在 PORTA 引脚被用作模拟输入的时候,CPIOA 寄存器仍然控制 PORTA 引脚的方向 在将它们用作模拟输入时, 用户必须确保 CPIOA 寄存器中的位保持为置 1 状态 配置为模拟输入的 I/O 引脚始终读为 0 注 : 必须对 ADINS 寄存器进行初始化以将模拟通道配置为数字输入通道 配置为模拟输入的引脚读为 0 例 6-1: 初始化 PORTA BCR STATUS,PAGE ;Bank0 CLRR PORTA ; 清除端口 A 输出缓冲器 BSR STATUS,PAGE ;Bank1 CLRR ADINS ; 所有模拟 / 数字复用端口设置为数字端口 LDWI 0CH ; 设置端口 A 的 <3,2> 位为输入, 其他输出 STWR CPIOA ; BCR STATUS,PAGE ;Bank0 寄存器 05H:PORTA 寄存器 (PORTA) U-0 U-0 R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x PA5 PA4 PA3 PA2 PA1 PA0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -6 未实现 : 读为 0 bit5-0 PA<5:0>:PORTA I/O 引脚位 1 = PORTA 引脚电平 >V IH 0 = PORTA 引脚电平 <V IL 48 Product Specification (V1.2)

49 寄存器 85H:PORTA 三态寄存器 (CPIOA) U-0 U-0 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 CPIOA5 CPIOA4 CPIOA3 CPIOA2 CPIOA1 CPIOA0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -6 未实现 : 读为 0 bit5-0 CPIOA<5:0>:PORTA 三态控制位 1 = PORTA 引脚配置为输入 ( 三态 ) 0 = PORTA 引脚配置为输出 注 1: 在 XT HS 和 LP 振荡模式下,CPIOA<5:4> 始终读为 1; 2:PA3 仅可作开漏输出 (Open Drain); 6.2 PORTB 和 CPIOB 寄存器 PORTB 是 8 位宽的双向端口 引脚可以配置为 I/O 或作为触摸模拟输入 PORTB 对应的数据方向寄存器是 CPIOB( 寄存器 86H) 将 CPIOB 位置 1( = 1) 可以使对应的 PORTB 引脚作为输入引脚 ( 即禁止相应的输出驱动器 ) 将 CPIOB 位清零 ( = 0) 将使对应的 PORTA 引脚作为输出引脚 ( 即使能输出驱动器并将输出锁存器的内容置于所选的引脚上 ) 读 PORTB 寄存器 ( 寄存器 06H) 将读取引脚的状态而写该寄存器将会写入端口锁存器 所有写操作都是读 - 修改 - 写操作 因此, 写一个端口就意味着读该端口的引脚电平, 修改读到的值, 然后再将改好的值写入端口数据锁存器 即使在 PORTB 引脚被用作模拟输入的时候,CPIOB 寄存器仍然控制 PORTB 引脚的方向 在将它们用作 模拟输入时, 用户必须确保 CPIOB 寄存器中的位保持为置 1 状态 配置为模拟输入的 I/O 引脚始终读为 0 寄存器 06H:PORTB 寄存器 (PORTB) R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -0 PB<7:0>:PORTB I/O 引脚位 1 = PORTB 引脚电平 >V IH 0 = PORTB 引脚电平 <V IL 寄存器 86H:PORTB 三态寄存器 (CPIOB) R/W-1 R/W-1 R/W-1 R/W-1 R-1 R/W-1 R/W-1 R/W-1 CPIOB7 CPIOB6 CPIOB5 CPIOB4 CPIOB3 CPIOB2 CPIOB1 CPIOB0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 49 Product Specification (V1.2)

50 -0 CPIOB<7:0>:PORTB 三态控制位 1 = PORTB 引脚配置为输入 ( 三态 ) 0 = PORTB 引脚配置为输出 6.3 PORTC 和 CPIOC 寄存器 PORTC 是由 4 个双向引脚组成的通用 I/O 引脚可以配置为 I/O 或作为触摸模拟输入 注 : 必须对 ADINS 寄存器进行初始化以将模拟通道配置为数字输入通道 配置为模拟输入的引脚读为 0 例 6-4: 初始化 PORTC BCR STATUS,PAGE ;Bank 0 CLRR PORTC ; 清输出缓冲区 BSR STATUS,PAGE ;Bank 1 CLRR ADINS ; 设置端口为数字端口 LDWI 0Ch ; 设置 PC1,PC2 为输入, 其他 PC 口输出 STWR CPIOC BCR STATUS,PAGE ;Bank 0 寄存器 07H:PORTC 寄存器 (PORTC) U-0 U-0 U-0 U-0 R/W-x R/W-x R/W-x R/W-x PC3 PC2 PC1 PC0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 Bit3-0 PC<3:0>:PORTCI/O 引脚位 1 = PORTC 引脚电平 >VIH 0 = PORTC 引脚电平 <VIL 寄存器 87H:PORTC 三态寄存器 (CPIOC) U-0 U-0 U-0 U-0 R/W-1 R/W-1 R/W-1 R/W-1 CPIOC3 CPIOC2 CPIOC1 CPIOC0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 Bit3-0 CPIOC<3:0>:PORTC 三态控制位 1 = PORTC 引脚配置为输入 ( 三态 ) 0 = PORTC 引脚配置为输出 50 Product Specification (V1.2)

51 6.4 PORTD 和 CPIOD 寄存器 PORTD 是由 8 个双向引脚组成的通用 I/O 引脚可以配置为 I/O 或作为触摸模拟输入 要了解各个功能的特定信息 (ADC Touch), 请参见本数据手册的相应章节 寄存器 08H:PORTD 寄存器 (PORTD) R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x PD7 PD6 PD5 PD4 PD3 PD2 PD1 PD0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -0 PD<7:0>:PORTD I/O 引脚位 1 = PORTD 引脚电平 >V IH 0 = PORTD 引脚电平 <V IL 寄存器 88H:CPIOD 寄存器 (CPIOD) R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 CPIOD7 CPIOD6 CPIOD5 CPIOD4 CPIOD3 CPIOD2 CPIOD1 CPIOD0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -0 CPIOD<7:0>:PORTD 三态控制位 1 = PORTD 引脚配置为输入 ( 三态 ) 0 = PORTD 引脚配置为输出 6.5 其它引脚功能 上的每一个 PORTA 引脚具有电平变化中断和弱上拉功能 PA0 具有超低功耗唤醒功能 下面三个小节将介绍这些功能 PORTB 引脚具有电平变化中断和弱上拉功能 PORTC 引脚具有弱上 下拉功能 PORTD 引脚具有弱上拉功能 ADINS 寄存器 ADINS 寄存器用于将 I/O 引脚的输入模式配置为模拟 将相应的 ADINS 位置为高电平将使对该引脚的所有读操作结果为 0, 并使该引脚的模拟功能正常进行 ADINS 位的状态对数字输出功能没有影响 CPIO 清零且 ADINS 置 1 的引脚仍将作为数字输出工作, 但其输出模式将为模拟 在对受影响端口执行读 修改 写指令时, 这将导致意外的操作 寄存器 91H: 模拟选择寄存器 (ADINS) R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS0 PD7 PD6 PD5 PD4 PD3 PD2 PD1 PD0 bit0 51 Product Specification (V1.2)

52 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -0 ANS<7:0>: 模拟选择位 1 = 模拟输入 引脚被分配为模拟输入 (1) 0 = 数字 I/O 引脚被分配给端口或特殊功能 注 1: 将某引脚设置为模拟输入将自动禁止数字输入电路 弱上拉以及电平变化中断 ( 如果有的话 ) 相应 CPIO 位必须设置为输入模式以允许对该引脚的电压进行外部控制 弱上拉与下拉 PORTA PORTB PORTC PORTD 引脚的某些位可配置内部弱上拉与下拉, 控制位 PAPHRX PBPHRX PCPHRx PDPHRX 使能或禁止每一个弱上拉 请参见寄存器 95H 寄存器 96H 寄存器 97H 和寄存器 98H 当将端口引脚配置为输出时, 其弱上拉电路会自动切断 在 PA3 配置为 MCLR 能 MCLR上拉不受软件控制 时, 自动启动 PA3 的弱上拉功 注意 :PORTC 引脚复位过程中为默认输入上拉, 可能会产生短暂的高电平 ( 与复位时间有关 ), 应用设计中要特别注意 寄存器 95H: 弱上拉 PORTA 寄存器 (PAPHR) R-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 PAPHR5 PAPHR4 PAPHR3 PAPHR2 PAPHR1 PAPHR0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -6 未实现 : 读为 0 bit5-0 注 PAPHR<5:0>:PORTA 弱上拉控制位 1 = 使能上拉 0 = 禁止上拉 1: 如果引脚处于输出模式 (CPIO = 0), 则弱上拉器件被自动禁止 2: 在 XT HS 和 LP 振荡模式下 PAPHR<5:4> 始终读为 1 寄存器 96H: 弱上拉 PORTB 寄存器 (PBPHR) R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 PBPHR7 PBPHR6 PBPHR5 PBPHR4 PBPHR3 PBPHR2 PBPHR1 PBPHR0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -0 PBPHR <7:0>:PORTB 弱上拉控制位 1 = 使能上拉 0 = 禁止上拉 52 Product Specification (V1.2)

53 寄存器 97H: PORTC 弱上拉和弱下拉寄存器 (PCPHR) R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 PDC3 PDC2 PDC1 PDC0 PCPHR3 PCPHR2 PCPHR1 PCPHR0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -4 bit3-0 PDC <7:4>:PORTC 下拉控制位 1 = 使能下拉 0 = 禁止下拉 PCPHR <3:0>:PORTC 上拉控制位 1 = 使能上拉 0 = 禁止上拉 寄存器 98H: 弱上拉 PORTD 寄存器 (PDPHR) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 PDPHR7 PDPHR6 PDPHR5 PDPHR4 PDPHR3 PDPHR2 PDPHR1 PDPHR0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -0 PDPHR <7:0>:PORTD 上拉控制位 1 = 使能上拉 0 = 禁止上拉 电平变化中断 PORTA 和 PORTB 引脚的每一位均可分别配置为电平变化中断引脚 控制位 PAINTRx 与 PBINTRx 使能或禁止每个引脚的中断功能, 在上电复位时禁止电平变化中断 对于已允许电平变化中断的引脚, 则将该引脚上的值同上一次读 PORTA PORTB 时锁存的值进行比较 将上一次 不匹配 的输出一起作逻辑或运算, 以便将 INTS PIFB2 寄存器 ( 寄存器 0BH 和寄存器 0DH) 中 PORTA PORTB 电平变化中断标志位 (PAIF 和 PBIF) 置 1 该中断能唤醒休眠下的器件 用户在中断服务程序中通过以下方式清除中断 : a) 对 PORTA PORTB 进行读或写操作 这将结束引脚电平不匹配条件 b) 将标志位 PAIF PBIF 清零 电平不匹配条件会继续将 PAIF PBIF 标志位置 1 而读 PORTA PORTB 将结束不匹配条件并允许将 PAIF 和 PBIF 标志位清零 锁存器将保持最后一次读取的值不受 MCLR和欠压复位的影响 在这些复位之后, 如果出现电平不匹配,PAIF 和 PBIF 标志位将继续被置 1 注 : 在执行任何 PORTA PORTB 操作时如果 I/O 引脚的电平发生变化, 则 PAIF 和 PBIF 中断标志位可能不会被置 1 53 Product Specification (V1.2)

54 寄存器 99H: 电平变化中断 PORTA 寄存器 (PAINTR) U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 PAINTR5 PAINTR4 PAINTR3 PAINTR2 PAINTR1 PAINTR0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -6 未实现 : 读为 0 bit5-0 注 PAINTR<5:0>: 电平变化中断 PORTA 控制位 1 = 允许电平变化中断 0 = 禁止电平变化中断 1: 必须允许全局中断允许 (GIE) 以使各中断被识别 2: 在 XT HS 和 LP 振荡模式下 PAINTR<5:4> 始终读为 1 寄存器 9AH: 电平变化中断 PORTB 寄存器 (PBINTR) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 PBINTR7 PBINTR6 PBINTR5 PBINTR4 PBINTR3 PBINTR2 PBINTR1 PBINTR0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -0 PBINTR <7:0>:PORTB 电平变化中断允许位 1 = 允许电平变化中断 0 = 禁止电平变化中断 超低功耗唤醒 PA0 上的超低功耗唤醒允许电压缓慢跌落, 从而可在不消耗额外电流的情况下, 产生 PA0 电平变化中断 通过将 ULPWUE 位 (PSTA<5>) 置 1 选择该模式 这将产生一个很小的灌电流, 可用于将 PA0 上的电容放电 要使用该功能,PA0 引脚应先被配置为输出高电平以对电容充电, 允许 PA0 的电平变化中断并且 PA0 要配置为输入引脚 将 ULPWUE 置 1 开始放电, 执行 SLEEP 指令 当 PA0 上的电压下降到 VIL 后, 器件将被唤醒并执行下一条指令 如果 INTS 寄存器的 GIE 位置 1, 器件将调用中断服务程序 (0004h) 更多信息, 请参见第 节 电平变化中断 该功能提供了低功耗技术, 可周期性地唤醒休眠下的器件, 一般应用电路如图 所示 延时取决于 PA0 上 RC 电路的放电时间 要了解如何初始化超低功耗唤醒模块, 请参见例 串联电阻提供了 PA0 引脚的过电流保护功能, 允许在软件中对延时进行校准 ( 见图 6-6-1) 可用定时器测量电容的充放电时间 然后调整充电时间以提供所需的中断延时 该技术可补偿温度 电压和元件精度所带来的影响 超低功耗唤醒外设还可以配置为简单可编程低压检测设备或温度传感器 54 Product Specification (V1.2)

55 例 6-5-4: 超低功耗唤醒的初始化 BCR STATUS,PAGE ;Bank 0 BSR PORTA,0 ; 清 0 端口 A 的 PA0 BSF STATUS,PAGE ;Bank 1 BCR ADINS,0 ; 端口 A 的 PA0 设置为数字口 BCR CPIOA,0 ; 端口 A 的 PA0 设置为输出 LCALL CapDelay ; 延时 BSR PSTA,ULPWUE ; 使能超低功耗唤醒功能 BSR PAINTR,0 ; 设置 PA0 口电平变化唤醒功能 BSR CPIOA,0 ; 设置 PA0 口输入 LDWI B ; 使能电平变化中断 全局中断 STWR INTS ; SLEEP ; 睡眠, 等待唤醒 NOP VDD MDTMCU 写 PA0 PA0 C1 Iulp ULPWUE 图 超低功耗唤醒应用电路 6.6 PORTA 引脚说明和引脚图 每个 PORTA 引脚都与其他功能复用, 其他复用功能请参见本数据手册中的相关章节 PA0/ISCK/ULPWU/SDA 图 给出了此引脚的引脚图 PA0/ISCK/ULPWU/SDA 引脚可配置为下列功能之一 : 通用 I/O 在线串行编程 (In-CircuitSerialProgramming ) 烧录和调试的时钟 SCK 超低功耗唤醒的模拟输入 I2C 数据 55 Product Specification (V1.2)

56 数据总线 写 PAPHR D CK VDD 弱 读 PAPHR I2C_SDO_OUT_EN VDD I2C_SDO 写 PORTA D CK Vt Vss I/O 引脚 写 CPIOA D CK VSS 读 CPIOA 0 1 ULPWUE Iulp 读 PORTA 写 PAINTR D CK D 读 PAINTR EN D 3 电平变化中断 EN 读 PORTA 至 I2C_SDI 及 ISCK 图 6-6-1:PA0 框图 56 Product Specification (V1.2)

57 6.6.2 PA1/ISDA/INT0 图 给出了此引脚的引脚图 PA1/ISDA/INT0 引脚可配置为下列功能之一 : 通用 I/O 在线串行编程烧录和调试的数据端口 ISDA 外部中断 INT0 数据总线 写 PAPHR D CK VDD 弱 读 PAPHR D VDD 写 PORTA CK 写 CPIOA D CK VSS I/O 引脚 读 CPIOA 读 PORTA 写 PAINTR D CK D 读 PAINTR EN D 3 电平变化中断 EN 读 PORTA 至 ISDA 至 INT 图 6-6-2:PA1 框图 57 Product Specification (V1.2)

58 6.6.3 PA2/T0CKI/SCL 图 给出了此引脚的引脚图 PA2/T0CKI/SCL 引脚可配置为下列功能之一 : 通用 I/O TIMER0 的时钟输入 I2C 时钟 数据总线 写 PAPHR D CK VDD 弱 读 PAPHR D VDD 写 PORTA CK 写 CPIOA D CK VSS I/O 引脚 读 CPIOA 读 PORTA 写 PAINTR D CK D 读 PAINTR EN D 3 电平变化中断 EN 至 Timer0 读 PORTA 至 I2C_SCL 图 6-6-3:PA2 框图 58 Product Specification (V1.2)

59 6.6.4 PA3/MCLR/VPP 图 给出了此引脚的引脚图 PA3/M C L R /VPP 引脚可配置为下列功能之一 : 输入引脚或开漏输出引脚 ; 带弱上拉的外部复位 ; 高压烧写引脚 数据总线 写 PAPHR D CK MCLRE VDD 弱 读 PAPHR 复位 MCLRE D 写 PORTA CK 写 CPIOA 读 CPIOA D CK MCLRE VSS I/O 引脚 读 PORTA 写 PAINT R D CK D 读 PAIN TR EN D 3 电平变化中断 EN 读 PORTA 图 6-6-4:PA3 框图 59 Product Specification (V1.2)

60 6.6.5 PA4/T1G/OSC2/CLKOUT 图 给出了此引脚的引脚图 PA4/T1G/OSC2/CLKOUT 引脚可配置为下列功能之一 : 通用 I/O Timer1 门控 ( 计数使能 ) 晶振 / 谐振器连接 时钟输出 数据总线 写 PAPHR D CK (1) CLK 模式 VDD 弱 读 PAPHR OSC1 振荡器电路 VDD CLKOUTEN 写 PORTA D CK Fosc/4 0 1 I/O 引脚 写 CPIOA D CK CLKOUTEN INTOSC/RC/EC (2) VSS 读 CPIOA CLKOUTEN 读 PORTA 写 PAINTR D CK D 读 PAINTR EN D 3 电平变化中断 EN 至 T1G 读 PORTA 图 6-6-5:PA4 框图注 :1 CLK 模式为 XT HS LP 和 LPTMR1, 且 CLKOUT 使能 2 具有 CLKOUT 选项 60 Product Specification (V1.2)

61 6.6.6 PA5/T1CKI/OSC1/CLKIN 图 给出了此引脚的引脚图 PA5/T1CKI/OSC1/CLKIN 引脚可配置为下列功能之一 : 通用 I/O TMR1 时钟输入 晶振 / 谐振器连接 时钟输入 数据总线 写 PAPHR D CK INTOSC 模式 TMR1LPEN (1) RAPU VDD 弱 读 PAPHR OSC2 振荡器电路 D VDD 写 PORTA CK I/O 引脚 写 CPIOA 读 CPIOA D CK INTOSC 模式 VSS 读 PORTA 写 PAINTR D CK D EN 3 读 PAINTR D 电平变化中断 EN 至 Timer1 读 PORTA 注 1:Timer1 的 LP 振荡器使能 图 6-6-6:PA5 框图 61 Product Specification (V1.2)

62 表 6-4: 与 PORTA 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 LVR 时的值 所有其他 复位值 ADINS ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS xxxx xxxx PSTA ULPWUE SLVREN MCLR IER POR LV R qq xxxx xxxx INTS GIE PE1E TIS INT0E PAIE TIF INT0F PAIF xxxx xxxx PAINTR PAINTR5 PAINTR4 PAINTR3 PAINTR2 PAINTR1 PAINTR xxxx xxxx OPT_REG INT1EDG INT0EDG TCS TCE PSC PS2 PS1 PS xxxx xxxx PORTA PA5 PA4 PA3 PA2 PA1 PA0 --x0 x000 xxxx xxxx CPIOA CPIOA5 CPIOA4 CPIOA2 CPIOA1 CPIOA xxxx xxxx PAPHR PAPHR5 PAPHR4 PAPHR3 PAPHR2 1 PAPHR PAPHR xxxx xxxx 图注 : x = 未知, u = 不变, = 未实现 ( 读为 0) PORT A 不使用阴影单元 6.7 PORTB 引脚说明和引脚图 PBX/CCHX 图 给出了此引脚的引脚图 PBX/CCHX 引脚可配置为下列功能之一 : 通用 I/O 触摸的模拟输入 数据总线 写 PBPHR D CK CCH_x VDD 弱 读 PBPHR D VDD 写 PORTB CK 写 CPIOB D CK VSS I/O 引脚 读 CPIOB 读 PORTB 写 PBINTR CCH_x D CK D 读 PBINTR EN D 3 电平变化中断 EN 读 PORTB 至触摸 图 6-7-1:PBX 框图 62 Product Specification (V1.2)

63 表 6-7: 与 PORTB 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 LVR 时的值 所有其他 复位值 INTS GIE PE1E TIS INT0E PAIE TIF INT0F PAIF xxxx xxxx PIFB2 SSP1IE CSIE PBIE PWMIE SSP1IF CSIF PBIF PWMIF xxxx xxxx PORTB PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB xxxx xxxx CPIOB CPIOB7 CPIOB6 CPIOB5 CPIOB4 CPIOB3 CPIOB2 CPIOB1 CPIOB xxxx xxxx PBPHR PBPHR7 PBPHR6 PBPHR5 PBPHR4 PBPHR3 PBPHR2 PBPHR1 PBPHR xxxx xxxx PBINTR PBINTR7 PBINTR6 PBINTR5 PBINTR4 PBINTR3 PBINTR2 PBINTR1 PBINTR xxxx xxxx 图注 : x = 未知, u = 不变, = 未实现 ( 读为 0) PORTB 不使用阴影单元 6.8 PORTC 引脚说明和引脚图 图 所示给出了此引脚的引脚图 PCx/CHS,PC 引脚可以配置为下列功能之一 : 通用 I/O 触摸的模拟输入 数据总线 写 PCPHR D CK CCH_x VDD 弱 读 PCPHR D VDD 写 PORTC CK 写 CPIOC D CK VSS I/O 引脚 读 CPIOC 读 PORTC D EN CCH_x 读 PORTC D 写 PCPDC CK CCH_x 读 PCPDC 至触摸 VSS 图 6-8-1:PCX 框图 63 Product Specification (V1.2)

64 表 6-8: 与 PORTC 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 LVR 时的值 所有其他 复位值 INTS GIE PE1E TIS INT0E PAIE TIF INT0F PAIF xxxx xxxx PIFB2 SSP1IE CSIE PBIE PWMIE SSP1IF CSIF PBIF PWMIF xxxx xxxx PORTC PC3 PC2 PC1 PC xxxx xxxx CPIOC CPIOC3 CPIOC2 CPIOC1 CPIOC xxxx xxxx PCPHR PDC3 PDC2 PDC1 PDC0 PCPHR3 PCPHR2 PCPHR1 PCPHR xxxx xxxx 图注 : x = 未知, u = 不变, = 未实现 ( 读为 0) PORTC 不使用阴影单元 6.9 PORTD 引脚说明和引脚图 PD0/CCH12/AN0/VREF 图 所示给出了此引脚的引脚图 PD0/AN0/CCH/VREF 引脚可配置为下列功能之一 : 通用 I/O A/D 模拟输入 A/D 参考电压输入 触摸模拟输入 数据总线 写 PDPHR CK CCH_x AN_x VDD 读 PDPHR VDD 写 PORTD CK 写 CPIOD 读 CPIOD CK AN_x CCH_x VSS I/O 引脚 读 PORTD D EN 至触摸 至 A/D 至 VREF 读 PORTD 图 6-9-1:PD0 框图 64 Product Specification (V1.2)

65 6.9.2 PD1~3/CCH13~15/AN1~3 图 所示给出了此引脚的引脚图 PD1~3/CCH13~15/AN1~3 引脚可配置为下列功能之一 : 通用 I/O A/D 模拟输入 A/D 参考电压输入 触摸模拟输入 数据总线 写 PDPHR D CK CCH_x AN_x VDD 弱 读 PDPHR D VDD 写 PORTD CK 写 CPIOD 读 CPIOD D CK AN_x CCH_x VSS I/O 引脚 读 PORTD D EN 至触摸 至 A/D 读 PORTD 图 6-9-2:PD1~3 框图 65 Product Specification (V1.2)

66 6.9.3 PD4/AN4 图 所示给出了此引脚的引脚图 PD0/AN4 引脚可配置为下列功能之一 : 通用 I/O A/D 模拟输入 数据总线 写 PDPHR D CK AN_x VDD 弱 读 PDPHR D VDD 写 PORTD CK 写 CPIOD D CK VSS I/O 引脚 读 CPIOD AN_x 读 PORTD D EN 读 PORTD 至 A/D 图 6-9-3:PD4 框图 66 Product Specification (V1.2)

67 6.9.4 PD5/AN5/PWM1 图 所示给出了此引脚的引脚图 PD0/AN5/PWM1 引脚可配置为下列功能之一 : 通用 I/O A/D 模拟输入 PWM1 输出 数据总线 写 PDPHR D CK AN_x VDD 弱 读 PDPHR D PWM_OUT_EN VDD 写 PORTD 写 CPIOD CK D CK PWM_OUT 0 1 VSS I/O 引脚 读 CPIOD AN_x 读 PORTD D EN 读 PORTD 至 A/D 图 6-9-4:PD5 框图 67 Product Specification (V1.2)

68 6.9.5 PD6/AN6/INT1 图 所示给出了此引脚的引脚图 PD6/AN6/INT1 引脚可配置为下列功能之一 : 通用 I/O A/D 模拟输入 外部中断 INT1 数据总线 写 PDPHR D CK AN_x VDD 弱 读 PDPHR D VDD 写 PORTD CK 写 CPIOD D CK VSS I/O 引脚 读 CPIOD AN_x 读 PORTD D EN 至 INT1 至 A/D 读 PORTD 图 6-9-5:PD6 框图 68 Product Specification (V1.2)

69 6.9.6 PD7/AN7/PWM0 图 所示给出了此引脚的引脚图 PD7/AN7/PWM0 引脚可配置为下列功能之一 : 通用 I/O A/D 模拟输入 PWM0 输出 数据总线 写 PDPHR D CK AN_x VDD 弱 读 PDPHR D PWM_OUT_EN VDD 写 PORTD 写 CPIOD CK D CK PWM_OUT 0 1 VSS I/O 引脚 读 CPIOD AN_x 读 PORTD D EN 读 PORTD 至 A/D 图 6-9-6:PD7 框图 表 6-9: 与 PORTD 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 LVR 时的值 所有其他 复位值 INTS GIE PE1E TIS INT0E PAIE TIF INT0F PAIF xxxx xxxx PIFB2 SSP1IE CSIE PBIE PWMIE SSP1IF CSIF PBIF PWMIF xxxx xxxx ADINS ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS xxxx xxxx PORTD PD7 PD6 PD5 PD4 PD3 PD2 PD1 PD xxxx xxxx CPIOD CPIOD7 CPIOD6 CPIOD5 CPIOD4 CPIOD3 CPIOD2 CPIOD1 CPIOD xxxx xxxx PDPHR PDPHR7 PDPHR6 PDPHR5 PDPHR4 PDPHR3 PDPHR2 PDPHR1 PDPHR xxxx xxxx 图注 : x = 未知, u = 不变, = 未实现 ( 读为 0) PORTC 不使用阴影单元 69 Product Specification (V1.2)

70 7.0 定时器 7.1 Timer0 模块 Timer0 模块是 8 位定时器 / 计数器, 具备以下特性 : 8 位定时器 / 计数器寄存器 (TMR0) 8 位预分频器 ( 与看门狗定时器共用 ) 可编程内部或外部时钟源 可编程外部时钟边沿选择 溢出中断 定时器 / 计数器重载功能 FOSC/4 数据总线 T0CKI 引脚 TCE 0 1 TCS 位预分频器 1 0 PSC 同步 2 个周期 8 TMR0 溢出时将标志位 T0IF 置 1 PSC 8 WDTE SWDTEN 32KHz INTOSC 看门狗定时器 16 位预分频器 16 WDTPS<3:0> PS<2:0> 1 0 PSC WDT 超时 注 1:TCE TCS PSC 和 PS<2:0> 均为 OPT_REG 寄存器中的位 2:SWDTEN 和 WDTPS<3:0> 位 WDTCON 寄存器中的位 3:WDTE 位在配置字寄存器中 图 7-1:Timer0 模块的框图 Timer0 的工作原理 Timer0 是一个 8 位并具有重载功能的定时器 / 计数器, 读 TMR0, 读的是计数器的值, 写 TMR0, 写的是重载寄存器里的值 寄存器 01H:Timer0 模块寄存器 (TMR0) R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x TMR07 TMR06 TMR05 TMR04 TMR03 TMR02 TMR01 TMR00 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -0 TMR0 <7:0>:8 位定时器 / 计数器寄存器 70 Product Specification (V1.2)

71 位定时器模式 Timer0 的开关使能位 TMR0EN 见寄存器 PWMCON( 寄存器 1AH), 只有打开使能位,Timer0 才能工作 作为定时器使用时,Timer0 模块将在每个指令周期递增 ( 无预分频器 ) 将 OPT_REG 寄存器 ( 寄存器 81H) 的 TCS 位清零选择定时器模式 当 TMR0 被写入时, 写入后将立即禁止 2 周期递增 注 : 在 TMR0 被写入时, 为了计入两个指令周期的延时, 可以调整写入 TMR0 寄存器的值 位计数器模式 作为计数器使用时,Timer0 模块将在 T0CKI 引脚的每个上升沿递增 递增边沿由 OPT_REG 寄存器 ( 寄存器 81H) 的 TCE 位决定 将 OPT_REG 寄存器的 TCS 位置 1 选择计数器模式 软件可编程预分频器 Timer0 或看门狗定时器 (WDT) 之一可使用一个软件可编程预分频器, 但两者不能同时使用 预分频器的分配由 OPT_REG 寄存器的 PSC 位控制 要将预分频器分配给 Timer0, 必须将 PSC 位清零 Timer0 模块的预分频比有 8 种选项, 从 1:2 至 1:256 预分频比可通过 OPT_REG 寄存器 ( 寄存器 81H) 的 PS<2:0> 位进行选择 要使 Timer0 模块得到 1:1 的预分频比, 必须将预分频器分配给 WDT 模块 预分频器不可读写 当预分频器被分配给 Timer0 模块时, 所有写入 TMR0 寄存器的指令均会将预分频器清零 当预分频器被分配给 WDT 时, 一条 CLRWT 指令将同时清零预分频器和 WDT 在 Timer0 和 WDT 模块间切换预分频器 由于预分频器可分配给 Timer0 或 WDT, 因此在切换预分频比时可能产生不想要的器件复位 当把预分频器从 Timer0 切换到 WDT 模块时, 必须执行例 所示的指令序列 例 : 更改预分频器 (TIMER0 WDT) BCR STATUS,PAGE ;Bank 0 CLRWT ; 清看门狗定时器 CLRR TMR0 ; 清 TMR0 BSR STATUS,PAGE ;Bank 1 LDWI b ; 禁止上拉,TMR0 分频给看门狗, 分频比 1:128 TMODE ; CLRWT ; 清看门狗 BCR STATUS,PAGE ;Bank 0 当将预分频器从 WDT 切换到 Timer0 模块时, 必须执行以下指令序列 ( 见例 ) 71 Product Specification (V1.2)

72 例 : 更改预分频器 (WDT TIMER0) CLRWT ; 清看门狗 BSR STATUS,PAGE ;Bank 1 LDWI b xxxx0xxx ; 将分频器分配给 TMR0 TMODE ; BCR STATUS,PAGE ;Bank Timer0 中断 TMR0 寄存器从 FFh 溢出到 00h 时,Timer0 将产生中断 INTS 寄存器的 TIF 中断标志位将在每次 TMR0 寄存器溢出时被置 1, 无论是否允许了 Timer0 中断 必须用软件将 TIF 位清零 Timer0 中断允许位是 INTS 寄存器的 TIS 位 注 : 由于定时器在休眠时被冻结, 因此 Timer0 中断无法将处理器从休眠中唤醒 Timer0 与外部时钟配合使用 Timer0 处理计数器模式时,T0CKI 输入和 Timer0 寄存器的同步是通过采样内部相位时钟的 2 和 4 周期实现的 因此, 外部时钟源的高低周期必须满足第 13.0 节 电气特性 中所列的时序要求 Timer0 重装载功能 Timer0 具有重装载功能, 往 TMR0 寄存器内写入装载值后,Timer0 的计数值范围是 TMR0 的装载值 ~0XFF, 记满后 Timer0 溢出中断标志位置 1, 计数器重新装载 TMR0 数值 表 7-1-7: 与 TIMER0 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 LVR 时的值 所有其他 TMR0 Timer0 模块寄存器 xxxx xxxx xxxx xxxx INTS GIE PE1E TIS INT0E PAIE TIF INT0F PAIF xxxx xxxx OPT_REG INT1EG INT0EG TCS TCE PSC PS2 PS1 PS xxxx xxxx PWMCON PWMFS PWM1OE PWM0OE PWM1EN PWM0EN TMR0EN T1GSS xxxx xxxx CPIOA CPIOA5 CPIOA4 CPIOA2 CPIOA1 CPIOA xxxx xxxx 复位值 图注 : x = 未知, u = 不变, = 未实现 ( 读为 0) Timer0 不使用阴影单元 7.2 带门控的 Timer1 模块 Timer1 模块是 16 位定时器 / 计数器, 具备以下特性 : 16 位定时器 / 计数器寄存器 (TMR1H:TMR1L) 可编程内部或外部时钟源 3 位预分频器 可选 LP 振荡器 同步或异步操作 T1G 引脚的 Timer1 门控 ( 计数使能 ) 溢出中断 溢出时唤醒 ( 仅限外部时钟且异步模式时 ) 72 Product Specification (V1.2)

73 溢出时将标志位 TMR1IF 置 1 TMR1ON TMR1GE T1GINV 上升沿采样 TMR1H TMR1L EN 1 0 T1SYNC 振荡器 OSC1/T1CKI Fosc 0 1 预分频器 同步检测 OSC2/T1G TMR1CS T1CKPS<1:0> VDD 0 1 T1GSS 图 7-2:Timer1 模块的框图 Timer1 的工作原理 Timer1 模块是 16 位递增计数器, 通过一对寄存器 TMR1H:TMR1L 访问 对 TMR1H 或 TMR1L 的写操作将直接更新计数器 与内部时钟源配合使用时, 该模块为定时器 与外部时钟源配合使用时, 该模块可用作定时器或计数器 如寄存器 10H 所示,Timer1 控制寄存器 T1STA 用于控制 Timer1 并选择 Timer1 模块的各种功能 寄存器 10H:TIMER1 控制寄存器 (T1STA) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit6 (1) T1GINV:Timer1 门控翻转位 1 = Timer1 门控为高电平有效 ( 门控为高电平时 Timer1 计数 ) 0 = Timer1 门控为低电平有效 ( 门控为低电平时 Timer1 计数 ) (2) TMR1GE:Timer1 门控使能位如果 TMR1ON = 0: 此位被忽略如果 TMR1ON = 1: 1 = Timer1 在 Timer1 门控不活动时打开 0 = Timer1 打开 73 Product Specification (V1.2)

74 bit5-4 bit3 bit2 bit1 bit0 注 T1CKPS<1:0>:Timer1 输入时钟预分频比选择位 11 = 1:8 10 = 1:4 01 = 1:2 00 = 1:1 T1OSCEN:LP 振荡器使能控制位如果无 CLKOUT 振荡器的 INTOSC 处于激活状态 : 1 = LP 振荡器被使能用于 Timer1 时钟 0 = LP 振荡器关闭否则 : 此位被忽略 T1SYNC:Timer1 外部时钟输入同步控制位 TMR1CS = 1: 1 = 不同步外部时钟输入 0 = 同步外部时钟输入 TMR1CS = 0: 此位被忽略 Timer1 使用内部时钟 TMR1CS:Timer1 时钟源选择位 1 = 来自 T1CK1 引脚 ( 上升沿 ) 的外部时钟 0 = 内部时钟 (FOSC) TMR1ON:Timer1 打开位 1 = 使能 Timer1 0 = 停止 Timer1 1: 无论门控源为何,T1GINV 位均将翻转 Timer1 门控逻辑 2: 必须将 TMR1GE 位置 1 以使用 T1G 引脚 Timer1 模块是 16 位定时器 / 计数器,TMR1H:TMR1L 寄存器 0EH:16 位 Timer1 低字节的保持寄存器 (TMR1L) R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x TMR1<7> TMR1<6> TMR1<5> TMR1<4> TMR1<3> TMR1<2> TMR1<1> TMR1<0> bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -0 TMR1 <7:0>:16 位 Timer1 定时器 / 计数器低字节寄存器 寄存器 0FH:16 位 Timer1 高字节的保持寄存器 (TMR1H) R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x TMR1<15> TMR1<14> TMR1<13> TMR1<12> TMR1<11> TMR1<10> TMR1<9> TMR1<8> bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -0 TMR1 <15:8>:16 位 Timer1 定时器 / 计数器高字节寄存器 74 Product Specification (V1.2)

75 7.2.2 时钟源选择 T1STA 寄存器的 TMR1CS 位用于选择时钟源 当 TMR1CS = 0 时, 时钟源为 FOSC TMR1CS = 1 时, 时钟源由外部提供 内部时钟源 选择内部时钟源时,TMR1H:TMR1L 这对寄存器将在 FOSC 的某个倍数递增, 倍数由 Timer1 预分频器决定 外部时钟源 选择外部时钟源时,Timer1 模块可作为定时器, 也可作为计数器工作 计数时,Timer1 在外部时钟输入 T1CKI 的上升沿递增 此外, 计数器模式时钟可同步到单片机系统时钟, 也可异步运行 若需外部时钟振荡器 ( 且单片机使用不带 CLKOUT 的 INTOSC), 则 Timer1 可使用 LP 振荡器作为时钟源 注 : 计数器模式下, 发生以下任何一个或多个情况后, 计数器在首个上升沿递增前, 必须先经过一个下降沿 : POR 复位后使能 Timer1 写入 TMR1H 或 TMR1L Timer1 被禁止 T1CKI 为高电平时 Timer1 被禁止 (TMR1ON = 0), 然后在 T1CKI 为低电平时 Timer1 被使能 (TMR1ON = 1) 请参见图 TICKI = 1 TMR1 使能时 TICKI = 0 TMR1 使能时 注 1: 箭头所指为计数器递增 2: 在计数器模式下, 在时钟的首个递增上升沿之前必须先经过一个下降沿 图 7-2-2:TIMER1 递增边沿 Timer1 的预分频器 Timer1 有四种预分频选项, 可对时钟输入进行 或 8 分频 T1STA 寄存器的 T1CKPS 位控制预分频计数器 预分频计数器不可直接读写 ; 但当发生对 TMR1H 或 TMR1L 的写操作时, 预分频计数器被清零 Timer1 振荡器 OSC1( 输入 ) 引脚与 OSC2( 放大器输出 ) 引脚之间内置有一个低功耗 kHz 振荡器电路 T1STA 寄存器将的 T1OSCEN 控制位置 1 使能振荡器 休眠时振荡器继续工作 Timer1 振荡器与系统 LP 振荡器共用 这样,Timer1 就只能在主系统时钟来自内部振荡器或振荡器处于 LP 模式时使用此模式 用户必须提供软件延 75 Product Specification (V1.2)

76 时以确保振荡器正常起振 Timer1 振荡器被使能时,CPIOA5 和 CPIOA4 位置 1 PA5 和 PA4 位读为 0 且 CPIOA5 和 CPIOA4 位读为 1 注 : 振荡器在使用前需要一段起振和稳定时间 这样, 应将 T1OSCEN 置 1 并在使能 Timer1 前应有一段适当的延时 Timer1 工作于异步计数器模式 若 T1STA 寄存器的控制位 T1SYNC置 1, 则外部时钟输入不同步 定时器与内部相位时钟异步递增 若选择了外部时钟源, 则定时器将在休眠时继续运行, 并可在溢出时产生中断, 唤醒处理器 然而, 读写定时器时应特别谨慎 ( 见第 节 在异步计数器模式下读写 Timer1 ) 注 : 从同步操作切换为异步操作时, 有可能错过一次递增从异步操作切换为同步操作时, 有可能多产生一次递增 在异步计数器模式下读写 Timer1 定时器运行于外部异步时钟时, 读取 TMR1H 或 TMR1L 将确保读操作有效 ( 由硬件负责 ) 然而, 应该注意的是, 用两个 8 位值来读取 16 位定时器本身就会产生某些问题, 这是因为定时器可能在两次读操作之间产生溢出 对于写操作, 建议用户直接停止计数器, 然后写入所期望的值 如果寄存器正进行递增计数, 对定时器寄存器进行写操作, 可能会导致写入竞争, 从而可能在 TMR1H:TMR1L 这对寄存器中产生不可预测的值 Timer1 门控 Timer1 门控源可软件配置为 T1G 引脚, 这使器件可直接使用 T1G 请参见 PWMCON 寄存器 ( 寄存器 1AH) 为外部事件定时 Timer1 门控源的选择 注 : T1STA 寄存器的 TMR1GE 位必须置 1, 更多有关选择 Timer1 门控源请参见 PWMCON 寄存器 ( 寄存器 1AH) 使用 T1STA 寄存器的 T1GINV 位可翻转 Timer1 门控 这将配置 Timer1 以确保事件之间存在低电平有效或高电平有效的时间 Timer1 中断 Timer1 的一对寄存器 (TMR1H:TMR1L) 递增至 FFFFh 后返回 0000h Timer1 计满返回时,PIFB 寄存器的 Timer1 中断标志位被置 1 为确保计满返回时产生中断, 您必须将以下位置 1: T1STA 寄存器的 TMR1ON 位 PIFB 寄存器的 TMR1IE 位 INTS 寄存器的 PEIE 位 INTS 寄存器的 GIE 位 在中断服务程序中将 TMR1IF 位清零将清除中断标志 注 : TMR1H:TTMR1L 这对寄存器和 TMR1IF 位应在允许中断前清零 76 Product Specification (V1.2)

77 7.2.8 Timer1 在休眠模式下的工作原理 只有在设定异步计数器模式时,Timer1 才能在休眠模式下工作 在该模式下, 可使用外部晶振或时钟源信号使计数器递增 要设置定时器以唤醒器件 : 必须将 T1STA 寄存器的 TMR1ON 位置 1 必须将 PIFB1 寄存器的 TMR1IE 位置 1 必须将 INTS 寄存器的 PEIE 位置 1 必须将 T1STA 寄存器的 T1SYNC 位置 1 必须将 T1STA 寄存器的 TMR1CS 位置 1 可将 T1STA 寄存器的 T1OSCEN 位置 1 溢出时器件将被唤醒并执行下一条指令 若 INTS 寄存器的的 GIE 位置 1, 器件将调用中断服务程序 (0004h) 与 Timer1 相关的寄存器汇总 表 : 与 TIMER1 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和所有其他 LVR 复位值时的值 PWMCON PWMFS PWM1OE PWM0OE PWM1EN PWM0EN TMR0EN T1GSS xxxxxxxx INTS GIE PEIE TIS INT0E PAIE TIF INT0F PAIF xxxxxxxx PIFB1 INT1E ADCIE OSFIE TMR1IE INT1IF ADCIF OSFIF TMR1IF xxxxxxxx TMR1H 16 位 TMR1 高字节的保持寄存器 xxxx xxxx xxxxxxxx TMR1L 16 位 TMR1 低字节的保持寄存器 xxxx xxxx xxxxxxxx T1STA T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON xxxxxxxx 图注 : x = 未知, u = 不变, = 未实现 ( 读为 0) Timer1 模块不使用阴影单元 7.3 PWM 模块 脉宽调制 (PWM) 是通过一种完全开启和完全关闭之间进行快速切换而为负载供电的方案 PWM 信号类 似于方波, 信号的高电平部分视为开启状态, 信号的低电平部分视为关闭状态 高电平部分 ( 也称脉宽 ) 可随 而变, 并以步幅为单位进行定义 施加的步幅数量越多 ( 这会增大脉宽 ), 为负载提供的电量就越多 施加的步 幅数量降低时 ( 这会缩短脉宽 ), 提供的电量就会下降 PWM 周期定义为一个完整周期的持续时间, 或者开启 和关闭时间相加的总时间 PWM 分辨率定义可以在单个 PWM 周期中出现的最大步幅数量 分辨率越高, 就可以精确地控制脉宽时 间, 从而更精确地控制在负载上的供电量 占空比这一术语描述开启时间与关闭时间之间以百分比形式表示的 比例,0% 代表完全关闭,100% 代表完全开启 占空比越低, 对应的供电量就越低 ; 占空比越高, 对应的供电 量就越高 图 给出了典型的 PWM 波形图 PWM 的输出 PWM 模式将在 PD7 PD5 引脚产生频率相同 脉宽可调制的 2 路 PWM 信号 PWM 使能时, 当 {TMR1H,TMR1L} == {T1PRLH,T1PRLL} 时, 下一计数周期 Timer1 计数器清零 当 {TMR1H,TMR1L} == 0 时, PWM 输出高电平, 当 {TMR1H,TMR1L} == {PWMXH,PWMXL} 时,PWM 输出低电平 其占空比, 周期和分辨率由以下寄存器决定 : T1PRLL T1PRLH PWMXL PWMXH 77 Product Specification (V1.2)

78 PWM0 PWM1 脉宽 脉宽 脉宽 脉宽 周期 周期 图 两路 PWM 输出 PWM 的周期 PWM 周期由 Timer1 的 T1PRLH T1PRLL 寄存器来指定 ET1PRL 是周期重载从动寄存器的低 8 位, 高两位是 T1PRLH[3:2] PWM 周期计算公式 : PWM 周期 = [{T1PRLH,T1PRLL+1}] * Tosc * TMR1 预分频值 当 TMR1 等于 {T1PRLH,T1PRLL} 时, 下一次递增周期将发生以下三个事件 : TMR1 被清零 PWM 引脚被置 1( 例外 : 若 PWM 占空比 = 0%, 引脚不被置 1) PWM 占空比重载寄存器值锁存到占空比寄存器 ; 通过对以下几个寄存器写入 10 位值可设定 PWM 占空比 :PRLxH,PRLxL 为占空比重载寄存器,PWMxL PWMxH 为占空比比较寄存器 ( 只读 ) 脉冲宽度直到周期完成时才将占空比重载寄存器的值锁存到占空比比较寄存器, 这样可以防止程序改变占空比时造成脉冲宽度跳变 用户设定占空比只需写占空比重载寄存器, 而不是占空比比较寄存器 ; 脉冲宽度计算公式 : 脉冲宽度 = [{PWMxH,PWMxL}+1] * Tosc * TMR1 预分频值 占空比 = [{PWMxH,PWMxL}+1] /[{T1PRLH,T1PRLL}+1] 高脉宽 = [{PWMxH,PWMxL}+1] * Tosc * TMR1预分频值 Timer1 = 0 Timer1 {PWMxH,PWMxL} Timer1 = {T1PRLH,T1PRLL} 周期 = [{T1PRLH,T1PRLL+1}] * Tosc * TMR1预分频值 78 Product Specification (V1.2)

79 7.3.3 PWM 的分辨率 分辨率决定某个周期的有效占空比 例如,10 位分辩率有 1024 个分立的占空比, 而 8 位分辩率则有 256 个分立的占空比 [{T1PRLH,T1PRLL}] 为 1024 时产生 10 位的最大 PWM 分辩率 分辩率是 [{T1PRLH,T1PRLL}] 的函数 PWM 分辨率 分辨率 = Log([T1PRLH,T1PRLL] + 1) Log[2] 位 表 :PWM 频率和分辨率示例 (Fosc = 16MHz) PWM 频率 1.953kHz 3.906kHz kHz kHz 62.5kHz 4000kHz 定时器预分频比 ( ) [T1PRLH,T1PRLL] 的值 0x03,0xFF 0x03,0xFF 0x03,0xFF 0x03,0x FF 0x00,0xFF 0x00,0x03 最大分辨率 ( 位 ) 表 :PWM 频率和分辨率示例 (Fosc = 4MHz) PWM 频率 0.488kHz 0.976kHz 1.953kHz 3.906kHz kHz 1000kHz 定时器预分频比 ( ) [T1PRLH,T1PRLL] 的值 0x03,0xFF 0x03,0xFF 0x03,0xFF 0x03,0xFF 0x00,0xFF 0x00,0x03 最大分辨率 ( 位 ) PWM 的高低频模式 每个 PWM 输出提供高频低频两种模式, 高频模式下 PWM 输出噪声比较小, 低频模式下 PWM 输出噪声 比较大, 高低频模式切换由 PWMCON 寄存器的 PWMFS 位控制 PWM 的中断 PWM 可产生定时中断 当 TIMER1 完成一个 PWM 周期时, 可产生一个 PWM 中断,PIFB2 的 PWMIF 中断标 志位会置 1 此时 GIE 与 PEIE 也为 1, 则会进入中断服务程序 PWM 输出配置 以下是配置 PWM 输出的步骤示例 : 1 端口配置 : 配置 PD5,PD7 为输出口 2 配置周期 : 配置 TIMER1 控制寄存器 (T1STA), 设定 TIMER1 为定时器模式, 并设定预分频比配置 T1PRLH T1PRLL( 详见 PWM 的周期 ) 3 配置占空比 : 配置占空比重载寄存器 PRLxH,PRLxL 4 使能 PWM: 设置 PWM 控制寄存器 (PWMCON), 如果只要 PWM 79 Product Specification (V1.2)

80 5 使能 TIMER1 置位 TMR1ON, 此时将会使 PRLxH,PRLxL 载入 PWMxH,PWMxL PWM 的寄存器定义 寄存器 1AH:PWM 控制寄存器 (PWMCON) R-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-1 R/W-1 PWMFS PWM1OE PWM0OE PWM1EN PWM0EN TMR0EN T1GSS bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit6 bit5 bit4 bit3 bit2 bit1 bit0 未实现位 PWMFS:PWM 高低频模式选择位 0 = PWM 以低频模式输出 1 = PWM 以高频模式输出注 : 高频模式下比低频模式下 PWM 的驱动能力要小 PWM1OE:PWM1 引脚输出使能位 0 = PWM1 禁止输出 1 = PWM1 允许由 PD5 引脚输出 PWM0OE: PWM0 引脚输出使能位 0 = PWM0 禁止输出 1 = PWM0 允许由 PD7 输出 PWM1EN: PWM1 模块使能位 0 = PWM1 模块禁止 1 = PWM1 模块允许 PWM0EN:PWM0 模块使能位 0 = PWM0 模块禁止 1 = PWM0 模块允许 TMR0EN:Timer0 使能位 1 = Timer0 打开 0 = Timer0 关闭 T1GSS:TIMER1 门控源选择位 1 = Timer1 门控源为 T1G 引脚 ( 配置为数字输入 ) 0 = Timer1 门控源为常开 寄存器 117H:PWM0/1 周期寄存器的低字节 (T1PRLL) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 bit0 PWM0/1 周期寄存器的低字节 图注 : R = 可读位 W = 可写位 -n = POR 时的值 1 = 置 1-0 T1PRLL:PWM0/1 周期寄存器的低字节 U = 未实现位, 读为 0 0 = 清零 x = 未知 80 Product Specification (V1.2)

81 寄存器 19AH:PWM0/1 周期寄存器的高 2 位 (T1PRLH) R-0 R-0 R-0 R-0 R-0 R-0 R/W-0 R/W-0 bit0 ET1PRH T1PRLH 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -4 未实现位 bit3-2 ET1PRH: PWM0/1 周期重载寄存器的高 2 位 ( 只读位 ) bit1-0 T1PRLH : PWM0/1 周期寄存器的高 2 位 寄存器 118H:PWM0/1 周期重载寄存器 (ET1PRL) R-0 R-0 R-0 R-0 R-0 R-0 R/W-0 R-0 bit0 ET1PRL 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -0 ET1PRL: PWM0/1 周期寄重载存器的低字节注 : 重载寄存器只能读, 不能写 寄存器 112H:PWM0 占空比重载寄存器低字节 (PRL0L) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 bit0 PWM0 占空比重载寄存器的低 8 位 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 寄存器 192H:PWM0 占空比比较寄存器低字节 (PWM0L) R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -0 PWM0L : PWM0 占空比比较寄存器低字节 寄存器 198H:PWM0 占空比比较寄存器高 2 位与占空比重载寄存器高 2 位 (EPR0) R-0 R-0 R-0 R-0 R-0 R-0 R/W-0 R/W-0 bit0 PWM0H PRL0H 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 bit3-2 PWM0H : PWM0 占空比比较寄存器高 2 位 bit1-0 PRL0H :PWM0 占空比重载寄存器高 2 位 U = 未实现位, 读为 0 0 = 清零 x = 未知 81 Product Specification (V1.2)

82 寄存器 113H:PWM1 占空比重载寄存器低字节 (PRL1L) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 bit0 PWM1 占空比重载寄存器的低 8 位 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 寄存器 193H:PWM1 占空比比较寄存器低字节 (PWM1L) R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -0 PWM1L : PWM1 占空比比较寄存器低字节 寄存器 199H:PWM1 占空比比较寄存器高 2 位与占空比重载寄存器高 2 位 (EPR1) R-0 R-0 R-0 R-0 R-0 R-0 R/W-0 R/W-0 bit0 PWM1H PRL1H 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit3-2 PWM1H : PWM1 占空比比较寄存器高 2 位 bit1-0 PRL1H : PWM1 占空比重载寄存器高 2 位 表 7-3-6: 与 PWM 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 LVR 时的值 所有其他 复位值 PWMCON PWMFS PWM1OE PWM0OE PWM1EN PWM0EN TMR0EN T1GSS xxxx xxxx INTS GIE PEIE TIS INT0E PAIE TIF INT0F PAIF xxxx xxxx PIFB2 SSP1IE CSIE PBIE PWMIE SSP1IF CSIF PBIF PWMIF xxxx xxxx PORTD PD7 PD6 PD5 PD4 PD3 PD2 PD1 PD xxxx xxxx CPIOD CPIOD7 CPIOD6 CPIOD5 CPIOD4 CPIOD3 CPIOD2 CPIOD1 CPIOD xxxx xxxx PWM0L PWM0 占空比寄存器低字节 xxxx xxxx PWM1L PWM1 占空比寄存器低字节 xxxx xxxx T1PRLL PWM0/1 周期寄存器低字节 xxxx xxxx T1PRLH ET1PRH T1PRLH xxxx xxxx ET1PRL PWM0/1 周期从动寄存器低字节 xxxx xxxx PR0H PWM0 占空比从动寄存器低字节 xxxx xxxx PR1H PWM1 占空比从动寄存器低字节 xxxx xxxx PWM0H EPR0H PWM0H xxxx xxxx PWM1H EPR1H PWM1H xxxx xxxx TMR1H 16 位 TMR1 高字节的保持寄存器 xxxx xxxx xxxx xxxx TMR1L 16 位 TMR1 低字节的保持寄存器 xxxx xxxx xxxx xxxx T1STA T1GINV TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON xxxx xxxx 图注 : x = 未知, u = 不变, = 未实现 ( 读为 0) Timer1 模块不使用阴影单元 82 Product Specification (V1.2)

83 8.0 模拟数字转换器 (ADC) 模块 模数转换器 (Analog-to-digitalConverter,ADC) 可将模拟输入信号转换为相应的 12 位二进制表征值 该器件采用多个模拟输入复用到一个采样保持电路 采样保持电路的输出与转换器的输入相连接 转换器通过逐次逼近法产生 12 位二进制值, 并将转换结果保存在 ADC 结果寄存器 (ADRESL:ADRESH) 中 为了保证转换结果的精度, 器件内部设置了零点值校正寄存器 零点校正值是修正转换器转换模拟地的偏差值, 在实际应用中, 先进行对 VSS 采样 AD 值, 并写入零点校准寄存器, 器件内部硬件自动将 ADC 每次转换得到的值再减去零点校正值之后存入到 ADC 结果寄存器 (ADRESL:ADRESH) 中 零点校正值由 ADC0CN 寄存器的 ADCTHSEL 位来选择是 ADC0TH 寄存器, 还是内部工厂校正值 8.1 ADC 框图 VDD VREF BG REFSL<2:0> PD0 PD1 PD2 PD3 PD4 PD5 PD6 PD7 VSS VDD/4 GO/BUSY ADC_EN A/D ADC0H ADC0L CHN_SEL<2:0> 83 Product Specification (V1.2)

84 8.2 ADC 的配置 配置和使用 ADC 时, 必须考虑以下功能 : 端口配置 通道选择 ADC 参考电压选择 ADC 转换时钟 ADC 启动转换的方式 ADC 中断控制 转换结果的对齐方式 端口配置 ADC 可用于模拟信号转换成数字信号 转换模拟信号时, 应将相关的 CPIOD 和 ADINS 位置 1 将 I/O 引脚应配置为模拟输入功能 更多信息请参见相应的端口章节 注 : 如果定义为数字输入的引脚上存在模拟电压, 可导致输入缓冲器传导过大的电流 通道选择 ADS0 寄存器的 CHNSEL<3:0> 位决定将哪个通道连接到采样保持电路 改变通道时, 开始下一次转换前需要一个延时 更多信息请参见第 8.3 节 ADC 的工作过程 ADC 参考电压选择 ADS0 寄存器的 REFSEL<1:0> 位决定正电压参考的选择 正参考电压可以是 : 选电压电压 VDD 做为 ADC 的参考 选外部 ( 来自 PD0) 做为 ADC 的参考 选内部 BANDGAP 的输出电压做为 ADC 的参考, 这个电压可以通过配置寄存器选择 1.024V,2.048V 负参考电压始终连接到参考地 ADC 转换时钟 可用软件选择转换时钟源, 通过设置 ADC0CN 寄存器的 SCx 位, 有以下 4 种时钟选项 : FOSC/2 FOSC/4 FOSC/8 FOSC/16 完成一位 (bit) 的转换时间定义为 T AD 完成 12 位转换需要 17 个 T AD 周期, 如图 所示 表 所示为正确选择 ADC 时钟的示例 注 : 任何系统时钟频率的变化均会改变 ADC 时钟频率, 这将对 ADC 结果产生负面影响 84 Product Specification (V1.2)

85 TAD1 TAD2 TAD3 TAD4 TAD5 TAD6 TAD7 TAD8 TAD9 TAD10 b11 b10 b9 b8 b7 b6 b5 b4 b3 b2 TAD11 b1 TAD12 b0 转换开始 开始采样模拟输入信号, 需要 4 个 ADC 时钟 装载 ADRESH 和 ADRESL 寄存器, BUSY 位清零, ADIF 位置 1, 保持电容连接到模拟输入 图 8-2-4: 模数转换 Tad 周期 表 8-2-4:ADC 时钟周期 (T AD ) 器件工作频率 (Vdd 3.0V) ADC 时钟周期 (T AD) 器件频率 (F OSC) ADC 时钟源 SCx<1:0> 16 MHz 8 MHz 4 MHz 1 MHz F OSC/ ns (1) 250 ns (1) 500 ns (1) 2.0 us F OSC/ ns (1) 500 ns (1) 1.0 us 4.0 us F OSC/ ns (2) 1.0 us 2.0 us 8.0 us (2) F OSC/ us 2.0 us 4.0 us 16.0 us (2) 图注 : 阴影单元超出了建议范围 注 1: 这些值违反了最小 T AD 时间要求 2: 要加快转换, 建议选择其他时钟源 转换启动方式 有 3 种 A/D 转换启动方式, 由 ADC0CN 中的 ADC0 转换启动方式位 CM[1:0] 的状态决定采用哪一种方式 转换的触发源有 : GO/DONE写 1 Timer0 溢出 Timer1 溢出注 :ADC 转换进行中, 即使新的转换启动条件有效,ADC 并不中断当前转换, 硬件忽略新的转换启动 ADC 模块中断 ADC 转换完成时, 如果 ADC 中断 ADIE 使能并且全局中断标志 GIE 也使能的情况, 将产生 ADC 中断, 进入中断服务程序 ; 在中断服务程序中必须软件清除中断标志 ADIF( 清 0) 数据对齐方式 ADC 转换结果可以设置右对齐或者左对齐, 寄存器 ADC0CN 的 ADFM 位来决定 85 Product Specification (V1.2)

86 (ADFM = 0) MSB ADRESH bit 7 bit 0 bit 7 ADRESL LSB 12 位 A/D 结果未实现 : 读为 0 (ADFM = 1) MSB bit 7 bit 0 bit 7 LSB 未实现 : 读为 0 12 位 A/D 结果 8.3 ADC 的工作过程 启动转换 要使能 ADC 模块, 必须将 ADS0 寄存器的 ADON 位置 1 将 ADS0 寄存器的 GO/DONE位置 1 将启动模数转换 注 : 请参见第 节 A/D 转换步骤 转换完成 转换完成时,ADC 模块将 : 将 GO/DONE位清零 将 ADIF 标志位置 1 用新的转换结果更新 ADRESH:ADRESL 寄存器 A/D 转换步骤 以下是使用 ADC 进行模数转换的步骤示例 : 1. 配置端口 : 配置 IO 引脚为输入 ( 见 CPIO 寄存器 ) 将引脚配置为模拟口 2. 配置 ADC 模块 : 选择 ADC 转换时钟 配置参考电压 选择 ADC 输入通道 选择转换结果的格式 打开 ADC 模块 3. 配置 ADC 中断 ( 可选 ): 将 ADC 中断标志清零 允许 ADC 中断 允许外设中断 (1) 允许全局中断 (2) 4. 等待所需的采集时间 5. 将 GO/ DONE 置 1 启动转换 ( 或等等待 TMR0 TMR1 溢出启动 ) 6. 通过以下情况之一等待 ADC 转换完成 : 查询 GO/ DONE 位 86 Product Specification (V1.2)

87 等待 ADC 中断 ( 允许中断时 ) 7. 读取 ADC 结果 8. 将 ADC 中断标志清零 ( 必允许中断 ) 例 8-3-4:A/D 转换 8.4 ADC 寄存器定义 ADC0CN ; BANK1 LDWI B STWR CPIOD LDWI B ;PD4 作为模拟输入 (AN4) STWR ADINS ; 模拟口 数字口设定,1: 模拟口,0: 数字口 LDWI B LCALL GET_AD LJUMP $ ; ;ADC 转换子程序 : GET_AD: BANK3 STWR ADS0 BK3TOBK2 BSR ADC_EN ; 开启 ADC 模块后需要延时 LDWI 20 LCALL DELAY_US BSR GO ; 启动 AD 转换 BTSC BUSY LJUMP $-1 ; 等待 AD 转换结束 BANK1 LDR ADRESL,W STWR ADC_L BK1TOBK0 LDR ADRESH,W STWR ADC_H BK0TOBK2 BCR ADC_EN ; 关闭 ADC 转换模块, 可以省电, BK2TOBK0 GET_AD_EXIT: RET 寄存器 11EH:A/D 控制寄存器 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 ADCTHSEL ADFM SC1 SC0 ADC0EN GO/DONE CM1 CM0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 87 Product Specification (V1.2)

88 bit6 bit5-4 bit3 bit2 bit1-0 ADCTHSEL: ADC 零点校正值选择位 0 = ADC 的零点校正值为内部工厂校正值 1 = ADC 的零点校正值为 ADC0TH ADFM:ADC 输出结果对齐方式选择位 0 = 左对齐, 低位补零 1 = 右对齐, 高位补零 SC<1:0>:ADC 时钟预分频选择位 00 = sys_clk 2 分频 01 = sys_clk 4 分频 10 = sys_clk 8 分频 11 = sys_clk 16 分频 ADC_EN:ADC 使能位 0 = ADC 禁止 1 = ADC 使能 GO/DONE 0 = 不忙 1 = 转换 ( 忙 ) (BUSY):ADC 启动 ( 忙 ) 标志位 CM<1:0>:ADC0 启动转换模式选择, 指定 ADC 启动转换源 0x = GO/DONE写 1 10 = Timer0 溢出 11 = Timer1 溢出 ADRESH:ADC 结果高位寄存器 寄存器 1EH:ADC 结果高位寄存器 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -0 ADC 结果高字节寄存器位, 注 : 写数据动作使得 ADRESH 寄存器清零 ADRESL:ADC 结果低位寄存器 寄存器 9EH:ADC 结果寄存器 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -0 ADC 结果低字节寄存器位注 : 写数据动作使得 ADRESL 寄存器清零 88 Product Specification (V1.2)

89 8.4.4 ADC0TH:ADC 零点值校正寄存器 寄存器 9FH:ADC 结果寄存器 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -0 ADC 零点校正寄存器 ADS0 寄存器 19DH:A/D 控制寄存器 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-1 R-1 R/W-1 CHNSEL3 CHNSEL2 CHNSEL1 CHNSEL0 REFSL1 REFSL0 VREFSEL bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -4 bit3-2 bit1 bit0 CHNSEL<3:0>: ADC 模拟通道选择位其他 = ADC 输入通道关断 ; 0001 = PD0 ADC 输入通道 = PD1 ADC 输入通道 = PD2 ADC 输入通道 = PD3 ADC 输入通道 = PD4 ADC 输入通道 = PD5 ADC 输入通道 = PD6 ADC 输入通道 = PD7 ADC 输入通道 = VSS ADC 输入电压为 VSS 1111 = VDD ADC 输入电压为 VDD/4 REFSL<1:0>: 电压参考选择 00 = ADC 电压参考是 VDD pin 01 = ADC 电压参考是 PD0/VREF pin 1X = ADC 电压参考是内部电压参考 未实现 VREFSEL: 内部电压参考选择 (1.024V/2.048V) 1 = 2.048V 0 = 1.024V 89 Product Specification (V1.2)

90 表 8-4: 与 ADC 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和所有其他 LVR 复位值时的值 ADC0CN ADCTHSEL ADFM SC1 SC0 ADCEN GO/ DONE CM1 CM xxxx xxxx ADINS ANS7 ANS6 AN5 AN3 AN4 AN2 AN1 AN xxxx xxxx ADS0 CHNSEL3 CHNSEL2 CHNSEL1 CHNSEL0 REFSL1 REFSL0 VREFSEL xxxx xxxx ADRESH A/D 结果寄存器高字节 xxxx xxxx xxxx xxxx ADRESL A/D 结果寄存器低字节 xxxx xxxx xxxx xxxx INTS GIE PEIE TIS INS PAIE TIF INTF PAIF xxxx xxxx PIFB1 INT1E ADCIE OSFIE TMR1IE INT1IF ADCIF OSFIF TMRIF xxxx xxxx PORTD PD7 PD6 PD5 PD4 PD3 PD2 PD1 PD0 xxxx xxxx xxxx xxxx CPIOD CPIOD7 CPIOD6 CPIOD5 CPIOD4 CPIOD3 CPIOD2 CPIOD1 CPIOD xxxx xxxx 图注 : x = 未知, u = 不变, = 未实现 ( 读为 0) ADC 模块不使用阴影单元 90 Product Specification (V1.2)

91 9.0 I2C 模块 I2C 接口支持以下模式和特性 : 主模式 从模式 字节无应答 ( 从模式 ) 有限多主器件支持 7 位和 10 位寻址 启动和停止中断 中断屏蔽 时钟延长 总线冲突检测 广播呼叫地址匹配 地址掩码 地址保持模式和数据保持模式图 9-1 给出了主模式下 I2C 接口模块的框图 图 9-2 给出了从模式下 I2C 接口模块的框图 数据总线 读 写 SSP1BUF SDA SDA 输入 MSB SSP1SR LSB 移位时钟 SSP1M[3:0] 波特率发生器 SCL VSS SCL 输入 启动位和停止位应答产生 时钟仲裁 BCL 检测 时钟延迟 VSS RCEN 总线冲突 启动位检测停止位检测写冲突检测地址匹配检测时钟仲裁 时钟控制 置 1/ 复位 :S P SSP1STAT WCOL SSPOV 复位 :SEN PEN 将 SSP1IF BCL1F 置 1 图 9-1 I2C 主模式接口 91 Product Specification (V1.2)

92 数据总线 读 写 SDA SDA 输入 SSP1BUF MSB SSP1SR LSB VSS SCL SCL 输入 SSP1MSK 匹配检测 地址匹配 SSP1ADD 启动位检测停止位检测 置 1/ 复位 :S P 图 9-2 I2C 从模式接口 9.1 I2C 概述 I2C 是一种多主器件串行数据通信总线 器件在由主器件启动通信的主 / 从器件环境中进行通信 从器件通过寻址进行控制 I2C 总线规定了两种信号连接 : 串行时钟 (SCL) 串行数据 (SDA) 图 9-3 给出了 MSSP1 模块在 I2C 模式下工作时的框图 SCL 和 SDA 连接都是双向的漏极开路线路, 它们都需要使用用于电源电压的上拉电阻 线路下拉为地电压时, 信号视为逻辑 0; 线路保持悬空时, 信号视为逻辑 1 图 9-3 给出了分别配置为主器件和从器件的两个处理器之间的典型连接 I2C 总线工作时可以有一个或多个主器件, 以及一个或多个从器件 对于给定器件, 有 4 种可能的工作模式 : 主发送模式 ( 主器件向从器件发送数据 ) 主接收模式 ( 主器件从从器件接收数据 ) 从发送模式 ( 从器件向主器件发送数据 ) 从接收模式 ( 从器件从主器件接收数据 ) 要开始进行通信, 主器件需要以主发送模式启动 主器件送出启动位, 后面跟随它希望进行通信的从器件的地址字节 后面再跟随单个读 / 写位, 该位决定主器件是向从器件发送数据还是从从器件接收数据 如果总线上存在所请求的从器件, 从器件会使用应答位 ( 也称为 ACK) 进行响应 然后, 主器件会以发送模式或接收模式继续通信, 从器件则以互补模式 ( 分别为接收模式或发送模式 ) 继续通信 启动位由 SCL 线保持为高电平时 SDA 线的由高至低跳变来指示 地址和数据字节随后送出, 先发送最高有效位 (MSB) 在主器件希望从从器件读取数据时, 送出的读 / 写位为逻辑 1, 在主器件希望向从器件写入数据时, 该位为逻辑 0 92 Product Specification (V1.2)

93 Vdd SCL Vdd SCL 主器件 从器件 SDA SDA 图 9-3: I2C 主 / 从器件连接 应答位 (ACK) 是低电平有效信号, 它会将 SDA 线保持为低电平, 用于指示发送器, 从器件已接收到发送数据, 并已准备好接收更多数据 数据位的跳变总是在 SCL 线保持低电平时执行 在 SCL 线保持高电平时发生的跳变用于指示启动位和停止位 如果主器件希望向从器件写入数据, 则它会重复发送一个字节的数据, 而从器件则在接收每个字节之后使用 ACK 位进行响应 在该示例中, 主器件处于主发送模式, 从器件处于从接收模式 如果主器件希望从从器件读取数据, 则它会从从器件重复接收一个字节的数据, 并在接收每个字节之后使用 ACK 位进行响应 在该示例中, 主器件处于主接收模式, 从器件处于从发送模式 在传输最后一个数据字节之后, 主器件可以通过发送停止位来结束数据发送 如果主器件处于接收模式, 它会发送停止位来代替最后一个 ACK 位 停止位由 SCL 线保持为高电平时 SDA 线的由低至高跳变来指示 在某些情况下, 主器件可能希望维持对总线的控制, 并重新启动另一次数据发送 如果是这样, 主器件可以在它处于接收模式时, 发送另一个启动位来代替停止位或最后一个 ACK 位 I2C 总线规定了三种报文协议 : 主器件向从器件写数据的单一报文 主器件从从器件读数据的单一报文 主器件对一个或多个从器件启动至少两次写操作或读操作, 或者读写操作组合的组合报文 在一个器件发送逻辑 1( 或将线路保留悬空 ), 第二个器件发送逻辑 0( 或将线路保持为低电平 ) 时, 第一个器件会检测到线路不为逻辑 1 这种检测在用于 SCL 线时, 称为时钟延长 时钟延长为从器件提供了一种控制数据流的机制 这种检测在用于 SDA 线时, 称为仲裁 仲裁可以确保任意时刻只有一个主器件在进行通信 时钟延长 在从器件尚未完成数据处理时, 它可以通过时钟延长这一过程来延迟更多数据的传输 寻址到的从器件可以在接收或发送一位数据之后将 SCL 时钟线保持为低电平, 指示它尚未准备好继续 与从器件进行通信的主器件将会尝试上拉 SCL 线, 以传输下一位数据, 但它会检测到时钟线尚未被释放 由于 SCL 连接是漏极开路, 所以从器件可以一直将线路保持为低电平, 直到它准备好继续通信为止 通过时钟延长, 无法与发送器保持同速的接收器可以控制传入数据流 仲裁 每个主器件都必须监视总线上是否出现启动位和停止位 如果器件检测到总线正忙, 则在总线恢复为空闲状态之前, 它无法开始新的报文 但是, 可能会有两个主器件尝试同时或近乎同时启动数据发送 发生这种情况时, 将会开始仲裁过程 每个发送器会检查 SDA 数据线的电平, 并将它与自己期望的电平进行比较 发现两个电平不匹配的第一个发送器会在仲裁中失败, 必须停止在 SDA 线上发送数据 例如, 如果一个发送器将 SDA 线保持为逻辑 1( 保留悬空 ), 而第二个发送器将它保持为逻辑 0( 下拉为低电平 ), 则结果是 SDA 线将为低电平 那么, 第一个发送器会发现线路电平与期望电平不同, 并断定有另一个发送器正在进行通信 发现电平不同的第一个发送器将是仲裁失败的发送器, 必须停止驱动 SDA 线 如果该发送器同时也是主器件, 则它还必须停止驱动 SCL 线 然后, 它可以在尝试重新启动数据发送之前监视线路上是否出现停止条件 93 Product Specification (V1.2)

94 与此同时, 另一个未发现期望电平与 SDA 线实际电平不同的器件将继续原来的数据发送 它可以无需进行任何复杂处理, 因为到目前为止, 发送条件与所期望的完全相同, 没有其他发送器对报文产生干扰 当主器件对多个从器件进行寻址时, 也会对从发送模式进行仲裁, 但这种情况较少见 如果有两个主器件在地址阶段向两个不同的从器件发送报文, 则发送较小从器件地址的主器件总是会在仲裁中获胜 当两个主器件向同一从器件地址发送报文时, 地址有时会指向多个从器件, 仲裁过程必须继续进入到数据阶段 仲裁通常极少发生, 但它是正确支持多主器件所必需的过程 9.2 I2C 模式操作 所有 MSSP1 I2C 通信都是针对字节的, 并且会先移出 MSB 有 6 个 SFR 寄存器和 2 个中断标志用作模块与单片机和用户软件的接口 模块通过两个引脚 SDA 和 SCL 来与其他外部 I2C 器件进行通信 字节格式 I2C 中的所有通信都采用 9 位形式 从主器件向从器件 ( 或者反之 ) 发送一个字节之后, 将会送回一个应答位 在 SCL 线第 8 个下降沿之后, 在 SDA 上输出数据的器件会将该引脚改为输入, 并在下一个时钟脉冲读入应答值 时钟信号 SCL 由主器件提供 在 SCL 信号为低电平时, 数据可以有效地更改, 并且在时钟上升沿进行采样 在 SCL 线为高电平时,SDA 线上的电平变化定义总线上的一些特殊条件, 以下会对此进行说明 I2C 术语定义 在 I2C 通信的描述中存在一些用语和术语, 它们具有特定于 I2C 的定义 下面定义了词语的用法, 在本 文档其他部分中, 将不加说明地使用它们 该表根据 Phillips I2C 规范改写 表 9-1: I2C 总线术语 术语 说明 发送器 将数据移送到总线上的器件 接收器 从总线上移入数据的器件 主器件 启动数据传输 产生时钟信号和终止数据传输的器件 从器件 主器件寻址到的器件 多主器件 有多个器件可以启动数据传输的总线 仲裁 用于确保每次只有一个主器件控制总线的过程 仲裁获胜可以确保报文不会被损坏 同步 用于将总线上两个或更多器件的时钟进行同步的过程 空闲 没有任何主器件在控制总线, 并且 SDA 和 SCL 线均为高电平 有效 每当有一个或多个主器件在控制总线时 可寻址的从器件 已接收到匹配地址 并且正在由主器件提供时钟的从器件 匹配地址 送入从器件中 并与 SSP1ADD 中的存储值匹配的地址字节 写请求 从器件接收到 R/W 位清零的匹配地址, 并已准备好移入数据 读请求 主器件发送 R/W 位置 1 的地址字节, 表示要求从器件在时钟控制下将数据移出 从器 件在接收到该地址字节后会立即移出所有数据字节, 直到发生重复启动或停止条件 时钟延长 总线上的器件通过将 SCL 保持为低电平来暂停通信的时间 总线冲突 每当模块进行输出并期望 SDA 线为高电平, 却采样到 SDA 线为低电平时 在 SSP1EN 位置 1 的情况下选择任意 I2C 时,SCL 和 SDA 引脚将会强制设为漏极开路 用户应通过将相 应的 CPIO 位置 1 来将这些引脚设置为输入 94 Product Specification (V1.2)

95 9.2.3 启动和停止条件 I2C 规范将启动条件定义为在 SCL 线为高电平时,SDA 从高电平变为低电平状态 启动条件总是由主器件产生, 指示总线从空闲状态变为有效状态 图 9-4 给出了启动和停止条件的波形图 如果模块在将 SDA 线置为低电平之前采样到 SDA 线为低电平, 则会在产生启动条件时发生总线冲突 这一点不符合 I2C 规范, 该规范规定不能在产生启动条件时发生总线冲突 停止条件定义为在 SCL 线为高电平时,SDA 线从低电平变为高电平状态 H SDA SDA SCL SCL 允许数据改变 允许数据改变 启动条件 停止条件 图 9-4: I2C 启动和停止条件 重复启动条件 重复启动条件在每次停止条件有效的时候有效 如果主器件希望在终止当前传输之后保持总线, 主器件可以发出重复启动条件 重复启动对从器件产生的影响与启动条件相同, 即复位所有从器件逻辑并使之准备接收一个地址 主器件可以寻址同一个或另一个从器件 在 10 位寻址从模式下, 要从寻址到的从器件中移出数据, 主器件需要产生重复启动条件 从器件完全寻址 ( 高地址字节和低地址字节均匹配 ) 之后, 主器件可以发出重复启动条件和 R/W 位置 1 的高地址字节 然后, 从器件逻辑会保持时钟, 并准备送出数据 在 10 位模式下, 与 R/W 清零的地址字节完全匹配后, 前一次预先匹配标志会置 1 并保持置 1 在产生停止条件之前,R/W 清零的高地址或高地址匹配都会失败 SDA SCL SR 允许数据改变重复启动条件 允许数据改变 图 9-5: I2C 重复启动条件 SSP1CON3 寄存器的 SCIE 和 PCIE 位可以用于允许在通常不支持中断功能的从模式下产生中断 对于已允许启动和停止检测中断的从模式, 这两位没有任何作用 应答序列 在 I2C 中, 所有传输字节的第 9 个 SCL 脉冲都专门用作应答信号 它使接收器件可以通过将 SDA 下拉为低电平来响应发送器 发送器在该时间内必须释放对线路的控制, 以移入响应信号 应答 (ACK) 是低电平有效信号, 它会将 SDA 线下拉为低电平, 用于指示发送器器件已接收到发送数据并已准备好接收更多数据 ACK 的结果会被放入 SSP1CON2 寄存器的 ACKSTAT 位中 当 AHEN 和 DHEN 位置 1 时, 从器件软件允许用户设置要回送到发送器的 ACK 值 用户可以通过置 1/ 清零 SSP1CON2 寄存器的 ACKDT 位来决定响应 如果 SSP1CON3 寄存器的 AHEN 和 DHEN 位清零, 从器件硬件会产生 ACK 响应 有一些条件下, 从器件不会发送 ACK 如果在接收到数据字节时,SSP1STAT 寄存器的 BF 位或 SSP1CON1 寄存器的 SSP1OV 位置 1 对模块进行寻址时, 在总线上的第 8 个 SCL 下降沿之后,SSP1CON3 寄存器的 ACKTIM 位会置 1 ACKTIM 位指示有效总线的应答时间 ACKTIM 状态位仅在 AHEN 位或 DHEN 位使能时有效 95 Product Specification (V1.2)

96 9.3 I2C 从模式操作 MSSP1 从模式可以在 4 种模式下工作, 这些模式通过 SSP1CON1 寄存器的 SSP1M 位进行选择 这些模式可以分为 7 位和 10 位寻址模式 10 位寻址模式的工作方式与 7 位寻址模式相同, 只是在处理较大地址时需要一些额外的开销 带启动位和停止位中断的模式的工作方式与其他模式相同, 只是在检测到启动 重复启动或停止条件时, 另外会将 SSP1IF 置 从模式地址 SSP1ADD 寄存器包含从模式地址 在启动或重复启动条件之后接收到的第一个字节将与该寄存器中的存储值进行比较 如果字节匹配, 则值会被装入 SSP1BUF 寄存器, 并产生中断 如果值不匹配, 则模块会进入空闲状态, 并且不会向软件指示是否发生了什么情况 SSP 掩码寄存器会影响地址匹配过程 在 7 位寻址模式下, 在确定地址是否匹配时, 所接收数据字节的 LSb 会被忽略 在 10 位寻址模式下, 接收到的第一个字节将与二进制值 11110A9A80 进行比较 A9 和 A8 是 10 位地址的两个 MSB, 存储在 SSP1ADD 寄存器的 bit2 和 bit1 中 在应答高字节之后,UA 位会置 1,SCL 会保持低电平, 直到用户使用低地址更新 SSP1ADD 为止 在低地址字节送入之后, 全部 8 位将与 SSP1ADD 中的低地址值进行比较 即使地址不匹配,SSP1IF 和 UA 也会置 1,SCL 会保持低电平, 直到 SSP1ADD 发生更新可再次接收高字节为止 当 SSP1ADD 发生更新时,UA 位会被清零 这可以确保模块准备好在下一次通信时接收高地址字节 在所有 10 位寻址通信开始时, 都需要以写请求方式进行高地址和低地址匹配 在寻址到从器件后, 通过发出重复启动条件并随着时钟移入 R/W 位置 1 的高地址字节来启动数据发送 然后, 从器件硬件将会应答读请求并准备好随着时钟移出数据 这只有在从器件接收到完全匹配的高地址和低地址字节之后才有效 从模式接收 当接收到的匹配地址字节的 R/W 位清零时,SSP1STAT 寄存器的 R/W 位会清零 接收到的地址被装入 SSP1BUF 寄存器并产生应答 请参见 ( 寄存器 11H) 当接收到的地址存在上溢条件时, 将会产生无应答信号 上溢条件定义为 SSP1STAT 寄存器的 BF 位被置 1, 或 SSP1CON1 寄存器的 SSP1OV 位被置 1 SSP1CON3 寄存器的 BOEN 位会修改该操作 更多信息, 请参见 ( 寄存器 12H 寄存器 14H ) 每个传输的数据字节都会产生 MSSP1 中断 标志位 SSP1IF 必须用软件清零 当 SSP1CON2 寄存器的 SEN 位被置 1 时请参见寄存器 13H), SCL 将在接收到每个字节后保持低电平 ( 时钟延长 ) 必须通过将 SSP1CON1 寄存器的 CKP 位置 1 来释放时钟,10 位模式下的特殊情况除外 位寻址接收 本节介绍在 7 位寻址模式下, 配置为 I2C 从器件的 MSSP1 模块的标准事件序列 还描述了由硬件或软件作出的所有决定及其对接收的影响 图 9-5 和图 9-6 用直观的方式对此作了说明 以下列出了实现 I2C 通信时通常必须完成的步骤 1. 检测到启动位 2. SSP1STAT 的 S 位置 1 ; 如果允许在检测到启动条件时产生中断, 则 SSP1IF 会置 1 3. 接收到 R/W 位清零的匹配地址 4. 从器件通过将 SDA 下拉为低电平而向主器件发送 ACK, 并将 SSP1IF 位置 1 5. 用软件清零 SSP1IF 位 6. 软件从 SSP1BUF 中读取接收的地址, 使 BF 标志清零 96 Product Specification (V1.2)

97 7. 如果 SEN = 1, 从器件软件会通过将 CKP 位置 1 来释放 SCL 线 8. 主器件送出数据字节 9. 从器件通过将 SDA 驱动为低电平而向主器件发送 ACK, 并将 SSP1IF 位置 用软件清零 SSP1IF 11. 软件从 SSP1BUF 中读取接收的字节, 使 BF 清零 12. 对于从主器件接收到的所有字节重复步骤 主器件发送停止条件, 将 SSP1STAT 的 P 位置 1, 总线变为空闲状态 使用 AHEN 和 DHEN 时的 7 位接收 在 AHEN 和 DHEN 置 1 时, 从器件接收的工作方式与不使用这些选项时的工作方式相同, 只是在 SCL 的第 8 个下降沿之后添加了额外的中断和时钟延长 这些额外中断允许从器件软件决定是否应答 (ACK) 接收的地址或数据字节, 而不是由硬件决定 以下列表介绍了要对 I2C 通信使用这些选项时, 从器件软件需要执行的步骤 图 9-7 显示了同时使用地址和数据保持功能的模块 图 9-8 包含了 SSP1CON2 寄存器的 SEN 位置 1 时的操作 1. SSP1STAT 的 S 位置 1 ; 如果允许在检测到启动条件时产生中断, 则 SSP1IF 会置 1 2. R/W 位清零的匹配地址随时钟移入 在 SCL 的第 8 个下降沿之后, SSP1IF 置 1, CKP 清零 3. 从器件清零 SSP1IF 4. 从器件可以查看 SSP1CON3 寄存器的 ACKTIM 位, 以确定 SSP1IF 是在 ACK 之前还是之后置 1 5. 从器件从 SSP1BUF 中读取地址值, 使 BF 标志清零 6. 从器件通过设置 ACKDT 来设置要送到主器件的 ACK 值 7. 从器件通过将 CKP 置 1 来释放时钟 8. SSP1IF 会在 ACK 之后置 1, 不会在 NACK 之后置 1 9. 如果 SEN = 1, 从器件硬件会在 ACK 之后延长时钟 10. 从器件清零 SSP1IF 即使不进行时钟延长, 且 BF 已清零,SSP1IF 仍然会在 SCL 的第 9 个下降沿之后置 1 只有向主器件发送了 NACK 信号后,SSP1IF 才不会置 在所接收数据字节的第 8 个 SCL 下降沿之后,SSP1IF 置 1, CKP 清零 12. 从器件通过查看 SSP1CON3 的 ACKTIM 位来确定中断源 13. 从器件从 SSP1BUF 中读取接收的数据, 使 BF 清零 14. 对于接收的每个数据字节, 重复步骤 从器件发送 ACK = 1 或主器件发送停止条件可结束通信 如果发送了停止条件且禁止了停止条件检测中断, 则从器件只能通过查询 SSTSTAT 寄存器的 P 位才能知道停止条件 97 Product Specification (V1.2)

98 SDA SCL SSP1IF BF SSP1OV 总线主器件发送停止条件 接收地址接收数据 从从器件到主器件 接收数据 ACK =1 ACK A7 A6 A5 A4 A3 A2 A1 ACK D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D S P 用软件清零用软件清零 在 SCL 的第 9 个下降沿将 SSP1IF 置 1 SSP1BUF 被读取第一个数据字节在 SSP1BUF 中可用 SSP1OV 置 1, 因为 SSP1BUF 仍为满 不发送 ACK 图 9-6: I2C 从模式, 7 位地址, 接收 (SEN = 0, AHEN = 0, DHEN = 0) 98 Product Specification (V1.2)

99 总线主器件发送停止条件 SDA 接收地址 R/ A7 A6 A5 A4 A3 A2 A1 W =0 ACK 接收数据接收数据 D7D6 D5 D4 D3 D2 D1 D0 ACK D7 D6 D5 D4 D3 D2 D1 D0 ACK SCL SEN SEN S P 时钟保持低电平, 直到 CKP 设置为 1 SSP1IF 用软件清零用软件清零 在 SCL 的第 9 个下降沿将 SSP1IF 置 1 BF SSP1BUF 被读取 第一个数据字节在 SSP1BUF 中可用 SSP1OV CKP SSP1OV 置 1, 因为 SSP1BUF 仍为满 不发送 ACK 用软件向 CKP 写入 1, 释放 SCL 用软件向 CKP 写入 1, 释放 SCL SCL 未保持低电平, 因为 ACK =1 图 9-7:I2C 从模式, 7 位地址, 接收 (SEN = 1, AHEN = 0, DHEN = 0) 99 Product Specification (V1.2)

100 SDA SCL S SSP1IF BF ACKDT CKP ACKTIM S P 主器件释放 SDA 给从器件, 以便从器件产生 ACK 序列 主器件发送停止条件 接收地址 A7 A6 A5 A4 A3 A2 A1 ACK 接收数据接收数据 ACK ACK =1 D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3D2 D1 D P 如果 AHEN = 1: SSP1IF 置 1 SSP1IF 在 SCL 的第 9 个下降沿置 1, 在 ACK 之后 用软件清零 如果从器件无则不产生中断 从 SSBUF 中读取地址从 SSBUF 中读取地址 从器件软件清零 ACKDT, 以 应答 ( ACK ) 接收的字节 从器件软件将 ACKDT 设置为无 ACK 当 AHEN = 1 时 :CKP 由 硬件清零,SCL 被延长 当 DHEN = 1 时 :CKP 由硬件在 SCL 的第 8 个下降沿清零 用软件将 CKP 置 1, SCL 被释放 ACKTIM 由硬件在 SCL 的第 8 个下降沿置 1 ACKTIM 由硬件在 SCL 的第 9 个上升沿清零 ACKTIM 由硬件在 SCL 的第 8 个下降沿置 1 ACK 图 9-8: I2C 从模式, 7 位地址, 接收 (SEN = 0, AHEN = 1, DHEN = 1) 100 Product Specification (V1.2)

101 SDA R/ W =0 接收地址 主器件释放 SDA 给从器件, 以便从器件产生 ACK 序列 接收数据 接收数据 A7A6 A5 A4A3A2 A1 ACK D7 D6D5 D4D3 D2D1D0 ACK D7D6 D5D4 D3 D2 D1 D0 ACK 主器件发送停止条件 SCL S P SSP1IF BF ACKDT CKP 用软件清零 接收的地址装入 SSP1BUF 接收的数据在 SSP1BUF 中可用 SSP1BUF 可以在装入下一个字节之前的任意时刻读取 从器件软件清零 ACKDT, 以应答 ( ACK ) 接收的字节从器件发送无 ACK 当 AHEN = 1 时 : 在地址字节的第 8 个 SCL 下降沿,CKP 清零 当 DHEN = 1 时 : 在所接收数据字节的第 8 个 SCL 下降沿,CKP 清零 用软件置 1, 释放 SCL 如果从器件无 ACK, 则不产生中断 如果无 ACK, 则 CKP 不清零 S ACKTIM 由硬件在 SCL 的第 8 个下降沿置 1 ACKTIM 由硬件在 SCL 的第 9 个上升沿清零 P 图 9-9: I2C 从模式, 7 位地址, 接收 (SEN = 1, AHEN = 1, DHEN = 1) 101 Product Specification (V1.2)

102 9.3.3 从模式发送 当输入地址字节的 R/W 位置 1 并发生地址匹配时,SSP1STAT 寄存器的 R/W 位被置 1 接收到的地址会被装入 SSP1BUF 寄存器, 并且从器件会在第 9 个位发送 ACK 脉冲 在 ACK 之后, 从器件硬件会清零 CKP 位, 并且 SCL 引脚保持低电平 ( 更多详细信息, 见第 节 时钟延长 ) 通过延长时钟, 主器件只有在从器件准备好发送数据时, 才发出另一个时钟脉冲 发送数据必须装入 SSP1BUF 寄存器, 此时该数据也会被装入 SSP1SR 寄存器 然后, 应通过将 SSP1CON1 寄存器的 CKP 位置 1 来释放 SCL 引脚 8 个数据位在 SCL 输入的下降沿被移出 这可确保在 SCL 为高电平期间 SDA 信号是有效的 来自主接收器的 ACK 脉冲将在第 9 个 SCL 输入脉冲的上升沿锁存 该 ACK 值会被复制到 SSP1CON2 寄存器的 ACKSTAT 位中 如果 ACKSTAT 置 1( 无 ACK 应答信号 ), 那么表示数据传输已完成 这种情况下, 在从器件锁存无 ACK 时, 从器件会进入空闲状态, 并等待出现另一个启动位 如果 SDA 线为低电平 (ACK), 则必须将下一个要发送的数据装入 SSP1BUF 寄存器 同样, 必须通过将 CKP 位置 1 来释放 SCL 引脚 每个数据传输字节都会产生 MSSP1 中断 SSP1IF 位必须用软件清零,SSP1STAT 寄存器用于确定字节的状态 SSP1IF 位在第 9 个时钟脉冲的下降沿被置 1 从器件接收到读请求, 开始在 SDA 线上移出数据 如果检测到总线冲突, SSP1CON3 寄存器的 SBCDE 位会置 1,PIFB3 寄存器的 BCL1IF 位会置 1 在检测到总线冲突时, 从器件会变为空闲状态, 等待再次被寻址 用户软件可以通过使用 BCL1IF 位来处理从器件总线冲突 位发送 主器件可以向从器件发送读请求, 然后从从器件中移出数据 以下列表列出了在实现标准数据发送时, 从器件软件需要执行的操作 图 9-9 可用作该列表的参考 1. 主器件在 SDA 和 SCL 上发送一个启动条件 2. SSP1STAT 的 S 位置 1 ; 如果允许在检测到启动条件时产生中断, 则 SSP1IF 会置 1 3. 从器件接收到 R/W 位置 1 的匹配地址, 并将 SSP1IF 位置 1 4. 从器件硬件产生 ACK, 并将 SSP1IF 置 1 5. 用户将 SSP1IF 位清零 6. 软件从 SSP1BUF 中读取接收的地址, 使 BF 清零 7. R/W 置 1, 所以 CKP 会在 ACK 之后自动清零 8. 从器件软件将发送数据装入 SSP1BUF 9. CKP 位置 1, 释放 SCL, 使主器件可以从从器件中移出数据 10. 来自主器件的 ACK 响应装入 ACKSTAT 寄存器之后, SSP1IF 置 SSP1IF 位清零 12. 从器件软件通过检查 ACKSTAT 位来确定主器件是否要移出更多数据 注 1: 如果主器件应答 (ACK), 时钟将被延长 2:ACKSTAT 是惟一一个在 SCL 上升沿 ( 第 9 个 ) 而不是下降沿发生更新的位 13. 对于每个发送字节重复步骤 如果主器件发送无 ACK, 则不会保持时钟, 但 SSP1IF 仍然会置 主器件发送重复启动条件或停止条件 16. 从器件不再被寻址 102 Product Specification (V1.2)

103 主器件发送停止条件 SDA 接收地址 A7 A6 A5 A4 A3 A2 A1 R/ W =1 ACK 自动发送数据自动 D7 D6 D5 D4 D3 D2 D1 D0 ACK 发送数据 ACK D7 D6 D5 D4 D3 D2 D1 D0 SCL S P SSP1IF 用软件清零 BF CK P ACKSTAT R/ W 从 SSP1BUF 中读取接收到的地址 当 R/ W 置 1 时,SCL 在第 9 个 SCL 下降沿之后总是保持低电平 将要发送的数据装入 SSP1BUF 用软件置 1 BF 在 SCL 的第 8 个下降沿之后自动清零 如果无 ACK, 则不会保持 CKP 主器件的无 ACK, 被复制到 ACKSTAT D/ A 赋值匹配地址字节的 R/W 指示接收到地址 S P 图 9-10: I2C 从模式, 7 位地址, 发送 (AHEN = 0) 103 Product Specification (V1.2)

104 使能地址保持时的 7 位发送 将 SSP1CON3 寄存器的 AHEN 位置 1 时, 器件会在所接收匹配地址的第 8 个下降沿之后延长时钟和产生中断 在匹配地址送入之后,CKP 会清零,SSP1IF 中断标志会置 1 图 9-10 给出了在使能 AHEN 时 7 位地址从发送的标准波形图 1. 总线启动时为空闲模式 2. 主器件发送启动条件 ;SSP1STAT 的 S 位置 1 ; 如果允许在检测到启动条件时产生中断, 则 SSP1IF 会置 1 3. 主器件发送 R/W 位置 1 的匹配地址 在 SCL 线的第 8 个下降沿之后,CKP 位清零, 并产生 SSP1IF 中断 4. 从器件软件清零 SSP1IF 5. 从器件软件读取 SSP1CON3 寄存器的 ACKTIM 位, 以及 SSP1STAT 寄存器的 R/W 和 D/A 位, 以确定中断源 6. 从器件从 SSP1BUF 寄存器中读取地址值, 使 BF 位清零 7. 从器件软件根据该信息确定它是产生 ACK 还是产生无 ACK, 并相应地设置 SSP1CON2 寄存器的 ACKDT 位 8. 从器件将 CKP 位置 1, 释放 SCL 9. 主器件移入来自从器件的 ACK 值 10. 如果 R/W 位置 1, 则在 ACK 之后, 从器件硬件会自动将 CKP 位清零, 将 SSP1IF 置 从器件软件清零 SSP1IF 12. 从器件将要发送给主器件的值装入 SSP1BUF, 使 BF 位置 1 注: 只有在 ACK 之后, 才能装入 SSP1BUF 13. 从器件将 CKP 位置 1, 释放时钟 14. 主器件从从器件中移出数据, 并在第 9 个 SCL 脉冲发送 ACK 值 15. 从器件硬件将 ACK 值复制到 SSP1CON2 寄存器的 ACKSTAT 位中 16. 对于从从器件发送到主器件的每个字节重复步骤 如果主器件发送无 ACK, 从器件会释放总线, 让主器件可以发送停止条件和结束通信 注 : 主器件必须对于最后一个字节发送无 ACK, 以确保从器件释放 SCL 线来接收停止条件 104 Product Specification (V1.2)

105 主器件释放 SDA 给从器件, 以便从器件产生 ACK 序列 SDA 接收地址 A7 A6 A5 A4 A3 A2 A1 R/ W =1 自动 ACK 发送数据 D7 D6 D5 D4 D3 D2 D1 D0 自动 发送数据 ACK D7 D6 D5 D4 D3 D2 D1 D0 ACK SCL S SSP1IF 用软件清零 BF ACKDT 从 SSP1BUF 中读取接收到的地址 从器件软件清零 ACKDT, 以应答 ( ACK ) 接收的字节 将要发送的数据装入 SSP1BUF BF 在 SCL 的第 8 个下降沿之后自动清零 ACKSTAT CKP ACKTIM R/ W 当 AHEN = 1 时 :CKP 由硬件在接收到匹配地址之后清零当 R/ W = 1 时 :CKP 总用软件置 1, 释放 SCL 是在 ACK 之后清零 ACKTIM 由硬件在 SCL 的第 8 个下降沿置 1 ACKTIM 由硬件在 SCL 的第 9 个上升沿清零 将主器件的 ACK 响应, 复制到 SSP1STAT 如果无 ACK, 则 CKP 不清零 D/ A 主器件发送停止条件 P 图 9-11: I2C 从模式, 7 位地址, 发送 (AHEN = 1) 105 Product Specification (V1.2)

106 从模式 10 位地址接收 本节介绍在 10 位寻址模式下, 配置为 I2C 从器件的 MSSP1 模块的标准事件序列 图 9-11 用直观的方式对此作了说明 以下列出了实现 I2C 通信时从器件软件必须完成的步骤 1. 总线启动时为空闲模式 2. 主器件发送启动条件 ;SSP1STAT 的 S 位置 1 ; 如果允许在检测到启动条件时产生中断, 则 SSP1IF 会置 1 3. 主器件发送 R/W 位清零的匹配高地址 ;SSP1STAT 寄存器的 UA 位置 1 4. 从器件发送 ACK, SSP1IF 置 1 5. 用软件清零 SSP1IF 位 6. 软件从 SSP1BUF 中读取接收的地址, 使 BF 标志清零 7. 从器件将低地址装入 SSP1ADD, 释放 SCL 8. 主器件向从器件发送匹配的低地址字节 ; UA 位置 1 注 : 只有在 ACK 序列之后, 才允许更新 SSP1ADD 寄存器 9. 从器件发送 ACK, SSP1IF 置 1 注 : 如果低地址不匹配,SSP1IF 和 UA 仍然会置 1, 从而让从器件软件可以将 SSP1ADD 恢复为高地址 由于不匹配,BF 不会置 1 CKP 不受影响 10. 从器件清零 SSP1IF 11. 从器件从 SSP1BUF 中读取接收的匹配地址, 使 BF 清零 12. 从器件将高地址装入 SSP1ADD 13. 主器件随着时钟将数据字节移入从器件, 并在第 9 个 SCL 脉冲随着时钟将 ACK 移出从器件 ;SSP1IF 置 如果 SSP1CON2 的 SEN 位置 1,CKP 会被硬件清零, 时钟会被延长 15. 从器件清零 SSP1IF 16. 从器件从 SSP1BUF 中读取接收的字节, 使 BF 清零 17. 如果 SEN 置 1, 从器件会将 CKP 置 1, 以释放 SCL 18. 对于接收的每个字节重复步骤 主器件发送停止条件来结束数据发送 在 AHEN 或 DHEN 置 1 时, 使用 10 位寻址的接收方式与 7 位模式相同 惟一的区别是需要使用 UA 位来更新 SSP1ADD 寄存器 所有功能 ( 特别是在 CKP 位清零,SCL 线保持低电平时 ) 都是相同的 图 9-12 可以用作 AHEN 置 1 时 10 位寻址模式下从器件的参考图示 图 9-13 给出了 10 位寻址模式下从发送器的标准波形图 106 Product Specification (V1.2)

107 SDA SCL S SSP1IF BF UA CKP 主器件发送停止条件 接收第一个地址字节 接收第二个地址字节 接收数据接收数据 A9A8 ACK A7 A6A5 A4A3A2A1 A0 ACK D7D6 D5D4D3D2 D1D0 ACK D7 D6D5D4D3D2D1D0 ACK P 在 CKP=0 时, SCL 保持低电平 在第 9 个下降沿由硬件置 1 用软件清零 如果地址匹配, SSP1ADD 会被装入 SSP1BUF 从 SSP1BUF 中读取接收到的地址 从 SSP1BUF 中读取数据 当 UA=1 时, SCL 保持低电平 软件更新 SSP1ADD 并释放 SCL 当 SEN=1 时 ; 在所接收字节的第 9 个下降沿之后,CKP 清零 用软件置 1, 释放 SCL 图 9-12: I2C 从模式, 10 位地址, 接收 (SEN = 1, AHEN = 0, DHEN = 0) 107 Product Specification (V1.2)

108 SDA SCL SSP 1IF BF ACK DT UA CKP ACK TIM S 接收第一个地址字节 R/ W =0 接收第二个地址字节接收数据接收数据 A9 A8 ACK A7 A6 A5 A4 A3 A2 A1 A0 ACK D7 D6 D5 D4 D3 D2 D1 D0 ACK D7 D6 D UA UA 在第 9 个下降沿由硬件置 1 用软件清零 用软件清零 SSP1BUF 可以在接收到下一个字节之前的任意时刻读取 从 SSP1BUF 中读取接收到的数据 从器件软件清零 ACKDT, 以应答 ( ACK ) 接收的字节 只有在 SCL 的第 9 个下降沿之后, 才允许更新 SSP1ADD SSP1ADD 发生更新, 清零 UA 并释放 SCL 当 AHEN = 1 时 : 在地址字节的第 8 个 SCL 下降沿,CKP 清零 用软件将 CKP 置 1, 释放 SCL ACKTIM 由硬件在 SCL 的第 8 个下降沿置 1 图 9-13: I2C 从模式, 10 位地址, 接收 (SEN = 0, AHEN = 1, DHEN = 0) 108 Product Specification (V1.2)

109 SDA SCL S SSP1IF BF UA CKP ACKSTAT R/ W D/ A 主器件发送重复启动事件 主器件发送无 ACK 接收地址 R/ W =0 接收第二个地址字节 接收第一个地址字节发送数据字节 ACK=1 A9A8 ACK A7A6A5A4A3A2 A1A0 ACK A9 A8 ACK D7 D6D5D4 D3D2D1 D SR 由硬件置 1 用软件清零由硬件置 1 SSP1BUF 中装入接收到的地址 UA 指示 SSP1ADD 必须进行更新 在 SSP1ADD 发生更新之后,UA 清零并且 SCL 被释放 从 SSP1BUF 中读取接收到的地址 高地址装回到 SSP1ADD 中 将要发送的数据装入 SSP1BUF 当 R/ W = 1 时 ;CKP 在用软件置 1, SCL 的第 9 个下降沿清零释放 SCL 复制主器件的无 ACK 复制匹配地址字节的 R/ W 指示接收到地址 主器件发送停止条件 P 图 9-14: I2C 从模式, 10 位地址, 发送 (SEN = 0, AHEN = 0, DHEN = 0) 109 Product Specification (V1.2)

110 9.3.4 时钟延长 当总线上的某个器件将 SCL 线保持为低电平而有效暂停通信时, 就发生了时钟延长现象 从器件可以延长时钟, 以便可以有更多时间来处理数据或准备响应主器件 时钟延长时并不关心主器件的工作, 因为任何时候只需总线上主器件处于活动状态, 但是不传输数据就可以被认为是时钟延长 由从器件进行的任何时钟延长对于主器件软件都是不可见的, 都由产生 SCL 的硬件进行处理 SSP1CON1 寄存器的 CKP 位用于在软件中控制时钟延长 每当 CKP 位清零时, 模块就会等待 SCL 线变为低电平, 然后保持低电平状态不变 将 CKP 置 1 将会释放 SCL, 允许继续进行通信 如果 SSP1STAT 的 R/W 位置 1 ( 读请求 ), 则在 ACK 之后, 从器件硬件会清零 CKP 这让从器件可以有时间使用要传输给主器件的数据更新 SSP1BUF 如果 SSP1CON2 的 SEN 位置 1, 则在 ACK 序列之后, 从器件将总是延长时钟 在从器件就绪之后, 软件会将 CKP 置 1, 并继续进行通信 注 1:BF 位对于是否延长时钟没有任何影响 这一点与模块的先前版本不同 : 如果在 SCL 的第 9 个下降沿之前读取了 SSP1BUF, 先前版本将不会延长时钟, 清零 CKP 2: 如果在 SCL 的第 9 个下降沿之前装入 SSP1BUF, 则模块的先前版本不会为数据发送延长时钟 现在, 对于读请求, 总是会将该位清零 在 10 位寻址模式下, 当 UA 位置 1 时, 时钟总是会被延长 这是无需清零 CKP 就会延长 SCL 的惟一情形 在写入 SSP1ADD 之后,SCL 会立即被释放 当 SSP1CON3 的 AHEN 位置 1 时, 则在所接收匹配地址字节的第 8 个 SCL 下降沿之后, 硬件会将 CKP 清零 当 SSP1CON3 的 DHEN 位置 1 时, 则在所接收数据的第 8 个 SCL 下降沿之后, CKP 会被清零 通过在 SCL 的第 8 个下降沿之后延长时钟, 从器件可以检查接收到的地址或数据, 并确定是否要应答接收到的数据 时钟同步和 CKP 位 每当 CKP 位清零时, 模块就会等待 SCL 线变为低电平, 然后保持低电平状态不变 但是, 清零 CKP 位并不会将 SCL 输出置为低电平, 只有在已经采样到 SCL 输出为低电平之后才会 因此, CKP 位不会将 SCL 线拉为低电平, 除非外部 I2C 主器件已将 SCL 线拉为低电平 SCL 输出将保持低电平, 直到 CKP 位置 1 且 I2C 总线上的所有其他器件已释放 SCL 为止 这可以确保对 CKP 位的写操作不会违反 SCL 的最短高电平时间要求 ( 见图 9-14) SDA DX DX - 1 SCL CKP 写 SSP1CON1 主器件使时钟有效 图 9-15: 时钟同步时序 主器件释放时钟 广播呼叫地址支持 在 I2C 总线的寻址过程中, 通常由启动条件后的第一个字节决定主器件将寻址哪个从器件 但广播呼叫地址例外, 它能寻址所有器件 当使用这个地址时, 理论上所有器件都应该发送一个应答信号来响应 广播呼叫地址是 I2C 协议中的保留地址, 定义为地址 0x00 如果 SSP1CON2 寄存器的 GCEN 位置 1, 则无论 SSP1ADD 中存储的值如何, 在接收到该地址时, 从模块都会自动发送 ACK 在从器件移入 R/W 位清零的全零地址之后, 110 Product Specification (V1.2)

111 将会产生中断, 从器件软件可以读取 SSP1BUF 并进行响应 图 9-15 显示了广播呼叫接收 ACK 之后, 地址与广播呼叫地址作比较, 产生中断 SDA 广播呼叫地址 R/ W = 0 接收数据 ACK D7D6D5D4D3D2D1 ACK D0 SCL S SSP1IF GCEN(SSP1CON2<7>) BF(SSP1STAT<0>) 用软件清零 SSP1BUF 被读取 1 图 9-16: 从模式广播呼叫地址序列 SSP1 掩码 (SSP1MSK) 寄存器 ( 寄存器 15H) 在 I2C 从模式下可用, 用作地址比较操作期间 SSP1SR 寄存器中保存的值的掩码 SSP1MSK 寄存器中的零 (0) 位可使接收地址中相应位变为 无关位 发生任何复位条件时, 该寄存器都会复位到全 1 状态, 因此, 在写入掩码值之前对标准 SSP1 操作没有影响 SSP1 掩码寄存器在以下期间保持有效 : 7 位地址模式 :A<7:1> 的地址比较 10 位地址模式 : 仅针对 A<7:0> 的地址比较 在接收地址的第一个 ( 高 ) 字节期间,SSP1 掩码没有影响 在 10 位地址模式下,UA 位不会在接收到广播呼叫地址时置 1 从器件会准备接收作为数据的第二个字节, 这与在 7 位模式下相同 如果 SSP1CON3 寄存器的 AHEN 位置 1, 则与接收到任意其他地址时相同, 从器件硬件会在 SCL 的第 8 个下降沿之后延长时钟 然后, 从器件必须与正常情况下一样, 设置它的 ACKDT 值, 并释放时钟来继续进行通信 9.4 I2C 主模式 通过将 SSP1CON1 中的相应 SSP1M 位置 1 和清零, 同时将 SSP1EN 位置 1, 可以使能主模式 在主模式下,SCL 和 SDA 线被设置为输入, 由 MSSP1 硬件操作 通过在检测到启动和停止条件时产生中断来支持主操作模式 停止 (P) 位和启动 (S) 位在复位或禁止 MSSP1 模块时清零 当 P 位置 1 或总线空闲时, 可取得 I2C 的控制权 在固件控制的主模式下, 用户代码根据启动位和停止位条件检测执行所有的 I2C 总线操作 在该模式下, 启动和停止条件检测是惟一有效的电路 所有其他通信都通过用户软件直接操作 SDA 和 SCL 线来完成 以下事件会使 SSP1 中断标志位 SSP1IF 置 1 ( 如果允许 SSP1 中断, 则产生中断 ): 检测到启动条件 检测到停止条件 数据传输字节发送 / 接收 应答发送 / 接收 产生重复启动条件注 1: 当配置为 I2C 主模式时,MSSP1 模块不允许事件排队 例如, 在启动条件结束前, 不允许用户发出启动条件以及立即写 SSP1BUF 寄存器以启动传输 在这种情况下, 将不会执行写 SSP1BUF,WCOL 位将被置 1, 指示没有发生对 SSP1BUF 的写操作 2: 处于主模式时, 如果 SEN/PEN 位清零, 并且启动 / 停止条件完成, 则会屏蔽启动 / 停止检测和产生中断 111 Product Specification (V1.2)

112 9.4.1 I2C 主模式操作 主器件产生所有的串行时钟脉冲 启动条件和停止条件 以停止条件或重复启动条件结束传输过程 因为重复启动条件也是下一次串行传输的开始, 因此 I2C 总线不会被释放 在主发送器模式下, 串行数据通过 SDA 输出, 而串行时钟由 SCL 输出 发送的第一个字节包括接收器件的从器件地址 (7 位 ) 和读 / 写 (R/W) 位 在这种情况下,R/W 位将为逻辑 0 一次发送 8 位串行数据 每发送一个字节, 都会接收到一个应答位 输出启动和停止条件指示串行传输的开始和结束 在主接收模式下, 发送的第一个字节包括发送器件的从器件地址 (7 位 ) 和 R/W 位 在这种情况下, R/W 位将为逻辑 1 因此, 发送的第一个字节是一个 7 位从器件地址, 后跟 1 指示接收位 串行数据通过 SDA 接收, 而串行时钟由 SCL 输出 一次接收 8 位串行数据 每接收到一个字节, 都会发送一个应答位 启动和停止条件指示发送的开始和结束 波特率发生器用于设置从 SCL 输出的时钟频率 更多详细信息, 请参见第 25.7 节 波特率发生器 时钟仲裁 如果在任何接收 发送或重复启动 / 停止条件期间, 主器件释放了 SCL 引脚 ( 允许 SCL 悬空为高电平 ), 就会发生时钟仲裁 当允许 SCL 引脚悬空为高电平时, 波特率发生器 (Baud Rate Generator,BRG) 暂停计 数, 直到 SCL 引脚被实际采样到高电平为止 当 SCL 引脚被采样到高电平时, 波特率发生器重新装入 SSP1ADD<7:0> 的内容并开始计数 这可以确保在外部器件将时钟保持低电平时,SCL 在至少一个 BRG 计满 返回计数周期内总是保持高电平 ( 图 9-17) SDA SCL DX DX-1 SCL 被试图拉为高电平, 但从器件将 SCL 保持为低电平 ( 时钟仲裁 ) 允许 SCL 变为高电平 BRG 值 BRG 在 2 和 4 周期 进行递减计数 03h 02h 01h 00h( 延时 ) 03h 02h SCL 采样为高电平, BRG 被重载并开始计数 BRG 重载 图 9-17: 带有时钟仲裁的波特率发生器时序 WCOL 状态标志 如果在启动 重复启动 停止 接收或发送序列过程中用户写 SSP1BUF, 则 WCOL 被置 1, 同时缓冲区内容不变 ( 未发生写操作 ) 每当 WCOL 位置 1 时, 它指示在模块不处于空闲状态时对 SSP1BUF 尝试了某个操作 注 : 由于不允许事件排队, 在启动条件结束之前, 不能写 SSP1CON2 的低 5 位 I2C 主模式启动条件时序 要发出启动条件, 用户应将 SSP1CON2 寄存器的启动使能位 SEN 置 1 如果 SDA 和 SCL 引脚被采样为高电平, 则波特率发生器会重新装入 SSP1ADD<7:0> 的内容并开始计数 如果波特率发生器超时 (TBRG) 时,SCL 和 SDA 都被采样为高电平, 则 SDA 引脚被驱动为低电平 当 SCL 为高电平时, 将 SDA 驱动为低电平将产生启动条件, 并使 SSP1STAT1 寄存器的 S 位置 1 随后波特率发生器重新装入 SSP1ADD<7:0> 的内容并恢复计数 当波特率发生器再次超时 (TBRG) 时,SSP1CON2 寄存器的 SEN 位将自动被硬件清零 ; 112 Product Specification (V1.2)

113 波特率发生器暂停工作,SDA 线保持低电平, 启动条件结束 注 1: 如果在启动条件开始时,SDA 和 SCL 引脚已经采样为低电平, 或者在启动条件期间,SCL 线在 SDA 线被驱动为低电平之前已经采样为低电平, 则会发生总线冲突 总线冲突中断标志位 BCL1IF 置 1, 启动条件中止, I2C 模块复位到空闲状态 2:Philips I2C 规范规定启动时不能发生总线冲突 此时写 SEN 位 SDA = 1, SCL = 1 将 S 位 (SSP1STAT<3>) 置 1 启动位完成后, 由硬件将 SEN 位清零并将 SSP1IF 位置 1 SDA T BRG T BRG 此时写 SSP1BUF 第 1 位 第 2 位 SCL S T BRG T BRG 图 9-18: 第一个启动位时序 I2C 主模式重复启动条件时序 当 SSP1CON2 寄存器的 RSEN 位设置为一, 并且主器件状态机不再有效时, 会产生重复启动条件 当 RSEN 位置 1 时, SCL 引脚被拉为低电平 当 SCL 引脚被采样为低电平时, 波特率发生器会装入值并开始计数 在一个波特率发生器计数周期 (TBRG) 内 SDA 引脚被释放 ( 拉为高电平 ) 当波特率发生器超时时, 如果 SDA 被采样为高电平,SCL 引脚将被置为无效 ( 拉为高电平 ) 当 SCL 被采样为高电平时, 波特率发生器被重载并开始计数 SDA 和 SCL 必须在一个 TBRG 内采样为高电平 接下来, 在一个 TBRG 中, 将 SDA 引脚置为有效 (SDA = 0), 同时 SCL 保持高电平 SCL 被置为低电平 随后 SSP1CON2 寄存器的 RSEN 位将自动清零, 这次波特率发生器不会重载,SDA 引脚保持低电平 一旦在 SDA 和 SCL 引脚上检测到启动条件, SSP1STAT 寄存器的 S 位就会被置 1 SSP1IF 位在波特率发生器超时之前不会被置 1 注 1: 有任何其他事件在进行时, 编程 RSEN 无效 2: 在重复启动条件期间, 以下事件将会导致发生总线冲突 : 当 SCL 由低电平变为高电平时,SDA 被采样为低电平 在 SDA 被置为低电平之前,SCL 变为低电平 这指示另一个主器件正试图发送一个数据 I2C 主模式发送 发送一个数据字节 一个 7 位地址或一个 10 位地址的另一半都是通过简单地向 SSP1BUF 寄存器写入一个值来实现的 该操作将使缓冲区满标志位 BF 置 1, 并使波特率发生器开始计数和开始下一次发送 地址 / 数据的每一位将在 SCL 的下降沿置为有效之后移出到 SDA 引脚 在一个波特率发生器计满返回计数周期 (TBRG) 内, SCL 保持低电平 在 SCL 被释放为高电平之前, 数据应保持有效 当 SCL 引脚释放为高电平时, 它将在一个 TBRG 内保持高电平状态 在此期间以及 SCL 的下一个下降沿之后的一段保持时间内,SDA 引脚上的数据必须保持稳定 在第 8 位数据被移出 ( 第 8 个时钟的下降沿 ) 之后, BF 标志被清零, 同时主器件释放 SDA 此时如果发生地址匹配或是数据被正确接收, 被寻址的从器件将在第 9 个位时间发出一个 ACK 位作为响应 ACK 的状态在第 9 个时钟的上升沿被写入 ACKSTAT 位 如果主器件接收到应答, 应答状态位 ACKSTAT 会被清零 如果未接收到应答, 则该位被置 1 在第 9 个时钟之后,SSP1IF 位会置 1, 主时钟 ( 波特率发生器 ) 暂停, 直到下一个数据字节装入 SSP1BUF,SCL 保持低电平, SDA 保持不变 113 Product Specification (V1.2)

114 在写 SSP1BUF 之后, 地址的每一位在 SCL 的下降沿被移出, 直到所有 7 个地址位和 R/W 位都被移出 在第 8 个时钟的下降沿, 主器件将释放 SDA 引脚, 以允许从器件发出一个应答响应 在第 9 个时钟的下降沿, 主器件通过采样 SDA 引脚来判断地址是否被从器件识别 ACK 位的状态被装入 SSP1CON2 寄存器的 ACKSTAT 状态位 在发送地址的第 9 个时钟下降沿之后,SSPIF 置 1,BF 标志清零, 波特率发生器关闭直到发生下一次写 SSP1BUF, 且 SCL 保持低电平, 允许 SDA 悬空 在发送模式下, SSP1STAT 寄存器的 BF 位在 CPU 写 SSP1BUF 时置 1, 在所有 8 位数据移出后清零 如果在发送过程中 ( 即, SSP1SR 仍在移出数据字节时 ) 用户写 SSP1BUF, 则 WCOL 被置 1, 同时缓冲区内容不变 ( 未发生写操作 ) 在下一次发送前 WCOL 必须用软件清零 在发送模式下, 当从器件发送应答 (ACK = 0) 时,SSP1CON2 寄存器的 ACKSTAT 位被清零 ; 当从器件没有应答 (ACK = 1) 时, 该位被置 1 从器件在识别出其地址( 包括广播呼叫地址 ) 或正确接收数据后, 会发送一个应答 1. 用户通过将 SSP1CON2 寄存器的 SEN 位置 1, 产生启动条件 2. 在启动条件结束时, 硬件将 SSP1IF 置 1 3. SSP1IF 用软件清零 4. 在进行任何其他操作前, MSSP1 模块将等待所需的启动时间 5. 用户将从器件地址装入 SSP1BUF 进行发送 6. 器件地址从 SDA 引脚移出, 直到发送完所有 8 位地址数据 数据发送会在写入 SSP1BUF 后立刻开始 7. MSSP1 模块移入来自从器件的 ACK 位, 并将它的值写入 SSP1CON2 寄存器的 ACKSTAT 位 8. MSSP1 模块在第 9 个时钟周期结束时将 SSP1IF 位置 1 产生中断 9. 用户将 8 位数据装入 SSP1BUF 10. 数据从 SDA 引脚移出, 直到发送完所有 8 位数据 11. MSSP1 模块移入来自从器件的 ACK 位, 并将它的值写入 SSP1CON2 寄存器的 ACKSTAT 位 12. 对于发送的所有数据字节重复步骤 用户通过将 SSP1CON2 寄存器的 PEN 或 RSEN 位置 1, 产生停止或重复启动条件 停止 / 重复启动条件完成时产生中断 114 Product Specification (V1.2)

115 SDA SCL SSP1IF BF (SSP1STAT<0>) SEN PEN R/ W 写 SSP1CON2<0>(SEN = 1), 启动条件开始 SEN = 0 向从器件发送地址 A7 A6 A5 A4 A3 A2 A1 R/ W = 0 ACK= 0 来自从器件, 清零 ACKSTAT 位 (SSP1CON2<6>) 发送数据或 10 位地址的后半部分 D7 D6 D5 D4 D3 D2 D1 D0 ACK SSP1CON2 的 ACKSTAT = 1 将 7 位地址和 R/ W 写入 SSP1BUF, 开始发送 S P 当 CPU 响应 SSP1IF 时, SCL 保持低电平 用软件清零 由 SSP1 中断的软件服务程序清零 用软件清零 写入 SSP1BUF 用软件写入 SSP1BUF 启动条件之后, 由硬件清零 SEN 图 9-19: I2C 主模式波形图 ( 发送, 7 位或 10 位地址 ) 115 Product Specification (V1.2)

116 9.4.8 I2C 主模式接收 通过编程 SSP1CON2 寄存器的接收使能位 RCEN 使能主模式接收 注 : 将 RCEN 位置 1 前, MSSP1 模块必须处于空闲状态, 否则对 RCEN 位置 1 将无效 波特率发生器开始计数, 每次计满返回时,SCL 引脚的状态发生改变 ( 由高变低 / 由低变高 ), 数据被移入 SSP1SR 在第 8 个时钟的下降沿之后, 接收使能标志自动清零, SSP1SR 的内容装入 SSP1BUF, BF 标志位置 1,SSP1IF 标志位置 1, 波特率发生器暂停计数, 且 SCL 保持为低电平 此时 MSSP1 处于空闲状态, 等待下一条命令 当 CPU 读缓冲区时,BF 标志位会自动清零 通过将 SSP1CON2 寄存器的应答序列使能位 ACKEN 置 1, 用户可以在接收结束时发送应答位 BF 状态标志 在接收操作中, 将地址或数据字节从 SSP1SR 装入 SSP1BUF 时,BF 位被置 1 在读 SSP1BUF 寄存器时将其清零 SSP1OV 状态标志 在接收操作中, 当 SSP1SR 接收到 8 位数据且 BF 标志位已经在上一次接收中置 1 时, SSP1OV 位置 1 WCOL 状态标志 如果在接收过程中 ( 即, SSP1SR 仍在移入数据字节时 ) 用户写 SSP1BUF, 则 WCOL 位被置 1, 同时缓冲区内容不变 ( 未发生写操作 ) 典型的接收序列 : 1. 用户通过将 SSP1CON2 寄存器的 SEN 位置 1, 产生启动条件 2. 在启动条件结束时, 硬件将 SSP1IF 置 1 3. SSP1IF 用软件清零 4. 用户将要发送的从器件地址写入 SSP1BUF 且 R/W 位置 1 5. 器件地址从 SDA 引脚移出, 直到发送完所有 8 位地址数据 数据发送会在写入 SSP1BUF 后立刻开始 6. MSSP1 模块移入来自从器件的 ACK 位, 并将它的值写入 SSP1CON2 寄存器的 ACKSTAT 位 7. MSSP1 模块在第 9 个时钟周期结束时将 SSP1IF 位置 1 产生中断 8. 用户将 SSP1CON2 寄存器的 RCEN 位置 1, 主器件从从器件移入一个字节 9. 在 SCL 的第 8 个下降沿之后,SSP1IF 和 BF 置 主器件清零 SSP1IF, 并从 SSP1UF 中读取接收到的字节, 使 BF 清零 11. 主器件在 SSP1CON2 寄存器的 ACKDT 位中设置要发送给从器件的 ACK 值, 并通过将 ACKEN 位置 1 来发出 ACK 12. 主器件向从器件送出 ACK, 并且 SSP1IF 置 用户清零 SSP1IF 14. 对于从从器件接收到的每个字节重复步骤 主器件通过发送无 ACK 或停止条件来结束通信 116 Product Specification (V1.2)

117 写 SSP1CON2<0>(SEN = 1), 启动条件开始 SDA SEN = 0 此时写 SSP1BUF, 开始发送 向从器件发送地址 A7 A6 A5 A4 A3 A2 A1 R/ W = 0 通过对 SSP1CON2<3> (RCEN = 1) 编程将主器件配置为接收器 来自从器件的 ACK ACK 接收来自从器件的数据 写 SSP1CON2<4> 启动应答序列, SDA = ACKDT(SSP1CON2<5>) = 0 RCEN 被自动清零 来自主器件的 ACK, SDA = ACKDT = 0 RCEN = 1, 开始下一次接收接收来自从器件的数据 D7 D6 D5 D4 D3 D2 D1 D0 ACK D7 D6 D5 D4 D3 D2 D1 D0 ACKEN 置 1, 启动应答序列, SDA = ACKDT = 1 RCEN 被自动清零 ACK 此时写 PEN 位 = 1 SCL SSP1IF BF (SSP1STAT<0>) S 当 CPU 响应 SSP1IF 时, SDA=0,SCL= 在接收结束时 在 CLK 下降沿将数据移入 将 SSP1IF 中断标志置 1 在应答序列结束时 将 SSP1IF 中断标志置 1 用软件清零用软件清零用软件清零用软件清零 最后一位移入 SSP1 SR, 并将 SSP1SR 中内容转存到 SSP1BUF 中 9 在接收结束时将 SSP1IF 置 1 用软件清零 P 总线主器件终止传输 在应答序列结束时将 SSP1IF 中断标志置 1 将 P 位 (SSP1STAT<4>) 和 SSP1IF 置 1 SSP1OV SSP1OV 置 1, 因为 SSP1BUF 仍为满 ACKEN RCEN 通过对 SSP1CON2<3>(RCEN = 1) 编程将主器件配置为接收器 RCEN 被自动清零 来自主器件的 ACK,SDA = ACKDT = 0 RCEN 被自动清零 图 9-20: I2C 主模式波形图 ( 接收, 7 位地址 ) 117 Product Specification (V1.2)

118 9.4.9 应答序列时序 将 SSP1CON2 寄存器的应答序列使能位 ACKEN 置 1 即可使能应答序列 当该位被置 1 时,SCL 引脚 被拉为低电平, 应答数据位的内容输出到 SDA 引脚上 如果用户希望产生一个应答, 则应将 ACKDT 位清零 否则, 用户应在应答序列开始前将 ACKDT 位置 1 然后波特率发生器进行一个计满返回周期 (TBRG) 的计 数, 随后 SCL 引脚电平被置为无效 ( 拉为高电平 ) 当 SCL 引脚被采样为高电平 ( 时钟仲裁 ) 时, 波特率发 生器再进行一个 TBRG 周期的计数 然后 SCL 引脚被拉为低电平 在这之后,ACKEN 位自动清零, 波特率 发生器关闭,MSSP1 模块进入空闲模式 ( 图 9-20) WCOL 状态标志如果在应答序列进行过程中用户写 SSP1BUF, 则 WCOL 被置 1, 同时缓冲区内容不变 ( 未 发生写操作 ) 如果将 SSP1CON2 寄存器的停止序列使能位 PEN 置 1, 则在接收 / 发送结束后,SDA 引脚上将产生停止位 在接收 / 发送结束时,SCL 线在第 9 个时钟的下降沿后保持低电平 当 PEN 位置 1 时, 主器件将 SDA 线置为 低电平 当 SDA 线被采样为低电平时, 波特率发生器被重载并递减计数至 0 当波特率发生器超时时,SCL 引 脚被拉为高电平, 在一个 TBRG ( 波特率发生器计满返回周期 ) 之后, SDA 引脚将被置为无效 当 SDA 引 脚被采样为高电平且 SCL 也是高电平时, SSP1STAT 寄存器的 P 位被置 1 另一个 TBRG 之后,PEN 位被 清零, 同时 SSP1IF 位被置 1 ( 图 9-21) WCOL 状态标志 如果在停止序列进行过程中用户写 SSP1BUF, 则 WCOL 位被置 1, 同时缓冲区内容不 变 ( 未发生写操作 ) SDA 应答序列在此时开始, 写 SSP1CON2, ACKEN = 1,ACKDT = 0 D0 TBRG ACK TBRG ACKEN 自动清零 SCL 8 9 SSP1IF 注 : T BRG 接收结束时将 SSP1IFS 置 1 = 一个波特率发生器周期 用软件清零 图 9-21: 应答序列波形图 在应答序列结束时将 SSP1IF 置 1 用软件清零 SCL 写 SSP1CON2, PEN 置 1 第 9 个时钟的下降沿 T BRG 在采样到 SDA 为高电平后,SCL = 1 保持一个 T BRG, 接着 SDA = 1 保持一个 P 位 (SSP1STAT<4>) 置 1 T BRG PEN 位 (SSP1STAT<2>) 被硬件清零且 SSP1IF 位被置 1 SDA ACK P TBRG T BRG TBRG T BRG 后,SCL 拉为高电平在时钟脉冲上升沿前将 SDA 置为低电平以建立停止条件 注 : T BRG = 一个波特率发生器周期 图 9-22: 停止条件接收或发送模式 在休眠模式下,I2C 从模块能够接收地址或数据, 并且在地址匹配或字节传输完成时, 如果允许 MSSP1 中 118 Product Specification (V1.2)

119 断, 会将处理器从休眠状态唤醒 复位会禁止 MSSP1 模块并终止当前的数据传输 在多主器件模式下, 在检测到启动和停止条件时将产生中断, 这可用于判断总线是否空闲 停止 (P) 位和启动 (S) 位在复位或禁止 MSSP1 模块时清零 当 SSP1STAT 寄存器的 P 位置 1 时, 可以取得 I2C 总线的控制权 ; 或者, 总线处于空闲状态,S 位和 P 位都清零 当总线忙且允许 SSP 中断时, 一旦发生停止条件便产生 SSP 中断 在多主器件操作中, 必须监视 SDA 线来进行仲裁, 以查看信号电平是否为期望的输出电平 此操作由硬件实现, 其结果保存在 BCL1IF 位中 可能导致仲裁失败的情况是 : 地址传输 数据传输 启动条件 重复启动条件 应答条件多主器件模式是通过总线仲裁来支持的 当主器件将地址 / 数据位输出到 SDA 引脚时, 如果一个主器件在 SDA 引脚上输出 1( 将 SDA 引脚悬空为高电平 ), 而另一个主器件输出 0, 就会发生总线仲裁 当 SCL 引脚悬空为高电平时, 数据应是稳定的 如果 SDA 引脚上期望的数据是 1, 而实际采样到的数据是 0, 则发生了总线冲突 主器件会将总线冲突中断标志 BCL1IF 置 1, 并将 I2C 端口复位到空闲状态 ( 图 9-22) 如果在发送过程中发生总线冲突, 则发送操作停止,BF 标志被清零, SDA 和 SCL 线被置为无效, 并且可写入 SSP1BUF 当执行总线冲突中断服务程序时, 如果 I 总线空闲, 用户可通过发出启动条件恢复通信 如果在启动 重复启动 停止或应答条件过程中发生总线冲突, 则条件被中止, SDA 和 SCL 线被置为无效,SSP1CON2 寄存器中的相应控制位清零 当执行总线冲突中断服务程序时, 如果 I2C 总线空闲, 用户可通过发出启动条件恢复通信 主器件将继续监视 SDA 和 SCL 引脚 一旦出现停止条件, SSP1IF 位将被置 1 发生总线冲突时无论发送的进度如何, 写入 SSP1BUF 都会从第一个数据位开始发送数据 在多主器件模式下, 通过在检测到启动条件和停止条件时产生中断可以确定总线何时空闲 当 SSP1STAT 寄存器中的 P 位置 1 时, 可以获取 I2C 总线的控制权 ; 或者, 总线处于空闲状态, S 位和 P 位都清零 SDA 当 SCL = 0 时, 数据改变 主器件释放 SDA SDA 线被其他源拉为低电平 采样 SDA SCL 为高电平时, 数据与主器件驱动的不匹配, 发生了总线冲突 SCL BCL1IF 总线冲突中断标志 (BCL1IF) 置 1 图 9-23: 发送和应答时的总线冲突时序启动条件期间, 以下事件将导致总线冲突 : a) 在启动条件开始时,SDA 或 SCL 被采样为低电平 ( 图 9-23) b) SDA 被置为低电平之前, SCL 采样为低电平 在启动条件期间, SDA 和 SCL 引脚都会被监视 如果 SDA 引脚或 SCL 引脚已经是低电平, 则发生以下所有事件 : 中止启动条件 BCL1IF 标志置 1 MSSP1 模块复位为空闲状态 ( 图 9-23) 启动条件从 SDA 和 SCL 引脚被置为无效开始 当 SDA 引脚采样为高电平时, 波特率发生器装入值并递减计数 如果在 SDA 为高电平时,SCL 引脚采样为低电平, 则发生总线冲突, 因为这表示另一个主器件在启动条件期间试图驱动一个数据 Product Specification (V1.2)

120 SDA = 0, SCL = 1 SDA T BRG T BRG SCL SEN BCL1IF S 0 0 SSP1IF SDA = 1,SCL = 1 时, 将 SEN 置 1, 使能启动序列 BRG 超时前 SCL = 0, 发生总线冲突 BCL1IF 置 1 SDA = 0 之前 SCL = 0, 发生总线冲突 BCL1IF 置 1 中断用软件清零 0 0 图 9-24: 启动条件期间的总线冲突 (SCL = 0) SDA SCL SEN BCL1IF 小于 SDA = 0, SCL = 1 S 置 1 SSP1IF 置 1 T BRG SDA 被其他主器件拉为低电平 复位 BRG 并将 SDA 置为有效 S T BRG SDA = 1,SCL = 1 时, 将 SEN 置 1, 使能启动序列 BRG 超时之后将 SCL 拉为低电平 0 S SSP1IF SDA = 1,SCL = 1 时, 将 SSP1IF 置 1 图 9-25: 启动条件期间由 SDA 仲裁引起的 BRG 复位 中断用软件清零 在重复启动条件期间, 如果发生以下情况, 则会发生总线冲突 a) 在 SCL 由低电平变为高电平期间, 在 SDA 上采样到低电平 b) 在 SDA 被置为低电平之前, SCL 变为低电平, 表示另一个主器件正试图发送一个数据 1 当用户释放 SDA 并允许该引脚悬空为高电平时, BRG 装入 SSP1ADD 的值并递减计数至 0 接着 SCL 引脚被置为无效, 当 SCL 引脚采样到高电平时, 对 SDA 引脚进行采样如果 SDA 为低电平, 则已发生了总线冲突 ( 即, 另一个主器件正试图发送一个数据 0, 见图 9-25) 如果 SDA 被采样到高电平, 则 BRG 被重载并开始计数 如果 SDA 在 BRG 超时之前从高电平变为低电平, 则不会发生总线冲突, 因为两个主器件不可能精确地在同一时刻将 SDA 置为有效 如果 SCL 在 BRG 超时之前从高电平变为低电平, 且 SDA 尚未被置为有效, 那么将发生总线冲突 在此情况下, 另一个主器件在重复启动条件期间正试图发送一个数据 1 ( 见图 9-26) 如果在 BRG 超时结束时 SCL 和 SDA 都仍然是高电平, 则 SDA 引脚被驱动为低电平,BRG 被重载并开始计数 在计数结束时, 不管 SCL 引脚的状态如何, SCL 引脚都被驱动为低电平, 重复启动条件结束 120 Product Specification (V1.2)

121 SDA SCL SEN BCL1IF S SSP1IF 当 SCL 变为高电平时对 SDA 采样 如果 SDA = 0,BCL1IF 置 1 并释放 SDA 和 SCL 用软件清零 0 0 图 9-26: 重复启动条件期间的总线冲突 ( 情形 1) SDA TBRG TBRG SCL BCL1IF RSEN S SSP1IF SCL 先于 SDA 变为低电平, BCL1IF 置 1, 释放 SDA 和 SCL 用软件清零 0 图 9-27: 重复启动条件期间的总线冲突 ( 情形 2) 以下事件会导致停止条件期间发生总线冲突 a) SDA 已被置为无效并允许悬空为高电平之后,SDA 在 BRG 超时后被采样到低电平 b) SCL 引脚被置为无效之后,SCL 在 SDA 变成高电平之前被采样到低电平 停止条件从 SDA 被置为低电平开始 当 SDA 采样为低电平时, 允许 SCL 引脚悬空 当引脚被采样到高电 平 ( 时钟仲裁 ) 时, 波特率发生器装入 SSP1ADD 的值并递减计数至 0 BRG 超时后,SDA 被采样 如果 SDA 采样为低电平, 则已发生总线冲突 这是因为另一个主器件正试图发送一个数据 0 ( 图 9-27) 如果在允许 SDA 悬空为高电平前 SCL 引脚被采样到低电平, 也会发生总线冲突 这是另一个主器件正试图发送一个数据 0 的另 外一种情况 ( 图 9-28) SDA T BRG TBRG TBRG T BRG 在后 SDA 被采样为低电平, BCL1IF 置 1 SCL SDA 被置为低电平 PEN BCL1IF 0 P SSP1IF 0 图 9-28: 停止条件期间的总线冲突 ( 情形 1) 121 Product Specification (V1.2)

122 T BRG TBRG TBRG SDA SCL PEN SDA 被置为有效 在 SDA 变为高电平前,SCL 变为低电平,BCL1IF 置 1 BCL1IF 0 P SSP1IF 波特率发生器 图 9-29: 停止条件期间的总线冲突 ( 情形 2) MSSP1 模块具有一个波特率发生器, 可用于在 I2C 主模式下产生时钟 波特率发生器 (BRG) 重载值放 在 SSP1ADD 寄存器 ( 寄存器 16H) 中 当发生对 SSP1BUF 的写操作时, 波特率发生器将自动开始递减计数 在给定操作完成时, 内部时钟会自动停止计数, 并且时钟引脚将保持它的最后状态 图 9-29 中的内部信号 重载 会触发将 SSP1ADD 值装入 BRG 计数器 对于模块时钟线的每次振荡, 这会 发生两次 指定重载信号何时置为有效的逻辑依赖于 MSSP1 当前的工作模式 表 9-2 列出了不同的指令周期下的时钟速率以及装入 SSP1ADD 的 BRG 值 公式 9-1 FCLOCK FOSC SSPxADD 1 (4) SSP1M<3:0> SSP1ADD<7:0> SSP1M<3:0> SCL 重载控制 重载 SSP1CLK BRG 递减计数器 Fosc/2 表 9-2 图 9-30 FCLOCK Fosc Fcy BRG 值 ( 两次 BRG 计满返回 ) 16MHZ 4MHZ 09h 400KHZ 16MHZ 4MHZ 0Ch 308KHZ 16MHZ 4MHZ 27h 100KHZ 122 Product Specification (V1.2)

123 9.6 寄存器定义 寄存器 11H:I2C 状态寄存器 < SSP1STAT > R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 D/A P S R/W UA BF bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit6 bit5 bit4 未实现未实现 D/A: 数据 / 地址位 1 = 上一个接收或发送的字节是数据 0 = 指示上一个接收或发送的字节是地址 P: 停止位 1 = 指示上次检测到停止位 ( 该位在复位时为 0) 0 = 上次未检测到停止位 bit3 S: 启动位 1 = 指示上次检测到启动位 ( 该位在复位时为 0) 0 = 上次未检测到启动位 bit2 R/W: 读 / 写位信息该位保存上一次地址匹配后的 R/W 位信息 该位仅在从地址匹配到出现下一个启动位 停止位或非 ACK 位之间有效 在 I2C 从模式下 : 1 = 读 0 = 写在 I2C 主模式下 : 1 = 正在进行发送 0 = 未进行发送将该位与 SEN RSEN PEN RCEN 或 ACKEN 进行逻辑或运算将指示 MSSP1 是否处于空闲模式 bit1 U/A: 更新地址位 ( 仅限 10 位 I2C 模式 ) 1 = 指示用户需要更新 SSP1ADD 寄存器中的地址 bit0 0 = 不需要更新地址 BF: 缓冲区满状态位 I2C 接收模式 1 = 接收完成, SSP1BUF 已满 0 = 接收未完成, SSP1BUF 为空 I2C 发送模式 1 = 数据发送正在进行 ( 不包括 ACK 位和停止位 ), SSP1BUF 已满 0 = 数据发送完成 ( 不包括 ACK 位和停止位 ), SSP1BUF 为空 寄存器 12H:I2C 控制寄存器 1 < SSP1CON1 > R/C-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 WCOL SSP1OV SSP1EN CKP SSP1M3 SSP1M2 SSP1M1 SSP1M0 bit0 图注 : R = 可读位 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 123 Product Specification (V1.2)

124 -n = POR 时的值 WCOL: 写冲突检测位 : 主模式 1 = 当 I2C 不满足启动发送数据的条件时, 试图向 SSP1BUF 寄存器写入数据 0 = 未发生冲突从模式 1 = 正在发送前一个字时, 又有数据写入 SSP1BUF 寄存器 ( 必须用软件清零 ) 0 = 未发生冲突 bit6 SSP1OV: 接收上溢指示位 (1) 1 = SSP1BUF 寄存器中仍保存前一字节时, 又接收到一个新的字节 在发送模式下,SSP1OV bit5 bit4 bit3-0 注 是 无关位 ( 必须用软件清零 ) 0 = 无溢出 SSP1EN: 同步串口使能位 1 = 使能串口并将 SDA 和 SCL 引脚配置为串口引脚源 (3) 0 = 禁止串口并将上述引脚配置为 I/O 端口引脚 CKP: 时钟极性选择位 I2C 从模式 :SCL 释放控制 1 = 使能时钟 0 = 保持时钟为低电平 ( 时钟延长 )( 用来确保数据建立时间 ) I2C 主模式 : 此位未用 SSP1M<3:0>: 同步串口模式选择位 0110 = I2C 从模式, 7 位地址 0111 = I2C 从模式, 10 位地址 1000 = I2C 主模式, 时钟 = 16MHz / (4 * (SSP1ADD+1))(4) 1110 = I2C 从模式, 7 位地址, 并允许启动位和停止位中断 1111 = I2C 从模式, 10 位地址, 并允许启动位和停止位中断其他值保留 1: 在主模式下, 上溢位不会被置 1, 因为每次接收 ( 和发送 ) 新数据都是通过写入 SSP1BUF 寄存器启动的 2: 当使能时, 必须将这些引脚正确地配置为输入或输出 3: 当使能时, 必须将 SDA 和 SCL 引脚配置为输入引脚 4: 对于 I2C 模式, 不支持 SSP1ADD 值 0 1 或 2 寄存器 13H:I2C 控制寄存器 2 < SSP1CON2 > R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN SEN bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 GCEN: 广播呼叫使能位 ( 仅限 I2C 从模式 ) 1 = 当 SSP1SR 接收到广播呼叫地址 (0x00 或 00h) 时允许中断 0 = 禁止广播呼叫地址 bit6 ACKSTAT: 应答状态位 ( 仅限 I2C 模式 ): 1 = 未接收到应答 0 = 接收到应答 bit5 ACKDT: 应答数据位 ( 仅限 I2C 模式 ) 在接收模式下 : 当用户在接收结束时发出一个应答序列时要发送的值 124 Product Specification (V1.2)

125 1 = 无应答 0 = 应答 bit4 ACKEN: 应答序列使能位在主接收模式下 : 1 = 在 SDA 和 SCL 引脚上发出应答序列, 并发送 ACKDT 数据位 由硬件自动清零 0 = 应答序列空闲 bit3 RCEN: 接收使能位 ( 仅限 I2C 主模式 ) 1 = 使能 I2C 接收模式 0 = 接收空闲 bit2 PEN: 停止条件使能位 ( 仅限 I2C 主模式 ) SCK 释放控制 : 1 = 在 SDA 和 SCL 引脚上发出停止条件 由硬件自动清零 0 = 停止条件空闲 bit1 RSEN: 重复启动条件使能位 ( 仅限 I2C 主模式 ) 1 = 在 SDA 和 SCL 引脚上发出重复启动条件 由硬件自动清零 0 = 重复启动条件空闲 bit0 SEN: 缓冲区满状态位 在主模式下 1 = 在 SDA 和 SCL 引脚上发出启动条件 由硬件自动清零 0 = 启动条件空闲在从模式下 1 = 为从发送和从接收 ( 已使能时钟延长 ) 使能时钟延长 0 = 禁止时钟延长 寄存器 14H:I2C 控制寄存器 3 < SSP1CON3 > R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 ACKTIM PCIE SCIE BOEN SBCDE AHEN DHEN bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 ACKTIM: 应答时间状态位 ( 仅限 I2C 模式 ) (3) 1 = 指示 I2C 总线处于应答序列中, 在 SCL 时钟的第 8 个下降沿置 1 0 = 不处于应答序列中, 在 SCL 时钟的第 9 个上升沿清零 bit6 PCIE: 停止条件中断允许位 1 = 在检测到停止条件时允许中断 0 = 禁止检测到停止条件时的中断 (2) bit5 SCIE: 启动条件中断允许位 1 = 在检测到启动或重复启动条件时允许中断 0 = 禁止检测到启动条件时的中断 (2) bit4 bit3 bit2 BOEN: 缓冲区改写使能位在主接收模式下该位被忽略从模式下 : 1 = 仅当 BF 位 = 0 时, 在接收到地址 / 数据字节时, 更新 SSP1BUF 并产生 ACK 信号, 忽略 SSP1OV 位的状态 0 = 只有在 SSP1OV 清零时才更新 SSP1BUF 未实现 SBCDE: 从模式总线冲突检测使能位 ( 仅限 I2C 从模式 ) 如果在 SCL 的上升沿, 在模块输出高 125 Product Specification (V1.2)

126 电平状态时采样到 SDA 为低电平, 则 PIFB3 寄存器的 BCL1IF 位会置 1, 总线会变为空闲状态 1 = 允许从器件总线冲突中断 0 = 禁止从器件总线冲突中断 bit1 AHEN: 地址保持使能位 ( 仅限 I2C 从模式 ) 1 = 在所接收匹配地址字节的第 8 个 SCL 下降沿之后,SSP1CON1 寄存器的 CKP 位将清零, SCL 将保持低电平 0 = 禁止地址保持 bit0 DHEN: 数据保持使能位 ( 仅限 I2C 从模式 ) 1 = 在所接收数据字节的第 8 个 SCL 下降沿之后, 从器件硬件清零 SSP1CON1 寄存器的 CKP 位, 而 SCL 则保持低电平 0 = 禁止数据保持注 1: 用于菊花链 SPI 操作 ; 使用户可以忽略除最后一个接收到的字节之外的所有字节 在接收到新字节且 BF = 1 时, SSP1OV 仍然会置 1, 但硬件会继续将最新字节写入 SSP1BUF 2: 在启动和停止条件检测明确列为使能的从模式下, 该位没有任何作用 3: ACKTIM 状态位仅在 AHEN 位或 DHEN 位置 1 时有效 寄存器 15H:I2C 掩码寄存器 < SSP1MSK > R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 MSK7 MSK6 MSK5 MSK4 MSK3 MSK2 MSK1 MSK0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -1 bit0 MSK<7:1>: 掩码位 1 = 接收到的地址 bit n 与 SSP1ADD<n> 相比较来检测 I2C 模式下地址是否匹配 0 = 接收到的地址 bit n 不用于检测 I2C 模式下地址是否匹配 MSK<0>: 用于 I2C 从模式, 10 位地址的掩码位 I2C 从模式, 10 位地址 (SSP1M<3:0> = 0111 或 1111): 1 = 接收到的地址 bit 0 与 SSP1ADD<0> 相比较来检测 I2C 模式下地址是否匹配 0 = 接收到的地址 bit 0 不用于检测 I2C 模式下地址是否匹配 I2C 从模式,7 位地址, 该位被忽略 寄存器 16H:I2C 地址和波特率寄存器 < SSP1ADD > R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 ADD7 ADD6 ADD5 ADD4 ADD3 ADD2 ADD1 ADD0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -0 主模式 : ADD<7:0> 波特率时钟分频比位 SCL 引脚时钟周期 = ((ADD<7:0> + 1) *4)/FOSC 10 位从模式 高位地址字节 : bit 7-3 bit 2-1 未使用 : 不使用高位地址字节 该寄存器的位状态为 无关 主器件发送的位格式 由 I2C 规范确定, 必须等于 但是, 那些位通过硬件进行比较, 并且不受该寄存 器中的值影响 ADD<2:1>:10 位地址的高 2 位 126 Product Specification (V1.2)

127 bit 0 未使用 : 在此模式下未使用 位状态为 无关 10 位从模式 低位地址字节 : bit 7-0 ADD<7:0>:10 位地址的低 8 位 7 位从模式 : bit 7-1 ADD<7:1>:7 位地址 bit 0 未使用 : 在此模式下未使用 位状态为 无关 寄存器 17H:I2C 数据寄存器 < SSP1BUF > R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 SSP1BUF<7:0> bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -0 SSP1BUF<7:0>:I2C 发送 / 接收缓冲寄存器 主模式下 : 发送数据缓冲寄存器 从模式下 : 接收数据缓冲寄存器 表 9-6-1: 与 I2C 相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 LVR 时的值 所有其他 复位值 INTS GIE PEIE TIS INT0E PAIE TIF INT0F PAIF xxxx xxxx PIFB2 SSP1IE CSIE PBIE PWMIE SSP1IF CSIF PBIF PWMIF xxxx xxxx PORTB PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB xxxx xxxx CPIOB CPIOB7 CPIOB6 CPIOB5 CPIOB4 CPIOB3 CPIOB2 CPIOB1 CPIOB xxxx xxxx PORTA PA5 PA4 PA3 PA2 PA1 PA xxxx xxxx CPIOA CPIOA5 CPIOA4 CPIOA3 CPIOA2 CPIOA1 CPIOA xxxx xxxx SSP1STAT D/A P S R/W UA BF xxxx xxxx SSP1CON1 WCOL SSP1OV SSP1EN CKP SSP1M3 SSP1M2 SSP1M1 SSP1M xxxx xxxx SSP1CON2 GCEN ACKSTAT ACKDT ACKEN RCEN PEN RSEN SEN xxxx xxxx SSP1CON3 ACKTIM PCIE SCIE BOEN SBCDE AHEN DHEN xxxx xxxx SSP1MSK 掩码寄存器 xxxx xxxx SSP1ADD 波特率与地址寄存器 xxxx xxxx 图注 : x = 未知, u = 不变, = 未实现 ( 读为 0) Timer1 模块不使用阴影单元 127 Product Specification (V1.2)

128 10.0 电容触摸模块 对于, 触摸模块最多可监视 16 个输入 (CHSEL<15:0>); 要使用触摸功能, 用户必须 : 通过设置 CHSELH 跟 CHSELL 寄存器选择引脚为触摸功能 将相应的 CPIO 位置 1 设置触摸相关参数 ( 触摸灵敏度 初始化环境值 扫描时间等, 详细说明见下文 ) 运行软件算法 10.1 原理说明 主要检测的是电容充电和放电的时间 首先, 由一个 GPIO 对电容 Cx 进行充电 ; 同时开启计时器进行计时 ; 随着充电的进行,Cx 的电压中不断升高, 最终它将会操作某个门限电压 V, 当其超过门限电压 V 后,GPIO 将会检测到这个事件, 同时停止计时器并读出此时的数值 这样, 就完成了一次充电计时过程, 当手指接触到触摸按键时,Cx 将会变大, 显然, 充电时间也会变长 通过不断比较每次充电的时间, 很自然地就能得知当前是否有按键被 按下 10.2 配置说明 要使用触摸功能, 必须先配置触摸门限差值以及触摸门限初值, 配置 {CSTMRH CSTMRL} 设定帧频率, 配置 {CHSELH CSSELL} 选择触摸通道, 配置 CSACU[2:0] 选择通道扫描帧次数, 配置 THCTL 选择工作模式, 配置完成后打开触摸使能开关 CSEN, 触摸模块开始工作 10.3 电容感应数据区 下表列出每个通道电容感应的相关数据 : 感应通道编号 感应电容值 (16 b) L : H 门限值 (16 b) L : H 第 0 通道 0X1C1 : 0X1A1 : 0X1C0 0X1A0 第 1 通道 0X1C3 : 0X1A3 : 0X1C2 0X1A2 第 2 通道 0X1C5 : 0X1A5 : 0X1C4 0X1A4 第 3 通道 0X1C7 : 0X1A7 : 0X1C6 0X1A6 第 4 通道 0X1C9 : 0X1A9 : 0X1C8 0X1A8 第 5 通道 0X1CB : 0X1AB : 0X1CA 0X1AA 第 6 通道 0X1CD : 0X1AD : 0X1CC 0X1AC 第 7 通道 0X1CF : 0X1AF : 0X1CE 0X1AE 第 8 通道 0X1D1 : 0X1B1 : 0X1D0 0X1B0 门限差 (12 b)l :H(bit3~0) 门限累加值 (20 b) L(~4) : M : H 0X3A1 : 0X3A0 0X3A0 : 0X3C1 : 0X3C0 0X3A3 : 0X3A2 0X3A2 : 0X3C3 : 0X3C2 0X3A5 : 0X3A4 0X3A4 : 0X3C5 : 0X3C4 0X3A7 : 0X3A6 0X3A6 : 0X3C7 : 0X3C6 0X3A9 : 0X3A8 0X3A8 : 0X3C9 : 0X3C8 0X3AB : 0X3AA 0X3AA : 0X3CB : 0X3CA 0X3AD : 0X3AC 0X3AC : 0X3CD : 0X3CC 0X3AF : 0X3AE 0X3AE : 0X3CF : 0X3CE 0X3B1 : 0X3B0 0X3B0 : 0X3D1 : 0X3D0 128 Product Specification (V1.2)

129 第 9 通道 0X1D3 : 0X1D2 第 10 通道 0X1D5 : 0X1D4 第 11 通道 0X1D7 : 0X1D6 第 12 通道 0X1D9 : 0X1D8 第 13 通道 0X1DB : 0X1DA 第 14 通道 0X1DD : 0X1DC 第 15 通道 0X1DF : 0X1DE 0X1B3 : 0X1B2 0X1B5 : 0X1B4 0X1B7 : 0X1B6 0X1B9 : 0X1B8 0X1BB : 0X1BA 0X1BD : 0X1BC 0X1BF : 0X1BE 0X3B3 : 0X3B2 0X3B2 : 0X3D3 : 0X3D2 0X3B5 : 0X3B4 0X3B4 : 0X3D5 : 0X3D4 0X3B7 : 0X3B6 0X3B6 : 0X3D7 : 0X3D6 0X3B9 : 0X3B8 0X3B8 : 0X3D9 : 0X3D8 0X3BB : 0X3BA 0X3BA : 0X3DB : 0X3DA 0X3BD : 0X3BC 0X3BC : 0X3DD : 0X3DC 0X3BF : 0X3BE 0X3BE : 0X3DF : 0X3DE 10.4 寄存器说明 寄存器 190H: 触摸控制存器 < CSCTL > R/W-0 R/W-0 R/W-0 R-0 R/W-0 R/W-0 R/W-1 R/W-1 CSEN RAMEN XRAM CSBUSY CSINTS CSACU2 CSACU1 CSACU0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 CSEN: 触摸模块使能位 1 = 触摸模块打开 0 = 触摸模块关闭 bit6 RAMEN:CS RAM 控制选择位 1 = CS RAM 区域由 MCU 控制 0 = CS RAM 区域由触摸模块控制 (XRAM 位无效 ) bit5 XRAM:MCU 访问扩展区域 SRAM(RAMEN 为 1 有效 ) 1 = 访问扩展区域 ( 访问 3A0H ~ 3DFH) 0 = 正常访问 ( 访问 1A0H ~ 1DFH) bit4 bit3 bit2-0 CSBUSY: 触摸扫描标志位 1 = 触摸扫描正在进行 0 = 触摸空闲 CSINTS: 触摸产生方式选择 1 = 有触摸按键产生中断 0 = 每帧扫描完产生中断 CSACU <2:0>: 通道每帧扫描次数 000 = = = = 8 ( 缺省值 ) 100 = = = = Product Specification (V1.2)

130 寄存器 191H: 触摸门限自动更新寄存器 < THCTL> R/W-0 R/W-0 R/W-1 R/W-0 R/W-1 R/W-0 R/W-0 R/W-1 THFIB THGAP1 THGAP0 THMOD2 THMOD1 THMOD0 THDS1 THDS0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 未使用, 请写 0 bit6-5 bit4-2 bit1-0 THGAP<1: 0>: 门限抽取间隔帧数 00 = 3 01 = 7 ( 缺省值 ) 10 = = 31 THMOD<2:0>: 门限累加次数 000 = = = 8 ( 缺省值 ) 011 = = = = = 256 THDS<1:0>: 在触摸按键释放后门限更新累加所需间隔的帧数 00 = = 32 ( 缺省值 ) 10 = = 128 寄存器 194H: 触摸通道结果标志高位寄存器 < CHRLTH > R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 CHRLT15 CHRLT14 CHRLT13 CHRLT12 CHRLT11 CHRLT10 CHRLT9 CHRLT8 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -0 CHRLT<15:8>: 触摸通道结果标志 1 = 对应通道有触摸 0 = 对应通道没有触摸 寄存器 195H: 触摸通道结果标志低位寄存器 < CHRLTL > R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 CHRLT7 CHRLT6 CHRLT5 CHRLT4 CHRLT3 CHRLT2 CHRLT1 CHRLT0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 130 Product Specification (V1.2)

131 -0 CHRLT<7:0>: 触摸通道结果标志 1 = 对应通道有触摸 0 = 对应通道没有触摸 寄存器 196H: 触摸通道掩码高位寄存器 < CHSELH > R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CHSEL15 CHSEL14 CHSEL13 CHSEL12 CHSEL11 CHSEL10 CHSEL9 CHSEL8 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -0 CHSEL<15:8>: 允许 / 禁止该通道为触摸通道 1 = 对应通道配置成触摸通道 0 = 对应通道没有配置成触摸通道 寄存器 197H: 触摸通道掩码低位寄存器 < CHSELL > R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CHSEL7 CHSEL6 CHSEL5 CHSEL4 CHSEL3 CHSEL2 CHSEL1 CHSEL0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -0 CHSEL<7:0>: 允许 / 禁止该通道为触摸通道 1 = 对应通道配置成触摸通道 0 = 对应通道没有配置成触摸通道 寄存器 19BH: 触摸自动扫描定时器寄存器高 8 位 < CSTMRH > R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CSTMR15 CSTMR14 CSTMR13 CSTMR12 CSTMR11 CSTMR10 CSTMR9 CSTMR8 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -0 CSTMR<15:8>: 触摸扫描周期计数器高 8 位 寄存器 19CH: 触摸自动扫描定时器寄存器低 8 位 < CSTMRL > R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 CSTMR7 CSTMR6 CSTMR5 CSTMR4 CSTMR3 CSTMR2 CSTMR1 CSTMR0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -0 CSTMR<7:0>: 触摸扫描周期计数器低 8 位 131 Product Specification (V1.2)

132 寄存器 19EH: 触摸灵敏度调节寄存器 0 < CSANA0 > U-0 R/W-0 R/W-1 R/W-0 R/W-0 R/W-1 R/W-1 R/W-1 BSTRM2 BSTRM1 BSTRM0 CMPTRM1 CMPTRM0 VTSEL1 VTSEL0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 bit6-4 bit3-2 bit1-0 未实现位 BSTRM<2: 0>:BIAS 输出电流调节 000 = 3.5uA 001 = 3.75uA 010 = 4uA ( 缺省值 ) 011 = 4.25uA 100 = 4.5uA 101 = 5uA 110 = 5.5uA 111 = 6uA CMPTRM <1:0>: 触摸内部比较器消耗电流 00 = 6uA 01 = 12uA ( 缺省值 ) 10 = 18uA 11 = 24uA VTSEL <1:0>: 触摸内部比较高电平选择 00 = 0.65V 01 = 1.3V 10 = 1.9V 11 = 2.55V ( 缺省值 ) 寄存器 19FH: 触摸灵敏度调节寄存器 1 < CSANA1 > U-0 U-0 U-0 R/W-0 R/W-1 R/W-0 R/W-1 R/W-1 DTTRM1 DTTRM0 CTTRM2 CTTRM1 CTTRM0 bit0 图注 : R = 可读位 -n = POR 时的值 W = 可写位 1 = 置 1 U = 未实现位, 读为 0 0 = 清零 x = 未知 -5 Bit4-3 Bit2-0 未实现 DTTRM <1: 0>: 触摸放电时间调节 00 = 0.75us 01 = 1us ( 缺省值 ) 10 = 1.25us 11 = 1.5us CTTRM <2:0>: 触摸充电电流调节, 用于调节片外触摸电容量程, 提高触摸精度 000 = 0.25uA ( 量程 :0 ~ 256pF) 001 = 0.5uA ( 量程 :0 ~ 128pF) 010 = 0.75uA ( 量程 :0 ~ 96pF) 011 = 1uA ( 量程 :0 ~ 64pF) ( 缺省值 ) 100 = 1.25uA ( 量程 :0 ~ 56pF) 101 = 1.5uA ( 量程 :0 ~ 48pF) 110 = 1.75uA ( 量程 :0 ~ 40pF) 111 = 2uA ( 量程 :0 ~ 32pF) 132 Product Specification (V1.2)

133 表 : 与触摸相关的寄存器汇总 名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 POR 和 LVR 时的值 所有其他 复位值 INTS GIE PEIE TIS INT0E PAIE TIF INT0F PAIF xxxx xxxx PIFB2 SSP1IE CSIE PBIE PWMIE SSP1IF CSIF PBIF PWMIF xxxx xxxx PORTB PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB xxxx xxxx CPIOB CPIOB7 CPIOB6 CPIOB5 CPIOB4 CPIOB3 CPIOB2 CPIOB1 CPIOB xxxx xxxx PORTC PC3 PC2 PC1 PC xxxx xxxx CPIOC CPIOC3 CPIOC2 CPIOC1 CPIOC xxxx xxxx PORTD PD7 PD6 PD5 PD4 PD3 PD2 PD1 PD xxxx xxxx CPIOD CPIOD7 CPIOD6 CPIOD5 CPIOD4 CPIOD3 CPIOD2 CPIOD1 CPIOD xxxx xxxx ADINS ANS7 ANS6 ANS5 ANS4 ANS3 ANS2 ANS1 ANS xxxx xxxx CSCTL CSEN RAMEN XRAM CSBUSY CSINTS CSACU2 CSACU1 CSACU xxxx xxxx THCTL THFIB THGAP1 THGAP0 THMOD2 THMOD1 THMOD0 THDS1 THDS xxxx xxxx CHRLTH CHRLT15 CHRLT14 CHRLT13 CHRLT12 CHRLT11 CHRLT10 CHRLT9 CHRLT xxxx xxxx CHRLTL CHRLT7 CHRLT6 CHRLT5 CHRLT4 CHRLT3 CHRLT2 CHRLT1 CHRLT xxxx xxxx CHSELH CHSEL15 CHSEL14 CHSEL13 CHSEL12 CHSEL11 CHSEL10 CHSEL9 CHSEL xxxx xxxx CHSELL CHSEL7 CHSEL6 CHSEL5 CHSEL4 CHSEL3 CHSEL2 CHSEL1 CHSEL xxxx xxxx CSTMRH 触摸扫描周期计数器高 8 位 xxxx xxxx CSTMRL 触摸扫描周期计数器低 8 位 xxxx xxxx CSANA0 BSTRM2 BSTRM1 BSTRM0 CMPTRM1 CMPTRM1 VTSEL1 VTSEL xxxx xxxx CSANA1 DTTRM1 DTTRM0 CTTRM2 CTTRM1 CTTRM xxxx xxxx 图注 : x = 未知, u = 不变, = 未实现 ( 读为 0) 133 Product Specification (V1.2)

134 11.0 配置寄存器 配置寄存器是用来配置 MCU 的设置, 其原始值存在 MTP 的某些位置, 在 MCU 启动时从 MTP Boot 到配置寄存器中, 配置寄存器位宽为 8 位, 由于 Flash 的位宽为 14 位,Boot 时, 只 Boot 低 8 位至配置寄存器 11.1 Config Option Config Option 用于给客户提供配置选项 寄存器 801H: 配置字寄存器高 8 位 (Config1 Option) RD_CTRL LVDS1 LVDS0 FCMEN IESO LVREN1 LVREN0 bit15 bit8 寄存器 800H: 配置字寄存器低 8 位 (Config0 Option) CPB MCLRE PWRTE WDTE FOSC2 FOSC1 FOSC0 bit0 bit15 未实现 : 保留 bit14 RD_CTRL: 输出模式时读端口控制 1: 读数据端口返回的 PIN 上的值 0: 读数据端口返回的锁存器上的值 bit13-12 LVDS <1:0>: 低电压复位电压设定 00:1.9V 01:2.5V 10:3.8V 11:3.8V bit11 FCMEN: 系统时钟失效监测使能位 1: 使能系统时钟失效监测, 仅在系统时钟为外部晶振模式才起作用 0: 禁止系统时钟失效监测 bit10 IESO: 内 外时钟切换使能位, 二速启动模式使能, 1: 使能二速启动模式, 仅在系统时钟为外部晶振模式才起作用 0: 禁止二速启动模式 (1) bit9-8 LVREN <1:0>: 低电压复位选择 11: 低电压复位使能 10:MCU 工作时, 低电压复位开启 ;MCU 睡眠时, 低电压复位关闭 01: 低电压复位由 PCON 之 SLVREN 位决定 00: 禁止低电压复位未实现 : 保留 bit6 CPB: 代码保护位 (3) bit5 bit4 1:Flash 内容不保护 0: 启动 Flash 内容保护,MCU 能读, 串口不能读 MCLRE:PA3/MCLR 引脚功能选择位 1:PA3/ MCLR (4) 脚执行 MCLR 功能, 是复位脚 0:PA3/ MCLR脚执行 PA3 功能, 是数字输入引脚 PWRTE : 上电延时定时器使能位 1:PWRT 禁止 0:PWRT 使能 134 Product Specification (V1.2)

135 bit3 bit2-0 注 WDTE: 看门狗定时器使能位 1:WDT 使能, 程序不能禁止 0:WDT 禁止, 但程序可通过设置 WDTCON 的 SWDTEN 位将 WDT 使能 FOSC <2:0>: 振荡器选择位 111:INTOSCIO Oscillator 模式,PA4 为 IO 引脚,PA5 为 IO 引脚 110:RCIO Oscillator 模式,PA4 为 IO 引脚,PA5 时钟输入脚 CLKIN 101:INTOSC Oscillator 模式,PA4 输出时钟 CLKOUT,PA5 为 IO 引脚 100:RC Oscillator 模式,PA4 输出时钟 CLKOUT,PA5 是时钟输入脚 CLKIN 011:EC 模式,PA4 为 IO 引脚,PA5 时钟输入脚 CLKIN 010:HS Oscillator 模式,PA4 PA5 接高频晶振 001:XT Oscillator 模式,PA4 PA5 接晶振 000:LP Oscillator 模式,PA4 PA5 接低频晶振 1: 使能欠压复位不会自动使能上电延时定时器 2: 在 INTOSC 或 RC 模式下当 MCLR有效时, 内部时钟振荡器被禁止 135 Product Specification (V1.2)

136 12.0 指令表 指令功能操作影响状态位 NOP 空操作无无 CLRWT 清看门狗 0 WT /TF, /PF SLEEP 进入睡眠模式 0 WT, stop OSC /TF, /PF TMODE 将 W 寄存器值装入选项寄存器 (81H) W 81H 无 CPIO R 设置端口方向寄存器 (1 输入,0 输出 ) W CPIO r 无 STWR R 将 W 寄存器内容送 R 寄存器 W R 无 LDR R, t 读寄存器 R, 结果保存在 R(t=1) 或者 W(t=0) R t Z LDWI I 立即数送 W 寄存器 I W 无 SWAPR R, t 交换寄存器 R 的高低四位, 结果保存在 R(t=1) 或者 W(t=0) 中 [R(0~3) R(4~7)] t 无 INCR R, t 递增寄存器 R, 结果保存在 R(t=1) 或者 W(t=0) 中 R + 1 t Z INCRSZ R, 递增寄存器 R, 结果保存在 R(t=1) 或者 W(t=0) 中 ; 如果结果等于 0 则跳 R + 1 t 无 t 过该指令接下来的指令 ADDWR R, t W 寄存器与 R 寄存器相加, 结果保存在 R(t=1) 或者 W(t=0) 中 W + R t C, HC, Z SUBWR R, t R 寄存器减去 W 寄存器, 结果保存在 R(t=1) 或者 W(t=0) 中 RАW t (R+/W+1 t) C, HC, Z DECR R, t 递减寄存器 R, 结果保存在 R(t=1) 或者 W(t=0) 中 R А1 t Z DECRSZ R, 递减寄存器 R, 结果保存在 R(t=1) 或者 W(t=0) 中 ; 如果结果等于 0 则跳 R А1 t 无 t 过该指令接下来的指令 ANDWR R, t R 寄存器与 W 寄存器做 与 操作, 结果保存在 R(t=1) 或者 W(t=0) 中 R W t Z ANDWI I W 寄存器与立即数 I 做 与 操作, 结果保存到 W 寄存器中 I W W Z IORWR R, t R 寄存器与 W 寄存器做 或 操作, 结果保存在 R(t=1) 或者 W(t=0) 中 R W t Z IORWI I W 寄存器与立即数 I 做 或 操作, 结果保存在 R(t=1) 或者 W(t=0) 中 I W W Z XORWR R, t R 寄存器与 W 寄存器做 异或 操作, 结果保存在 R(t=1) 或者 W(t=0) 中 R W t Z XORWI I W 寄存器与立即数 I 做 异或 操作, 结果保存在 R(t=1) 或者 W(t=0) 中 I W W Z COMR R, t R 寄存器 取反 操作, 结果保存在 R(t=1) 或者 W(t=0) 中 /R t Z R(n) R(n-1), RRR R, t R 寄存器循环 右移 操作, 结果保存在 R(t=1) 或者 W(t=0) 中 C C R(7), R(0) C R(n) r(n+1), RLR R, t R 寄存器循环 左移 操作, 结果保存在 R(t=1) 或者 W(t=0) 中 C C R(0), R(7) C CLRW W 寄存器清 0 0 W Z CLRR R R 寄存器清 0 0 R Z BCR R, b R 寄存器的第 b 位清 0 0 R(b) 无 BSR R, b R 寄存器的第 b 位置 1 1 R(b) 无 BTSC R, b 如果 R 寄存器的第 b 位为 0, 则跳过该指令接下来的指令 Skip if R(b)=0 无 BTSS R, b 如果 R 寄存器的第 b 位为 1, 则跳过该指令接下来的指令 Skip if R(b)=1 无 LCALL N 在整个 2K 区域内的调用指令 N PC, PC+1 Stack 无 LJUMP N 在整个 2K 区域内的跳转指令 N PC 无 RTIW I 带立即数从子程序返回 Stack PC, I W 无 ADDWI I W 寄存器与立即数 I 相加, 结果保存到 W 中 PC+1 PC,W+I W C,HC,Z SUBWI I 立即数 I 减去 W 寄存器, 结果保存到 W 寄存器中 I-W W C,HC,Z RTFI 中断返回 Stack PC,1 GIS 无 RET 从子程序返回 Stack PC 无 136 Product Specification (V1.2)

137 13.0 电气特性 13.1 绝对极限参数 偏置电压下的环境温度 C 至 +85 C 储存温度 C 至 +150 C VDD 引脚相对于 VSS 的电压 V 至 +6.5V MCLR引脚相对于 Vss 的电压 V 至 +9.5V 所有其他引脚相对于 VSS 的电压 V 至 (VDD+0.3V) 总功耗 (1)...600mW 流出 VSS 引脚的最大电流...120mA 流入 VDD 引脚的最大电流...120mA 输入钳位电流,I IK (V I <0 或 V I >VDD)...±20mA 输出钳位电流,I OK (V o <0 或 V o >VDD)...±20mA 任一 I/O 引脚的最大输出灌电流...25mA 任一 I/O 引脚的最大输出拉电流...25mA 注 1: 功耗计算公式为 :P DIS = VDD x { I DD - I OH } + { ( V DD - V OH ) x I OH } + ( V OL x I OL ) 注意 : 如果运行条件超过了上述 绝对极限参数值, 即可能对器件造成永久性损坏 上述值仅为运行条件的极大值, 我们不建议器件运行在该规范范围以外 器件长时间工作在绝对极限参数条件下, 其稳定性可能受到影响 VDD (V) 频率 (MHz) 注 1: 阴影区域表示允许的电压频率组合 图 : 外部振荡电压 - 频率图,-40 C TA +85 C 137 Product Specification (V1.2)

138 图 : 器件 VDD 和工作温度范围内 IRC 偏移量 ( 左边参数为偏移百分比, 如 0.01 为 1%) 13.2 直流电气特性 直流特性 (1) 符号特性最小值典型值 标准工作条件 工作温度 -40 Ta +85 最大值单位条件 VDD 电源电压 V VDR VPOR SVDD IDD IPD IWDT VIL VIH IOL (2) RAM 数据保持电压 Vdd 起始电压确保能够产生上 电复位信号 Vdd 上升速率确保能够产生上 电复位信号 (3) 工作电流 (4) 掉电流 (4) WDT 电流 输入低电压 输入高电压 输出灌电流 0.5* V 器件处于休眠模式 Vss V 0.05* V/ms 138 Product Specification (V1.2) M V 4M M ua 800 1M V 4M M WDT En LVR Dis IRC 1 ua WDT Disable VDD=2.5V 0.5 ua VDD=5V VSS 1.1 3V TLL VSS 1.1 3V SCHMITT V VSS 1.6 5V TLL VSS 1.6 5V SCHMITT 1.1 VDD 3V TLL 1.6 VDD 3V SCHMITT 1.6 VDD V 5V TLL 3.0 VDD 5V SCHMITT VOL=0.7V 18 VOL=0.3V ma VOL=0.9V 40 VOL=0.5V 3V 5V

139 IOH 输出拉电流 VOH=2.5V 7 VOH=2.7V ma VOH=4.0V 15 VOH=4.5V 3V 5V % % V LOW VLVR 低电压复位电压 % % MIDDLE % % HIGH Rpu 上拉电阻 3V K 31 5V 注 : 表示没有, 或待定 (1) 典型栏中数据均为 25 条件下值, 此部分数据仅供参考 (2) 该电压是保证不丢失 RAM 数据的最小 VDD (3) 工作电流主要随工作电压和频率而变化 其它因素, 如总线负载 总线速率 内部代码执行模式和温度也会影响电流消耗 (4) 掉电电流是在器件休眠时, 所有 I/O 引脚都处于高阻态并且连接到 Vdd 或 Vss 时测得 13.3 交流电气特性 交流特性 (1) 符号特性最小值典型值 标准工作条件 工作温度 -40 Ta +85 最大值单位条件 F OSC 系统时钟 0 8M 20M Hz 5V F HIRC 内部高速时钟 4M 16M Hz 5V F LIRC 内部低速时钟 31K Hz 5V T INT 中断脉冲 2 3 Tins 指令周期 T SST T RSTD TLVR 系统启动时间 ( 上电复位 ) 系统启动时间 ( 由 SLEEP 模式唤醒, Fsys 在 SLEEP 模式下关 闭 ) 系统启动时间 ( 由 SLEEP 模式唤醒, 主要在 SLEEP 模式下开启 ) 系统复位延迟时间 ( 上电复位 ) 系统复位时间 (WDT 正常复位 ) VDD 降低到 VLVR 以下 持续时间 ms 5V 1024 Tsys 5V 1024 Tsys 5V ms 5V ms 5V 2 5 us 139 Product Specification (V1.2)

140 14.0 开发支持 14.1 仿真信息 软件 :MDT-IDE 硬件 :YS-Link 140 Product Specification (V1.2)

141 接口 : 具备片内仿真功能, 可通过串口模式仿真调试程序, 串口接口如下 : YS83B08 YS84B08/YS84C12 YS-Link VDD VDD VDD GND GND GND PA3 PA3 VPP PB1 PA0 SCK PB2 PA1 SDA 14.2 烧录信息 烧录软件 :YSpringPro 141 Product Specification (V1.2)

142 烧录器 :YS-Writer 烧录使用引脚 :VDD VSS VPP PA0 PA1 PA2 (Busy 信号 ) 注 :YS83B08 引脚 :VDD GND VPP PB1 PB2 PA2(Busy 信号 ) 142 Product Specification (V1.2)

MDT10F630/ MDT10F676

MDT10F630/ MDT10F676 MDT10F271 数据手册 ( 版本 V1.2) 1.0 器件概述 8 位 MTP CMOS 单片机 存储器 : MTP 空间 :2K*14 位 可经受 1000 次写操作 SRAM 空间 :128 字节 8 级深硬件堆栈 I/O 引脚配置具有独立方向控制的 11 个 I/O 引脚 :PA 口 5 个 PC 口 6 个一个只能作输入的 PA3 口 高灌 / 拉电流可直接驱动 LED PA 端口引脚电平变化中断

More information

MDT10F630/ MDT10F676

MDT10F630/ MDT10F676 MT10F272 数据手册 ( 版本 V1.0) 1 器件概述 8 位 MTP CMOS 单片机 存储器 : MTP 空间 :2K*14 位 可经受 1000 次操作 SRAM 空间 :128 字节 8 级深硬件堆栈 I/O 引脚配置具有独立方向控制的 14 个 I/O 引脚 :PA 口 5 个 PC 口 8 个 PA3 开漏输出, 带内部上拉 高灌 / 拉电流可直接驱动 LE PA 端口引脚电平变化中断

More information

MDT10F630/ MDT10F676

MDT10F630/ MDT10F676 YS65F804 数据手册 ( 版本 V1.0) 1.0 器件概述 存储器 : MTP 空间 :2K*14 位 可经受 1000 次写操作 SRAM 空间 :128 字节 CS SRAM:32 字节 8 级深硬件堆栈 I/O 引脚配置 具有独立方向控制的 6 个 I/O 引脚 :PA 口 6 个 PA3: 外部复位, 当设定为输出时为开漏输出模式 (open drain) PA 端口独立的可编程弱上

More information

33023A.book(31026A_cn.fm)

33023A.book(31026A_cn.fm) 26 第 26 章看门狗定时器与休眠模式 目录 看门狗定时器与休眠模式 本章包括下面一些主要内容 : 26.1 简介... 26-2 26.2 控制寄存器... 26-3 26.3 看门狗定时器 (WDT) 的操作... 26-4 26.4 休眠省电模式... 26-7 26.5 初始化... 26-9 26.6 设计技巧... 26-10 26.7 相关应用笔记... 26-11 26.8 版本历史...

More information

MDT10F630/ MDT10F676

MDT10F630/ MDT10F676 MT10F685 数据手册 ( 版本 V1.3) 1.0 器件概述 8 位 FLASH CMOS 单片机 存储器 : FLASH 空间 :4K*14 位 可经受 10 万次写操作 EEPROM 空间 :256 字节 可经受 100 万次写操作 SRAM 空间 :256 字节 8 级深硬件堆栈 I/O 引脚配置具有独立方向控制的 22 个 I/O 引脚 :PA 口 6 个 PB 口 8 个 PC 口

More information

2 PIC PIC 1 / CPU PIC MCU PIC RC

2 PIC PIC 1 / CPU PIC MCU PIC RC 2 PIC PIC 1 /... 2-2 2... 2-3 3... 2-4 4... 2-4 5... 2-4 6 CPU... 2-5 7 PIC MCU... 2-6 8 PIC16... 2-6 9... 2-7 10... 2-7 11 RC... 2-7 12... 2-8 13... 2-8 14 NOP... 2-9 15 PMD... 2-9 16... 2-10 17 WDTWDT...

More information

MDT90P01 4-Bit RISC MCU 使用及注意事项 1. MDT90P01 4-bit RISC MCU PIN MAP: SOT-26 PB0 1 6 PB3 VSS 2 5 VDD PB1 3 4 PB2/RTCC 2. IC 烧入注意事项 : A. 需制作转接座 : Writer

MDT90P01 4-Bit RISC MCU 使用及注意事项 1. MDT90P01 4-bit RISC MCU PIN MAP: SOT-26 PB0 1 6 PB3 VSS 2 5 VDD PB1 3 4 PB2/RTCC 2. IC 烧入注意事项 : A. 需制作转接座 : Writer MT90P0 4-Bit RISC MCU 使用及注意事项 MT90P0 4-bit RISC MCU PIN MAP: SOT-26 PB0 6 PB3 VSS 2 5 V PB 3 4 PB2/RTCC 2 IC 烧入注意事项 : A 需制作转接座 : Writer PIN MAP: V NC PB3 PB2 VSS PB PB0 NC ( 底 ) B 需更改 Writer Firmware WM0

More information

33023A.book(31005A_cn.fm)

33023A.book(31005A_cn.fm) 第 5 章 CPU 和 ALU 目录 本章包括下面一些主要内容 : 5. 简介...5-2 5.2 指令的一般格式... 5-4 5.3 中央处理单元 (CPU)... 5-4 5.4 指令时钟... 5-4 5.5 算术逻辑单元 (ALU)... 5-5 5.6 状态寄存器... 5-6 5.7 OPTION_REG 寄存器... 5-8 5.8 电源控制寄存器... 5-9 5.9 设计技巧...

More information

查询 MDT10P72(BB) 供应商 1. 概述这个 8 位基于 EPROM 微控制器是由完全静态 CMOS 技术设计, 集高速 体积小 低功耗和抗高噪声一体的芯片 内存包括 2K 字节 EPROM 和 128 字节静态 RAM 2. 特点如下是关于软硬件的一些特点 : 完全 CMOS 静态设计

查询 MDT10P72(BB) 供应商 1. 概述这个 8 位基于 EPROM 微控制器是由完全静态 CMOS 技术设计, 集高速 体积小 低功耗和抗高噪声一体的芯片 内存包括 2K 字节 EPROM 和 128 字节静态 RAM 2. 特点如下是关于软硬件的一些特点 : 完全 CMOS 静态设计 查询 供应商 1. 概述这个 8 位基于 EPROM 微控制器是由完全静态 CMOS 技术设计, 集高速 体积小 低功耗和抗高噪声一体的芯片 内存包括 2K 字节 EPROM 和 128 字节静态 RAM 2. 特点如下是关于软硬件的一些特点 : 完全 CMOS 静态设计 8 位数据总线 EPROM 大小 :2K 内部 RAM 大小 :160 字节 (128 通用目的寄存器,32 特殊寄存器 ) 37

More information

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

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 1K 4 SH6610C 4 OTP ROM 1K X 16 RAM 88 X 4-24 - 64 2.4V-5.5V - fosc = 30kHz - 4MHz, = 2.4V - 5.5V - fosc = 4MHz - 8MHz, = 4.5V - 5.5V 11 CMOS I/O 4 ( ) 8 / - 0 PORTA.0 ( / / ) - 0 - PORTB ( ) ( ) - 32.768kHz,

More information

标题

标题 本章学习目标 PIC16F87X 单片机与其他单片机相比具有一些独特的优点, 采用这些芯片构成的应用开发系统, 不仅可以提供最高的系统可靠性, 而且还能最大限度地减少外围器件, 以降低系统成本和功耗 掌握 PIC16F87X 单片机多功能的配置方式, 对于从事单片机应用开发工程人员来说, 是非常必要的, 同时也为其提供了广阔的选择空间 PIC16F87X 单片机的配置方式包括以下内容 : (1) 振荡器选择

More information

DESCRIPTION

DESCRIPTION 8Bit CMOS OTP MCU 器件特性 RISC CPU: 仅需 35 条指令大部分指令仅需一个时钟周期存储器 1K x14 OTP ROM 48 Byte RAM 4 级堆栈时钟系统内置振荡 : Max: 4MHz ±2%.(3.3~5.5V) Max: 2MHz±2%.(2.4~3.3V) RC 振荡 : 外部晶体振荡 : IO 引脚配置输入输出双向 IO 口 : RA RC 单向输入引脚

More information

70046d_cn.book(70055c_cn.fm)

70046d_cn.book(70055c_cn.fm) 第 8 章复位 目录 本章包括下列主题 : 8.1 简介...8-2 8.2 复位时的时钟源选择... 8-5 8.3 POR: 上电复位... 8-5 8.4 外部复位 (EXTR)... 8-7 8.5 软件复位指令 (SWR)... 8-7 8.6 看门狗超时复位 (WDTR)... 8-7 8.7 欠压复位 (BOR)... 8-8 8.8 使用 RCON 状态位... 8-10 8.9 器件复位时间...

More information

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63> 第三章 Q3 1 1. 省略了 I/O 操作的复杂逻辑, 易实现, 耗费低 ; 2. 可以利用丰富的内存寻址模式实现灵活的 I/O 操作 Q3 2 假设存储单元 ds1 处寄存器地址为 0x2000, 代码如下 #define ds1 0x2000 while ( *ds1 == 0 ) ; Q3 3 假设设备 (dev1) 中有两个寄存器 ds1 和 dd1,dev1 的地址为 0x1000,ds1

More information

33023A.book(31006A_cn.fm)

33023A.book(31006A_cn.fm) 6 第 6 章存储器构成 存储器构成 目录 本章包括下面一些主要内容 : 6.1 简介...6-2 6.2 程序存储器构成... 6-2 6.3 数据存储器构成... 6-8 6.4 初始化... 6-14 6.5 设计技巧... 6-16 6.6 相关应用笔记... 6-17 6.7 版本历史... 6-18 2004 Microchip Technology Inc. DS31006A_CN 第

More information

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

目录 1. 产品简介 功能特性 引脚图 引脚描述 中央处理器 (CPU) 程序存储器 (OTP ROM) 堆栈 数据存储器 (RAM) INDF 寄存器. SQ013L 数据手册 8 引脚 8 位 I/O 型 OTP 单片机 - 1 - 目录 1. 产品简介... 4 1.1 功能特性... 4 1.2 引脚图... 5 1.3 引脚描述... 5 2. 中央处理器 (CPU)... 6 2.1 程序存储器 (OTP ROM)... 6 2.2 堆栈... 6 2.3 数据存储器 (RAM)... 7 2.3.1 INDF 寄存器... 9 2.3.2

More information

第十四章 STC单片机比较器原理及实现

第十四章 STC单片机比较器原理及实现 第 14 章 STC 单片机比较器 原理及实现 何宾 2015.02 1 本章主要内容 STC 单片机比较器结构 STC 单片机比较器寄存器组 STC 单片机比较器应用 2 STC 单片机比较器结构 STC15W 系列单片机内置了模拟比较器 对于 STC15W201S STC15W404S, 以及 STC15W1K16S 系 列单片机的比较器内部结构 3 STC 单片机比较器结构 S T C 15W

More information

第 40 章包括可编程欠压复位在内的复位机制 目录 本章包括下列主题 : 40.1 简介 复位时的时钟源选择 上电复位 (POR) MCLR 复位 软件 RESET 指令 (SWR)

第 40 章包括可编程欠压复位在内的复位机制 目录 本章包括下列主题 : 40.1 简介 复位时的时钟源选择 上电复位 (POR) MCLR 复位 软件 RESET 指令 (SWR) 第 40 章包括可编程欠压复位在内的复位机制 目录 本章包括下列主题 : 40.1 简介... 40-2 40.2 复位时的时钟源选择... 40-5 40.3 上电复位 (POR)... 40-5 40.4 MCLR 复位... 40-7 40.5 软件 RESET 指令 (SWR)... 40-7 40.6 看门狗定时器复位 (WDTR)... 40-7 40.7 欠压复位 (BOR)... 40-8

More information

Real-Time Clock and Calendar (RTCC)

Real-Time Clock and Calendar (RTCC) 第 7 章复位 目录 本章包括下列主题 : 7 7.1 简介...7-2 7.2 复位时的时钟源选择... 7-4 7.3 上电复位 (POR)... 7-4 7.4 MCLR 复位... 7-6 7.5 软件 RESET 指令 (SWR)... 7-6 7.6 看门狗超时复位 (WDTR)... 7-6 7.7 欠压复位 (BOR)... 7-7 7.8 配置不匹配复位... 7-7 7.9 陷阱冲突复位...

More information

Microsoft Word - S153B.doc

Microsoft Word - S153B.doc SAM8 P153B SAM8P153B 数据手册 14 引脚 8 位 I/O 型 OTP 单片机 盛明公司保留对以下所有产品在可靠性 功能和设计方面的改进作进一步说明的权利 盛明不承担由本手册所涉及的产品或电路的运用和使用所引起的任何责任, 盛明的产品不是专门设计来应用于外科植入 生命维持和任何盛明产品产生的故障会对个体造成伤害甚至死亡的领域 如果将盛明的产品用于上述领域, 即使这些是由盛明在产品设计和制造上的疏忽引起的,

More information

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

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 4K / I/O 4 SH6610C 4 OTPROM 4K X 16 SH69P25 MASK ROM 4K X 16 SH69K25 RAM 192 X 4-32 - 160 2.4V - 5.5V 5.0V 22 I/O 4 8 / PORTA-PORTF / - Timer0 - PORTB & PORTC / - 32.768kHz 4MHz - 400kHz 4MHz - RC 400kHz

More information

第10章:CCP捕捉/比较/脉宽调制

第10章:CCP捕捉/比较/脉宽调制 第 10 章 :CCP 捕捉 / 比较 / 脉宽调制 CCP 模块功能 捕捉功能模式 比较功能模式 脉宽调制功能 1 CCP 模块功能 PIC 2 捕捉 比较 脉宽调制模块 CCP1 CCP2(Capture/Compare/PWM) 16 CCPR1 CCPR2 模块 功能 功能 TMR1 TMR2 2 CCP 模块功能 CCP 模块 3 模式 : 捕捉 式 比较 式 脉宽调制 式 捕捉功能 捕捉

More information

... 错误! 未定义书签 DATASHEET 特性 程序存储器 脚位图 特殊功能寄存器 地址映射 SFR,BANK SFR,BANK

... 错误! 未定义书签 DATASHEET 特性 程序存储器 脚位图 特殊功能寄存器 地址映射 SFR,BANK SFR,BANK DATASHEET page1 ... 错误! 未定义书签 DATASHEET... 1 1 特性... 9 1.1 程序存储器... 10 1.2 脚位图... 12 2 特殊功能寄存器... 17 2.1 地址映射... 17 2.1.1 SFR,BANK0... 17 2.1.2 SFR,BANK1... 18 2.1.3 SFR,BANK2... 20 2.1.4 STATUS 寄存器, 地址

More information

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

XNS104 产品说明书 AD 型 2.4G 高速无线收发单片机概述 2.4GHz 高速无线收发单片机 XNS104 是一个带 12 位 ADC, 以 OTP 为程序存储基础, 带 2.4G 高速无线收发芯片的单片机 无线收发单元工作在 GHz 世界通用 ISM 频段, 它集 XNS104 产品说明书 AD 型 2.4G 高速无线收发单片机概述 2.4GHz 高速无线收发单片机 XNS104 是一个带 12 位 ADC, 以 OTP 为程序存储基础, 带 2.4G 高速无线收发芯片的单片机 无线收发单元工作在 2.400--2.483GHz 世界通用 ISM 频段, 它集成射频收发通路 频率发生器 晶体振荡器 调制解调器等功能模块, 并且支持一对多组网和带 ACK 的通信模式

More information

41206A.book

41206A.book 数据手册 带 A/D 转换器和 增强型捕捉 / 比较 /PWM 的 8 位闪存单片机 2004 Microchip Technology Inc. 初稿 DS41206A_CN 请注意以下有关 Microchip 器件代码保护功能的要点 : Microchip 的产品均达到 Microchip 数据手册中所述的技术指标 Microchip 确信 : 在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一

More information

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

HT46R47 f SYS =4MHz 3.3~5.5V f SYS =8MHz 4.5~5.5V 13 位双向输入 / 输出口 1 个与输入 / 输出共用引脚的外部中断输入 8 位带溢出中断的可编程定时 / 计数器 具有 7 级预分频器 石英晶体或 RC 振荡器 位的程序存储器 P HT46R/47R/48R/49R 系列 选型指南 HT46R22 f SYS =4MHz 3.3~5.5V f SYS =8MHz 4.5~5.5V 19 位双向输入 / 输出口 1 个与输入 / 输出口线共用的外部输入 16 位具有 7 级预分频带溢出中断的可编程定时 / 计数器 内置石英晶体或 RC 振荡器 2048 14 位的程序存储器 PROM 64 8 位的数据存储器 RAM 支持发声的

More information

41213C.book

41213C.book 数据手册 8 位 CMOS 闪存 单片机系列 2006 Microchip Technology Inc. DS41213C_CN 请注意以下有关 Microchip 器件代码保护功能的要点 : Microchip 的产品均达到 Microchip 数据手册中所述的技术指标 Microchip 确信 : 在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一 目前,

More information

33023A.book(31031A_cn.fm)

33023A.book(31031A_cn.fm) 31 第 31 章器件特性 器件特性 目录 本章包括以下一些主要内容 : 31.1 简介... 31-2 31.2 特性和电气规范... 31-2 31.3 DC 和 AC 特性图表... 31-2 31.4 版本历史... 31-22 24 Microchip Technology Inc. DS3131A_CN 第 31-1 页 PICmicro 中档单片机系列 31.1 简介 Microchip

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 STC 单片机比较器原理及实现 主讲 : 何宾 Email:hebin@mail.buct.edu.cn 2016.03 STC 单片机比较器结构 STC15W 系列单片机内置了模拟比较器 对于 STC15W201S STC15W404S, 以及 STC15W1K16S 系列单片机的比较器内部结 构 STC 单片机比较器结构 从图中可以看出, 比较器正端输入 CMP+ 的输入电压来自单片机的 P5.5

More information

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

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 SH79F6431 1. SH79F6431 1T 8051 FLASH SH79F JET51 Keil µ vision JTAG 1.1. SH79F6431 LQFP64 1.2. (Target Board) SH79F6431 1 V 1.0 1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F6431 1 2 1 B. 1(VCC/GND)

More information

OTP-Based 8-Bit Microcontroller Series

OTP-Based 8-Bit Microcontroller Series 苏州锋驰微电子有限公司 OTP-Based 8-Bit Microcontroller Series FC162 SZFC 2017/5/26 功能特色 : 苏州锋驰微电子有限公司 SUZHOU FENGCHI ELECTRONIC CO.:LTD *PB3 口软件可控上拉,PB3 可做标准 IO 口 *4 级硬件控制端口强弱驱动电流 修正记录 版本号日期内容 V10 V20 2016 年 6 月

More information

文件名

文件名 MICROCHIP PIC10F200/202/204/206 6 8 FLASH PIC10F200 PIC10F202 PIC10F204 PIC10F206 RISC CPU 33 12 8 8 4MHz 1 s 4MHz 1% TM ICSP TM ICD POR DRT WDT RC MCLR I/O /CMOS < 350 A @ 2V 4 MHz 100 na @ 2V FLASH 10000

More information

控制器 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

控制器 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 控制器 thert thert thert 接下一个电机驱动模块 () 接下一个电机驱动模块 () 电机驱动模块 电机驱动模块 电源模块 接下一个电机驱动模块 () 接下一个电机驱动模块 () 接下一个电机驱动模块 () 接下一个电机驱动模块 () X 0 X 0 4 /RK /RK 注 注 制动电阻阻值 Ω Φ 80: 适用电机驱动模块型号 8-M-XXXX--XX Φ : 适用电机驱动模块型号

More information



 8 位微控制器 ET18F11/11 数据手册 深圳市鹏锦科技有限公司 联系电话 :07828600 手机 :1820771884 传真 :07212178 联系人 : 何颖 QQ:6700001 深圳市福田区振华路家乐大厦 4 楼 B 公司网址 :www.pj212178.com 产品订购信息 型号 FLS RM 封装 ET18F11 1KX1 64B SOIC14 目录 1 概述...4 2 芯片特征...4

More information

BJ2C004ANB

BJ2C004ANB BJ2C004A 规 格 书 (v1.0) 1 目录 1. 概叙... 4 2. 功能特性... 4 3. 功能框图...5 4. 管脚图... 5 4.1 管脚功能描述...6 5 存储器结构... 7 5.1 程序存储器...7 5.2 数据存储器... 7 6 功能介绍... 9 6.1 寄存器操作... 9 6.1.1 INDF ( 间接寻址寄存器 )... 9 6.1.2 TMR0 ( 定时

More information

PT8M2101A 规格书 目录 1. 产品概述 主要特性 系统框图 管脚配置 中央处理器 指令集 程序存储器 ROM 数据存储器 RAM CPU 核相关寄存器..

PT8M2101A 规格书 目录 1. 产品概述 主要特性 系统框图 管脚配置 中央处理器 指令集 程序存储器 ROM 数据存储器 RAM CPU 核相关寄存器.. 目录 1. 产品概述... 2 2. 主要特性... 2 3. 系统框图... 3 4. 管脚配置... 4 5. 中央处理器... 5 5.1 指令集... 5 5.2 程序存储器 ROM... 6 5.3 数据存储器 RAM... 7 5.4 CPU 核相关寄存器... 8 5.5 SFR... 10 5.6 配置选项... 11 6. 功能模块... 12 6.1 时钟描述... 12 6.2

More information

DS_MM32P021_Ver1.9.0

DS_MM32P021_Ver1.9.0 产品手册 Datasheet MM32P021 32 位基于 ARM Cortex M0 核心的微控制器 版本 :1.9.0 保留不通知的情况下, 更改相关资料的权利 目录 1. 总介... 5 1.1 概述... 5 1.2 产品特性... 5 2. 规格说明... 6 2.1 器件对比... 6 2.2 功能简述... 6 3. 引脚定义... 7 3.1 引脚配置... 7 3.2 引脚描述...

More information

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

第5章:汇编语言程序设计 第 5 章 : 汇编语言程序设计 程 汇编语言指令格式 系统伪指令 存储器选择方式 常用子程序 1 汇编语言程序设计 PIC 指令系统 语言系统 指 CPU 编 器语言 器语言 器语言 设计 用 语言 设计 语言 汇编语言 2 汇编语言指令格式 汇编语言指令格式 ( 指令 ) label opcode operand comment 指令 用 存 指令 指令语 3 汇编语言指令格式 1 指令 用 指令

More information

EPROM/ROM-Based 8-Bit Microcontroller Series

EPROM/ROM-Based 8-Bit Microcontroller Series 这份文档里包含下列型号 : EPROM device(opt) EPROM/ROM-Based 8-Bit Microcontroller Series 功能特性 只有 42 个单字指令 除分支指令为两个周期指令以外其余为单周期指令 PC 寻址范围为 13-bit GOTO 指令能跳转到所有的 ROM/EPROM 地址空间 子程序能返回到所有的 ROM/EPROM 地址空间 能处理 8 位数据 5

More information

DPJJX1.DOC

DPJJX1.DOC 8051 111 2K 1 2 3 ' ' 1 CPU RAM ROM / A/D D/A PC CPU 40 68 10 20 8 51 PIII 8051 2 MCS51 8051 8031 89C51 8051 8031 89C51? MCS51 INTEL INTEL 8031 8051 8751 8032 8052 8752 8051 8051 8051 MCS51 8031 8031

More information

B_CN.book

B_CN.book 6/8 引脚 8 位闪存单片机 高性能 RISC CPU: 只需要学习 35 条指令 : - 除了跳转指令以外, 所有的指令都是单周期指令 工作速度 : - DC 16 MHz 时钟输入 - DC 250 ns 指令周期 最多 512 字的闪存程序存储器 64 字节数据存储器 8 级深硬件堆栈 中断功能 处理器可对程序存储器进行自写 / 读访问 引脚布局与其他 6 引脚 PIC10FXXX 单片机兼容

More information

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

STC15W4K60S4系列增强型PWM波形发生器应用 STC15W4K32S4 系列新增 6 通道增强型带死区控制高精度 PWM 波形发生器应用 STC15W4K32S4 系列的单片机集成了一组 ( 各自独立 6 路 ) 增强型的 PWM 波形发生器 PWM 波形发生器内部有一个 15 位的 PWM 计数器供 6 路 PWM 使用, 用户可以设置每路 PWM 的初始电平 另外,PWM 波形发生器为每路 PWM 又设计了两个用于控制波形翻转的计数器 T1/T2,

More information

DATASHEET SEARCH SITE ==

DATASHEET SEARCH SITE == 1K 一次性编程, 10 位 ADC 型 4 位单片机 特性 基于 SH6610C, 10 位 ADC 型 4 位单片机 OTP ROM: 1K X 16 位 RAM: 124 X 4 位 - 28 系统控制寄存器 - 96 数据存储器 工作电压 : - fosc = 16MHz, VDD = 3.3V - 5.5V 6 个双向 I/O 端口 4 层堆栈 ( 包括中断 ) 一个 8 位自动重载定时

More information

CM ZT1

CM ZT1 Spansion 模拟和微控制器产品 本文档包含有关 Spansion 模拟和微控制器产品的信息 尽管本文档内有原来开发该产品规格的公司名称 富士通 或 Fujitsu, 该产品将由 Spansion 提供给现有客户和新客户 规格的延续本文档内容并不因产品供应商的改变而有任何修改 文档内容的其他更新, 均为改善文档而进行, 并已记录在文档更改摘要 日后如有需要更改文档, 其更改内容也将记录在文档更改摘要

More information

四位微控制器ML64168_ _.doc

四位微控制器ML64168_ _.doc SSSC /4168P 2005 8 4 4, (ADC), LCD Driver, (Buzzer), 1 3 CPU17 CPU 26 33 42 45 48 73 79 85 89 A/D 92 111 125 128 131 SSU4168P 133 143 A: / 153 B: 156 C: 158 D: 160 E: 161 F: 163 G: PAD 167 2 ,, 11 4 CMOS

More information

41239D.book

41239D.book 数据手册 6 引脚 8 位闪存单片机 2007 Microchip Technology Inc. DS41239D_CN 请注意以下有关 Microchip 器件代码保护功能的要点 : Microchip 的产品均达到 Microchip 数据手册中所述的技术指标 Microchip 确信 : 在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一 目前, 仍存在着恶意

More information

MC30P01用户手册V1.0

MC30P01用户手册V1.0 WUHAN ESHINE TECHNOLOGY CO., LTD 用户手册 V1.0 CJC-IC 8 位单片机 1 目录 1 产品简介... 4 1.1 产品特性... 4 1.2 系统框图... 5 1.3 引脚排列... 6 1.4 引脚说明... 7 1.5 引脚结构示意图... 7 2 中央处理器... 11 2.1 指令集... 11 2.2 程序存储器 ROM... 11 2.3 用户数据存储器

More information

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

,Microchip Technology PIC LCD, PIC16F913/914/ 916/917/946 PIC18F6390/6490/8390/8490 PIC16F65J90/85J90 Microchip LCD LCD, Microchip 的优势 LCD PIC, LCD LC LCD PIC 单片机解决方案 集成 LCD 驱动器模块的 PIC 单片机 www.microchip.com/lcd ,Microchip Technology PIC LCD, PIC16F913/914/ 916/917/946 PIC18F6390/6490/8390/8490 PIC16F65J90/85J90 Microchip LCD LCD, Microchip 的优势 LCD PIC,

More information

33023A.book(31027A_cn.fm)

33023A.book(31027A_cn.fm) 第 27 章器件配置位 目录 本章包括以下一些主要内容 : 27.1 简介... 27-2 27.2 配置字位... 27-4 27.3 编程校验 / 代码保护... 27-8 27.4 识别码 ID 的位置... 27-9 27.5 设计技巧... 27-10 27.6 相关应用笔记... 27-11 27.7 版本历史... 27-12 27 器件配置位 2004 Microchip Technology

More information

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

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 1 SH88F516 8051 64K FLASH 1024 EEPROM SH88F516 JET51 S-Lab Keil µ vision ISP51 Keil µ vision ISP51 ISP51 PC RS232 MCU SH88F516 SH88F516 1.1 SH88F516 1.1 SH88F516 SH88Fxx: QFP44, DIP40 RAM Flash E2 ADC

More information

请注意以下有关 Microchip 器件代码保护功能的要点 : Microchip 的产品均达到 Microchip 数据手册中所述的技术指标 Microchip 确信 : 在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一 目前, 仍存在着恶意 甚至是非法破坏

请注意以下有关 Microchip 器件代码保护功能的要点 : Microchip 的产品均达到 Microchip 数据手册中所述的技术指标 Microchip 确信 : 在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一 目前, 仍存在着恶意 甚至是非法破坏 查询 PIC16F887( 汉 ) 供应商 捷多邦, 专业 PCB 打样工厂,24 小时加急出货 PIC16F882/883/884/886/887 数据手册 采用纳瓦技术的 28/40/44 引脚 增强型闪存 8 位 CMOS 单片机 2007 Microchip Technology Inc. 初稿 DS41291D_CN 请注意以下有关 Microchip 器件代码保护功能的要点 : Microchip

More information

adsd

adsd HS8108 电脑开关电源控制器 概述 : HS8108 是 PWM 开关电源控制器, 主要用于台式 PC( 个人电脑 ) 的开关电源部分 HS8108 能够提供开关电源所有的控制和保护功能 : PWM 脉宽调制及推挽输出, 具有过压 欠压 过流 过功耗 远程控制 AC 掉电保护等功能, 两个内嵌的精密 431 调节器用作稳定 5V 辅助电源和 33V 输出电压, 内嵌的精密振荡器可以保证各种延时的精确性

More information

FT25H16

FT25H16 TX- F01I81xx ATASHEET TX01I81xx www.xdssemi.com /001 目录 TX-F01l81-xx... 1 ATASHEET... 1 1. 特性... 5 1.1 程序存储器... 6 1.2 脚位图... 7 2. SFR... 8 2.1 地址映射... 8 2.1.1. SFR,BANK0... 8 2.1.2. SFR,BANK1... 9 2.1.3.

More information

M8Rxxx 指令集说明 Version 年 11 月 上海磐芯电子有限公司 SHANGHAI MASSES ELECTRONIC Co., Ltd. 本公司保留对产品在可靠性, 功能和设计方面的改进作进一步说明的权利 说明文档的更改, 恕不另行通知

M8Rxxx 指令集说明 Version 年 11 月 上海磐芯电子有限公司 SHANGHAI MASSES ELECTRONIC Co., Ltd. 本公司保留对产品在可靠性, 功能和设计方面的改进作进一步说明的权利 说明文档的更改, 恕不另行通知 M8Rxxx 指令集说明 Version 1.04 2014 年 11 月 上海磐芯电子有限公司 SHANGHAI MASSES ELECTRONIC Co., Ltd. 本公司保留对产品在可靠性, 功能和设计方面的改进作进一步说明的权利 说明文档的更改, 恕不另行通知 修正记录 版本 日期 描述 Ver1.02 2014-5-15 补全指令说明 Ver1.03 2014-10-8 勘误 Ver1.04

More information

PIC24 MSSP FRM Rev A.book

PIC24 MSSP FRM Rev A.book 58 MSSP 58.1... 58-2 58.2... 58-2 58.3... 58-12 58.4 SPI... 58-13 58.5 I2C... 58-22 58.6 /... 58-58 58.7... 58-58 58.8... 58-59 58.9... 58-60 58.10... 58-61 58 MSSP 2012 Microchip Technology Inc. DS30627A_CN

More information

untitled

untitled 0755 85286856 0755 82484849 路 4.5V ~5.5V 流 @VDD=5.0V,

More information

GW2A 系列 FPGA 产品 GW2A-18 器件 Pinout Version History 日期 版本 2016/8/ /9/ /11/ /2/ /6/ /6/ /8

GW2A 系列 FPGA 产品 GW2A-18 器件 Pinout Version History 日期 版本 2016/8/ /9/ /11/ /2/ /6/ /6/ /8 Version History 日期 版本 2016/8/4 1.00 2016/9/2 1.01 2016/11/29 1.02 2017/2/16 1.03 2017/6/9 1.04 2018/6/27 1.05 2018/8/8 1.06 新增 MG196 PBGA256S 封装信息 ; 修改 SSPI 模式的配置功能 ; 增加 QN88 封装信息 2019/3/27 1.07 增加电源供电要求

More information

规格书

规格书 MC31P5120 用户手册 ( 原产品名 MC31P11) SinoMCU 8 位单片机 2018/01/12 上海晟矽微电子股份有限公司 Shanghai SinoMCU Microelectronics Co., Ltd. 本公司保留对产品在可靠性 功能和设计方面的改进作进一步说明的权利 用户手册的更改, 恕不另行通知 目录 1 产品简介... 4 1.1 产品特性... 4 1.2 系统框图...

More information

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

目录 1 产品简介 功能特性 引脚图 引脚描述 中央处理器 (CPU) 存储器 程序存储器 (OTP ROM) 通用数据存储器 (RAM) 特殊功 SQ015L 数据手册 14 引脚 8 位 I/O 型 OTP 单片机 - 1 - 目录 1 产品简介... 5 1.1 功能特性... 5 1.2 引脚图... 6 1.3 引脚描述... 7 2 中央处理器 (CPU)... 9 2.1 存储器... 9 2.1.1 程序存储器 (OTP ROM)... 9 2.1.2 通用数据存储器 (RAM)... 12 2.1.3 特殊功能寄存器 (SFR)...

More information

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

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

More information

QG153中文版说明书.docx

QG153中文版说明书.docx EPROM/ROM-Based 8-Bit Microcontroller Series 第 1 页 目录 目录...2 1.0 注意事项...4 2.0 功能特性...5 3.0 概述...6 4.0 结构图...6 5.0 管脚图...7 5.1 管脚功能描述......7 6.0 存储器结构...8 6.1 程序存储器...8 6.2 数据存储器...9 7.0 功能介绍...11 7.1 寄存器操作...11

More information

Electrical and Optical Clock Data Recovery Solutions - Data Sheet

Electrical and Optical Clock Data Recovery Solutions - Data Sheet 32 GBd N1076A 32 GBd N1077A / 64 GBd N1076B 64 GBd N1078A / 64 GBd NRZ PAM4 O/E < 100 fs RMS JSA PLL ...3...4...4...5 /...6...8...11 N1076A...12 N1076B DCA-M...13 N1077A...15 N1078A DCA-M...17...21...

More information

PIC单片机16F84的内部硬件资源(一)

PIC单片机16F84的内部硬件资源(一) PIC 单片机 16F84 的内部硬件资源 ( 一 ) 我们已经知道要单片机工作, 就需用汇编语言编制程序 而对某个 PIC 单片机编程时, 还需对选用的 PIC 单片机内部硬件资源有所了解 这里介绍 PIC16F84 单片机的内部结构, 如图 1 所示的框图 由图 1 看出, 其基本组成可分为四个主要部分, 即运算器 ALU 和工作寄存器 W; 程序存储器 ; 数据存储器和输入 / 输出 (I/O)

More information

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

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 1 1 a. 0.5V 5V 1Hz 1MHz b. 0.1% 2 : a. 0.5V 5V 1Hz 1MHz b. 0.1% (3) a. 0.5V 5V 100 s b. 1% 4 1 10 5 1MHz 6 1 2 1 0.1Hz 10MHz 0.5V 5V 0.01% 10s 2 0.5V 5V 1Hz 1kHz 10% 90% 1% 3 1Hz 1MHz 1% EPM7128SLC84-15

More information

第 9 章看门狗定时器 程序监控定时器和上电延时定时器 目录 本章包括下列主题 : 9.1 简介 看门狗定时器 程序监控定时器和上电延时定时器控制寄存器 看门狗定时器工作原理 DMT 工作原理 中断和复位产生

第 9 章看门狗定时器 程序监控定时器和上电延时定时器 目录 本章包括下列主题 : 9.1 简介 看门狗定时器 程序监控定时器和上电延时定时器控制寄存器 看门狗定时器工作原理 DMT 工作原理 中断和复位产生 第 9 章看门狗定时器 程序监控定时器和上电延时定时器 目录 本章包括下列主题 : 9.1 简介... 9-2 9.2 看门狗定时器 程序监控定时器和上电延时定时器控制寄存器... 9-4 9.3 看门狗定时器工作原理... 9-12 9.4 DMT 工作原理... 9-16 9.5 中断和复位产生... 9-18 9.6 I/O 引脚... 9-21 9.7 调试和节能模式下的操作... 9-21

More information

规格书

规格书 MC30P6070 用户手册 SinoMCU 8 位单片机 2016/5/31 上海晟矽微电子股份有限公司 Shanghai SinoMCU Microelectronics Co., Ltd. 本公司保留对产品在可靠性 功能和设计方面的改进作进一步说明的权利 用户手册的更改, 恕不另行通知 目录 1 产品简介... 4 1.1 产品特性... 4 1.2 订购信息... 5 1.3 系统框图...

More information

一、

一、 TC78P153 ( 文件编号 :S&CIC0994) 1. 概括描述 TC78P153 是采用低功耗高速 CMOS 工艺设计开发的 8 位微控制器 其内部有 1024*13 位一次性可编程只读存储器 (OTP-ROM) 它提供一个保护用于防止用户在 OTP-ROM 中的程序被盗取 ; 拥有 15 个代码选项位以满足用户定制代码功能的需要 利用其 OTP-ROM 特性,TC78P153 可以使用户方便的开发和校验程序.

More information

OTP-Based 8-Bit Microcontroller Series

OTP-Based 8-Bit Microcontroller Series 苏州锋驰微电子有限公司 OTP-Based 8-Bit Microcontroller Series FC151 SZFC 2017/6/19 功能特色 : 苏州锋驰微电子有限公司 SUZHOU FENGCHI ELECTRONIC CO.:LTD *PB3 口软件可控上拉 * 硬件控制端口强弱驱动电流 修正记录 版本号日期内容 V10 V20 V30 2016 年 6 月 2017 年 7 月 2017

More information

SD3101 带 UART 和 I 2 C 的三差分通道计量 SOC 特点 高精度 ADC,24 位数据输出, 输入增益可选 和 16,3 个差分或 5 个伪差分通道, 可测量信号的真有效值 瞬时值和频率 8 位 RISC 低功耗 MCU,49 条指令,6 级堆栈, 在 2.097MHz

SD3101 带 UART 和 I 2 C 的三差分通道计量 SOC 特点 高精度 ADC,24 位数据输出, 输入增益可选 和 16,3 个差分或 5 个伪差分通道, 可测量信号的真有效值 瞬时值和频率 8 位 RISC 低功耗 MCU,49 条指令,6 级堆栈, 在 2.097MHz 带 UART 和 I C 的三差分通道计量 SOC 特点 高精度 ADC, 位数据输出, 输入增益可选 8 和 6, 个差分或 个伪差分通道, 可测量信号的真有效值 瞬时值和频率 8 位 RISC 低功耗 MCU, 条指令,6 级堆栈, 在.0MHz 工作时钟,MCU 部分在.V 工作电压下电流典型值为 00uA;kHz 时钟待机模式下工作电流为.6uA, 休眠模式电流小于 ua 6k Bytes

More information

PowerPoint Presentation

PowerPoint Presentation 7.2 并行接口 二. 可编程并行接口芯片 8255A 的功能及其应用 与 CPU 一侧相连的引脚 D0 PA0 ~ ~ ~ ~ ~ D7 PA7 RESET PC7 WR RD PC4 PC3 PC0 A0 PB0 A1 PB7 CS PA 口 PC 口上半部 PC 口下半部 PB 口 A 组 B 组 与 I/O 设备相连的引脚 7.2 并行接口二. 可编程并行接口芯片 8255A 的功能及其应用

More information

规格书

规格书 数据手册 64/44/Die 引脚 8 位 LCD 型 OTP 单片机 HOLYCHIP 公司保留对以下所有产品在可靠性 功能和设计方面的改进作进一步说明的权利 HOLYCHIP 不承担由本手册所涉及的产品或电路的运用和使用所引起的任何责任,HOLYCHIP 的产品不是专门设计来应用于外科植入 生命维持和任何 HOLYCHIP 产品产生的故障会对个体造成伤害甚至死亡的领域 如果将 HOLYCHIP

More information

Cerris IROS

Cerris IROS 上海海栎创微电子有限公司 CSM212/216/224 数据手册 具有专用电容检测模块的 8 位单片机 Rev: V1.2 www.hynitron.com CSM212/216/224 是一款具有高性能精简指令集且集成电容触控功能的 EERPOM 型 8051 单片机 此单 片机集成有硬件触控 CDC 模块, 可多次编程的 EEPROM 存储器和常用通讯接口, 为各种触摸按键的应用 提供了一种简单而又有效的实现方法

More information

Microsoft Word - sim6xF0xC-0225.doc

Microsoft Word - sim6xF0xC-0225.doc 8-pin 内置 EEPROM 增强型八位 FLASH 单片机 技术相关信息 应用范例 -HA0075S MCU 复位电路和振荡电路的应用范例 特性 CPU 特性 工作电压 : f SYS =8MHz:2.2V~5.5V f SYS =12MHz:2.7V~5.5V f SYS =20MHz:4.5V~5.5V V DD =5V, 系统时钟为 20MHz 时, 指令周期为 0.2µs 提供省电模式和唤醒功能,

More information

HS2303-P

HS2303-P HS9100-T 产品说明书 Ver 4.00L 1. 概述 HS9100-T 是一款低成本 高速度 高抗干扰的 8 位 CMOS 单片机 基于 RISC 架构, 仅有 35 条指令 除程序跳转需要两个周期外, 其余所有的指令都是单周期指令 内部集成有 1K*13-bit 的一次性可编程只读电存储器 (OTP-ROM) 上电复位(POR) 欠压复位 (BOR 1.6V) 定时器 TMR0 看门狗定时器

More information

Microsoft Word - ET6621.doc

Microsoft Word - ET6621.doc Etek Microelectronics ET6621 LCD 控制驱动电路 概述 ET6621 是用来对 MCU 的 I/O 口进行扩展的外围设备 显示矩阵为 32 4, 是一个 128 点阵式存储器映射多功能 LCD 驱动电路 ET6621 的软件特性使它很适合应用于 LCD 显示, 包括 LCD 模块和显示子系统 在主控制器和 ET6621 之间的接口应用只需要 3 或 4 个端口 Power

More information

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

额定规格 / 性能 单相 标准认证 UL CSA. NO. EN-- 额定规格输入 环境温度 项目电压电平额定电压使用电压范围输入电流型号动作电压复位电压 - B ma 以下 DC~V DC.~V DC.V 以下 DC.V 以上 - BL ma 以下 输出 项目 * 根据环境温度的不同而不同 详情请 加热器用固态继电器 单相 CSM_-Single-phase_DS_C 带纤细型散热器的一体式小型 SSR 备有无过零触发型号, 用途广泛 符合 RoHS 标准 包含无过零触发型号, 产品线齐全 输出回路的抗浪涌电压性能进一步提高 根据本公司的试验条件 小型 纤细形状 除了 DIN 导轨安装, 还可进行螺钉安装 获取 UL CSA EN 标准 TÜV 认证 请参见 共通注意事项 种类 关于标准认证机型的最新信息,

More information

目录 1 产品概要 产品特性 芯片模式 订购信息 引脚排列 端口说明 电气特性 极限参数 直流电气特性 交流电气特性 CPU 及

目录 1 产品概要 产品特性 芯片模式 订购信息 引脚排列 端口说明 电气特性 极限参数 直流电气特性 交流电气特性 CPU 及 SinoMCU 8 位单片机 MC30P6070 用户手册 V1.4 上海晟矽微电子股份有限公司 Shanghai SinoMCU Microelectronics Co., Ltd. 本公司保留对产品在可靠性 功能和设计方面的改进作进一步说明的权利 本文档的更改, 恕不另行通知 目录 1 产品概要... 4 1.1 产品特性... 4 1.2 芯片模式... 5 1.3 订购信息... 5 1.4

More information

Section 9. Watchdog, Deadman, and Power-up Timers

Section 9. Watchdog, Deadman, and Power-up Timers 第 9 章看门狗定时器 程序监控定时器和上电延时定时器 目录 本章包括下列主题 : 9.1 简介... 9-2 9.2 看门狗定时器 程序监控定时器和上电延时定时器控制寄存器... 9-4 9.3 看门狗定时器工作原理... 9-13 9.4 DMT 工作原理... 9-17 9.5 中断和复位产生... 9-19 9.6 I/O 引脚... 9-22 9.7 调试和节能模式下的操作... 9-22

More information

<463A5C CC9E4C6B55CB7A2C9E45CCBB5C3F7CAE95C D E3029CBB5C3F7CAE92E777073>

<463A5C CC9E4C6B55CB7A2C9E45CCBB5C3F7CAE95C D E3029CBB5C3F7CAE92E777073> 1. 概述 HS2303-PT 产品说明书 Ver 1.0 HS2303-PT 是一款低成本 高速度 高抗干扰, 带射频传输的 8 位 CMOS 制造的单片机 工作电压在 2.0~3.6V 之间, 电池供电时, 能保证绝大多数电池在电量完全耗尽前仍能正常使用 ; 正常工作温度范围在 -20 ~70 之间 单片机基于 RISC 架构, 仅有 35 条指令 除程序跳转需要两个周期外, 其余所有的指令都是单周期指令

More information

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

Microsoft Word - EM78P156K Product Spec v1[1].3 _ _.doc EM78P156K 8 位 OTP 微控制器 产品规格书 版本 1.3 义隆电子股份有限公司 2012.07 本文内容是由英文规格书翻译而目的是为了您的阅读更加方便 它无法跟随原稿的更新, 文中可能存在翻译上的错误, 请您参考英文规格书以获得更准确的信息 商标告知 : IBM 为一个注册商标,PS/2 是 IBM 的商标之ㄧ. Windows 是微软公司的商标 ELAN 和 ELAN 标志是义隆电子股份有限公司的商标

More information

规格书

规格书 8BIT I/O 型 OTP MCU Version 1.05 2018 年 9 月 上海磐芯电子有限公司 SHANGHAI MASSES ELECTRONIC Co., Ltd. 本公司保留对产品在可靠性, 功能和设计方面的改进作进一步说明的权利 数据手册的更改, 恕不另行通知 本公司不承担由本手册所涉及的产品或电路的运用和使用所引起的任何责任, 本公司的产品不是专门设计来应用于外科植入 生命维持和任何本公司产品的故障会对个体造成伤害甚至死亡的领域

More information

<4D F736F F D203034CAB5D1E9CBC D20B5C4494F20BDD3BFDACAB5D1E92E646F63>

<4D F736F F D203034CAB5D1E9CBC D20B5C4494F20BDD3BFDACAB5D1E92E646F63> 实验四 ARM 的 I/O 接口实验 一 实验目的 1. 了解 S3C44B0X 的通用 I/O 接口 2. 掌握 I/0 功能的复用并熟练的配置, 进行编程实验二 实验设备 1. EL-ARM-830 教学实验箱,PentiumII 以上的 PC 机, 仿真器电缆 2. PC 操作系统 WIN98 或 WIN2000 或 WINXP,ARM SDT2.5 或 ADS1.2 集成开发环境, 仿真器驱动程序

More information

目录

目录 ALTERA_CPLD... 3 11SY_03091... 3 12SY_03091...4....5 21 5 22...8 23..10 24..12 25..13..17 3 1EPM7128SLC.......17 3 2EPM7032SLC.......18 33HT46R47......19..20 41..20 42. 43..26..27 5151DEMO I/O...27 52A/D89C51...28

More information

MICROCHIP EVM Board : APP APP001 PICmicro Microchip APP001 40pin PDIP PICmicro Design Tips Character LCM Temperature Sensor Application I/O Pi

MICROCHIP EVM Board : APP APP001 PICmicro Microchip APP001 40pin PDIP PICmicro Design Tips Character LCM Temperature Sensor Application I/O Pi MICROCHIP EVM Board : APP001 1-1. APP001 PICmicro Microchip APP001 40pin PDIP PICmicro Design Tips Character LCM Temperature Sensor Application I/O Pin 16 I/O Extension Interface 1-2. APP001 Block_A Block_B

More information

41607A.book

41607A.book 14 引脚 8 位闪存单片机 高性能 RISC CPU: 优化的 C 编译器架构 仅需学习 49 条指令 可寻址 3.5 KB 的线性程序存储空间 可寻址 128 字节的线性数据存储空间 工作速度 : - DC 20 MHz 时钟输入 - DC 200 ns 指令周期 带有自动现场保护的中断功能 带有可选上溢 / 下溢复位的 16 级深硬件堆栈 直接 间接和相对寻址模式 : - 两个完全 16 位文件选择寄存器

More information

PIC16F F MPLAB 08 16F LED 15 LED

PIC16F F MPLAB 08 16F LED 15 LED PIC16F877 PIC16F877 03 16F877 05 06 MPLAB 08 16F877 13 LED 15 LED 17 20 24 2 PIC16F877 PIC16F877 DIP VDD VSS CLOCK CPU :,AND,OR,XOR ROM: CPU ROM RAM: CPU,CPU I/O:CPU, CPU,, 16F877 RAM 512 128 Bank Bank

More information

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

Microsoft Word - 第1章 MCS-51单片机基础.docx 51 单片机应用开发实战手册 作者 : 华清远见 第 1 章 MCS-51 单片机基础 本章目标 单片机作为嵌入式微控制器在工业测控系统 智能仪器和家用电器中得到广泛 应用 虽然单片机的品种很多, 但 MCS-51 系列单片机仍不失为单片机中的主流机 型 本章主要介绍 MCS-51 单片机的基础知识和学习要点, 以目前应用最为广泛的 AT89SXX 系列单片机为例, 介绍单片机的历史发展 应用领域

More information

R/W

R/W (HD44780 KS0066 ) 3 3 5 6 10 14 HD44780/KS0066 16 2 LCM 8 1 40 4 LCD HD44780/KS0066 HD44100 IC PCB 0.1 CMOS 1. 2. 3. 4. 5. RH60% 6. 1. 2. 3. PCB 3 4. 5. 6. 1. 280 C 2. 3 4s 3. 4. 5. 3 5 1. 2. IC 3. DC-DC

More information

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

MSP430X1XX 系列微控制器具有以下特征 结构框图 超低功耗结构体系 A 额定工作电流在 1MHz V 工作电压 C11X P11X 和 E11X 为 V 从备用模式唤醒为 6 S 丰富的中断能力减少了查询的需要灵活强大的处理能力源操作数有七种寻址模 新一代超低功耗 16 位单片机 TI MSP430 系列 美国 TI 公司的 MSP430 系列单片机可以分为以下几个系列 X1XX X3XX X4XX 等等 而且 在不断发展 从存储器角度 又可分为 ROM C 型 OTP P 型 EPROM E 型 Flash Memory F 型 系列的全部成员均为软件兼容 可以方便地在系列各型号间移植 MSP430 系列单片机 的 MCU 设计成适合各种应用的

More information

深圳明和科技

深圳明和科技 500mA 同步降压 DC/DC 转化器 ME3101 系列 描述 : ME3101 是一款同步整流降压型 DC/DC 内置 0.6ΩPMOS 驱动管和 0.7ΩNMOS 开关管 兼容陶瓷电容, 外部只需一只电感和两只电容, 可高效率的输出 500mA 内置振荡器电路, 振荡频率可达 1.2MHZ ME3101 为 PFM/PWM 型自动开关控制模式, 在满载时也能快速响应, 达到纹波小, 效率高的效果

More information

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

版权声明 龙芯 免责声明 据 龙芯 2 Building No.2, Loongson Industrial Park, Zhongguancun Environmental Protection Park (Tel) (Fax) 2018 9 29 龙芯 版权声明 龙芯 免责声明 据 龙芯 2 Building No.2, Loongson Industrial Park, Zhongguancun Environmental Protection Park (Tel) 010-62546668 (Fax) 010-62600826 阅读指南 龙芯 1C101 处理器数据手册 龙芯 1C101 修订历史 序号 更新日期 版本号

More information

一、 概述

一、 概述 概述 FZH119 是一种 LED( 发光二极管显示器 ) 驱动控制与用电路, 内部集成有 MCU 数字接口 数据锁存器 LED 驱动等电路 本产品性能优良, 质量可靠 主要应用于电子产品 LED 显示屏驱动 采用 SOP28 的封装形式 特性说明 采用 CMOS 工艺 显示模式 (8 段 16 位 ) 辉度调节电路 ( 占空比 8 级可调 ) 两线串行接口 (SCLK,DIN) 振荡方式 : 内置

More information

SD3102 带显示驱动 I 2 C 和按键的单差分通道计量 SOC 特点 高精度 ADC,24 位数据输出, 输入增益可选 和 16, 单差分通道, 可测量信号的真有效值和瞬时值 8 位 RISC 低功耗 MCU,49 条指令,6 级堆栈, 在 2.048MHz 工作时钟,MCU 部分

SD3102 带显示驱动 I 2 C 和按键的单差分通道计量 SOC 特点 高精度 ADC,24 位数据输出, 输入增益可选 和 16, 单差分通道, 可测量信号的真有效值和瞬时值 8 位 RISC 低功耗 MCU,49 条指令,6 级堆栈, 在 2.048MHz 工作时钟,MCU 部分 带显示驱动 I C 和按键的单差分通道计量 SOC 特点 高精度 ADC, 位数据输出, 输入增益可选 8 和 6, 单差分通道, 可测量信号的真有效值和瞬时值 8 位 RISC 低功耗 MCU,9 条指令,6 级堆栈, 在.08MHz 工作时钟,MCU 部分在.V 工作电压下电流典型值为 00uA;kHz 时钟待机模式下工作电流为 7.6uA, 休眠模式电流小于 ua 6k Byts OTP 程序存储器,5

More information

16位A/D转换器

16位A/D转换器 16 位 A/D 转换器 anyh 是双竞公司新推出的 16 位 A/D 转换器, 具有两个全差分输入通道, 可用于测量低频模拟信号 这种器件带有增益可编程放大器, 可通过软件编程来直接测量传感器输出的各种微小信号 具有分辨率高 动态范围广 自校准等特点, 因而非常适合于工业控制 仪表测量等领域 16 位 A/D 转换器 1. 概述 是双竞公司新推出的 16 位 A/D 转换器, 具有两个全差分输入通道,

More information

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

单片机原理及应用实验指导书.doc 1 2 3 4...2...4...9...9 AEDK598 MCS51...9 MCS51...10...10...10...10...10...10...11 P1...12...12...12....12...12...13 P3...14...14...14...14...14...14 I/O...15...15...15...15...15...16...17...17...17...17...17...18...19...19

More information

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

管脚配置 底板插口配置 芯片大小 (mil) 2-2 - HOLTEK HT1621 LCD 驱动器 特性 * 工作电压 2.4 5.2V * 内嵌 256KHz RC 振荡器 * 可外接 32KHz 晶片或 256KHz 频率源输入 * 可选 1/2 或 1/3 偏压和 1/2 1/3 或 1/4 的占空比 * 片内时基频率源 * 蜂鸣器可选择两种频率 * 节电命令可用于减少功耗 * 内嵌时基发生器和看门狗定时器 WDT * 时基或看门狗定时器溢出输出

More information

MSP430单片机简介

MSP430单片机简介 . September 14, 2012 . 1 简介 MSP430 单片机特点超低功耗 2 MSP430 时钟系统 3 MSP430 的端口 4 定时器看门狗定时器定时器 A 5 示例 MSP430 单片机特点. 简介 MSP430 单片机是美国德州仪器 (TI) 公司 1996 年开始推向市场的一种 16 位超低功耗 具有精简指令集的混合信号处理器 它将多个不同功能的模拟电路 数字电路模块和微处理器集成在了一个芯片上

More information

目录 1 产品概要 产品特性 芯片模式 订购信息 引脚排列 端口说明 电气特性 极限参数 直流电气特性 交流电气特性 CPU

目录 1 产品概要 产品特性 芯片模式 订购信息 引脚排列 端口说明 电气特性 极限参数 直流电气特性 交流电气特性 CPU SinoMCU 8 位单片机 MC30P6060 用户手册 V1.7 上海晟矽微电子股份有限公司 Shanghai SinoMCU Microelectronics Co., Ltd. 本公司保留对产品在可靠性 功能和设计方面的改进作进一步说明的权利 本文档的更改, 恕不另行通知 目录 1 产品概要... 4 1.1 产品特性... 4 1.2 芯片模式... 5 1.3 订购信息... 5 1.4

More information