《HT46R064规格书》由会员分享,可在线阅读,更多相关《HT46R064规格书(103页珍藏版)》请在金锄头文库上搜索。
1、 增强增强 A/D 型八位型八位 OTP 单片机单片机 HT46R064B/065B/066B 版本:V1.00 日期:2011-04-13 捷多邦,您值得信赖的P C B 打样专家! Rev 1.00 2011-04-13 i 目录目录 目目 录录 技术相关信息技术相关信息 . 1 特性特性 . 1 概述概述 . 2 选型表选型表 . 2 方框图方框图 . 2 引脚图引脚图 . 3 引脚说明引脚说明 . 4 HT46R064B . 4 HT46R065B . 5 HT46R066B . 6 极限参数极限参数 . 7 直流电气特性直流电气特性 . 8 交流电气特性交流电气特性 . 9 ADC
2、特性特性 . 10 上电复位特性上电复位特性 . 10 系统结构系统结构 . 11 时序和流水线结构 . 11 程序计数器 PC . 12 堆栈 . 12 算术逻辑单元 ALU . 13 程序存储器程序存储器 . 14 结构 . 14 特殊向量 . 14 查表 . 15 查表范例 . 15 表格读取程序范例 . 16 数据存储器数据存储器 . 17 结构 . 17 特殊数据存储器 . 17 Rev 1.00 2011-04-13 ii 目录目录 特殊功能寄存器特殊功能寄存器 . 19 间接寻址寄存器 IAR0,IAR1 . 19 间接寻址指针 MP0,MP1 . 19 间接寻址程序范例 . 1
3、9 累加器 ACC . 19 程序计数器低字节寄存器 PCL . 20 状态寄存器 STATUS . 20 输入/输出口和控制寄存器 . 20 系统控制寄存器 CTRL0,CTRL1 . 21 唤醒功能寄存器 PAWK . 22 上拉电阻寄存器 PAPU, PBPU, PCPU, PDPU . 22 软件控制的 COM 口寄存器 SCOMC . 22 振荡器振荡器 . 23 系统振荡器概述 . 23 系统时钟配置 . 23 外部晶体/陶瓷振荡器 HXT . 23 外部 RC 振荡器 ERC . 24 内部 RC 振荡器 HIRC . 24 外部 32768Hz 晶体振荡器 LXT. 24 内部
4、低速振荡器 LIRC . 25 工作模式工作模式 . 26 模式的类型与选择 . 26 工作模式控制 . 26 切换模式 . 26 静态电流控制 . 27 唤醒 . 27 看门狗定时器看门狗定时器 . 28 看门狗的使用 . 28 复位和初始化复位和初始化 . 30 复位功能 . 30 Rev 1.00 2011-04-13 iii 目录目录 复位初始状态 . 31 输入输入/输出端口输出端口 . 34 上拉电阻 . 34 PA 口唤醒 . 34 输入/输出端口控制寄存器 . 36 引脚共用功能 . 36 引脚功能重置 - HT46R066B . 37 输入/输出引脚结构 . 37 编程注意事
5、项 . 38 定时定时/计数器计数器 . 39 配置定时/计数器输入时钟源 . 39 定时/计数寄存器 - TMR0, TMR1 . 39 定时/计数控制寄存器 - TMR0C, TMR1C . 39 定时器模式 . 42 外部事件计数模式 . 42 脉冲宽度测量模式 . 43 预分频器 . 43 PFD 功能 . 44 输入/输出接口 . 44 编程注意事项 . 44 定时/计数器应用范例 . 45 时基功能 . 45 脉冲宽度调制脉冲宽度调制 - PWM . 46 PWM 工作模式 . 46 PWM 输出控制 . 48 PWM 编程应用范例 . 48 A/D 转换器转换器 . 49 A/D
6、 简介 . 49 A/D 转换器数据寄存器 - ADRL,ADRH . 49 Rev 1.00 2011-04-13 iv 目录目录 A/D 转换控制寄存器 - ADCR, ACSR . 50 A/D 输入引脚 . 52 A/D 转换步骤 . 52 编程注意事项 . 53 A/D 转换功能 . 53 A/D 转换应用范例 . 54 中断中断 . 56 中断寄存器 . 56 中断操作 . 58 中断优先级 . 59 外部中断 . 59 定时/计数器中断 . 59 A/D 转换器中断 . 60 时基中断 . 60 编程注意事项 . 60 带带 SCOM 功能的功能的 LCD . 61 LCD 操作
7、 . 61 LCD 偏压控制 . 61 配置选项配置选项 . 63 应用电路应用电路 . 63 指令集介绍指令集介绍 . 64 简介 . 64 指令周期 . 64 数据的传送 . 64 算术运算 . 64 逻辑和移位运算 . 64 分支和控制的转换 . 64 位运算 . 65 查表运算 . 65 其它运算 . 65 Rev 1.00 2011-04-13 v 目录目录 指令设定一览表 . 66 指令定义指令定义 . 68 封装信息封装信息 . 77 16-pin DIP (300mil)外形尺寸 . 77 16-pin NSOP (150mil) 外形尺寸 . 79 20-pin DIP (3
8、00mil) 外形尺寸 . 80 20-pin SOP (300mil) 外形尺寸 . 81 20-pin SSOP (150mil) 外形尺寸 . 82 24-pin SKDIP (300mil) 外形尺寸 . 83 24-pin SOP (300mil) 外形尺寸 . 85 24-pin SSOP (150 mil) 外形尺寸 . 86 28-pin SKDIP (300mil) 外形尺寸 . 87 28-pin SOP (300mil) 外形尺寸 . 88 28-pin SSOP (150mil) 外形尺寸 . 89 包装带和卷轴规格包装带和卷轴规格 . 90 卷轴尺寸 . 90 运输带
9、尺寸 . 91 Rev 1.00 2011-04-13 1 HT46R064B/065B/066B 增强增强A/D型型八八位位OTP单片机单片机 技术相关信息技术相关信息 应用范例 HA0075S MCU 重置电路及振荡电路应用 特性特性 CPU 特性特性 工作电压: fSYS = 4MHz:2.2V5.5V fSYS = 8MHz:3.0V5.5V fSYS = 12MHz:4.5V5.5V 在 VDD=5V,系统频率为 12MHz 时,指令周期为 0.33s 振荡模式: 外部高频晶振 HXT 外部 RC ERC 内部高频 RC HIRC 外部低频晶振 LXT 3 种工作模式:正常模式,低速
10、模式,休眠模式 内部集成 4MHz,8MHz 和 12MHz RC 振荡器,不需要增加外部元器件 看门狗定时器 LIRC 振荡用于看门狗时钟 所有指令都可在 1 个或 2 个指令周期内完成 查表指令 63 条功能强大的指令系统 多达 6 层硬件堆栈 位操作指令 低电压复位功能 提供多种封装类型 周边特性:周边特性: 多达 26 个双向输入/输出口 多达 8 个通道 12 位 ADC 多达 2 个通道 8 位 PWM 4 个软件控制 SCOM 口 1/2 bias LCD 驱动 一个与 I/O 口复用的外部中断输入 多达 2 个 8 位可编程定时/计数器, 具有溢出中断和预分频功能 时基功能 P
11、FD 功能 Rev 1.00 2011-04-13 2 HT46R064B/065B/066B 概述概述 增强 A/D 型系列单片机是一款 8 位具有高性能精简指令集的单片机,应用相当广泛。秉承HOLTEK 单片机具有的低功耗、I/O 灵活、定时器功能、振荡类型可选、休眠和唤醒功能、看门狗和低电压复位等丰富的功能选项,增强 A/D 型单片机具有极高的性价比,其内部集成了系统振荡器HIRC,提供三种频率选择,不需要增加外部元器件。可以广泛适用于各种应用,例如工业控制,消费类产品,家用电器子系统控制等。 选型表选型表 单片机型号单片机型号 ROM RAM I/O Timer Time Base H
12、IRC (MHz) RTC (LXT) LCD SCOM A/D PWM PFD Stack 封装类型封装类型 HT46R064B 1K14 648 18 8-bit1 1 4/8/12 12-bit4 8-bit1 4 16DIP/NSOP 20DIP/SOP/SSOP HT46R065B 2K15 968 22 8-bit2 1 4/8/12 4 12-bit4 8-bit1 6 16DIP/NSOP 20DIP/SOP/SSOP 24SKDIP/SOP/SSOP HT46R066B 4K15 1288 26 8-bit2 1 4/8/12 4 12-bit8 8-bit2 6 16DIP
13、/NSOP 20DIP/SOP/SSOP 24/28SKDIP/SOP/SSOP 方框图方框图 以下为主要功能模块的方框图 Rev 1.00 2011-04-13 3 HT46R064B/065B/066B 引脚图引脚图 注注:括号内的引脚为引脚功能重置后的引脚 Rev 1.00 2011-04-13 4 HT46R064B/065B/066B 引脚说明引脚说明 HT46R064B 引脚名称引脚名称 功能功能 OPT I/T O/T 说明说明 PA0/AN0 PA0 PAPU PAWK ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻和唤醒功能 AN0 ADCR AN A/D 通道
14、 0 PA1/PFD/AN1 PA1 PAPU PAWK ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻和唤醒功能 PFD CTRL0 CMOS PFD 输出 AN1 ADCR AN A/D 通道 1 PA2/TC0/AN2 PA2 PAPU PAWK ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻和唤醒功能 TC0 ST 外部定时器 0 时钟输入脚 AN2 ADCR AN A/D 通道 2 PA3/INT/AN3 PA3 PAPU PAWK ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻和唤醒功能 INT ST 外部中断输入 AN3 ADCR AN
15、A/D 通道 3 PA4/PWM0 PA4 PAPU PAWK ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻和唤醒功能 PWM0 CTRL0 CMOS PWM 输出 PA5/OSC2 PA5 PAPU PAWK ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻和唤醒功能 OSC2 CO OSC 振荡器引脚 PA6/OSC1 PA6 PAPU PAWK ST CMOS 通用 I/O 口, 可通过寄存器设置上拉电阻和唤醒功能 OSC1 CO OSC 振荡器输入脚 PA7/RES PA7 PAWK ST NMOS 通用 I/O 口,可通过寄存器设置唤醒功能 RES CO
16、ST 复位输入脚 PB0PB5 PBn PBPU ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻 PC0PC3 PCn PCPU ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻 VDD VDD PWR 正电源 VSS VSS PWR 负电源、接地 注注: I/T:输入类型; O/T:输出类型 OPT:通过配置选项(CO)或者寄存器选项来配置 PWR:电源; CO:配置选项 ST:施密特触发输入; CMOS:CMOS 输出; AN:模拟输入 SCOM:软件控制的 LCD COM HXT:高频晶体振荡器 LXT:低频晶体振荡器 Rev 1.00 2011-04-13 5 H
17、T46R064B/065B/066B HT46R065B 引脚名称引脚名称 功能功能 OPT I/T O/T 说明说明 PA0/AN0 PA0 PAPU PAWK ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻和唤醒功能 AN0 ADCR AN A/D 通道 0 PA1/PFD/AN1 PA1 PAPU PAWK ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻和唤醒功能 PFD CTRL0 CMOS PFD 输出 AN1 ADCR AN A/D 通道 1 PA2/TC0/AN2 PA2 PAPU PAWK ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻和唤醒
18、功能 TC0 ST 外部定时器 0 时钟输入脚 AN2 ADCR AN A/D 通道 2 PA3/INT/AN3 PA3 PAPU PAWK ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻和唤醒功能 INT ST 外部中断输入 AN3 ADCR AN A/D 通道 3 PA4/TC1/PWM0 PA4 PAPU PAWK ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻和唤醒功能 TC1 ST 外部定时器 1 时钟输入脚 PWM0 CTRL0 CMOS PWM 输出 PA5/OSC2 PA5 PAPU PAWK ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻和
19、唤醒功能 OSC2 CO OSC 振荡器引脚 PA6/OSC1 PA6 PAPU PAWK ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻和唤醒功能 OSC1 CO OSC 振荡器输入脚 PA7/RES PA7 PAWK ST NMOS 通用 I/O 口,可通过寄存器设置唤醒功能 RES CO ST 复位输入脚 PB0/SCOM0 PB0 PBPU ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻 SCOM0 SCOMC SCOM 软件控制 1/2 bias 的 LCD COM 口 PB1/SCOM1 PB1 PBPU ST CMOS 通用 I/O 口,可通过寄存器设置上
20、拉电阻 SCOM1 SCOMC SCOM 软件控制 1/2 bias 的 LCD COM 口 PB2/SCOM2 PB2 PBPU ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻 SCOM2 SCOMC SCOM 软件控制 1/2bias 的 LCD COM 口 PB3/SCOM3 PB3 PBPU ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻 SCOM3 SCOMC SCOM 软件控制 1/2 bias 的 LCD COM 口 PB4, PB5 PBn PBPU ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻 PC0PC7 PCn PCPU ST CMO
21、S 通用 I/O 口,可通过寄存器设置上拉电阻 VDD VDD PWR 正电源 VSS VSS PWR 负电源、接地 注注: I/T:输入类型; O/T:输出类型 OPT:通过配置选项(CO)或者寄存器选项来配置 PWR:电源; CO:配置选项 ST:施密特触发输入; CMOS:CMOS 输出; AN:模拟输入 SCOM:软件控制的 LCD COM HXT:高频晶体振荡器 LXT:低频晶体振荡器 Rev 1.00 2011-04-13 6 HT46R064B/065B/066B HT46R066B 引脚名称引脚名称 功能功能 OPT I/T O/T 说明说明 PA0/AN0 PA0 PAPU
22、PAWK ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻和唤醒功能 AN0 ADCR AN A/D 通道 0 PA1/PFD/AN1 PA1 PAPU PAWK ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻和唤醒功能 PFD CTRL0 CMOS PFD 输出 AN1 ADCR AN A/D 通道 1 PA2/TC0/AN2 PA2 PAPU PAWK ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻和唤醒功能 TC0 ST 外部定时器 0 时钟输入脚 AN2 ADCR AN A/D 通道 2 PA3/INT/AN3 PA3 PAPU PAWK ST CMO
23、S 通用 I/O 口,可通过寄存器设置上拉电阻和唤醒功能 INT ST 外部中断输入 AN3 ADCR AN A/D 通道 3 PA4/TC1/PWM0 PA4 PAPU PAWK ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻和唤醒功能 TC1 ST 外部定时器 1 时钟输入脚 PWM0 CTRL0 CMOS PWM 输出 PA5/OSC2 PA5 PAPU PAWK ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻和唤醒功能 OSC2 CO OSC 振荡器引脚 PA6/OSC1 PA6 PAPU PAWK ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻和唤
24、醒功能 OSC1 CO OSC 振荡器输入脚 PA7/RES PA7 PAWK ST NMOS 通用 I/O 口,可通过寄存器设置唤醒功能 RES CO ST 复位输入脚 PB0/SCOM0 PB0 PBPU ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻 SCOM0 SCOMC SCOM 软件控制 1/2 bias 的 LCD COM 口 PB1/SCOM1 PB1 PBPU ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻 SCOM1 SCOMC SCOM 软件控制 1/2 bias 的 LCD COM 口 PB2/SCOM2 PB2 PBPU ST CMOS 通用
25、I/O 口,可通过寄存器设置上拉电阻 SCOM2 SCOMC SCOM 软件控制 1/2 bias 的 LCD COM 口 PB3/PFD/SCOM3 PB3 PBPU ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻 PFD CTRL0 CMOS PFD 输出 SCOM3 SCOMC SCOM 软件控制 1/2bias 的 LCD COM 口 PB4/TC0 PBn PBPU ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻 TC0 CTRL0 ST 外部定时器 0 时钟输入脚 PB5/INT PBn PBPU ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻
26、INT CTRL0 ST 外部中断输入 PC0/AN4 PC1/AN5 PC6/AN6 PC7/AN7 PCn PCPU ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻 ANn ADCR AN A/D 通道 4,5,6,7 PC2, PC4PC5 PCn PCPU ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻 PC3/PWM1 PCn PCPU ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻 PWM1 CTRL0 CMOS PWM 输出 Rev 1.00 2011-04-13 7 HT46R064B/065B/066B 引脚名称引脚名称 功能功能 OPT
27、I/T O/T 说明说明 PD0PD3 PDn PDPU ST CMOS 通用 I/O 口,可通过寄存器设置上拉电阻 VDD VDD PWR 正电源 VSS VSS PWR 负电源、接地 注注: I/T:输入类型; O/T:输出类型 OPT:通过配置选项(CO)或者寄存器选项来配置 PWR:电源; CO:配置选项 ST:施密特触发输入; CMOS:CMOS 输出; AN:模拟输入 SCOM:软件控制的 LCD COM HXT:高频晶体振荡器 LXT:低频晶体振荡器 极限参数极限参数 电源供应电压 . Vss-0.3V 至 Vss +6.0V 端口输入电压 . Vss-0.3V 至 VDD+0.
28、3V IOL总电流 . 100mA 储存温度 . -50至 125 工作温度. -40至 85 IOH总电流 . . -100mA 总功耗 . 500Mw 注注:这里只强调额定功率,超过极限参数所规定的范围将对芯片造成损害,无法预期芯片在上述标示范围外的工作状态,而且若长期在标示范围外的条件下工作,可能影响芯片的可靠性。 Rev 1.00 2011-04-13 8 HT46R064B/065B/066B 直流电气特性直流电气特性 Ta=25 符号符号 参数参数 测试条件测试条件 最小最小值值 典型值典型值 最大最大值值 单位单位 VDD 条件条件 VDD 工作电压 fSYS = 4MHz 2.
29、2 5.5 V fSYS = 8MHz 3.0 5.5 V fSYS = 12MHz 4.5 5.5 V IDD1 工作电流 (HXT,HIRC,ERC) 3V 无负载, fSYS = 4MHz 0.8 1.2 mA 5V 1.5 2.25 mA IDD2 工作电流 (HXT,HIRC,ERC) 3V 无负载, fSYS = 8MHz 1.4 2.1 mA 5V 2.8 4.2 mA IDD3 工作电流 (HXT,HIRC,ERC) 5V 无负载, fSYS = 12MHz 4 6 mA IDD4 工作电流 (HIRC+LXT,Slow Mode) 3V 无负载, fSYS = 32768Hz
30、 (LVR disabled, LXTLP=1) 5 10 A 5V 12 24 A ISTB1 静态电流 (LIRC On, LXT Off) 3V 无负载,休眠模式 5 A 5V 10 A ISTB2 静态电流 (LIRC Off, LXT Off) 3V 无负载,休眠模式 1 A 5V 2 A ISTB3 静态电流 (LIRC Off, LXT On, LXTLP=1) 3V 无负载,休眠模式 5 A 5V 10 A VIL1 I/O、 TCn 和 INT 的低 电平输入电压 0 0.3VDD V VIH1 I/O、TCn 和 INT 的高 电平输入电压 0.7VDD VDD V VIL
31、2 低电平输入电压(RES) 0 0.4VDD V VIH2 高电平输入电压(RES) 0.9VDD VDD V VLVR1 低电压复位 1 VLVR = 4.2V 3.98 4.2 4.42 V VLVR2 低电压复位 2 VLVR = 3.15V 2.98 3.15 3.32 V VLVR3 低电压复位 3 VLVR = 2.1V 1.98 2.1 2.22 V IOL1 I/O 口灌电流 (PA,PB,PC) 3V VOL = 0.1VDD 4 8 mA 5V 10 20 mA IOH I/O 口源电流 3V VOH = 0.9VDD -2 -4 mA 5V -5 -10 mA IOL2
32、 PA7 灌电流 5V VOL = 0.1VDD 2 3 mA RPH 上拉电阻 3V 20 60 100 k 5V 10 30 50 k ISCOM SCOM 驱动电流 5V SCOMC,ISEL1:0 = 00 17.5 25.0 32.5 A SCOMC,ISEL1:0 = 01 35 50 65 A SCOMC,ISEL1:0 = 10 70 100 130 A SCOMC,ISEL1:0 = 11 140 200 260 A VSCOM LCD COM 口 VDD/2 输 出电压 5V 无负载 0.475 0.500 0.525 VDD 注注:静态电流(ISTB1ISTB3)和 ID
33、D4 的测试条件为:设置所有输入/输出口为输入模式,并且连接至 VDD。 Rev 1.00 2011-04-13 9 HT46R064B/065B/066B 交流电气特性交流电气特性 Ta=25 符号符号 参数参数 测试条件测试条件 最小最小值值 典型值典型值 最大最大值值 单位单位 VDD 条件条件 fSYS 系统时钟 2.2V 5.5V 32 4000 kHz 3.0V 5.5V 32 8000 kHz 4.5V 5.5V 32 12000 kHz fHIRC 系统时钟(HIRC) 3V/5V Ta=25 -2% 4 +2% MHz 3V/5V Ta=25 -2% 8 +2% MHz 5V
34、 Ta=25 -2% 12 +2% MHz 3V/5V Ta=070 -5% 4 +5% MHz 3V/5V Ta=070 -5% 8 +5% MHz 5V Ta=070 -5% 12 +5% MHz 2.2V3.6V Ta=070 -8% 4 +8% MHz 3.0V5.5V Ta=070 -8% 4 +8% MHz 3.0V5.5V Ta=070 -8% 8 +8% MHz 4.5V5.5V Ta=070 -8% 12 +8% MHz 2.2V3.6V Ta=-4085 -12% 4 +12% MHz 3.0V5.5V Ta=-4085 -12% 4 +12% MHz 3.0V5.5V T
35、a=-4085 -12% 8 +12% MHz 4.5V5.5V Ta=-4085 -12% 12 +12% MHz fERC 系统时钟(ERC) 5V Ta=25,R=120k* -2% 4 +2% MHz 5V Ta=070,R=120k* -5% 4 +5% MHz 5V Ta=-4085,R=120k* -7% 4 +7% MHz 2.2V5.5V Ta=-4085,R=120k* -11% 4 +11% MHz fLXT 系统时钟(LXT) 32768 Hz fTIMER 定时器输入频率(TCn) 2.2V5.5V 0 4000 kHz 3.0V5.5V 0 8000 kHz 4.5
36、V5.5V 0 12000 kHz fLIRC LIRC 振荡器 3V 5 10 15 kHz 5V 6.5 13 19.5 kHz tRES 外部复位低电压脉宽 1 s tSST 系统启动延时周期 HXT/LXT 128 tSYS ERC/IRC (配置选项控制) 2 tSYS tINT 中断脉冲宽度 1 s tLVR 低电压复位宽度 0.25 1 2 ms tRSTD 复位延时时间 100 ms 注注: 1. tSYS = 1/fSYS 2. *: 表示对于 fERC,电阻的公差会影响外部 RC 的频率,建议使用精密度较高的电阻。 3. 为了保持内部 HIRC 振荡器频率的准确性,需要在
37、VDD 和 VSS 之间接入一个 0.1F 的去 耦电容,并且尽可能地靠近单片机。 Rev 1.00 2011-04-13 10 HT46R064B/065B/066B ADC 特性特性 符号符号 参数参数 测试条件测试条件 最小最小值值 典型值典型值 最大最大值值 单位单位 VDD 条件条件 DNL A/D 非线性微分误差 3V tAD=0.5s -2 2 LSB 5V INL A/D 非线性积分误差 3V tAD=0.5s -4 4 LSB 5V IADC 打开 A/D 增加的功耗 3V 0.5 0.75 mA 5V 1.0 1.5 mA 上电复位特性上电复位特性 Ta=25 符号符号 参
38、数参数 测试条件测试条件 最小最小值值 典型值典型值 最大最大值值 单位单位 VDD 条件条件 VPOR 上电复位电压 100 mV RRVDD 上电复位电压速率 0.035 V/ms tPOR VDD保持为 VPOR的最小时间 1 ms Rev 1.00 2011-04-13 11 HT46R064B/065B/066B 系统结构系统结构 内部系统结构是盛群单片机具有良好性能的主要因素。由于采用 RISC 结构,此系列单片机具有高运算速度和高性能的特点。通过流水线的方式,指令的取得和执行同时进行,此举使得除了跳转和调用指令外,其它指令都能在一个指令周期内完成。8 位 ALU 参与指令集中所有
39、的运算,它可完成算术运算、逻辑运算、移位、递增、递减和分支等功能,而内部的数据路径则是以通过累加器或 ALU 的方式加以简化。有些寄存器在数据存储器中被实现,且可以直接或间接寻址。简单的寄存器寻址方式和结构特性,确保了在提供具有最大可靠度和灵活性的 I/O 和 A/D 控制系统时,仅需要少数的外部器件。 时序和流水线结构时序和流水线结构 主系统时钟由晶体/陶瓷振荡器,或者 RC 振荡器提供,它被细分为 T1T4 四个内部产生的非重叠时序。在 T1 时间,程序计数器自动加一并抓取一条新的指令。剩下的时间 T2T4 完成译码和执行功能,因此,一个 T1T4 时间周期构成一个指令周期。虽然指令的抓取
40、和执行发生在连续的指令周期,但单片机流水线结构会保证指令在一个指令周期内被有效执行。除非程序计数器的内容被改变,如子程序的调用或者跳转,在这种情况下指令将需要多一个指令周期的时间去执行。 系统时序和流水线系统时序和流水线 如果指令牵涉到分支,例如跳转或调用等指令,则需要两个指令周期才能完成指令执行。需要一个额外周期的原因是程序先用一个周期取出实际要跳转或调用的地址,再用另一个周期去实际执行分支动作,因此用户需要特别考虑额外周期的问题,尤其是在执行时间要求较严格的时候。 指令捕捉指令捕捉 Rev 1.00 2011-04-13 12 HT46R064B/065B/066B 程序计数器程序计数器
41、PC 在程序执行期间,程序计数器用来指向下一个要执行的指令地址。除了“JMP”和“CALL”指令需要跳转到一个非连续的程序存储器地址之外,它会在每条指令执行完成以后自动加一。选择不同型号的单片机,程序寄存器的宽度会因程序存储器的容量的不同而不同。然而只有较低的 8 位,即所谓的程序低字节寄存器 PCL,可以被用户直接读写。 当执行的指令要求跳转到不连续的地址时,如跳转指令、子程序调用、中断或者复位等,单片机通过加载所需要的位址到程序寄存器来控制程序,对于条件跳转指令,一旦条件符合,在当前指令执行时取得的下一条指令将会被舍弃,而由一个空指令周期来取代。 单片机型号单片机型号 程序计数器程序计数器
42、 程序计数器高字节程序计数器高字节 PCL 寄存器寄存器 HT46R064B PC9,PC8 PCL7PCL0 HT46R065B PC10PC8 HT46R066B PC11PC8 程序计数器的低字节,即程序计数器的低字节寄存器 PCL,可以通过程序控制,且它是可以读取和写入的寄存器。通过直接写入数据到这个寄存器,一个程序短跳转可直接执行,然而只有低字节的操作是有效的,跳转被限制在存储器的当前页中,即 256 个存储器地址范围内,当这样一个程序跳转要执行时,会插入一个空指令周期。 程序计数器的低字节可由程序直接进行读取,PCL 的使用可能引起程序跳转,因此需要额外的指令周期。有关 PCL 寄
43、存器的更多信息请参考特殊功能寄存器章节的说明。 堆栈堆栈 堆栈是一个特殊的存储器空间,用来保存程序计数器中的值。堆栈寄存器既不是数据存储器的一部分,也不是程序存储器的一部分,而且它既不能读出,也不能写入。堆栈的使用是通过堆栈指针 SP 来指示的,堆栈指针也不能读出或写入。当发生子程序调用或中断响应时,程序计数器中的内容会被压入堆栈;在子程序调用结束或中断响应结束时,执行指令 RET 或 RETI,堆栈将原先压入堆栈的内容弹出,重新装入程序计数器中。在系统复位后,堆栈指针会指向堆栈顶部。 单片机型号单片机型号 堆栈层数堆栈层数 HT46R064B 4 HT46R065B HT46R066B 6
44、如果堆栈已满,且有非屏蔽的中断发生,则只有中断请求标志位会被置位,而中断响应会被禁止,直到堆栈指针发生递减(执行 RET 或 RETI 指令),中断才会被响应。这个特性提供程序设计者简单的方法来预防堆栈溢出。然而即使堆栈已满,CALL 指令仍然可以执行,从而造成堆栈溢出。使用时应避免堆栈溢出的情况发生,因为这样会造成不可预期的程序分支指令的执行错误。 Rev 1.00 2011-04-13 13 HT46R064B/065B/066B 算术逻辑单元算术逻辑单元 ALU 算术逻辑单元是单片机中很重要的部份,执行指令集中的算术和逻辑运算。ALU 连接到单片机的数据总线,在接收相关的指令码后执行需要
45、的算术与逻辑运算,并将结果储存在指定的寄存器,当 ALU 计算或操作时,可能导致进位、借位或其它状态的改变,而相关的状态寄存器会因此更新内容以显示这些改变,ALU 所提供的功能如下: 算术运算:ADD、ADDM、ADC、ADCM、SUB、SUBM、SBC、SBCM、DAA 逻辑运算:AND、OR、XOR、ANDM、ORM、XORM、CPL、CPLA 移位运算:RRA、RR、RRCA、RRC、RLA、RL、RLCA、RLC 递增和递减:INCA、INC、DECA、DEC 分支判断:JMP、SZ、SZA、SNZ、SIZ、SDZ、SIZA、SDZA、CALL、RET、RETI Rev 1.00 20
46、11-04-13 14 HT46R064B/065B/066B 程序存储器程序存储器 程序存储器用来存放用户代码即存储程序。此系列的单片机提供一次可编程的存储器(OTP),使用者可以编写他们的应用代码到芯片中。OTP 型单片机提供使用者以灵活的方式自由开发他们的应用,这对于需要除错或者需要经常升级和改变程序的产品是很有帮助的。 结构结构 程序存储器的容量有 1K14 到 4K15 等类型。 程序存储器用程序计数器来寻址, 其中也包含数据、表格和中断入口,数据表格可以设定在程序存储器的任何地址,由表格指针来寻址。 程序存储器结构程序存储器结构 单片机型号单片机型号 ROM HT46R064B 1
47、K14 HT46R065B 2K15 HT46R066B 4K15 特殊向量特殊向量 程序存储器中某些地址保留用作诸如复位和中断的入口等特殊用途。 复位向量 该向量是保留用做单片机复位后的程序起始地址。在芯片初始化后,程序将会跳转到这个地址并开始执行。 外部中断向量 该向量为外部中断服务程序使用。 当外部中断引脚发生边沿跳变时, 如果中断允许且堆栈未满,则程序会跳转到该地址开始执行。外部中断有效边沿转换类型由 CTRL1 寄存器指定设定是下降沿,还是上升沿有效或者双边沿触发有效。 定时/计数器 0/1 中断向量 该内部中断向量为定时/计数器使用,当定时/计数器发生溢出,如果中断允许且堆栈未满,
48、则程序会跳转到相应的地址开始执行。 A/D 转换器中断向量 该内部向量为 A/D 转换中断使用,如果 A/D 转换中断使能,并且堆栈未满的情况下,当 A/D转换完成,则程序将跳转到相应的地址开始执行。 时基中断向量 该内部向量为时基中断使用,当时基溢出发生,如果中断允许且堆栈未满,则程序将跳转到相应地址开始执行。 Rev 1.00 2011-04-13 15 HT46R064B/065B/066B 查表查表 程序存储器中的任何地址都可以定义为一个表格,以便存储固定的数据。使用查表指令时,查表指针需要先行设定,其方式是将表格的低位地址放在表格指针寄存器 TBLP 中。这个寄存器定义的是表格较低的
49、 8 位地址。 在设定完表格指针后,表格数据可以使用“TABRDC m”或“TABRDL m”指令从程序所在的存储器的当前页或者存储器的最后一页中查表来读取。当这些指令执行时,程序存储器的表格的低字节,将会传输到用户所指定的数据存储器中。程序存储器表格的高字节,将会传输到特殊寄存器 TBLH 中。传输数据中任何未定义的字节将会读取为“0”。 下图为查表寻址/数据流程图: 指令指令 表格地址表格地址 b11 b10 b9 b8 b7 b6 b5 b4 b3 b2 b1 b0 TABRDCm PC11 PC10 PC9 PC8 7 6 5 4 3 2 1 0 TABRDLm 1 1 1 1 7 6
50、 5 4 3 2 1 0 注注: 1. PC11 PC8:当前程序计数器位 2. 70:表格指针 TBLP 位 3. 对 HT46R064B 来说,表格地址是 10 位,从 b9b0。 4. 对 HT46R065B 来说,表格地址是 11 位,从 b10b0。 5. 对 HT46R066B 来说,表格地址是 12 位,从 b11b0。 查表范例查表范例 以下范例说明在 HT46R064B 芯片中表格指针和表格数据如何被定义和执行。这个例子使用的表格数据用 ORG 伪指令储存在存储器的最后一页, 在此 ORG 伪指令中的值为 300H, 即 1K 程序存储器最后一页存储器的起始地址,而表格指针的
51、初始值则为 06H,这可保证从数据表格读取的第一笔数据位于程序存储器地址 306H, 即最后一页起始地址后的第六个地址。 注意, 假如T ABRDC m指令被使用, 则表格指针指向当前页。 在这个例子中, 表格数据的高字节等于零, 而当 TABRDL m指令被执行时,此值将会自动的被传送到 TBLH 寄存器。 因为 TBLH 寄存器是只读寄存器,不能重新储存,若主程序和中断服务程序都使用表格读取指令,应该注意它的保护。使用表格读取指令,中断服务程序可能会改变 TBLH 的值,若随后在主程序中再次使用这个值,则会发生错误。因此建议避免同时使用表格读取指令。然而在某些情况下,如果同时使用表格读取指
52、令是不可避免的,则在执行任何主程序的表格读取指令前,中断应该先除能,另外要注意,所有与表格相关的指令,都需要两个指令周期去完成操作。 Rev 1.00 2011-04-13 16 HT46R064B/065B/066B 表格读取程序范例表格读取程序范例 tempreg1 db ? ; temporary register #1 tempreg2 db ? ; temporary register #2 : : mov a,06h ; initialise table pointer - note that this address ; is referenced mov tblp, a ; t
53、o the last page or present page : : tabrdl tempreg1 ; transfers value in table referenced by table pointer ; to tempreg1 ; data at prog.memory address 306H transferred to ; to tempreg1 and TBLH dec tblp ; reduce value of table pointer by one tabrdl tempreg2 ; transfers value in table referenced by t
54、able pointer ; to tempreg2 ; data at prog.memory address 305H transferred to ; tempreg2 and TBLH ; in this example the data 1AH is transferred to ; tempreg1 and data 0FH to register tempreg2 ; the value 00H will be transferred to the high byte ; register TBLH : : org 300h ; sets initial address of l
55、ast page dc 00Ah, 00Bh, 00Ch, 00Dh, 00Eh, 00Fh, 01Ah, 01Bh : : Rev 1.00 2011-04-13 17 HT46R064B/065B/066B 数据存储器数据存储器 数据存储器是内容可以更改的 8 位 RAM 内部存储器,用来存储临时数据。 结构结构 数据存储器分为两个部分,第一部分是特殊功能寄存器,这些寄存器有特定的地址且与单片机的正确操作密切相关。大多特殊功能寄存器都可在程序控制下直接读取和写入,而有些是被加以保护而不对用户开放。第二部分是通用数据存储器,所有地址都可在程序的控制下进行读取和写入。 单片机型号单片机型号 R
56、AM HT46R064B 648 HT46R065B 968 HT46R066B 1288 数据存储器的两个部分,即特殊和通用数据存储器,位于连续的地址。全部 RAM 为 8 位宽度,而数据储存器长度因所选择的单片机型号的不同而不同。所有单片机的数据存储器的开始地址都是00H。 所有单片机的程序需要一个读/写的存储区,让临时数据可以被储存和再使用。该 RAM 区域就是通用数据存储器。 这个数据存储区可让用户进行读取和写入操作。 使用 “SET m.i和 “CLR m.i指令可对个别位进行设置或复位的操作,方便用户在数据存储器中进行位操作。 一些单片机的数据存储器划分为两个存储区,通过存储区指针
57、来选择,只有在 Bank0 的数据可以直接寻址,在 Bank1 的数据需采用间接寻址的方式。 数据存储器结构数据存储器结构 注注:使用“SET m.i”和“CLR m.i”可对大多数的数据存储区进行位操作,少数专用位除外。数据存储区也可以通过存储器指针间接寻址。 特殊数据存储器特殊数据存储器 这个区域的数据存储器是存放特殊寄存器的,它和单片机的正确操作密切相关。大多数寄存器是可以读取和写入, 只有一些是被写保护而只可读取的, 相关的介绍请参考特殊功能寄存器的部分。需注意,任何读取指令对于未定义的地址读取将返回“00H”的值。 Rev 1.00 2011-04-13 18 HT46R064B/0
58、65B/066B 特殊数据存储器特殊数据存储器 Rev 1.00 2011-04-13 19 HT46R064B/065B/066B 特殊功能寄存器特殊功能寄存器 为了确保单片机能正常工作,数据存储器中设置了一些内部寄存器。这些寄存器确保内部功能(定时器,中断等)和外部功能(输入/输出口数据控制)的正确工作。这些寄存器中大部分是可读写的,只有小部份仅可读。特殊功能寄存器和通用数据存储器起始地址之间,有一些未定义的数据存储器,被保留用来做未来扩充,若从这些地址读取数据将会返回 00H 值。 间接寻址寄存器间接寻址寄存器 IAR0,IAR1 间接寻址寄存器 IAR0 和 IAR1,位于数据存储区,
59、并没有实际的物理地址。间接寻址方式是使用间接寻址寄存器或者存储器指针对数据操作,以取代定义在实际存储器地址的直接存储器寻址方式。在间接寻址寄存器上的任何动作,将对间接寻址指针(MP0 或 MP1)所指定的存储器地址产生对应的读/写操作。IAR0 和 MP0,IAR1 和 MP1 对数据存储器中数据的操作是成对出现的。间接寻址寄存器不是实际存在的, 直接读取 IAR 寄存器将会返回 00H 的结果, 而直接写入此寄存器则不做任何操作。 间接寻址指针间接寻址指针 MP0,MP1 该系列单片机提供两个间接寻址指针,即 MP0 和 MP1。由于这些指针在数据存储器中能像普通的寄存器一样被写入和操作,因
60、此提供了一个有效的间接寻址和数据追踪的方法。MP0 只能对Bank0 的数据进行间接寻址,而 MP1 可以对所有 Bank 数据进行间接寻址。当对间接寻址寄存器进行任何操作时,单片机所指向的实际地址是由间接寻址指针所指定的地址。注意,对 HT46R064B而言, 间接寻址指针的第 7 位是没有作用的, 当对间接寻址指针的第 7 位进行读操作时, 其值为 “1” 。 以下范例说明如何清除一个具有4个RAM地址的区块, 它们已经事先被定义成地址adres1到adres4。 间接寻址程序范例间接寻址程序范例 data . section data adres1 db ? adres2 db ? ad
61、res3 db ? adres4 db ? block db ? code. section at 0 code org 00h start: mov a,04h ;setup size of block mov block,a mov a,offset adres1 ; Accumulator loaded with first RAM address mov mp0,a ; setup memory pointer with first RAM address loop: clr IAR0 ; clear the data at address defined by MP0 inc mp0
62、 ; increment memory pointer sdz block ; check if last memory location has been cleared jmp loop continue: 在以上的例子中,没有提及具体的数据存储器地址。 累加器累加器 ACC 对于任何单片机来说, 累加器是相当重要的, 且与 ALU 所完成的运算有密切关系, 所有的 ALU得到的运算结果都将暂存在累加器中,如果没有累加器,ALU 必须在每次进行如加法、减法和移位等运算时,将结果写入数据存储器中,这样会造成程序编写和时间的负担。另外,数据传输通常涉 Rev 1.00 2011-04-13 2
63、0 HT46R064B/065B/066B 及到累加器的临时储存功能,如在用户定义的寄存器和另一个寄存器之间,由于两者之间的不能直接传送数据,因此需要通过累加器来传送数据。 程序计数器低字节寄存器程序计数器低字节寄存器 PCL 为了提供额外的程序控制功能,程序计数器的低字节被设置在数据存储器的特殊功能区域,程序员可对此寄存器进行操作,很容易直接跳转到其它程序地址。直接给 PCL 寄存器赋值将导致程序直接跳转到专用程序存储器某一地址,然而,由于寄存器只有 8 位的长度,因此只允许在本页的程序存储器中跳转。注意,使用这种运算时,会插入一个空指令周期。 状态寄存器状态寄存器 STATUS 这 8 位
64、寄存器包括零标志位(Z)、进位标志位(C)、辅助进位标志位(AC)、溢出标志位(OV),暂停标志位(PDF)、和看门狗溢出标志位(TO)。这些标志位同时记录单片机的状态数据和算术/逻辑运算。 除了 TO 和 PDF 标志位以外,状态寄存器的其它位像其它大多数寄存器一样可以被改变。但是任何数据写入状态寄存器将不会改变 TO 和 PDF 标志位。另外,执行不同指令操作后,与状态寄存器相关的运算将会得到不同的结果。TO 标志位只会受系统上电、看门狗溢出、执行“CLR WDT”或“HALT”指令的影响。PDF 指令只会受执行“HALT”或“CLR WDT”指令或系统上电的影响。 Z、OV、AC 和 C
65、 标志位通常反映最近的运算操作的状态。 另外,当进入一个中断程序或者执行子程序调用时状态寄存器将不会自动压入到堆栈中保存。假如状态寄存器的内容很重要, 且中断子程序会改变状态寄存器的内容, 则需要保存备份以备恢复。注意,状态寄存器的 03 位可以读取和写入。 状态寄存器状态寄存器 位位 7 6 5 4 3 2 1 0 名称 TO PDF OV Z AC C R/W R R R/W R/W R/W R/W POR 0 0 x x x x “x”表示未知 Bit 7,6 未定义,读为“0” Bit 5 TO:看门狗溢出标志位 0:系统上电或者执行“CLR WDT”或“HALT”指令 1:WDT 溢
66、出 Bit 4 PDF:暂停标志位 0:系统上电或执行“CLR WDT”指令 1:执行“HALT”指令将会置位 PDF 位。 Bit 3 OV : 溢出标志位 0:不发生溢出时 1:当运算结果高两位的进位状态异或结果为 1 时 Bit 2 Z: 零标志位 0:算数运算或者逻辑运算的结果不为零时 1:算数运算或者逻辑运算的结果为零时 Bit 1 AC:辅助进位标志位 0:没有辅助进位时 1:当低字节的加法造成进位或者高字节的减法没有造成借位时 Bit 0 C:进位标志位 0:没有进位时 1:当加法造成进位或者减法没有造成借位时,同时移位指令也会影响 C 标志位。 输入输入/输出口和控制寄存器输出
67、口和控制寄存器 在特殊功能寄存器中,输入/输出寄存器(PA、PB 等)和相关的控制寄存器(PAC、PBC 等)是很重要的,这些寄存器在数据存储器有特定的地址。输入/输出口寄存器用来传送端口上的输入和输出数据,而这些控制寄存器是用来设置引脚的状态,以决定是输出口还是输入口。若要设定一个 Rev 1.00 2011-04-13 21 HT46R064B/065B/066B 引脚为输入,需将控制寄存器相应的位设置为高,若引脚设定为输出,则控制寄存器相应的位设置为低。程序初始化期间,在从输入/输出口读取数据之前,需要先设置好控制寄存器以确定引脚的输入输出状态。使用 SET m.i 和 CLR m.i
68、可以对寄存器单独的位进行灵活设置。在程序中可以直接通过改变输入/输出状态控制寄存器中的某一位来改变端口输入/输出状态,这是此系列单片机十分有用的特性。 系统控制寄存器系统控制寄存器 CTRL0,CTRL1 这些寄存器是用来控制各种内部功能,如 PFD 控制、PWM 控制、系统时钟选择、LXT 低功耗控制,外部中断边沿触发类型、看门狗定时器使能、时基分频和 LXT 振荡器使能控制。 CTRL0 寄存器寄存器 HT46R064B Bit 7 6 5 4 3 2 1 0 Name PWMSEL PWMC0 PFDC LXTLP CLKMOD R/W R/W R/W R/W R/W R/W POR 0
69、 0 0 0 0 HT46R065B Bit 7 6 5 4 3 2 1 0 Name PFDCS PWMSEL PWMC0 PFDC LXTLP CLKMOD R/W R/W R/W R/W R/W R/W R/W POR 0 0 0 0 0 0 HT46R066B Bit 7 6 5 4 3 2 1 0 Name PCFG PFDCS PWMSEL PWMC1 PWMC0 PFDC LXTLP CLKMOD R/W R/W R/W R/W R/W R/W R/W R/W R/W POR 0 0 0 0 0 0 0 0 Bit 7 PCFG: 引脚功能重置选项 0: INT/TC0/PFD
70、与 PA3/PA2/PA1 共用 1: INT/TC0/PFD 与 PB5/PB4/PB3 共用 Bit 6 PFDCS: PFD 时钟源 0: timer0 1: timer1 Bit 5 PWMSEL: PWM 模式选择位 0: 6+2 模式 1: 7+1 模式 Bit 4 PWMC1: I/O 或者 PWM1 0: I/O 1: PWM1 Bit 3 PWMC0: I/O 或者 PWM0 0: I/O 1: PWM0 Bit 2 PFDC: I/O 或者 PFD 0: I/O 1: PFD Bit 1 LXTLP: LXT 振荡器低功耗控制位 0: LXT 振荡器快速启动模式 1: LX
71、T 振荡器低功耗模式 Bit 0 CLKMOD: 系统时钟模式选择位 0: 高速模式 使用 HIRC 作为系统时钟 1: 低速模式 使用 LXT 作为系统时钟, HIRC 振荡器停止 对于 HT46R064B/065B/066B, 只有当振荡器配置选项选择 HIRC+LXT 时,选项才有效。 Rev 1.00 2011-04-13 22 HT46R064B/065B/066B 注注: 如果 PWMC0/1 位选择 PWM0/1 作为输出, 则 fTP来自于系统时钟。 (fTP可作为定时/计数器 0,时基,PWM 的时钟源) CTRL1 寄存器寄存器 Bit 7 6 5 4 3 2 1 0 Na
72、me INTEG1 INTEG0 TBSEL1 TBSEL0 WDTEN3 WDTEN2 WDTEN1 WDTEN0 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR 1 0 0 0 1 0 1 0 Bit 7, 6 INTEG1, INTEG0: 外部中断边沿触发类型 00: 关闭中断 01: 上升沿触发 10: 下降沿触发 11: 双边沿触发 Bit 5, 4 TBSEL1, TBSEL0: 时基周期选择位 00: 210(1/fTP) 01: 211(1/fTP) 10: 212(1/fTP) 11: 213(1/fTP) Bit 30 WDTEN3, WD
73、TEN2, WDTEN1, WDTEN0: WDT 功能使能 1010: WDT 关闭 其它值: WDT 使能 建议值为 0101 如果“watchdog timer enable”配置选项被选中,则看门狗定时器将总是开启的, 且 WDTEN3WDTEN0 控制位无效 注意: 只有当 WDT 配置选项是除能的,并且位 WDTEN3WDTEN0 = 1010 时, WDT 才能关闭。 而只要 WDT 配置选项是使能的,或者位 WDTEN3WDTEN01010, WDT 就开启。 唤醒功能寄存器唤醒功能寄存器 PAWK 当单片机进入休眠模式以后,多种方式可唤醒单片机,使其继续正常运行。其中一种方式
74、是通过有唤醒功能的 I/O 口的下降沿唤醒,而这个控制寄存器就是用来设置 PA 口是否具有唤醒功能。 上拉电阻寄存器上拉电阻寄存器 PAPU, PBPU, PCPU, PDPU 当 I/O 口设置为输入,则可以设置使用内部连接上拉电阻,从而省去外接上拉电阻。这些寄存器即用来选择 I/O 引脚是否连接到内部上拉电阻。 软件控制的软件控制的 COM 口寄存器口寄存器 SCOMC PB 口的 PB0PB3 引脚可以用作 COM 口来驱动外部液晶面板,SCOMC 寄存器即用来设置这些引脚正确的偏压值以实现 LCD 驱动功能。 Rev 1.00 2011-04-13 23 HT46R064B/065B/
75、066B 振荡器振荡器 不同的振荡器选择可以让使用者在不同的应用需求中获得更多范围的功能。振荡器的灵活性使得在速度和功耗之间可以达到最优化。振荡器选项是通过配置选项和寄存器来完成的。 系统振荡器概述系统振荡器概述 振荡器除了作为系统时钟源,还作为看门狗定时器和时基功能的时钟源。外部振荡器需要一些外围器件,而集成的两个内部振荡器不需要任何外围器件。它们提供的高速和低速系统振荡器具有较宽的频率范围。 振荡类型振荡类型 名称名称 频率范围频率范围 引脚引脚 外部晶振 HXT 400kHz12MHz OSC1/OSC2 外部 RC ERC 400kHz12MHz OSC1 内部高速 RC HIRC 4
76、,8 或 12MHz 外部低速晶振 LXT 32768Hz OSC1/OSC2 内部低速 RC LIRC 13kHz 系统时钟配置系统时钟配置 此系列的单片机有五个系统振荡器,包括三个高速振荡器和两个低速振荡器。高速振荡器有外部晶体/陶瓷振荡器 HXT,外部 RC 振荡器 ERC 和内部 RC 振荡器 HIRC。两个低速振荡器包括外部 32768Hz 振荡器 LXT 和内部 13kHz(VDD=5V)振荡器 LIRC。 外部晶体外部晶体/陶瓷振荡器陶瓷振荡器 HXT 对于晶体振荡器, 只要简单地将晶体连接至 OSC1 和 OSC2, 则会产生振荡所需的相移及反馈,而不需其它外部的器件。为保证某
77、些低频率的晶体振荡和陶瓷谐振器的振荡频率更精准,建议连接两个小容量电容 C1 和 C2 到 VSS,具体数值与客户选择的晶体/陶瓷晶振有关。 晶体晶体/陶瓷振荡器陶瓷振荡器 HXT 晶体振荡器晶体振荡器 C1 和和 C2 值值 晶体频率晶体频率 C1 C2 12MHz 8pF 10pF 8MHz 8pF 10pF 4MHz 8pF 10pF 1MHz 100pF 100pF 注意:C1 和 C2 数值仅作参考用 晶体振荡器电容推荐值晶体振荡器电容推荐值 Rev 1.00 2011-04-13 24 HT46R064B/065B/066B 外部外部 RC 振荡器振荡器 ERC 使用外部 RC 电
78、路作为系统振荡器,只需要在 OSC1 和 VDD 之间连接一个阻值约在 24 k 到 1 .5M 之间的电阻,OSC1 与 VSS 之间连接一个电容。系统频率由外部所接电阻的大小决定,外部电容并不会影响振荡器的频率值,在这里只起到稳定的目的。虽然此振荡器配置成本较低,但是振荡频率会因 VDD、 温度以及芯片制成工艺不同而改变, 因此不适合用来作较严格计时或需要振荡频率精度较高的场合。这里,提供一个电阻/频率的参考:使用外部 120K 电阻连接到 5V 电源电压,在 25下,振荡器的频率为 4MHz,容差 2%。外部 RC 振荡器仅使用 OSC1 引脚,OSC1 与 PA6引脚共用,此时 PA5
79、/OSC2 引脚可以作为普通的 I/O 口使用。 外部外部 RC 振荡器振荡器 ERC 内部内部 RC 振荡器振荡器 HIRC 内部 RC 振荡器是一个集成的系统振荡器,不需其它外部器件。内部 RC 振荡器具有三种固定的频率:4MHz,8MHz,12MHz。虽然此振荡器配置成本较低,但是振荡频率会因 VDD、温度以及芯片制成工艺不同而改变,因此不适合用来作较严格计时或需要震荡频率精度较高的场合。在电源电压为 3V 或者 5V 及温度为 25的条件下, 4MHz, 8MHz, 12MHz 这三个固定频率的容差为 2%。如果选择了该内部时钟,无需额外的引脚;PA5 和 PA6 可以作为通用 I/O
80、 口使用。 内部内部 RC 振荡器振荡器 HIRC 外部外部 32768Hz 晶体振荡器晶体振荡器 LXT 当系统进入休眠模式,系统时钟关闭以降低功耗。然而在某些应用需要在休眠模式下保持定时/计数功能能继续运行,系统需要提供额外的系统时钟。LXT 振荡器即用来提供这样的时钟。LXT振荡器由 32768Hz 晶振接到 OSC1 和 OSC2 引脚。为了保证 LXT 起振和频率的精确,建议使用两个小容量电容 C1 和 C2,具体数值与客户选择的 32768Hz 晶振有关。另外,外部并联的反馈电阻RP也是必需的。对于 HT46R064B/HT46R065B/ HT46R066B 而言,LXT 振荡器
81、需要和 HIRC 振荡器搭配使用。 外部外部 LXT 振荡器振荡器 Rev 1.00 2011-04-13 25 HT46R064B/065B/066B LXT 振荡器振荡器 C1 和和 C2 的值的值 晶体振荡器频率晶体振荡器频率 C1 C2 32768Hz 8pF 10pF 注:1. C1 和 C2 的值仅供参考 2. 推荐 RP=5M10M 32768Hz 晶体振荡器电容推荐值晶体振荡器电容推荐值 LXT 振荡器低功耗功能振荡器低功耗功能 LXT 振荡器有两种模式: 快速启动模式和低功耗模式。可以使用寄存器 CTRL0 中的 LXTLP 位来选择模式。 LXTLP 位位 实时时钟模式实时
82、时钟模式 0 快速启动 1 低功耗 系统上电后,LXTLP 会自动清零以确保 LXT 振荡器工作在快速启动模式。在快速启动模式中,LXT 振荡器将起振并且快速的稳定下来,在这个阶段振荡电路需要较大的电流。在 LXT 振荡器完全起振后,可设置 LXTLP 位为 1,LXT 振荡器将进入低功耗模式。振荡器将继续运行,但功耗降低。在电池及低功耗应用中,建议在上电两秒后再设置 LXTLP 位为 1,以保证最小的功耗。 注意,无论 LXTLP 位设置为何值,LXT 振荡器都能保持正常工作,不同之处在于,低功耗模式下启动需要更长的时间。 内部低速振荡器内部低速振荡器 LIRC LIRC 是一个完全独立运行
83、的片内 RC 振荡器,无需外部器件,在常温 5V 条件下,振荡频率值为 13kHz。当单片机进入休眠模式,系统时钟将停止运行,但 LIRC 振荡器会继续运行以保持 WDT的功能。然而,在某些需要节省功耗的应用中,可通过配置选项来关闭 LIRC 以降低功耗。 Rev 1.00 2011-04-13 26 HT46R064B/065B/066B 工作模式工作模式 使用 LXT 低速振荡器和一个高速振荡器,系统可以工作在下面几个不同的模式:正常模式、低速模式和休眠模式。 模式的类型与选择模式的类型与选择 使用较高频率的振荡器将获得较高的性能,但是功耗也较大,使用较低频率的振荡器则刚好相反。 若单片机
84、能够动态的切换高速和低速振荡器, 则单片机就具有足够的灵活性来优化性能/功耗比,该特性对于低功耗的应用特别重要。 这些型号的单片机中,如果使用了 LXT 振荡器,则需要使用内部 RC 振荡器作为高速振荡器。如果使用 HXT 或者 ERC 作为高速系统时钟,由于该引脚被占用,因此不能外接 LXT 振荡器。寄存器 CTRL0 中的 CLKMOD 位用来切换系统时钟从高速 HIRC 振荡器到低速 LXT 振荡器。当执行HALT 指令后,单片机进入休眠模式,LXT 振荡器将继续运行。LXT 晶振连接到 OSC1/OSC2 脚,并且 LXT 将总是运行。(没有 LXTEN 位) 注意,只有在 HIRC+
85、LXT 振荡器配置下,对 CLKMOD 的操作才是有效的。 系统时钟配置系统时钟配置 对于所有单片机而言, 当系统进入休眠模式, 高频系统时钟将停止运行。 下表列出了 CLKMOD位、HALT 指令和高频/低频振荡器三者之间的关系。 工作模式控制工作模式控制 工作模式工作模式 OSC1/OSC2 配置配置 HXT ERC HIRC HIRC+LXT HIRC LXT 正常模式 运行 运行 运行 运行 运行 低速模式 停止 运行 休眠模式 停止 停止 停止 停止 运行 “”表示未定义 切换模式切换模式 通过设置 CTRL0 寄存器中的 CLKMOD 位和 HALT 指令,可实现单片机工作模式之间
86、的切换。CLKMOD 位用来设置系统时钟是高速或者低速振荡器,从而使系统工作在正常模式或者低速模式。执行 HALT 指令将强制系统进入休眠模式(LXT 停止)。HALT 指令的执行与 CLKMOD 位的设置无关。 当执行 HALT 指令,LXT 振荡器停止运行,系统进入休眠模式,将发生下面的情况: Rev 1.00 2011-04-13 27 HT46R064B/065B/066B 系统振荡器将被关闭,应用程序将停止在“HALT”指令处 在 RAM 和寄存器上的内容保持不变 如果 WDT 时钟源是来自 LIRC 振荡器或者 LXT 振荡器,则 WDT 将被清除然后再重新计数;若来源于系统时钟,
87、则停止计数 所有输入/输出端口状态保持不变 STATUS 寄存器中,PDF 标志位被置位,TO 标志位被清零 静态电流控制静态电流控制 要使系统静态电流降到最小,为微安级,除了需要单片机进入休眠模式,还要考虑到电路的设计。特别要注意输入/输出口的状态。所有高阻抗输入引脚需要接高电平或低电平,否则引脚浮空会造成内部振荡进而增大电流的消耗。另外还需要注意单片机输出端口上的负载,尽量减少拉电流或与其它 CMOS 输入相连。 如果配置选项使能看门狗振荡器 LIRC,当进入休眠模式,振荡器继续振荡,并继续消耗能量。对电源消耗敏感的应用,使用系统时钟作为 WDT 时钟是更好的选择。如果配置 LXT 使能,
88、当进入休眠模式时也将消耗一定的能量。置位 LXTLP(CTRL0.1)也可使 LXT 振荡消耗最小。 唤醒唤醒 当系统进入休眠模式下,可以通过以下几种方式唤醒: 外部复位 PA 口下降沿 系统中断 WDT 溢出 若由外部RES引脚唤醒,系统会经过完全复位的过程。若由 WDT 溢出唤醒,则看门狗计数器将被复位清零。这两种唤醒方式都会使系统复位,可以通过状态寄存器中 TO 和 PDF 位来判断它的唤醒源。系统上电或执行清除看门狗的指令,PDF 被清零;执行 HALT 指令,PDF 将被置位。看门狗计数器溢出将会置位 TO 标志并唤醒系统,同时复位程序计数器和堆栈指针,其它标志位保持原有状态。 端口
89、 PA0PA7 中的每个位都可以通过 PAWK 寄存器独立选择唤醒功能。PA 口唤醒后,程序将执行“HALT”指令后的其他指令。 如果系统是通过中断唤醒,则有两种情况,假如中断除能或中断使能但堆栈已满,系统唤醒后继续执行“HALT”指令的其他指令,相应的中断服务程序只有在中断使能后或堆栈空闲后被执行;假如中断使能且堆栈未满,则正常的中断响应将会发生。如果系统进入休眠模式之前外部中断请求标志位被置为“1”,则相关中断的唤醒功能无效。 无论是哪种方式唤醒,单片机从唤醒回到正常运行都需要一定的延迟时间,延时的时长请参照下面的表格: 唤醒源唤醒源 振荡器类型振荡器类型 ERC,IRC Crystal
90、外部RES tRSTD+tSST2 tRSTD +tSST2 PA 口 tSST1 tSST2 中断 WDT 溢出 注注: 1. tRSTD(复位延时时间),tSYS(系统时钟) 2. tRSTD为上电延时,典型值为 100ms 3. tSST1=2 tSYS 4. tSST2= 128 tSYS 唤醒延时时间唤醒延时时间 Rev 1.00 2011-04-13 28 HT46R064B/065B/066B 看门狗定时器看门狗定时器 看门狗定时器的功能在于防止如电磁的干扰等外部不可控制事件,所造成的程序不正常动作或跳转到未知的地址。 看门狗的使用看门狗的使用 当 WDT 溢出时,会产生系统复位
91、的动作。当 WDT 配置选项设置为除能,则任何相关的指令操作都无效。通过配置选项和两个内部的寄存器 WDTS 和 CTRL1 可以设置不同的 WDT 选项。通过配置选项和数据存储器中特殊功能寄存器 CTRL1 的 WDTEN 位,来使能看门狗定时器。 配置选项配置选项 CTRL1 寄存器寄存器 WDT 功能功能 除能 除能 OFF 除能 使能 ON 使能 ON 看门狗定时器开看门狗定时器开/关控制关控制 如果 WDT 配置选项和 CTRL1 寄存器中 WDTEN3WDTEN0 位被写入 1010B,看门狗定时器将被关闭。此时 WDTEN 中的值为系统上电时的默认值。虽然向 CTRL1 的 WD
92、TEN3WDTEN0 位写入其它的任何数字可开启看门狗定时器,但为了最大程度保护它,建议向这些位写入 0101B。 通过配置选项,看门狗定时器可以选择三种不同的时钟源:LXT,fSYS/4 或 LIRC。注意,选择fSYS/4 时钟作为 WDT 的时钟源,当系统进入休眠模式时,指令时钟会停止且 WDT 将失去其保护功能。对于干扰比较大的应用环境,推荐使用 LIRC 振荡器或者 LXT 作为 WDT 的时钟源。分频比由WDTS 寄存器的第 0,1 和 2 位,即 WS0、WS1 和 WS2 位来决定。如果 WS0、WS1 和 WS2 都置 1,分频比例为 1:128,即可提供最大溢出周期。 系统
93、在正常运行状态下,WDT 溢出将导致芯片复位,并置位状态标志位 TO。但是在系统处于休眠模式时,如果 WDT 发生溢出,系统将从休眠中唤醒,置位状态寄存器中的 TO,并且它只复位程序计数器 PC 和 SP。 有三种方法可以用来清除 WDT 的内容, 第一种是外部硬件复位(RES引脚低电平),第二种是通过软件指令,而第三种是通过“HALT”指令。使用软件指令有两种方法去清除看门狗寄存器,需要由配置选项选择。第一种选择是使用单一“CLR WDT”指令,而第二种是使用“CLR WDT1” 和 “CLR WDT2” 两个指令。 对于第一种选择, 只要执行 “CLR WDT” 便清除 WDT。而第二种选
94、择,需要交替执行“CLR WDT1”和“CLR WDT2”两者才能成功的清除 WDT。关于第二种选择,如果“CLR WDT1”正被使用来清除 WDT,接着再执行这条指令将是无效的,只有执行“CLR WDT”指令才能清除 WDT。同样的“CLR WDT2”指令已经执行后,只有接着执行“CLR WDT1“指令才可以清除看门狗定时器。 看门狗定时器看门狗定时器 Rev 1.00 2011-04-13 29 HT46R064B/065B/066B WDTS 寄存器寄存器 Bit 7 6 5 4 3 2 1 0 Name WS2 WS1 WS0 R/W R/W R/W R/W POR 1 1 1 Bit
95、 73: 未定义, 读为“0” Bit 20: WS2,WS1,WS0:WDT 溢出周期选择 000:28tWDTCK 001:29tWDTCK 010:210tWDTCK 011:211tWDTCK 100:212tWDTCK 101:213tWDTCK 110:214tWDTCK 111:215tWDTCK Rev 1.00 2011-04-13 30 HT46R064B/065B/066B 复位和初始化复位和初始化 复位功能是任何单片机中基本的部分,使得单片机可以设定一些与外部参数无关的先置条件。最重要的复位条件是在单片机首次上电以后,经过短暂的延迟,内部硬件电路使得单片机处于预期的稳定
96、状态并开始执行第一条程序指令。上电复位以后,在程序未执行之前,部分重要的内部寄存器将会被设定为预先设定的状态。程序计数器就是其中之一,它会被清除为零,使得单片机从最低的程序存储器地址开始执行程序。 除上电复位以外,即使单片机处于正常工作状态,有些情况的发生也会迫使单片机复位。譬如当单片机上电后已经开始执行程序,RES脚被强制拉为低电平。这种复位为正常操作复位,单片机中只有一些寄存器受影响,而大部分寄存器不会改变,在复位引脚恢复至高电平后,单片机可以正常运行。另一种复位为看门狗溢出单片机复位,不同方式的复位操作会对寄存器产生不同的影响。 另一种复位为低电压复位即 LVR 复位,在电源供应电压低于
97、 LVR 设定值时,系统会产生 LVR复位,这种复位与RES脚拉低复位方式相同。 复位功能复位功能 包括内部和外部事件触发复位,单片机共有五种复位方式: 上电复位 这是最基本且不可避免的复位,发生在单片机上电后。除了保证程序存储器从开始地址执行,上电复位也使得其它寄存器被设定在预设条件, 所有的输入/输出端口控制寄存器在上电复位时会保持高电平,以确保上电后所有引脚被设定为输入状态。 虽然单片机有一个内部 RC 复位功能,如果电源上升缓慢或者上电时电源不稳定,内部 RC 振荡可能导致芯片复位不良,所以推荐使用和RES引脚连接的外部 RC 电路。由 RC 电路所造成的时间延迟使得RES引脚在电源供
98、应稳定前的一段延长周期内保持在低电平。在这段时间内,单片机的正常操作是被禁止的。RES引脚达到一定电压值后,再经过延迟时间 tRSTD单片机可以开始进行正常操作。下图中 SST 是系统延迟周期 System Start-up Timer 的缩写。 注注:tRSTD为上电延迟时间,典型值为50ms。 上电复位时序图上电复位时序图 在许多应用场合, 可以在 VDD 和RES之间接入一个电阻, 在 VSS 与RES之间接入一个电容作为外部复位电路。与RES脚上所有相连接的线段必须尽量短以减少噪声干扰。 当系统在较强干扰的场合工作时,建议使用增强型的复位电路,如下图所示。 注注:“” 表示建议加上此元
99、件以加强静电保护。 “”表示建议在电源有较强干扰场合加上此元件。 外部外部RES电路电路 欲知有关外部复位电路的更多信息可参考 HOLTEK 网站上的应用范例 HA0075S。 Rev 1.00 2011-04-13 31 HT46R064B/065B/066B RES引脚复位 当单片机正常工作时,RES引脚通过外部硬件(如外部开关)强迫拉至低电平时,此种复位形式即会发生。 这种复位方式和其它的复位方式一样, 程序计数器会被清除为零且程序从头开始执行。 注注:tRSTD为上电延迟时间,典型值为50ms。 RES复位时序图复位时序图 低电压复位 LVR 单片机具有低电压复位电路,用来监测它的电源
100、电压,可通过配置选项进行选择。例如在更换电池的情况下,单片机供应的电压可能会落在 0.9VVLVR的范围内,这时 LVR 将会自动复位单片机。LVR 包含以下的规格:有效的 LVR 信号,即在 0.9VVLVR的低电压状态的时间,必须超过交流电气特性中 tLVR参数的值。如果低电压存在不超过 tLVR参数的值,则 LVR 将会忽略它且不会执行复位功能。VLVR参数值可通过配置选项进行设定。 注注:tRSTD为上电延迟时间,典型值为50ms。 低电压复位时序图低电压复位时序图 正常运行时看门狗溢出复位 除了看门狗溢出标志位 TO 将被设为 1 之外,正常运行时看门狗溢出复位和RES复位相同。 注
101、注:tRSTD为上电延迟时间,典型值为50ms。 正常运行时看门狗溢出时序图正常运行时看门狗溢出时序图 休眠时看门狗溢出复位 休眠时看门狗溢出复位和其它种类的复位有些不同, 除了程序计数器与堆栈指针将被清 0 及 TO位被设为 1 外,绝大部份的条件保持不变。图中 tSST的详细说明请参考交流电气特性。 注注:如果系统时钟为ERC或者HIRC时,tSST为2个时钟周期。 如果系统时钟为HXT或者LXT,则tSST为128个时钟周期。 休眠时看门狗溢出复位时序图休眠时看门狗溢出复位时序图 复位初始状态复位初始状态 不同的复位形式以不同的途径影响复位标志位。这些标志位,即 PDF 和 TO 位存放
102、在状态寄存器中,由休眠功能或看门狗计数器等几种控制器操作控制。复位标志位如下所示: Rev 1.00 2011-04-13 32 HT46R064B/065B/066B T0 PDF 复位条件复位条件 0 0 上电复位 u u 正常模式或低速模式时的RES复位或 LVR 复位 1 u 正常模式或低速模式时的 WDT 溢出复位 1 1 休眠模式时的 WDT 溢出复位 注注:“u”代表不改变 在单片机上电复位之后,各功能单元初始化的情形,列于下表。 项目项目 复位后情况复位后情况 程序计数器 清除为零 中断 所有中断被除能 看门狗定时器 WDT 清除并重新计时 定时/计数器 所有定时/计数器停止
103、预分频器 定时/计数器之预分频器内容清除 输入/输出口 所有 I/O 设为输入模式 堆栈指针 堆栈指针指向堆栈顶端 不同的复位形式对单片机内部寄存器的影响是不同的。为保证复位后程序能正常执行,了解寄存器在特定条件复位后的设置是非常重要的,下表即为不同方式复位后内部寄存器的状况。 寄存器寄存器 HT46R064B HT46R065B HT46R066B 上电复位上电复位 RES或或 LVR 复位复位 WDT 溢出溢出 (正常模式正常模式) WDT 溢出溢出 (休眠模式休眠模式) PCL 0000 0000 0000 0000 0000 0000 0000 0000 MP0 1xxx xxxx 1
104、uuu uuuu 1uuu uuuu 1uuu uuuu xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu MP1 1xxx xxxx 1uuu uuuu 1uuu uuuu 1uuu uuuu xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu ACC xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu TBLP xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu TBLH - -xx xxxx - -uu uuuu - -uu uuuu - -uu uuuu - xxx xxx
105、x -uuu uuuu -uuu uuuu -uuu uuuu WDTS - - - - -111 - - - - -111 - - - - -111 - - - - - uuu STATUS - -00 xxxx - -uu uuuu - -1u uuuu - - 11 uuuu INTC0 -000 0000 -000 0000 -000 0000 - uuu uuuu INTC1 - - -0 - - -0 - - -0 - - -0 - - -0 - - -0 - - -u - - -u - - 00 - - 00 - - 00 - - 00 - - 00 - - 00 - - uu
106、- - uu TMR0 xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu TMR0C 0000 1000 0000 1000 0000 1000 uuuu uuuu TMR1 xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu TMR1C 0000 1- - - 0000 1- - - 0000 1- - - uuuu u- - - Rev 1.00 2011-04-13 33 HT46R064B/065B/066B 寄存器寄存器 HT46R064B HT46R065B HT46R066B 上电复位上电复位 RES或或 LVR 复位复位
107、 WDT 溢出溢出 (正常模式正常模式) WDT 溢出溢出 (休眠模式休眠模式) PA 1111 1111 1111 1111 1111 1111 uuuu uuuu PAC 1111 1111 1111 1111 1111 1111 uuuu uuuu PAWK 0000 0000 0000 0000 0000 0000 uuuu uuuu PAPU - 000 0000 - 000 0000 - 000 0000 -uuu uuuu PB - - 11 1111 - - 11 1111 - - 11 1111 - -uu uuuu PBC - - 11 1111 - - 11 1111 -
108、 - 11 1111 - -uu uuuu PBPU - - 00 0000 - - 00 0000 - - 00 0000 - -uu uuuu PC - - - - 1111 - - - - 1111 - - - - 1111 - - - - uuuu PCC - - - - 1111 - - - - 1111 - - - - 1111 - - - - uuuu PCPU - - - - 0000 - - - - 0000 - - - - 0000 - - - - uuuu PC 1111 1111 1111 1111 1111 1111 uuuu uuuu PCC 1111 1111 1
109、111 1111 1111 1111 uuuu uuuu PCPU 0000 0000 0000 0000 0000 0000 uuuu uuuu PD - - - - 1111 - - - - 1111 - - - - 1111 - - - - uuuu PDC - - - - 1111 - - - - 1111 - - - - 1111 - - - - uuuu PDPU - - - - 0000 - - - - 0000 - - - - 0000 - - - - uuuu CTRL0 - - 0 - 0000 - - 0 - 0000 - - 0 - 0000 - - u - uuuu
110、-00- 0000 -00- 0000 -00- 0000 -uu- uuuu 0000 0000 0000 0000 0000 0000 uuuu uuuu CTRL1 1000 1010 1000 1010 1000 1010 uuuu uuuu SCOMC 0000 0000 0000 0000 0000 0000 uuuu uuuu PWM0 xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu PWM1 xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu ADRL xxxx - - - - xxxx - - - - xxxx -
111、- - - uuuu - - - - ADRH xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu ADCR 0100 0000 0100 0000 0100 0000 uuuu uuuu ACSR 10- - -000 10- - -000 10- - -000 uu- - -uuu 注注: “-” 表示未定义 “x”表示未知 “u”表示不改变 Rev 1.00 2011-04-13 34 HT46R064B/065B/066B 输入输入/输出端口输出端口 盛群单片机的输入/输出口控制具有很大的灵活性。 每一个引脚都在用户程序控制下都可被设定为输入或输出,所有引脚
112、的上拉电阻设置以及指定引脚的唤醒设置也都由软件控制,这些特性也使得此类单片机在广泛应用上都能符合开发的需求。 作为输入操作,输入引脚无锁存功能,也就是说输出数据必须在执行“MOV A, m”,T2 的上升沿准备好,m 为端口地址。对于输出操作,所有数据都是被锁存的,且保持不变直到输出锁存被重写。 上拉电阻上拉电阻 许多产品应用在端口处于输入状态时需要外加一个上拉电阻来实现上拉的功能。为了免去外部上拉电阻, 当引脚规划为输入时, 可由内部连接到一个上拉电阻, 这些上拉电阻可通过寄存器 PAPU,PBPU、PCPU、和 PDPU 来设置,它用一个 PMOS 晶体管来实现上拉电阻功能。注意,PA7
113、引脚没有上拉电阻功能。 PA 口唤醒口唤醒 当使用暂停指令H ALT迫使单片机进入休眠模式状态,单片机的系统时钟将会停止以降低功耗,此功能对于电池及低功耗应用很重要。唤醒单片机有很多种方法,其中之一就是使 PA0PA7的其中一个引脚从高电平转为低电平。使用暂停指令H ALT迫使单片机进入休眠模式状态后,处理器将会一直保持低功耗状态,直到 PA 口上被选为唤醒输入的引脚电平发生下降沿跳变。这个功能特别适合于通过外部开关来唤醒的应用。注意,PA0PA7 是可以通过设置 PAWK 寄存器来单独选择是否具有唤醒功能。 PAWK, PAC, PAPU, PBC, PBPU, PCC, PCPU, PDC
114、, PDPU 寄存器寄存器 HT46R064B 寄存器寄存器 名称名称 POR 位位 7 6 5 4 3 2 1 0 PAWK 00H PAWK7 PAWK6 PAWK5 PAWK4 PAWK3 PAWK2 PAWK1 PAWK0 PAC FFH PAC7 PAC6 PAC5 PAC4 PAC3 PAC2 PAC1 PAC0 PAPU 00H PAPU6 PAPU5 PAPU4 PAPU3 PAPU2 PAPU1 PAPU0 PBC 3FH PBC5 PBC4 PBC3 PBC2 PBC1 PBC0 PBPU 00H PBPU5 PBPU4 PBPU3 PBPU2 PBPU1 PBPU0 PC
115、C 0FH PCC3 PCC2 PCC1 PCC0 PCPU 00H PCPU3 PCPU2 PCPU1 PCPU0 “”未定义,读为“0” PAWKn:PA 口唤醒功能使能 0: 除能 1: 使能 PACn/PBCn/PCCn:I/O 类型选择 0: 输出 1: 输入 PAPUn/PBPUn/PCPUn:上拉功能使能 0: 除能 1: 使能 Rev 1.00 2011-04-13 35 HT46R064B/065B/066B HT46R065B 寄存器寄存器 名称名称 POR 位位 7 6 5 4 3 2 1 0 PAWK 00H PAWK7 PAWK6 PAWK5 PAWK4 PAWK3
116、PAWK2 PAWK1 PAWK0 PAC FFH PAC7 PAC6 PAC5 PAC4 PAC3 PAC2 PAC1 PAC0 PAPU 00H PAPU6 PAPU5 PAPU4 PAPU3 PAPU2 PAPU1 PAPU0 PBC 3FH PBC5 PBC4 PBC3 PBC2 PBC1 PBC0 PBPU 00H PBPU5 PBPU4 PBPU3 PBPU2 PBPU1 PBPU0 PCC FFH PCC7 PCC6 PCC5 PCC4 PCC3 PCC2 PCC1 PCC0 PCPU 00H PCPU7 PCPU6 PCPU5 PCPU4 PCPU3 PCPU2 PCPU1 P
117、CPU0 “” 未定义,读为“0” PAWKn:PA 口唤醒功能使能 0: 除能 1: 使能 PACn/PBCn/PCCn:I/O 类型选择 0: 输出 1: 输入 PAPUn/PBPUn/PCPUn:上拉功能使能 0: 除能 1: 使能 HT46R066B 寄存器寄存器 名称名称 POR 位位 7 6 5 4 3 2 1 0 PAWK 00H PAWK7 PAWK6 PAWK5 PAWK4 PAWK3 PAWK2 PAWK1 PAWK0 PAC FFH PAC7 PAC6 PAC5 PAC4 PAC3 PAC2 PAC1 PAC0 PAPU 00H PAPU6 PAPU5 PAPU4 PAP
118、U3 PAPU2 PAPU1 PAPU0 PBC 3FH PBC5 PBC4 PBC3 PBC2 PBC1 PBC0 PBPU 00H PBPU5 PBPU4 PBPU3 PBPU2 PBPU1 PBPU0 PCC FFH PCC7 PCC6 PCC5 PCC4 PCC3 PCC2 PCC1 PCC0 PCPU 00H PCPU7 PCPU6 PCPU5 PCPU4 PCPU3 PCPU2 PCPU1 PCPU0 PDC 0FH PDC3 PDC2 PDC1 PDC0 PDPU 00H PDPU3 PDPU2 PDPU1 PDPU0 “” 未定义,读为“0” PAWKn:PA 口唤醒功能使能
119、0: 除能 1: 使能 PACn/PBCn/PCCn/PDCn:I/O 类型选择 0: 输出 1: 输入 PAPUn/PBPUn/PCPUn/PDPUn:上拉功能使能 0: 除能 1: 使能 Rev 1.00 2011-04-13 36 HT46R064B/065B/066B 输入输入/输出端口控制寄存器输出端口控制寄存器 每一个输入/输出口都具有各自的控制寄存器(PAC,PBC,PCC,PDC)用来控制输入/输出状态。从而每个 I/O 引脚都可以通过软件控制,动态的设置带上拉电阻或者不带上拉电阻。所有的 I/O 端口的引脚都各自对应于 I/O 端口控制的某一位。若 I/O 引脚要实现输入功能
120、,则对应的控制寄存器的位需要设置为“1”,这时程序指令可以直接读取输入脚的逻辑状态。若控制寄存器相应的位被设定为“0”,则此引脚被设置为 CMOS 输出。当引脚设置为输出状态时,程序指令读取的是输出端口寄存器的内容。注意,如果对输出口做读取动作时,程序读取到的是内部输出数据锁存器中的状态,而不是输出引脚上实际的逻辑状态。 引脚共用功能引脚共用功能 引脚的共用功能可以增加单片机应用的灵活性。有限的引脚个数将会限制设计者,而引脚的多功能将会解决很多此类问题。多功能输入/输出的功能选择,有些是由配置选项进行设定,有些则是在应用程序中进行控制。 外部中断输入 外部中断引脚 INT 与一个 I/O 引脚
121、共用。为了使用该引脚作为外部中断输入引脚,需要正确设置 INTC0 寄存器中的有关位。此外,还需要通过端口控制寄存器中的 PAC.3 位来设置该引脚为输入脚。如果需要,可以通过上拉电阻寄存器来选择带上拉电阻。注意即使该引脚被配置为外部中断输入,引脚的输入/输出功能将依然存在。 外部定时/计数器输入 定时/计数器引脚(TC0 和 TC1)与输入/输出引脚共用。如果设定为定时/计数器的输入,则需要通过设置外部定时/计数器控制寄存器相应的位将外部定时/计数器配置为外部事件计数模式或者脉冲宽度测量模式,同时该引脚需要通过端口控制寄存器设置为输入,上拉电阻也可以通过上拉电阻寄存器进行设置。注意,即使该引
122、脚被配置为外部定时/计数器输入,输入/输出功能依然存在。 PFD 输出 此系列单片机均提供有 PFD 信号输出,与输入/输出引脚共用。PFD 的输出可通过 CTRL0 寄存器进行设置。注意端口控制寄存器相应的位需要设置为输出高才能使能 PFD 的输出。如果端口控制寄存器被设置为输入,即使正确设置了 PFD 的输出,该引脚都只作为普通逻辑输入脚,并且允许选择上拉电阻。 PWM 输出 此系列单片机均提供有 PWM 功能,与输入/输出引脚共用。 PWM 输出功能通过 CTRL0 寄存器来设置。注意端口控制寄存器相应的位需要设置为输出高才能使能 PWM 的输出。如果端口控制寄存器被设置为输入,即使 P
123、WM 寄存器已经使能 PWM 功能,该引脚都只作为普通逻辑输入脚,并且允许选择上拉电阻。 软件控制的 COM 口驱动引脚 PB 端口中的 PB0PB3 能被用做 LCD COM 的驱动引脚。该功能由 SCOMC 寄存器来控制。通过设置 SCOMC 寄存器,可以使 PB0PB3 四个引脚上输出驱动 LCD 所需要的 1/2 bias 偏置电压。 A/D 输入引脚 该系列单片机具有 4 个或 8 个 A/D 转换器输入。所有的模拟输入与 I/O 脚共用。如果需要将这些引脚用作为 A/D 输入而非 I/O 脚,则需要正确设定 A/D 转换控制寄存器 ADCR 中相应的 PCRn位。在配置选项中,没有
124、与 A/D 转换器相关的选项。如果这些引脚作为输入/输出脚使用,仍可以通过配置选项选择是否要接上拉电阻。然而如果作为 A/D 输入使用,则这些引脚上的上拉电阻会自动断开。 Rev 1.00 2011-04-13 37 HT46R064B/065B/066B 引脚功能重置引脚功能重置 - HT46R066B 引脚功能重置可以将功能引脚 INT,TC0 和 PFD 设置在不同的端口引脚上。注意,不要混淆引脚功能重置和引脚共用这两项功能,它们互不相关。 CTRL0 寄存器的 PCFG 位允许三个功能引脚 INT,TC0 和 PFD 设置到不同的端口引脚。在上电后,该位被重置为 0,这将确定这三个功能
125、设置到默认引脚。改变该位将移动这些功能到其它端口引脚上。 检查封装引脚上的名称就会发现一些引脚功能名称重复。这说明该功能引脚可以设置到其它端口引脚。如果引脚名称有括号,则说明它是替代的位置,而不带括号的引脚就表明这是上电后默认的位置。 PCFG 位状态位状态 PCFG 位位 0 1 引脚功能重置 INT/PA3 TC0/PA2 PFD/PA1 INT/PB5 TC0/PB4 PFD/PB3 引脚功能重置引脚功能重置 输入输入/输出引脚结构输出引脚结构 下图为输入/输出引脚的内部结构图。输入/输出引脚的准确逻辑结构图可能与此图不同,这里只是为了方便对功能的理解提供的一个参考。 通用输入通用输入/
126、输出端口输出端口 Rev 1.00 2011-04-13 38 HT46R064B/065B/066B PA7 NMOS 输入输入/输出端口输出端口 PB 输入输入/输出端口输出端口 编程注意事项编程注意事项 在编程中,最先要考虑的是端口的初始化。复位之后,所有的输入/输出数据及端口控制寄存器都将被设为逻辑高。所有输入/输出引脚默认为输入状态,而其电平则取决于其它相连接电路以及是否选择了上拉电阻。如果端口控制寄存器某些引脚位被设定输出状态,这些输出引脚会有初始高电平输出,除非数据寄存器端口在程序中被预先设定。设置哪些引脚是输入及哪些引脚是输出,可通过设置正确的值到适当的端口控制寄存器,或者使用
127、指令S ET m.i及CL R m.i来设定端口控制寄存器中个别的位。注意,当使用这些位控制指令时,系统即将产生一个读-修改-写的操作。单片机需要先读入整个端口上的数据,修改个别的位,然后重新把这些数据写入到输出端口。 读写时序图读写时序图 PA0PA7 的每个引脚可通过 PAWK 寄存器设置带唤醒功能。单片机处于休眠模式时,有很多方法可以唤醒单片机,其中之一就是通过 PA 任一引脚电平从高到低的转换的方式,可以设置 PA口一个或者多个引脚具有唤醒功能。 Rev 1.00 2011-04-13 39 HT46R064B/065B/066B 定时定时/计数器计数器 定时/计数器在任何单片机中都是
128、一个很重要的部分, 提供程序设计者一种实现和时间有关功能的方法。这些芯片具有一到两个 8 位的向上计数器。每个定时/计数器有三种不同的工作模式,可以当作一个普通定时器、外部事件计数器或脉冲宽度测量使用。并且提供了一个内部时钟分频器,以扩大定时器的范围。 有两种和定时/计数器相关的寄存器。第一种类型的寄存器是用来存储实际的计数值,赋值给此寄存器可以设定初始值,读取此寄存器可获得定时/计数器的内容;第二种类型的寄存器为定时器控制寄存器,用来定义定时/计数器工作模式和定时设置。定时/计数器的时钟源可来自内部时钟源或外部定时器引脚。 配置定时配置定时/计数器输入时钟源计数器输入时钟源 定时/计数器的时
129、钟源可有多种选择,可以是内部时钟,也可以是外部引脚。当定时/计数器工作在定时器模式或脉冲宽度测量模式时,使用内部时钟作为时钟源。对于某些定时/计数器,内部时钟首先由分频器分频,分频比由定时器控制寄存器的位 T0PSC0 T0PSC2 来确定。对于定时/计数器0,内部时钟源可以通过 TMR0C 寄存器的 T0S 位来选择 fSYS或者 LXT 振荡器。 当定时/计数器在事件计数模式时,使用外部时钟源,时钟源由外部时钟输入引脚 TCn 提供。每次外部引脚由高电平到低电平或者由低电平到高电平(由 TnEG 位决定)进行转换时,计数器增加一。 定时定时/计数寄存器计数寄存器 - TMR0, TMR1
130、定时/计数寄存器 TMR0 和 TMR1 是位于特殊数据存储器内的特殊功能寄存器,用于储存定时器的当前值。 在用作内部定时且收到一个内部计数脉冲或用作外部计数且外部定时/计数器引脚发生状态跳变时,此寄存器的值将会加一。定时器将从预置寄存器所载入的值开始计数,到 FFH 时定时器溢出且会产生一个内部中断信号。定时器的值随后被预置寄存器的值重新载入并继续计数。 注意,上电后预置寄存器处于未知状态。为了得到定时器的最大计算范围 FFH,预置寄存器需要先清为零。定时/计数器在关闭条件下,写数据到预置寄存器,会立即写入实际的定时器。而如果定时/计数器已经打开且正在计数, 在这个周期内写入到预置寄存器的任
131、何新数据将保留在预置寄存器,直到溢出发生时才被写入实际定时器。 定时定时/计数控制寄存器计数控制寄存器 - TMR0C, TMR1C Holtek 单片机灵活的特性也表现在定时器的多功能上,定时/计数器能提供三种不同的工作模式,由相应的控制寄存器来选择定时/计数器的工作方式。 定时/计数控制寄存器为 TMRnC,配合相应的 TMRn 寄存器控制定时/计数器的全部操作。在使用定时器之前,需要先正确地设定定时/计数控制寄存器,以便保证定时器能正确操作,而这个过程通常在程序初始化期间完成。 定时/计数控制寄存器的第 7 位和第 6 位,即 TnM1/TnM0,用来设定定时器的工作模式。定时/计数控制
132、寄存器的第 4 位即 TnON,用于定时器开关控制,设定为逻辑高时,计数器开始计数,而清零时则停止计数。定时/计数控制寄存器的第 02 位用来控制输入时钟预分频器。如果使用外部时钟源,预分频器位将不起作用。如果定时/计数器工作在外部事件计数模式或脉冲宽度测量模式,TnEG 位即 TMRC 寄存器的第 3 位将可用来选择上升沿或下降沿触发。 TnS 位用来选择内部时钟源。 Rev 1.00 2011-04-13 40 HT46R064B/065B/066B Timer/PWM/Time Base 的时钟源结构图的时钟源结构图 8 位定时位定时/计数器计数器 0 结构图结构图 8 位定时位定时/计
133、数器计数器 1 结构图结构图 注注:当 PWM0/PWM1 使能时,fTP来自 fSYS(忽略 T0S) Rev 1.00 2011-04-13 41 HT46R064B/065B/066B TMR0C 寄存器寄存器 Bit 7 6 5 4 3 2 1 0 Name T0M1 T0M0 T0S T0ON T0EG T0PSC2 T0PSC1 T0PSC0 R/W R/W R/W R/W R/W R/W R/W R/W R/W POR 0 0 0 0 1 0 0 0 Bit 7,6 T0M1, T0M0: 选择 Timer0 工作模式 00: 无可用模式 01: 计数器模式 10: 定时器模式
134、11: 脉冲宽度测量模式 Bit 5 T0S: 定时器时钟源 0: fSYS 1: LXT 振荡器 T0S 用来选择 Timer0,时基和 PWM 的时钟源 fTP, 如果 PWM 使能,fTP固定 fSYS,忽略 T0S 的设置。 Bit 4 T0ON: 定时/计数器使能 0: 除能 1: 使能 Bit 3 T0EG: 计数器有效边沿选择 0: 在上升沿计数 1: 在下降沿计数 脉冲宽度测量有效边沿选择 0: 在下降沿启动计数,在上升沿停止计数 1: 在上升沿启动计数,在下降沿停止计数 Bit 20 T0PSC2, T0PSC1, T0PSC0: 选择定时器预分频比 定时器内部时钟 = 00
135、0: fTP 001: fTP/2 010: fTP/4 011: fTP/8 100: fTP/16 101: fTP/32 110: fTP/64 111: fTP/128 TMR1C 寄存器寄存器 Bit 7 6 5 4 3 2 1 0 Name T1M1 T1M0 T1S T1ON T1EG R/W R/W R/W R/W R/W R/W POR 0 0 0 0 1 Bit 7,6 T1M1, T1M0: 选择 Timer1 工作模式 00: 无可用模式 01: 计数器模式 10: 定时器模式 11: 脉冲宽度测量模式 Bit 5 T1S: 定时器时钟源 0: fSYS/4 1: LX
136、T 振荡器 Bit 4 T1ON: 定时/计数器使能 0: 除能 1: 使能 Bit 3 T1EG: 计数器有效边沿选择 0: 在上升沿计数 Rev 1.00 2011-04-13 42 HT46R064B/065B/066B 1: 在下降沿计数 脉冲宽度测量有效边沿选择 0: 在下降沿启动计数,在上升沿停止计数 1: 在上升沿启动计数,在下降沿停止计数 Bit 20 未定义,读为“0” 定时器模式定时器模式 在这个模式下,定时器可以用来测量固定时间间隔,当定时器发生溢出时,就会产生一个内部中断信号。为使定时/计数器工作在定时器模式,TnM1/TnM0 需要设置成 1 和 0。 Bit7 Bi
137、t6 1 0 控制寄存器的模式选择位控制寄存器的模式选择位 在定时器模式中, fSYS、fSYS/4 或者 LXT 振荡器被用来当定时器的输入时钟源。然而,定时/计数器 0 的时钟源可被预分频器进一步分频,分频比是由定时器控制寄存器的 T0PSC2T0PSC0 位来确定。定时器控制寄存器第 4 位,即 TnON 位需要设为逻辑高,才能令定时器工作。每次内部时钟由高到低的电平转换都会使定时器值增加一。当定时器计数已满即溢出时,会产生中断信号且定时器会重新载入预置寄存器的值,然后继续计数。定时器溢出以及相应的内部中断产生也是唤醒暂停模式的一种方法。通过设置中断寄存器 INTCn 中的位 TnE 为
138、 0,可以禁止计数器中断。 定时器模式时序图定时器模式时序图 外部事件计数模式外部事件计数模式 定时/计数器工作在外部事件计数模式,可以通过定时/计数器来记录发生在 TCn 引脚的外部逻辑事件变化的次数。为使定时/计数器工作在外部事件计数模式,TnM1/TnM0 需要设置成 0 和 1。 Bit7 Bit6 0 1 控制寄存器的模式选择位控制寄存器的模式选择位 在外部事件计数模式,外部定时脚 TCn 被用来当定时/计数器的计时源且不被内部预分频器进一步分频。在设置完定时/计数控制寄存器其它位,定时/计数器控制寄存器第 4 位,即 TnON 位需要设为逻辑高,才能使计数器工作。当定时控制寄存器第
139、 3 位,即 TnEG 设置为逻辑低时,每次外部计数引脚接收到由低到高电平的转换将使计数器加一。而当 TnEG 为逻辑高时,每次外部定时/计数器引脚接收到由高到低电平的转换将使计数器加一。当计数器计数满,即溢出时会产生中断信号且计数器会重新加载预置寄存器的值,然后继续计数。计数器溢出中断可通过设置相应的中断寄存器中的定时/计数器中断使能位为 0 而禁止。 由于外部时钟引脚和普通输入/输出引脚共用, 为了确保工作在外部事件计数模式, 要注意两点。首先是要将定时/计数器的工作模式设定在事件计数模式, 其次是确定端口控制寄存器将这个引脚设定为输入状态。注意,在外部事件计数模式下,当单片机工作在休眠模
140、式时也保持对外部 TCn 引脚的事件计数功能。当计数器溢出时,将产生一个定时器中断,并且可以作为唤醒暂停模式的一种方法。 Rev 1.00 2011-04-13 43 HT46R064B/065B/066B 事件计数器模式时序图(事件计数器模式时序图(TnEG=1) 脉冲宽度测量模式脉冲宽度测量模式 定时/计数器工作在脉冲宽度测量这个模式,可以测量外部定时器引脚上的外部脉冲宽度。为使定时/计数器工作在脉冲宽度测量模式,TnM1/TnM0 需要设置 1 和 1。 Bit7 Bit6 1 1 控制寄存器的模式选择位控制寄存器的模式选择位 在脉冲宽度测量模式中,fSYS,fSYS /4 或者 LXT
141、 作为 8 位定时/计数器的内部时钟源,定时/计数器 0 的时钟源可被预分频器进一步分频。分频比由预分频选择位 T0PSC2T0PSC0,即定时控制寄存器的第 20 位来确定。 在设置完定时/计数控制寄存器其它位, 定时器控制寄存器第 4 位, 即 TnON位需要设为逻辑高,才能使定时/计数器工作。然而,只有当在外部定时器引脚上接收到有效的逻辑转换时,定时/计数器才真正开始启动计数。 当定时控制寄存器第 3 位,即 TnEG 设置为逻辑低时,每次外部定时器引脚接收到由高到低电平的转换时将开始计数直到外部定时/计数器引脚回到它原来的高电平。此时使能位将自动清除为 0以停止计数。而当 TnEG 为
142、逻辑高时,每次外部定时器接收到由低到高电平的转换时将开始计数直到外部定时/计数器引脚回到它原来的低电平。同样使能位将自动清除为 0 以停止计数。注意,在脉冲宽度测量模式中,当外部定时器上的外部控制信号回到它原来的电平时,使能位将自动地清除为0。而在其它两种模式,使能位只能在程序控制下清除为 0。 可以通过程序读取定时/计数器当前值,获得 TCn 外部引脚的信号脉冲宽度。当使能位重新复位,任何出现在外部定时器引脚上信号脉冲将被忽略。直到使能位被程序重新置高,开始重新测量外部脉冲。这种方式使得测量窄脉冲将会很容易实现。 注意,在这种模式下,定时/计数器是通过外部定时器引脚上的逻辑转换来控制,而不是
143、通过逻辑电平。当定时/计数器计满,即溢出时会产生中断信号且定时/计数器会重新加载预置寄存器的值,然后继续向上计数。 定时/计数器溢出中断可通过设置相应的中断寄存器中的定时/计数器使能位为 0 而禁止。 由于 TCn 引脚和普通输入/输出引脚共用,为了确保工作在脉冲宽度测量模式,要注意两点。首先是要将定时/计数器的工作模式设定在脉冲宽度测量模式, 其次是确定端口控制寄存器将这个引脚设定为输入状态。 脉冲宽度测量模式时序图(脉冲宽度测量模式时序图(TnEG=0) 预分频器预分频器 TMR0C 寄存器的 T0PSC0T0PSC2 位用来确定定时/计数器的内部时钟的分频比,从而能够设置更长的定时器溢出
144、周期。 Rev 1.00 2011-04-13 44 HT46R064B/065B/066B PFD 功能功能 PFD(Programmable Frequency Divider)提供了一个可编程分频器,适用于像蜂鸣器驱动或者其它需要精确频率的场合。 PFD 功能的时钟源是定时/计数器溢出信号, 由 CTRL0 中的 PFDCS 来控制。 该时钟源可以来自定时/计数器 0 或者定时/计数器 1。 输出频率的控制可以通过设置适当值到预分频器和定时寄存器来达到要求的分频比。计数器将开始从预置值开始向上计数,直到满,此时,将产生一个溢出信号,导致 PFD 输出改变状态。然后,计数器将自动从预置寄存
145、器中加载预置值,并且继续向上计数。 如果CTRL0 寄存器已经选择PFD 功能, 为了能对蜂鸣器输出进行操作, 端口A 控制寄存器PAC的设置是至关重要的,需要设置 PFD 引脚为输出。PA1 需要设置高来激活 PFD。输出数据位可以用来作为 PFD 输出的开关控制位。注意,如果输出数据位清零,PFD 输出将一直输出低。 如果使用晶体振荡器作为系统时钟,通过该方法能产生非常准确的频率。 PFD 功功能能 输入输入/输出接口输出接口 当定时/计数器运行在计数或者脉冲宽度测量模式下,定时/计数器需要使用外部定时器引脚以确保正确的动作。由于该引脚是共用引脚,因此需要正确的将其配置为定时/计数器输入引
146、脚。这可以通过定时/计数器控制寄存器的模式选择位来选择是计数模式或者脉冲宽度测量模式。此外,相应的端口控制寄存器位需要被设置为高,来确保该引脚是作为输入脚。即使该引脚用作定时/计数器输入,任何连接到这个引脚的上拉电阻将仍然是有效的。 编程注意事项编程注意事项 当定时/计数器工作在定时器模式时,内部的系统时钟作为定时器的时钟源,因此与单片机所有运算都能同步。在这个模式下,当定时器寄存器溢出时,微控制器将产生一个内部中断信号,使程序进入相应的内部中断向量。对于脉冲宽度测量模式,定时器时钟源同样使用内部的系统时钟,然而,只有正确的逻辑条件出现在定时器输入引脚时,定时器才开始运行。当这个外部事件没有和
147、内部定时器时钟同步时,只有当下一个定时器时钟到达时,单片机才会看到这个外部事件,因此在测量值上可能有小的差异,需要程序设计者在程序应用时加以注意。同样的情况发生在定时器设置为外部事件计数模式时,它的时钟来源是外部事件,与内部系统时钟或者定时器时钟不同步。 当读取定时/计数器值或写数据到预置寄存器时,计数时钟会被禁止以避免发生错误,但这样做可能会导致计数错误,所以程序设计者应该考虑到这点。在第一次使用定时/计数器之前,要仔细确认有没有正确地设定初始值。中断控制寄存器中的定时器使能位需要正确的设置,否则相应定时/计数器内部中断仍然无效。定时/计数器控制寄存器中的触发边沿选择、定时/计数器工作模式和
148、时钟源控制位也需要正确的设定,以确保定时/计数器按照应用需求而正确的配置。在定时/计数器打开之前,需要确保先载入定时/计数器寄存器的初始值,这是因为在上电后,定时/计数器寄存器中的初始值是未知的。定时/计数器初始化后,可以使用定时/计数器控制寄存器中的使能位来打开或关闭定时器。 当定时/计数器产生溢出,中断控制寄存器中相应的中断请求标志将置位。若中断允许,将会依次产生一个中断信号。不管中断是否允许,在省电状态下,定时/计数器的溢出也会产生唤醒。这种情况可能发生在外部信号变化的计数模式中。定时/计数器向上计数直至溢出并唤醒系统。若在省电模式下,不需要定时器中断唤醒系统,可以在执行“HALT”指令
149、之前将相应中断请求标志位置位。 Rev 1.00 2011-04-13 45 HT46R064B/065B/066B 定时定时/计数器应用范例计数器应用范例 这个例子说明了如何设置定时/计数器的寄存器,如何设置和控制中断。另外还需注意怎样通过寄存器的第 4 位来启停定时/计数器。此应用范例设置定时/计数器为定时模式,时钟来源于内部的系统时钟。 PFD 编程应用范例编程应用范例 org 04h ; external interrupt vector org 08h ; Timer Counter 0 interrupt vector jmp tmr0int ; jump here when Ti
150、mer 0 overflows : : org 20h ; main program : : ;internal Timer 0 interrupt routine tmr0int: : ;Timer 0 main program placed here : : begin: ;setup Timer 0 registers mov a,09bh ; setup Timer 0 preload value mov tmr0,a mov a,081h ; setup Timer 0 control register mov tmr0c,a ; timer mode and prescaler s
151、et to /2 ;setup interrupt register mov a,00dh ; enable master interrupt and both timer interrupts mov intc0,a : : set tmr0c.4 ; start Timer 0 : : 时基功能时基功能 此系列的单片机具有时基功能,用来产生一个有规律的时间间隔信号。 时基功能中时间长度可以通过内部 13 级计数器设置时钟源的分频比来实现,而分频比则是由CTRL1 寄存器中的 TBSEL0 和 TBSEL1 来设置。另外,TMR0C 寄存器中的 T0S 位可以用来选择时基的时钟源。 当时基溢
152、出时,将产生一个时基中断信号。需要注意的是,时基中断时钟源和定时/计数器的时钟源相同,在编程的时候要多加小心。 Rev 1.00 2011-04-13 46 HT46R064B/065B/066B 脉冲宽度调制脉冲宽度调制 - PWM 该系列单片机提供多通道 8 位的脉冲宽度调制(PWM)输出。这在马达速率控制应用方面十分有用,通过给相应的 PWM 寄存器设定一定数值,PWM 功能可提供占空比可调但频率固定的 PWM信号输出。 PWM 方块图方块图 单片机型号单片机型号 通道通道 PWM 模式模式 输出引脚输出引脚 PWM 寄存器名称寄存器名称 HT46R064B HT46R065B 1 6+
153、2 7+1 PA4 PWM0 HT46R066B 2 PA4 PC3 PWM0 PWM1 PWM 工作模式工作模式 在数据存储器中,单片机为每一个 PWM 都指定了对应的寄存器,称为 PWMn 寄存器。此寄存器为 8 位,表示输出波形中每个调制周期的占空比。为了提高 PWM 调制频率,每个调制周期被调制两个或四个独立的调制子区段,即分别是 7+1 模式或 6+2 模式。可以通过设置 CTRL0 寄存器来选择每个 PWM 通道所需的模式和开关控制。注意,当使用 PWM 时,只要将所需的值写入相应的PWMn 寄存器并通过 CTRL0 寄存器设置所需模式和开关控制,单片机内部电路即自动完成 PWM各
154、子调制周期的划分输出 PWM 信号。PWM 的时钟源只能为系统时钟。 将原始调制周期分成 2 个或 4 个子周期的方法,使产生更高的 PWM 频率成为可能,这样可以提供更广泛的应用。 使用者需要理解 PWM 频率与 PWM 调制频率的不同之处。 PWM 时钟为系统时钟 fSYS,当 PWM 值为 8 位时,整个 PWM 周期的频率为 fSYS /256。在 7+1 模式,PWM 调制频率将会是 fSYS /128,在 6+2 模式,PWM 调制频率将会是 fSYS /64。 PWM 调制频率调制频率 PWM 频率频率 PWM 占空比占空比 fSYS /64 for (6+2)模式 fSYS /
155、128for (7+1) 模式 fSYS/256 PWM/256 6+2 PWM 模式模式 通过一个 8 位的 PWM 寄存器控制,每个完整的 PWM 周期由 256 个时钟周期组成。在 6+2 PWM 模式中,每个 PWM 周期又被分成四个独立的子周期,称为调制周期 0调制周期 3,在表格中以“i”表示。四个子周期各包含 64 个时钟周期。在这个模式下,得到以 4 为因数增加的调制频 Rev 1.00 2011-04-13 47 HT46R064B/065B/066B 率。8 位的 PWM 寄存器被分成两个部分,这个寄存器的值表明整个 PWM 波形的占空比。第一部分包括第 2 位第 7 位,
156、表示 DC 值,第二部分为第 0 位第 1 位,表示 AC 值。在 6+2 PWM 模式中,四个调制子周期的占空比,分别如下表所示。 参数参数 AC (03) DC (占空比占空比) 调制周期 i (i=03) iAC DC+1 64 iAC DC 64 6+2 模式调制周期值模式调制周期值 下图表示在 6+2 模式下 PWM 输出的波形。请特别注意单个的 PWM 周期是如何被划分为四个单独的调制周期 03 以及 AC 值与 PWM 值之间的关系。 6+2 PWM 模式模式 6+2 模式时的模式时的 PWM 寄存器寄存器 7+1 PWM 模式模式 通过一个 8 位的 PWM 寄存器控制, 每个
157、完整的 PWM 周期由 256 个时钟周期组成。 在 7+1 PWM模式中,每个 PWM 周期又被分成两个独立的子周期,称为调制周期 0调制周期 1,在表格中以“i表示。两个子周期各包含 128 个时钟周期。在这个模式下,得到以 2 为因数增加的调制频率。8 位的 PWM 寄存器被分成两个部分,这个寄存器的值表明整个 PWM 波形的占空比。第一部分包括第1 位第 7 位,表示 DC 值,第二部分为第 0 位,表示 AC 值。在 7+1 PWM 模式中,两个调制子周期的占空比,分别如下表所示。 参数参数 AC (01) DC (占空比占空比) 调制周期 i (i=01) iAC DC+1 128
158、 iAC DC 128 7+1 模式调制周期值模式调制周期值 下图表示在 7+1 模式下 PWM 输出的波形。请特别注意单个的 PWM 周期是如何被划分为两个 Rev 1.00 2011-04-13 48 HT46R064B/065B/066B 单独的调制周期 01 以及 AC 值与 PWM 值之间的关系。 7+1 PWM 模式模式 7+1 模式的模式的 PWM 寄存器寄存器 PWM 输出控制输出控制 此系列单片机的 PWM 输出引脚与 I/O 脚 PA4 和 PC3 共用。要使某个引脚作为 PWM 输出而非普通的 I/O 引脚,需要在 CTRL0 寄存器中设置正确的位,在 I/O 端口控制寄
159、存器相应的位 PAC.4和 PCC.3 也需要写 0,以确保所需要的 PWM 输出引脚设置为输出状态。在完成这两个初始化步骤,以及将所要求的 PWM 值写入 PWMn 寄存器之后,将“1”写入到 PA.4 和 PC.3 输出数据寄存器的相应位,使 PWM 数据能够出现在引脚上。将“0”写入到 PA.4 和 PC.3 输出数据寄存器的相应位,则会使 PWM 输出功能失效并强制输出低电平。通过这种方式,端口数据寄存器即作为 PWM 功能的开关控制位。注意,如果 CTRL0 寄存器选择 PWM 功能,但是对 PAC 或 PCC 控制寄存器的相应位写入 1 设置此引脚为输入,则该引脚仍可作为带上拉电阻
160、的普通输入端口使用。 PWM 编程应用范例编程应用范例 下面的范例程序说明了如何设置及控制 PWM0 输出 mov a,64h ; setup PWM value of decimal 100 mov pwm0,a set ctrl0.5 ; select the 7+1 PWM mode set ctrl0.3 ; select pin PA4 to have a PWM function clr pac.4 ; setup pin PA4 as an output set pa.4 ; enable the PWM output : : clr pa.4 ; disable the PWM
161、 output_ pin ; PA4 forced low Rev 1.00 2011-04-13 49 HT46R064B/065B/066B A/D 转换器转换器 对于大多的电子系统而言,处理现实世界的模拟信号是共同的需求。为了完全由单片机来处理这些信号, 首先需要通过 A/D 转换器将模拟信号转换成数字信号。 将 A/D 转换器电路集成入单片机,可有效的减少外部器件,随之而来,具有降低成本和减少器件空间需求的优势。 A/D 简介简介 此系列每款单片机都包含了 4/8 通道的 A/D 转换器,它们可以直接接入外部模拟信号(来自传感器或其它控制信号)并直接将这些信号转换成 12 位的数字量。
162、 单片机型号单片机型号 输入通道输入通道 转换位数转换位数 输入引脚输入引脚 HT46R064B HT46R065B 4 12 PA0PA3 HT46R066B 8 12 PA0PA3 PC0PC1 PC6PC7 下图显示了 A/D 转换器内部结构和相关的寄存器。 A/D 转换器结构转换器结构 A/D 转换器数据寄存器转换器数据寄存器 - ADRL,ADRH 对于具有 12 位 A/D 转换器的芯片,需要两个寄存器,一个高字节寄存器 ADRH 和一个低字节寄存器 ADRL。在 A/D 转换完毕后,单片机可以直接读取这些寄存器以获得转换结果。对于具有 2个 A/D 转换结果寄存器的单片机,注意,
163、只有高位寄存器 ADRH 完全利用了 8 位。而低位寄存器ADRL 只使用了 8 位中的 4 位,它存放的是 12 位转换值中低的 4 位。 在下表中,D0D11 是 A/D 换转数据结果位。 寄存器寄存器 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 ADRL D3 D2 D1 D0 ADRH D11 D10 D9 D8 D7 D6 D5 D4 A/D 数据寄存器数据寄存器 Rev 1.00 2011-04-13 50 HT46R064B/065B/066B ADRH、ADRL 寄存器寄存器 Bit ADRH ADRL 7 6 5 4 3 2
164、 1 0 7 6 5 4 3 2 1 0 Name D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 R/W R R R R R R R R R R R R POR “”表示未知 “”未定义,读为“0” D11D0 是 A/D 换转数据 A/D 转换控制寄存器转换控制寄存器 - ADCR, ACSR 寄存器 ADCR 和 ACSR 用来控制 A/D 转换器的功能和操作。这两个 8 位的寄存器定义包括选择哪一个模拟通道连接至内部 A/D 转换器,哪个引脚是模拟输入,哪个引脚是基本输入/输出端口,A/D 时钟源,并控制和监视 A/D 转换器的开始和复位功能。 寄存器 AD
165、CR 包含 ACS2ACS0 位,它们定义通道的编号。由于每个单片机只包含一个实际的模数转换电路,因此这 8 个模拟输入中的每一个都需要分别被发送到转换器。ADCR 寄存器中ACS2ACS0 位的功能正是决定哪个模拟通道真正连接到内部 A/D 转换器。 ADCR 寄存器中的 PCR2PCR0 位,用来定义 PA0PA3,PC0,PC1,PC6,PC7 中的哪些引脚为A/D 转换器的模拟输入,哪些引脚为正常的 I/O。如果 PCR2PCR0 这 3 位地址的值等于“111,则AN0AN7这8个引脚都将被设定为模拟输入。 注意, 如果PCR2PCR0全都设为 “0” , 则PA0PA3,PC0,P
166、C1,PC6,PC7 引脚都被设定为正常的 I/O。 ADCR 寄存器寄存器 Bit 7 6 5 4 3 2 1 0 Name START EOCB PCR2 PCR1 PCR0 ACS2 ACS1 ACS0 R/W R/W R R/W R/W R/W R/W R/W R/W POR 0 1 0 0 0 0 0 0 Bit 7 START: 启动 A/D 转换 010:启动 01: 重置 A/D 转换,并且设置 EOCB 为“1” Bit 6 EOCB: A/D 转换标志 0: A/D 转换结束 1: A/D 转换中 Bit 53 PCR2PCR0: A/D 通道配置 对于 HT46R064B
167、/065B 000 关闭所有 A/D 通道- ADC 模块关闭电源 001 使能 PA0 作为 AN0 010 使能 PA0PA1 作为 AN0AN1 011 使能 PA0PA2 作为 AN0AN2 1xx 使能 PA0PA3 作为 AN0AN3 对于 HT46R066B 000 关闭所有 A/D 通道- ADC 模块关闭电源 001 使能 PA0 作为 AN0 010 使能 PA0PA1 作为 AN0AN1 011 使能 PA0PA2 作为 AN0AN2 100 使能 PA0PA3 作为 AN0AN3 101 使能 PA0PA3,PC0 作为 AN0AN4 110 使能 PA0PA3,PC0
168、,PC1 作为 AN0AN5 Rev 1.00 2011-04-13 51 HT46R064B/065B/066B 111 使能 PA0PA3,PC0,PC1,PC6,PC7 作为 AN0AN7 Bit 20 ACS2ACS0: 选择 A/D 通道 对于 HT46R064B/065B 000 AN0 001 AN1 010 AN2 011 AN3 1xx 未定义,不能使用 对于 HT46R066B 000 AN0 001 AN1 010 AN2 011 AN3 100 AN4 101 AN5 110 AN6 111 AN7 ACSR 寄存器寄存器 Bit 7 6 5 4 3 2 1 0 Nam
169、e TEST ADONB ADCS2 ADCS1 ADCS0 R/W R/W R/W R/W R/W R/W POR 1 0 0 0 0 Bit 7 TEST: 只用来测试 Bit 6 ADONB : 控制 ADC 模块电源开启/关闭 0: ADC 模块电源开启 1: ADC 模块电源关闭 注意:1.建议在进入休眠模式之前,设置 ADONB=1 以减小功耗 2.ADONB=1 将关闭 ADC 模块的电源 Bit 53 未定义,读为“0” Bit 20 ADCS2ADCS0: 选择 A/D 转换器时钟源 000: 系统时钟/2 001: 系统时钟/8 010: 系统时钟/32 011: 未定义,
170、不能使用 100: 系统时钟 101: 系统时钟/4 110: 系统时钟/16 111: 未定义,不能使用 ADCR 寄存器中的 START 位,用于打开和复位 A/D 转换器。当单片机设定此位从逻辑低到逻辑高,然后再到逻辑低,就会开始一个模数转换周期。当 START 位从逻辑低到逻辑高,但不再回到逻辑低时,ADCR 寄存器中的 EOCB 位置“1”,复位模数转换器。START 位用于控制内部模数换转器的开/关动作。 ADCR 寄存器中的 EOCB 位用于表明模数转换过程的完成。在转换周期结束后,EOCB 位会被单片机自动地置为“0”。此外,也会置位中断控制寄存器内相应的 A/D 中断请求标志
171、位,如果中断使能, 就会产生对应的内部中断信号。 A/D 内部中断信号将引导程序到相应的 A/D 内部中断入口。如果 A/D 内部中断被禁止,可以让单片机轮询 ADCR 寄存器中的 EOCB 位,检查此位是否被清除,以作为另一种侦测 A/D 转换周期结束的方法。 A/D 转换的时钟源为系统时钟 fSYS分频,而分频系数由 ACSR 寄存器中的 ADCS2,ADCS1 和ADCS0 位决定。 控制 A/D 转换电路的电源开和关,是通过使用 ADONB 位来实现的。 虽然 A/D 时钟源是由系统时钟 fSYS,ADCS2、ADCS1 和 ADCS0 位决定,但可选择的最大 A/D时钟源则有一些限制
172、。允许的 A/D 时钟周期 tAD的最小值为 0.5s,当系统时钟速度超过 4MHz 时就必须小心。当系统时钟速度超过 4MHz 时,ADCS2,ADCS1 和 ADCS0 位不能设为“000。必须 Rev 1.00 2011-04-13 52 HT46R064B/065B/066B 保证设定的 A/D 转换时钟周期不小于时钟周期的最小值, 否则将会产生不准确的 A/D 转换值。 使用者可以参考下面的表格,被标上星号*的数值是不允许的,因为它们的 A/D 转换时钟周期小于规定的最小值。 fSYS A/D 时钟周期时钟周期 (tAD) ADCS2, ADCS1, ADCS0=000 (fSYS/
173、2) ADCS2, ADCS1, ADCS0=001 (fSYS/8) ADCS2, ADCS1, ADCS0=010 (fSYS/32) ADCS2, ADCS1, ADCS0=100 (fSYS) ADCS2, ADCS1, ADCS0=101 (fSYS/4) ADCS2, ADCS1, ADCS0=110 (fSYS/16) ADCS2, ADCS1, ADCS0=011, 111 1MHz 2s 8s 32s 1s 4s 16s 未定义 2MHz 1s 4s 16s 500ns 2s 8s 未定义 4MHz 500ns 2s 8s 250ns* 1s 4s 未定义 8MHz 250n
174、s* 1s 4s 125ns* 500ns 2s 未定义 12MHz 167ns* 667ns 2.67s 83ns* 333ns* 1s 未定义 A/D 时钟周期范例时钟周期范例 A/D 输入引脚输入引脚 所有的 A/D 模拟输入引脚都与 PA 或者 PC 端口的 I/O 引脚共用。使用 ADCR 寄存器中的PCR2PCR0 位,可以将他们设置为普通输入/输出脚或模拟输入脚。通过这种方式,引脚的功能可由程序来控制,灵活地切换引脚功能。当输入引脚作为普通 I/O 脚使用时,可使用上拉电阻,若设置为 A/D 输入,则上拉电阻会自动断开。请注意,PA/PC 端口控制寄存器不需要为使能 A/D 输入
175、而先设定为输入模式,当 PCR2PCR0 位使能 A/D 输入时,不需要考虑端口控制寄存器的状态。 A/D 转换步骤转换步骤 下面概述实现 A/D 转换过程的各个步骤。 步骤 1 通过 ACSR 寄存器中的 ADCS2、ADCS1 和 ADCS0 位,选择所需的 A/D 转换时钟。 步骤 2 通过 ADCR 寄存器中的 PCR2PCR0 位,选择哪些引脚规划为 A/D 输入引脚。 步骤 3 清零 ACSR 寄存器中的 ADONB 位来使能 A/D。 步骤 4 通过 ADCR 寄存器中的 ACS2ACS0 位,选择连接至内部 A/D 转换器的通道。 步骤 5 如果要使用中断,则中断控制寄存器需要
176、正确地设置,以确保 A/D 转换功能是激活的。中断控制寄存器 INTC0 里总中断控制位 EMI 需要置位为“1, 以及 A/D 转换器中断位 ADE 也需要置位为“1。 步骤 6 现在可以通过设定 ADCR 寄存器中的 START 位从“0到“1再回到“0,开始模数转换的过程。注意,该位需初始化为“0。 步骤 7 可以轮询 ADCR 寄存器中的 EOCB 位,检查模数转换过程是否完成。当此位成为逻辑低时,表示转换过程已经完成。转换完成后,可读取 A/D 数据寄存器 ADRL 和 ADRH 获得转换后的值。另一种方法是,若中断使能且堆栈未满,则转换完成后,程序会进入 A/D 中断服务子程序。
177、注意:若使用轮询 ADCR 寄存器中 EOCB 位的状态的方法来检查转换过程是否结束时,则中断使能的步骤可以省略。 Rev 1.00 2011-04-13 53 HT46R064B/065B/066B 下列时序图表示模数转换过程中不同阶段的图形与时序。 A/D 转换时序图转换时序图 A/D 转换器没有对应的配置选项,它的功能设定与操作完全由应用程序控制。由应用程序控制开始 A/D 转换过程后,单片机的内部硬件就会开始进行转换,在这个过程中,程序可以继续其它功能。A/D 转换时间为 16tAD,tAD为 A/D 时钟周期。 编程注意事项编程注意事项 在编程时,需要特别注意寄存器中的 PCR2:0
178、。如果这些全部为零,则没有外部引脚连接到A/D 转换器上,此时的外部引脚可作为普通的 I/O 脚使用。当需要关闭内部 A/D 转换电路以达到降低电源功耗,可以通过设置 ADONB 位为 1 来实现,这一点对电池供电的系统非常重要。 A/D 转换功能转换功能 此系列单片机含有一组 12 位的 A/D 转换器, 它们转换的最大值可达 FFFH。由于模拟输入最大值等于 VDD的电压值,因此每一位可表示 VDD/4096 的模拟输入值。下图显示 A/D 转换器模拟输入值和数字输出值之间理想的转换功能。 为了减少量化错误,A/D 转换器输入端会加入 0.5 LSB 的偏移量。除了数字化数值 0,其后的数
179、字化数值会在精确点之前的 0.5 LSB 处改变,而数字化数值的最大值将在 VDD之前的 1.5 LSB 处改变。 理想的理想的 A/D 转换功能转换功能 Rev 1.00 2011-04-13 54 HT46R064B/065B/066B A/D 转换应用范例转换应用范例 下面两个范例程序用来说明怎样使用 A/D 转换。第一个范例是轮询 ADCR 寄存器中的 EOCB位来判断 A/D 转换是否完成;第二个范例则使用中断的方式判断。 范例范例: 使用查询使用查询 EOCB 的方式来检测转换结束的方式来检测转换结束 clr ADE ; disable ADC interrupt mov a,00
180、000001B mov ACSR,a ; select fSYS/8 as A/D clock and ADONB=0 mov a,00001000B ; setup ADCR register to configure Port as A/D inputs mov ADCR,a ; and select AN0 to be connected to the A/D converter : : Start_conversion: clr START set START ; reset A/D clr START ; start A/D Polling_EOC: sz EOCB ; poll t
181、he ADCR register EOCB bit to detect end ; of A/D conversion jmp polling_EOC ; continue polling mov a,ADRL ; read low byte conversion result value mov adrl_buffer,a ; save result to user defined register mov a,ADRH ; read high byte conversion result value mov adrh_buffer,a ; save result to user defin
182、ed register : jmp start_conversion ; start next A/D conversion 注意: 如果需要关闭 ADC 模块的电源,则需要设置 ADONB 为 1 Rev 1.00 2011-04-13 55 HT46R064B/065B/066B 范例范例: 使用中断的方式来检测转换结束使用中断的方式来检测转换结束 clr ADE ; disable ADC interrupt mov a,00000001B mov ACSR,a ; select fSYS/8 as A/D clock and ADONB=0 mov a,00001000B ; setu
183、p ADCR register to configure Port as A/D inputs mov ADCR,a ; and select AN0 to be connected to the A/D : : Start_conversion: clr START set START ; reset A/D clr START ; start A/D clr ADF ; clear ADC interrupt request flag set ADE ; enable ADC interrupt set EMI ; enable global interrupt : : : ; ADC i
184、nterrupt service routine ADC_: mov acc_stack,a ; save ACC to user defined memory mov a,STATUS mov status_stack,a ; save STATUS to user defined memory : : mov a,ADRL ; read low byte conversion result value mov adrl_buffer,a ; save result to user defined register mov a,ADRH ; read high byte conversion
185、 result value mov adrh_buffer,a ; save result to user defined register : : EXIT_ISR: mov a,status_stack mov STATUS,a ; restore STATUS from user defined memory mov a, acc_stack ; restore ACC from user defined memory clr ADF ; clear ADC interrupt flag reti 注意: 如果需要关闭 ADC 模块的电源,则需要设置 ADONB 为 1。 Rev 1.0
186、0 2011-04-13 56 HT46R064B/065B/066B 中断中断 中断是单片机一个重要功能。当发生外部中断或内部中断(如定时/计数器和时基),系统会中止当前的程序,而转到相对应的中断服务程序中。此系列每一款单片机均提供一个外部中断和多个内部中断,外部中断由 INT 引脚信号触发,而内部中断由定时/计数器和时基溢出控制。 中断寄存器中断寄存器 所有中断允许和请求标志均由 INTC0 和 INTC1 寄存器控制。通过控制相应的中断使能位实现对应中断的打开或关闭。当发生中断,相应有中断请求标志将被置位。总中断请求标志清零将关闭所有中断允许。 HT46R064B INTC0 寄存器寄存
187、器 Bit 7 6 5 4 3 2 1 0 Name ADF T0F INTF ADE T0E INTE EMI R/W R/W R/W R/W R/W R/W R/W R/W POR 0 0 0 0 0 0 0 Bit 7 未定义,读为“0” Bit 6 ADF: A/D 转换中断请求标志 0: 无效 1: 有效 Bit 5 T0F: 定时/计数器 0 中断请求标志 0: 无效 1: 有效 Bit 4 INTF: 外部中断请求标志 0: 无效 1: 有效 Bit 3 ADE: A/D 转换中断使能 0: 除能 1: 使能 Bit 2 T0E: 定时/计数器 0 中断使能 0: 除能 1: 使
188、能 Bit 1 INTE: 外部中断使能 0: 除能 1: 使能 Bit 0 EMI: 总中断使能 0: 除能 1: 使能 INTC1 寄存器寄存器 Bit 7 6 5 4 3 2 1 0 Name TBF TBE R/W R/W R/W POR 0 0 Bit 75,31 未定义,读为“0” Bit 4 TBF: 时基中断请求标志 0: 无效 1: 有效 Bit 0 TBE: 时基中断使能 Rev 1.00 2011-04-13 57 HT46R064B/065B/066B 0: 除能 1: 使能 HT46R065B/ HT46R066B INTC0 寄存器寄存器 Bit 7 6 5 4 3
189、 2 1 0 Name T1F T0F INTF T1E T0E INTE EMI R/W R/W R/W R/W R/W R/W R/W R/W POR 0 0 0 0 0 0 0 Bit 7 未定义,读为“0” Bit 6 T1F: 定时/计数器 1 中断请求标志 0: 无效 1: 有效 Bit 5 T0F: 定时/计数器 0 中断请求标志 0: 无效 1: 有效 Bit 4 INTF: 外部中断请求标志 0: 无效 1: 有效 Bit 3 T1E: 定时/计数器 1 中断使能 0: 除能 1: 使能 Bit 2 T0E: 定时/计数器 0 中断使能 0: 除能 1: 使能 Bit 1 I
190、NTE: 外部中断使能 0: 除能 1: 使能 Bit 0 EMI: 总中断使能 0: 除能 1: 使能 INTC1 寄存器寄存器 Bit 7 6 5 4 3 2 1 0 Name TBF ADF TBE ADE R/W R/W R/W R/W R/W POR 0 0 0 0 Bit 76,32 未定义,读为“0” Bit 5 TBF: 时基中断请求标志 0: 无效 1: 有效 Bit 4 ADF: A/D 转换中断请求标志 0: 无效 1: 有效 Bit 1 TBE: 时基中断使能 0: 除能 1: 使能 Bit 0 ADE: A/D 转换中断使能 0: 除能 1: 使能 Rev 1.00
191、2011-04-13 58 HT46R064B/065B/066B 中断操作中断操作 定时/计数器溢出、时基事件或者外部中断引脚上有一个有效的边沿信号都会产生一个中断请求,如果相应的中断允许,系统将要执行指令的下条地址压入堆栈,并将相应的中断向量地址加载至 PC 中,然后从此向量取下条指令。中断向量处通常为跳转指令,以跳转到相应的中断服务程序。中断服务程序必须以 RETI 指令返回,系统将先前压入堆栈的地址返回 PC,以继续执行中断发生时的程序。 各个中断使能位以及相应的请求标志位,以优先级的顺序如下图所示。 中断示意图中断示意图 一旦中断子程序被响应,所有其它的中断将被屏蔽(系统自动清除 E
192、MI 位),这个方式可以防止中断嵌套。如果其它的中断请求发生在此期间,只有中断请求标志位会被置位。也可以开启中断嵌套,即在某个中断服务子程序中置位 EMI,此时如果有另一个中断发生则允许响应此中断。如果堆栈已满,即使此中断使能,中断请求也不会被响应,直到 SP 减少为止。如果要求中断服务程序立即响应,则堆栈必须避免成为储满状态。 当中断请求产生后,需要插入 2 个或 3 个指令周期,程序才能跳转到相应的中断向量地址。而单片机在休眠模式被唤醒时,需要插入 3 个指令周期,程序才能跳转到响应的中断向量地址。 中断流程图中断流程图 Rev 1.00 2011-04-13 59 HT46R064B/0
193、65B/066B 中断优先级中断优先级 当中断发生在两个连续的 T2 脉冲上升沿之间时,如果相应的中断请求被允许,中断将在后一个 T2 脉冲响应。下表指出在同时提出请求的情况下的优先权。中断请求可以通过重新设定 EMI 位来加以屏蔽。 HT46R064B 中断源中断源 优先级优先级 向量向量 外部中断 1 04H 定时/计数器0溢出中断 2 08H A/D转换完成中断 3 0CH 时基溢出中断 4 10H HT46R065B/ HT46R066B 中断源中断源 优先级优先级 向量向量 外部中断 1 04H 定时/计数器0溢出中断 2 08H 定时/计数器1溢出中断 3 0CH A/D转换完成中
194、断 4 10H 时基溢出中断 5 14H 当外部中断和内部中断均被使能,如果同时发生中断,则外部中断永远优先处理,首先被响应。使用中断寄存器适当地屏蔽个别中断,可以防止同时发生的情况。 外部中断外部中断 要使外部中断发生,总中断控制位 EMI、外部中断使能位 INTE 需要先被置位。外部中断通过外部 INT 引脚上的电平转换来触发,并置位外部中断请求标志位 INTF。通过 INTEG0 和 INTEG1位(CTRL1 寄存器的第 6 位和第 7 位)可以设置外部中断触发方式为下降沿触发、上升沿触发或者双边沿触发,也可以设置关闭外部中断功能。 INTEG1 INTEG0 边沿触发类型边沿触发类型
195、 0 0 外部中断关闭 0 1 上升沿触发 1 0 下降沿触发 1 1 双边沿触发 外部中断与 PA3 共用引脚,如果 INTC0 中相应的外部中断使能位被置位并且在 CTRL1 寄存器中也设置了中断边沿触发类型,PA3 将只能被作为外部中断输入口使用,同时 PAC.3 需将 PA3 设为输入口。当中断使能、堆栈未满且外部中断产生时,将调用位于地址 04H 处的子程序。当进入外部中断服务程序时,外部中断请求标志位 INTF,EMI 位都会被自动清零以屏蔽其它中断。注意,即使作为外部中断引脚,PA3 依然可以设置带有上拉电阻功能。 定时定时/计数器中断计数器中断 要产生定时/计数器中断,总中断控
196、制位 EMI 和相应的定时/计数器中断使能位 TnE 需要先被置位。当定时/计数器发生溢出,相应的中断请求标志位 TnF 将置位并触发定时/计数器中断。若中断使能,堆栈未满,当发生定时/计数器中断时,将调用相应定时器中断子程序。当定时/计数器中断被响应时,中断请求标志位 TnF 被复位且 EMI 被清零以除能其它中断。 Rev 1.00 2011-04-13 60 HT46R064B/065B/066B A/D 转换器中断转换器中断 A/D 转换器中断由 A/D 转换动作的结束来控制。当 A/D 转换器中断请求标志被置位,即 A/D转换过程完成时,中断请求发生。当总中断使能位 EMI 和 A/
197、D 中断使能位 ADE 被置位,允许程序跳转到各自的中断向量地址。当中断使能,堆栈未满且 A/D 转换动作结束时,将调用它们各自的中断向量子程序。当响应中断服务子程序时,相应的中断请求标志位 ADF 会自动清零。EMI 位也会被清零以除能其它中断。 时基中断时基中断 要产生时基中断,总中断使能位 EMI 和时基中断使能位 TBE 需要先被置位。当时基发生溢出,将置位时基请求标志位 TBF,并触发时基中断。当中断被允许且堆栈未满,一旦时基发生溢出,将调用相应时基中断子程序。当时基中断响应时,时基中断标志位 TBF 被复位且 EMI 位被清零以除能其它中断。 编程注意事项编程注意事项 通过除能中断
198、使能位,可以屏蔽中断请求。然而,一旦请求标志位被置位,它将保存在中断寄存器中,直到相应的中断被响应或被软件指令清除。 建议用户不要在中断子程序中使用“Call 子程序”指令。中断通常发生在不可预料的情况或需要立即执行的某些应用。假如只剩下一层堆栈且没有控制好中断,一旦“Call 子程序”在中断子程序中执行时,将破坏原来的控制序列。 所有的中断都具有将处于休眠模式的单片机唤醒的功能。但只有程序计数器被压入堆栈中,一旦中断服务程序使寄存器和状态寄存器中的内容发生改变,则会破坏想要的控制序列,因此需要事先将这些数据保存起来。 Rev 1.00 2011-04-13 61 HT46R064B/065B
199、/066B 带带 SCOM 功能的功能的 LCD 此系列的单片机可以用来驱动外部 LCD 面板。LCD 驱动的 COM 口(SCOM0SCOM3)与PB0PB3 引脚共用。LCD 控制信号(COM & SEG)由软件编程实现。 LCD 操作操作 单片机通过设置 PB0PB3 作为 COM 引脚,其它输出口作为 SEG 引脚, 以驱动外部的液晶面板。LCD 驱动功能是由 SCOMC 寄存器来控制,另外,该寄存器可设置 LCD 的开启和关闭以及输出偏压值等功能,使得 COM 口输出 VDD/2 的电压,从而实现 1/2 bias LCD 的显示。 SCOMC 寄存器中的 SCOMEN 位是 LCD
200、 驱动的主控制位,它与 COMnEN 位搭配共同设置 PB端口是否用于 LCD 驱动。注意,作为 LCD 驱动时,PBC 控制寄存器不需要设置为输出,PB 即可输出 VDD/2 电压。 SCOM 电路电路 SCOMEN COMnEN 引脚功能引脚功能 O/P Level 0 X I/O 0或1 1 0 I/O 0或1 1 1 SCOMn VDD/2 输出控制输出控制 LCD 偏压控制偏压控制 LCD 驱动器可以提供多种驱动电流选择以适应不同 LCD 面板的需求。通过设置 SCOMC 寄存器中 ISEL0 位和 ISEL1 位可以配置不同的驱动电流。 SCOMC寄存器寄存器 Bit 7 6 5
201、4 3 2 1 0 Name ISEL1 ISEL0 SCOMEN COM3EN COM2EN COM1EN COM0EN R/W R/W R/W R/W R/W R/W R/W R/W R/W POR 0 0 0 0 0 0 0 0 Bit 7 保留位 1: 不可预测的操作 该位不能设置为高 0: 正确电平值 该位必须清除为 0 Bit 6,5 ISEL1, ISEL0: 选择 SCOM 工作电流 (VDD=5V) 00: 25A 01: 50A 10: 100A 11: 200A Rev 1.00 2011-04-13 62 HT46R064B/065B/066B Bit 4 SCOMEN
202、: SCOM 模块打开/关闭控制位 0: 关闭 1: 打开 如果 SCOMEN=1,COMnEN 能打开 SCOMn Bit 3 COM3EN: 选择 PB3 或者 SCOM3 0: GPIO 1: SCOM3 Bit 2 COM2EN: 选择 PB2 或者 SCOM2 0: GPIO 1: SCOM2 Bit 1 COM1EN: 选择 PB1 或者 SCOM1 0: GPIO 1: SCOM1 Bit 0 COM0EN: 选择 PB0 或者 SCOM0 0: GPIO 1: SCOM0 Rev 1.00 2011-04-13 63 HT46R064B/065B/066B 配置选项配置选项 配
203、置选项在烧写程序时写入芯片。通过 HT-IDE 的软件开发环境,使用者在开发过程中可以选择配置选项。当配置选项烧入单片机后,无法再通过应用程序修改。所有位需要按系统的需要定义,具体内容可参考下表: 编号编号 选选 项项 1 看门狗定时器:打开或关闭 2 看门狗定时器时钟源:LXT,LIRC 或者 fSYS/4 注注:如果 WDT 时钟源来自 LXT,在 OSC 配置选项需要选择 LXT 振荡器 3 清除看门狗指令:1 条或 2 条 4 系统振荡器配置选项:HXT,HIRC,ERC,HIRC+LXT 5 LVR 功能:使能或禁止 6 LVR 电压:2.1V,3.15V 或 4.2V 7 RES
204、或 PA7 选择 8 内部 RC: 4MHz, 8MHz 或 12MHz 应用电路应用电路 Rev 1.00 2011-04-13 64 HT46R064B/065B/066B 指令集介绍指令集介绍 简介简介 任何单片机成功运作的核心在于它的指令集, 此指令为一组程序指令码,用来指导单片机如何去执行指定的工作。在盛群单片机中,提供了丰富且灵活的指令集,共超过 60 条,程序设计师可以事半功倍地实现他们的应用。 为了更容易的了解各式各样的指令码,接下来按功能分组介绍它们。 指令周期指令周期 大部分的操作均只需要一个指令周期来执行。分支、调用或查表则需要两个指令周期。一个指令周期相当于四个系统时钟
205、周期, 因此如果在 8MHz 的系统时钟振荡器下, 大部分的操作将在 0.5s 中执行完成,而分支或调用操作则将在 1s 中执行完成。虽然需要两个指令周期的指令通常指的是JMP、CALL、RET、RETI 和查表指令,但如果牵涉到程序计数器低字节寄存器 PCL 也将多花费一个周期去加以执行。即指令改变 PCL 的内容进而导致直接跳转至新地址时,需要多一个周期去执行。例如“CLR PCL”或“MOV PCL, A”。对于跳转命令必须注意,如果比较的结果牵涉到跳转动作将多花费一个周期,如果没有则需一个周期即可。 数据的传送数据的传送 单片机程序的数据传送是使用最为频繁的操作之一。使用三种 MOV
206、的指令,数据不但可以从寄存器转移至累加器(反之亦然),而且能够直接移动立即数到累加器。数据传送最重要的应用之一是从接收端口接收数据或者传送数据到输出端口。 算术运算算术运算 算术运算和数据处理是大部分单片机应用所需具备的能力,在盛群单片机内部的指令集中,可直接实现加与减的运算。当加法的结果超出 255 或减法的结果少于 0 时,要注意正确的处理进位和借位的问题。INC、INCA、DEC 和 DECA 指令提供了对一个指定地址的值加一或减一的功能。 逻辑和移位运算逻辑和移位运算 标准逻辑运算例如 AND、OR、XOR 和 CPL 全都包含在盛群单片机内部的指令集中,如同大多数牵涉到数据运算的指令
207、,数据的传送必须通过累加器。在所有逻辑数据运算中,如果运算结果为零, 则零标志位将被置位。 另外逻辑数据运用形式还有移位指令, 例如 RR、 RL、 RRC 和 RLC 提供了向左或向右移动一位的方法。移位指令常用于串行端口的程序应用,数据可从内部寄存器转移至进位标志位,而此位则可被检验。移位运算还可应用在乘法与除法的运算组成中。 分支和控制的转换分支和控制的转换 程序分支是采取使用 JMP 指令跳转到指定地址或使用 CALL 指令调用子程序的形式。两者之不同在于当子程序被执行完毕后,程序必须马上返回原来的地址。这个动作是由放置在子程序里的返回指令 RET 来实现,它可使程序跳回 CALL 指
208、令之后的地址。在 JMP 指令中,程序则只是跳到一个指定的地址而已,并不需如 CALL 指令跳回。一个非常有用的分支指令是条件跳转,条件是由数据存储器或指定位来加以决定。遵循跳转条件,程序将继续执行下一条指令或略过且跳转至接下来的指令。这些分支指令是程序走向的关键,跳转条件可能是外部开关输入,或者是内部数据位的值。 Rev 1.00 2011-04-13 65 HT46R064B/065B/066B 位运算位运算 提供数据存储器单一位的运算指令是盛群单片机的特性之一,这特性对于输出端口位的规划尤其有用,其中个别的位或端口的引脚可以使用“SET m.i”或“CLR m.i”指令来设定其为高位或低
209、位。如果没有这特性,程序设计师必须先读入输出口的8位数据,处理这些数据,然后再输出正确的新数据。这种读入-修改-写出的程序现在则由位指令所取代。 查表运算查表运算 数据的储存通常由寄存器完成,然而当处理大量的数据时,其庞大与复杂的内容常造成对指定存储器储存上的不便,为了改善此问题,盛群单片机允许在程序存储器中设定一块数据可直接存取的区域,只需要一组简易的指令即可对数据进行查表。 其它运算其它运算 除了上述功能指令外,其它指令还包括用于省电的“HALT”指令和使程序在极端电压或电磁环境下仍能正常工作的看门狗定时器控制指令。这些指令的使用则请查阅相关的章节。 Rev 1.00 2011-04-13
210、 66 HT46R064B/065B/066B 指令设定一览表指令设定一览表 惯例 x:立即数 m:数据存储器地址 A:累加器 i:07 号位 addr:程序存储器地址 助记符助记符 说明说明 周期周期 影响标志位影响标志位 算术运算 ADD A,m ADDM A,m ADD A,x ADC A,m ADCM A,m SUB A,x SUB A,m SUBM A,m SBC A,m SBCM A,m DAA m ACC 与数据存储器相加,结果放入 ACC ACC 与数据存储器相加,结果放入数据存储器 ACC 与立即数相加,结果放入 ACC ACC 与数据存储器、进位标志相加,结果放入 ACC
211、ACC 与数据存储器、进位标志相加,结果放入数据存储器 ACC 与立即数相减,结果放入 ACC ACC 与数据存储器相减,结果放入 ACC ACC 与数据存储器相减,结果放入数据存储器 ACC 与数据存储器、进位标志相减,结果放入 ACC ACC 与数据存储器、进位标志相减,结果放入数据存储器 将加法运算中放入 ACC 的值调整为十进制数, 并将结果放入数据存储器 1 1注 1 1 1注 1 1 1注 1 1注 1注 Z,C,AC,OV Z,C,AC,OV Z,C,AC,OV Z,C,AC,OV Z,C,AC,OV Z,C,AC,OV Z,C,AC,OV Z,C,AC,OV Z,C,AC,OV
212、 Z,C,AC,OV C 逻辑运算 AND A,m OR A,m XOR A,m ANDM A,m ORM A,m XORM A,m AND A,x OR A,x XOR A,x CPL m CPLA m ACC 与数据存储器做“与”运算,结果放入 ACC ACC 与数据存储器做“或”运算,结果放入 ACC ACC 与数据存储器做“异或”运算,结果放入 ACC ACC 与数据存储器做“与”运算,结果放入数据存储器 ACC 与数据存储器做“或”运算,结果放入数据存储器 ACC 与数据存储器做“异或”运算,结果放入数据存储器 ACC 与立即数做“与”运算,结果放入 ACC ACC 与立即数做“或”
213、运算,结果放入 ACC ACC 与立即数做“异或”运算,结果放入 ACC 对数据存储器取反,结果放入数据存储器 对数据存储器取反,结果放入 ACC 1 1 1 1注 1注 1注 1 1 1 1注 1 Z Z Z Z Z Z Z Z Z Z Z 递增和递减 INCA m INC m DECA m DEC m 递增数据存储器,结果放入 ACC 递增数据存储器,结果放入数据存储器 递减数据存储器,结果放入 ACC 递减数据存储器,结果放入数据存储器 1 1注 1 1注 Z Z Z Z 移位 RRA m RR m RRCA m RRC m RLA m RL m RLCA m RLC m 数据存储器右移
214、一位,结果放入 ACC 数据存储器右移一位,结果放入数据存储器 带进位将数据存储器右移一位,结果放入 ACC 带进位将数据存储器右移一位,结果放入数据存储器 数据存储器左移一位,结果放入 ACC 数据存储器左移一位,结果放入数据存储器 带进位将数据存储器左移一位,结果放入 ACC 带进位将数据存储器左移一位,结果放入数据存储器 1 1注 1 1注 1 1注 1 1注 无 无 C C 无 无 C C Rev 1.00 2011-04-13 67 HT46R064B/065B/066B 助记符助记符 说明说明 周期周期 影响标志位影响标志位 数据传送 MOV A,m MOV m,A MOV A,x
215、 将数据存储器送至 ACC 将 ACC 送至数据存储器 将立即数送至 ACC 1 1注 1 无 无 无 位运算 CLR m.i SET m.i 清除数据存储器的位 置位数据存储器的位 1注 1注 无 无 转移 JMP addr SZ m SZA m SZ m.i SNZ m.i SIZ m SDZ m SIZA m SDZA m CALL addr RET RET A,x RETI 无条件跳转 如果数据存储器为零,则跳过下一条指令 数据存储器送至 ACC,如果内容为零,则跳过下一条指令 如果数据存储器的第 i 位为零,则跳过下一条指令 如果数据存储器的第 i 位不为零,则跳过下一条指令 递增数
216、据存储器,如果结果为零,则跳过下一条指令 递减数据存储器,如果结果为零,则跳过下一条指令 递增数据存储器,将结果放入 ACC,如果结果为零,则跳过下一条指令 递减数据存储器,将结果放入 ACC,如果结果为零,则跳过下一条指令 子程序调用 从子程序返回 从子程序返回,并将立即数放入 ACC 从中断返回 2 1注 1注 1注 1注 1注 1注 1注 1注 2 2 2 2 无 无 无 无 无 无 无 无 无 无 无 无 无 查表 TABRDC m TABRDL m 读取当前页的 ROM 内容,并送至数据存储器和 TBLH 读取最后页的 ROM 内容,并送至数据存储器和 TBLH 2注 2注 无 无
217、其它指令 NOP CLR m SET m CLR WDT CLR WDT1 CLR WDT2 SWAP m SWAPA m HALT 空指令 清除数据储存器 置位数据储存器 清除看门狗定时器 预清看门狗定时器 预清看门狗定时器 交换数据储存器的高低字节,结果放入数据存储器 交换数据储存器的高低字节,结果放入 ACC 进入暂停模式 1 1注 1注 1 1 1 1注 1 1 无 无 无 TO,PDF TO,PDF TO,PDF 无 无 TO,PDF 注注: 1. 对跳转指令而言,如果比较的结果牵涉到跳转即需2个周期,如果没有跳转发生,则只需一个周期即可。 2. 任何指令若要改变PCL的内容将需要2
218、个周期来执行。 3. 对于 “CLR WDT1” 和 “CLR WDT2” 指令而言, TO和PDF标志位也许会受执行结果影响, “CLR WDT1” 和“CLR WDT2”被连续执行后,TO和PDF标志位会被清零,除此外TO和PDF标志位保持不变。 Rev 1.00 2011-04-13 68 HT46R064B/065B/066B 指令定义指令定义 ADC A, m Add Data Memory to ACC with Carry 指令说明 将指定数据存储器、累加器和进位标志位的内容相加后,把结果储存回累加器。 功能表示 ACC ACC + m + C 影响标志位 OV , Z , AC
219、 , C ADCM A, m Add ACC to Data Memory with Carry 指令说明 将指定数据存储器、累加器和进位标志位的内容相加后,把结果储存回指定数 据存储器。 功能表示 m ACC + m + C 影响标志位 OV , Z , AC , C ADD A, m Add Data Memory to ACC 指令说明 将指定数据存储器和累加器的内容相加后,把结果储存回累加器。 功能表示 ACC ACC + m 影响标志位 OV , Z , AC , C ADD A, x Add immediate data to ACC 指令说明 将累加器和立即数的内容相加后,把结果
220、储存回累加器。 功能表示 ACC ACC + x 影响标志位 OV , Z , AC , C ADDM A, m Add ACC to Data Memory 指令说明 将指定数据存储器和累加器的内容相加后,把结果储存回指定数据存储器。 功能表示 m ACC + m 影响标志位 OV , Z , AC , C AND A, m Logical AND Data Memory to ACC 指令说明 将存在累加器和指定数据存储器中的数据作AND的运算,然后把结果储存回累加器。 功能表示 ACC ACC“AND”m 影响标志位 Z AND A, x Logical AND immediate da
221、ta to ACC 指令说明 将存在累加器中的数据和立即数作AND的运算,然后把结果储存回累加器。 功能表示 ACC ACC“AND”x 影响标志位 Z ANDM A, m Logical AND ACC to Data Memory 指令说明 将存在指定数据存储器和累加器中的数据作AND的运算,然后把结果储存回数据存储器。 功能表示 m ACC“AND”m 影响标志位 Z CALL addr Subroutine call 指令说明 无条件地调用指定地址的子程序,此时程序计数器先加1获得下一个要执行的指令地址并压入堆栈,接着载入指定地址并从新地址继续执行程序,由于此指令需要额外的运算,所以为
222、一个2周期的指令。 Rev 1.00 2011-04-13 69 HT46R064B/065B/066B 功能表示 Stack Program Counter + 1 Program Counter addr 影响标志位 None CLR m Clear Data Memory 指令说明 指定数据存储器中的每一位均清除为0。 功能表示 m 00H 影响标志位 None CLR m.i Clear bit of Data Memory 指令说明 指定数据存储器中的i位清除为0。 功能表示 m.i 0 影响标志位 None CLR WDT Clear Watchdog Timer 指令说明 将TO
223、、PDF 标志位和WDT全都清零。 功能表示 WDT cleared TO 0 PDF 0 影响标志位 TO , PDF CLR WDT1 Pre-clear Watchdog Timer 指令说明 将TO、 PDF 标志位和WDT全都清零, 请注意此指令要结合CLR WDT2一起动作且必须交替执行才有作用, 重复执行此项指令而没有与CLR WDT2交替执行将无任何作用。 功能表示 WDT cleared TO 0 PDF 0 影响标志位 TO , PDF CLR WDT2 Pre-clear Watchdog Timer 指令说明 将TO、PDF标志位和WDT全都清零,请注意此指令要结合CL
224、R WDT1一起动作且必须交替执行才有作用, 重复执行此项指令而没有与CLR WDT1交替执行将无任何作用。 功能表示 WDT cleared TO 0 PDF 0 影响标志位 TO , PDF CPL m Complement Data Memory 指令说明 将指定数据存储器中的每一位取逻辑反,相当于从1变0或0变1。 功能表示 m m 影响标志位 Z CPLA m Complement Data Memory with result in ACC 指令说明 将指定数据存储器中的每一位取逻辑反,相当于从1变0或0变1,而结果被储存回累加器且数据存储器中的内容不变。 功能表示 ACCm 影响
225、标志位 Z Rev 1.00 2011-04-13 70 HT46R064B/065B/066B DAA m Decimal-Adjust ACC for addition with result in Data Memory 指令说明 将存在累加器中的内容数值转换为BCD(二进制转成十进制)数值,如果低4位大于9或AC标志位被置位,则在低4位加上一个6,不然低4位的内容不变,如果高4位大于9或C标志位被置位,则在高4位加上一个6,十进制的转换主要是依照累加器和标志位状况,分别加上00H、06H、60H或66H,只有C标志位也许会被此指令影响,它会指出原始BCD数是否大于100,并可以进行双精
226、度十进制数相加。 功能表示 m ACC + 00H 或 m ACC + 06H 或 m ACC + 60H 或 m ACC + 66H 影响标志位 C DEC m Decrement Data Memory 指令说明 将在指定数据存储器内的数据减1。 功能表示 m m 1 影响标志位 Z DECA m Decrement Data Memory with result in ACC 指令说明 将在指定数据存储器内的数据减1,把结果储存回累加器且数据存储器中的内容不变。 功能表示 ACC m 1 影响标志位 Z HALT Enter power down mode 指令说明 此指令停止程序的执行
227、并且关闭系统时钟,但数据存储器和寄存器的内容仍被保留,WDT和预分频器(Prescaler)被清零,暂停标志位PDF被置位且WDT溢出标志位TO 被清零。 功能表示 TO 0 PDF 1 影响标志位 TO , PDF INC m Increment Data Memory 指令说明 将指定数据存储器内的数据加1。 功能表示 m m + 1 影响标志位 Z INCA m Increment Data Memory with result in ACC 指令说明 将指定数据存储器内的数据加1,把结果储存回累加器且数据存储器中的内容不变。 功能表示 ACC m + 1 影响标志位 Z JMP add
228、r Jump unconditionally 指令说明 程序计数器的内容被指定地址所取代,程序由新地址继续执行,当新地址被加 载入时,必须插入一个空指令周期,所以此指令为2个周期的指令 功能表示 Program Counter addr 影响标志位 None MOV A, m Move Data Memory to ACC 指令说明 将指定数据存储器的内容复制到累加器中。 功能表示 ACC m 影响标志位 None Rev 1.00 2011-04-13 71 HT46R064B/065B/066B MOV A, x Move immediate data to ACC 指令说明 将立即数载入
229、至累加器中。 功能表示 ACC x 影响标志位 None MOV m, A Move ACC to Data Memory 指令说明 将累加器的内容复制到指定数据存储器。 功能表示 m ACC 影响标志位 None NOP No operation 指令说明 空操作,接下来顺序执行下一条指令。 功能表示 No operation 影响标志位 None OR A, m Logical OR Data Memory to ACC 指令说明 将存在累加器和指定数据存储器中的数据作OR的运算,然后把结果储存回累加器。 功能表示 ACC ACC“OR”m 影响标志位 Z OR A, x Logical
230、OR immediate data to ACC 指令说明 将存在累加器中的数据和立即数作OR的运算,然后把结果储存回累加器。 功能表示 ACC ACC“OR”x 影响标志位 Z ORM A, m Logical OR ACC to Data Memory 指令说明 将存在指定数据存储器和累加器中的数据作OR的运算,然后把结果储存回数据存储器。 功能表示 m ACC“OR”m 影响标志位 Z RET Return from subroutine 指令说明 将堆栈区的数据取回至程序计数器,程序由取回的地址继续执行。 功能表示 Program CounterStack 影响标志位 None RET
231、 A, x Return from subroutine and load immediate data to ACC 指令说明 将堆栈区的数据取回至程序计数器且累加器载入立即数,程序由取回的地址继续执行。 功能表示 Program Counter Stack ACCx 影响标志位 None RETI Return from interrupt 指令说明 将堆栈区的数据取回至程序计数器且中断功能通过EMI位重新被使能,EMI是控制中断使能的主中断位(寄存器INTC的第0位), 如果在执行RETI指令之前还有中断未被响应,则这个中断将在返回主程序之前被响应。 功能表示 Program Count
232、er Stack EMI 1 影响标志位 None Rev 1.00 2011-04-13 72 HT46R064B/065B/066B RL m Rotate Data Memory left 指令说明 将指定数据存储器的内容向左移1个位,且第7位移回第0 位。 功能表示 m.(i+1) m.i ; (i = 06) m.0 m.7 影响标志位 None RLA m Rotate Data Memory left with result in ACC 指令说明 将指定数据存储器的内容向左移1个位,且第7位移回第0位,而移位的结果储存回累加器且数据存储器中的内容不变。 功能表示 ACC.(i+
233、1) m.i ; (i = 06) ACC.0 m.7 影响标志位 None RLC m Rotate Data Memory Left through Carry 指令说明 将指定数据存储器的内容连同进位标志位向左移1个位,第7位取代进位位且原本的进位标志位移至第0位。 功能表示 m.(i+1) m.i ; (i = 06) m.0 C C m.7 影响标志位 C RLCA m Rotate Data Memory left through Carry with result in ACC 指令说明 将指定数据存储器的内容连同进位标志位向左移1个位,第7位取代进位位且原本的进位标志位移至第0
234、位,而移位的结果储存回累加器且数据存储器中的内容不变。 功能表示 ACC.(i+1) m.i ; (i = 06) ACC.0 C C m.7 影响标志位 C RR m Rotate Data Memory right 指令说明 将指定数据存储器的内容向右移1个位,且第0位移回第7位。 功能表示 m.i m.(i+1) ; (i = 06) m.7 m.0 影响标志位 None RRA m Rotate Data Memory right with result in ACC 指令说明 将指定数据存储器的内容向右移1个位,且第0位移回第7位,而移位的结果储存回累加器且数据存储器中的内容不变。
235、功能表示 ACC.i m.(i+1) ; (i = 06) ACC.7 m.0 影响标志位 None RRC m Rotate Data Memory right through Carry 指令说明 将指定数据存储器的内容连同进位标志位向右移1个位,第0位取代进位位且原本的进位标志位移至第7位。 功能表示 m.i m.(i+1) ; (i = 06) m.7 C C m.0 影响标志位 C Rev 1.00 2011-04-13 73 HT46R064B/065B/066B RRCA m Rotate Data Memory right through Carry with result i
236、n ACC 指令说明 将指定数据存储器的内容连同进位标志位向右移1个位,第0位取代进位位且原本的进位标志位移至第7位,而移位的结果储存回累加器且数据存储器中的内容不变。 功能表示 ACC.i m.(i+1) ; (i = 06) ACC.7 C C m.0 影响标志位 C SBC A, m Subtract Data Memory from ACC with Carry 指令说明 将累加器中的数据与指定数据存储器内容和进位标志位的反相减,把结果储存回累加器。如果结果为负,C标志位清除为0,反之结果为正或0,C标志位设置为1。 功能表示 ACC ACC m C 影响标志位 OV , Z , AC
237、 , C SBCM A, m Subtract Data Memory from ACC with Carry and result in Data Memory 指令说明 将累加器中的数据与指定数据存储器内容和进位标志位的反相减,把结果储存回数据存储器。如果结果为负,C标志位清除为0,反之结果为正或0,C标志位设置为1。 功能表示 m ACC m C 影响标志位 OV , Z , AC , C SDZ m Skip if Decrement Data Memory is 0 指令说明 将指定数据存储器的内容先减去1后,如果结果为0,则程序计数器再加1跳过下一条指令,由于取得下一指令时会要求插
238、入一个空指令周期,所以此指令为2个周期的指令。如果结果不为0,则程序继续执行下面的指令。 功能表示 m m 1 Skip if m = 0 影响标志位 None SDZA m Skip if decrement Data Memory is zero with result in ACC 指令说明 将指定数据存储器的内容先减去1后,如果结果为0,则程序计数器再加1 跳过下一条指令,此结果会被储存回累加器且指定数据存储器中的内容不变,由于取得下一指令时会要求插入一个空指令周期,所以此指令为2个周期的指令。如果结果不为0,则程序继续执行下面的指令。 功能表示 ACC m 1 Skip if ACC
239、 = 0 影响标志位 None SET m Set Data Memory 指令说明 将指定数据存储器的每一个位置位为1。 功能表示 m FFH 影响标志位 None SET m.i Set bit of Data Memory 指令说明 将指定数据存储器的第i位置位为1。 功能表示 m.i 1 影响标志位 None Rev 1.00 2011-04-13 74 HT46R064B/065B/066B SIZ m Skip if increment Data Memory is 0 指令说明 将指定数据存储器的内容先加上1后,如果结果为0,则程序计数器再加1 跳过下一条指令,由于取得下一指令时
240、会要求插入一个空指令周期,所以此指令为2个周期的指令。如果结果不为0,则程序继续执行下面的指令。 功能表示 m m + 1 Skip if m = 0 影响标志位 None SIZA m Skip if increment Data Memory is zero with result in ACC 指令说明 将指定数据存储器的内容先加上1后,如果结果为0,则程序计数器再加1跳过下一条指令,此结果会被储存回累加器且指定数据存储器中的内容不变,由于取得下一指令时会要求插入一个空指令周期,所以此指令为2个周期的指令。如果结果不为0,则程序继续执行下面的指令。 功能表示 ACC m + 1 Skip
241、 if ACC = 0 影响标志位 None SNZ m.i Skip if bit i of Data Memory is not 0 指令说明 如果指定数据存储器的第i位不为0,则程序计数器再加1跳过下一条指令,由于取得下一指令时会要求插入一个空指令周期,所以此指令为2个周期的指令。如果结果不为0,程序继续执行下面的指令。 功能表示 Skip if m.i 0 影响标志位 None SUB A, m Subtract Data Memory from ACC 指令说明 将累加器中内容减去指定数据存储器的数据,把结果储存回累加器。如果结果为负,C标志位清除为0,反之结果为正或0,C标志位设置
242、为1。 功能表示 ACC ACC m 影响标志位 OV , Z , AC , C SUBM A, m Subtract Data Memory from ACC with result in Data Memory 指令说明 将累加器中内容减去指定数据存储器的数据,把结果储存回数据存储器。如果 结果为负,C标志位清除为0,反之结果为正或0,C标志位设置为1。 功能表示 m ACC m 影响标志位 OV , Z , AC , C SUB A, x Subtract immediate Data from ACC 指令说明 将累加器中内容减去立即数,把结果储存回累加器。如果结果为负,C标志位清除为
243、0,反之结果为正或0,C标志位设置为1。 功能表示 ACC ACC x 影响标志位 OV , Z , AC , C SWAP m Swap nibbles of Data Memory 指令说明 将指定数据存储器的低4位与高4位互相交换。 功能表示 m.3 m.0 m.7 m.4 影响标志位 None Rev 1.00 2011-04-13 75 HT46R064B/065B/066B SWAPA m Swap nibbles of Data Memory with result in ACC 指令说明 将指定数据存储器的低4位与高4位互相交换,然后把结果储存回累加器且数据存储器的内容不变。
244、功能表示 ACC.3 ACC.0 m.7 m.4 ACC.7 ACC.4 m.3 m.0 影响标志位 None SZ m Skip if Data Memory is 0 指令说明 如果指定数据存储器的内容为0,则程序计数器再加1跳过下一条指令,由于取得下一指令时会要求插入一个空指令周期,所以此指令为2个周期的指令。如果结果不为0,程序继续执行下面的指令。 功能表示 Skip if m = 0 影响标志位 None SZA m Skip if Data Memory is 0 with data movement to ACC 指令说明 将指定数据存储器的内容复制到累加器,如果值为0,则程序计
245、数器再加1跳过下一条指令,由于取得下一指令时会要求插入一个空指令周期,所以此指令为2个周期的指令。如果结果不为0,程序继续执行下面的指令。 功能表示 ACC m Skip if m = 0 影响标志位 None SZ m.i Skip if bit i of Data Memory is 0 指令说明 如果指定数据存储器第i 位为0,则程序计数器再加1 跳过下一条指令,由于取得下一指令时会要求插入一个空指令周期,所以此指令为2个周期的指令。如果结果不为0,程序继续执行下面的指令。 功能表示 Skip if m.i = 0 影响标志位 None TABRDC m Read table (curr
246、ent page ) to TBLH and Data Memory 指令说明 将表格指针TBLP所指的程序代码低字节(当前页)移至指定数据存储器且将高字节移至TBLH。 功能表示 m 程序代码(低字节) TBLH 程序代码(高字节) 影响标志位 None TABRDL m Read table ( last page ) to TBLH and Data Memory 指令说明 将表格指针TBLP所指的程序代码低字节(最后一页)移至指定数据存储器且将高字节移至TBLH。 功能表示 m 程序代码(低字节) TBLH 程序代码(高字节) 影响标志位 None XOR A, m Logical X
247、OR Data Memory to ACC 指令说明 将存在累加器和指定数据存储器中的数据作XOR的运算,然后把结果储存回累加器。 功能表示 ACC ACC“XOR”m 影响标志位 Z Rev 1.00 2011-04-13 76 HT46R064B/065B/066B XORM A, m Logical XOR ACC to Data Memory 指令说明 将存在指定数据存储器和累加器中的数据作XOR的运算,然后把结果储存回数据存储器。 功能表示 m ACC“XOR”m 影响标志位 Z XOR A, x Logical XOR immediate data to ACC 指令说明 将存在累
248、加器中的数据和立即数作XOR的运算,然后把结果储存回累加器。 功能表示 ACC ACC“XOR”x 影响标志位 Z Rev 1.00 2011-04-13 77 HT46R064B/065B/066B 封装信息封装信息 16-pin DIP (300mil)外形尺寸外形尺寸 MS-001d(见见 fig1) 符号符号 尺寸尺寸(单位:单位:mil) 最小值最小值 典型值典型值 最大值最大值 A 780 880 B 240 280 C 115 195 D 115 150 E 14 22 F 45 70 G 100 H 300 325 I 430 MS-001d(见见 flg2) 符号符号 尺寸尺
249、寸(单位:单位:mil) 最小值最小值 典型值典型值 最大值最大值 A 735 775 B 240 280 C 115 195 D 115 150 E 14 22 F 45 70 G 100 H 300 325 I 430 Rev 1.00 2011-04-13 78 HT46R064B/065B/066B MO-095a(见见 flg2) 符号符号 尺寸尺寸(单位:单位:mil) 最小值最小值 典型值典型值 最大值最大值 A 745 785 B 275 295 C 120 150 D 110 150 E 14 22 F 45 60 G 100 H 300 325 I 430 Rev 1.00
250、 2011-04-13 79 HT46R064B/065B/066B 16-pin NSOP (150mil) 外形尺寸外形尺寸 符号符号 尺寸尺寸(单位:单位:mil) 最小值最小值 典型值典型值 最大值最大值 A 228 244 B 149 157 C 14 20 C 386 394 D 53 69 E 50 F 4 10 G 22 28 H 4 12 0 10 Rev 1.00 2011-04-13 80 HT46R064B/065B/066B 20-pin DIP (300mil) 外形尺寸外形尺寸 MS001d(见(见 fig1) 符号符号 尺寸(单位:尺寸(单位:mil) 最小值最
251、小值 典型值典型值 最大值最大值 A 980 1060 B 240 280 C 115 195 D 115 150 E 14 22 F 45 70 G 100 H 300 325 I 430 MO095a(见见 fig2) 符号符号 尺寸尺寸(单位:单位:mil) 最小值最小值 典型值典型值 最大值最大值 A 945 985 B 275 295 C 120 150 D 110 150 E 14 22 F 45 60 G 100 H 300 325 I 430 Rev 1.00 2011-04-13 81 HT46R064B/065B/066B 20-pin SOP (300mil) 外形尺寸外
252、形尺寸 MS-013 符号符号 尺寸(尺寸( 单位:单位:mil) 最小值最小值 典型值典型值 最大值最大值 A 393 419 B 256 300 C 12 20 C 496 512 D 104 E 50 F 4 12 G 16 50 H 8 13 0 8 Rev 1.00 2011-04-13 82 HT46R064B/065B/066B 20-pin SSOP (150mil) 外形尺寸外形尺寸 符号符号 尺寸(尺寸( 单位:单位:mil) 最小值最小值 典型值典型值 最大值最大值 A 228 244 B 150 158 C 8 12 C 335 347 D 49 65 E 25 F 4
253、 10 G 15 50 H 7 10 0 8 Rev 1.00 2011-04-13 83 HT46R064B/065B/066B 24-pin SKDIP (300mil) 外形尺寸外形尺寸 MS-001d(见(见 fig1) 符号符号 尺寸(尺寸( 单位:单位:mil) 最小值最小值 典型值典型值 最大值最大值 A 1230 1280 B 240 280 C 115 195 D 115 150 E 14 22 F 45 70 G 100 H 300 325 I 430 MS-001d (见见 fig2) 符号符号 尺寸(尺寸( 单位:单位:mil) 最小值最小值 典型值典型值 最大值最大值
254、 A 1160 1195 B 240 280 C 115 195 D 115 150 E 14 22 F 45 70 G 100 H 300 325 I 430 Rev 1.00 2011-04-13 84 HT46R064B/065B/066B MO-095a (见见 fig2) 符号符号 尺寸(尺寸( 单位:单位:mil) 最小值最小值 典型值典型值 最大值最大值 A 1145 1185 B 275 295 C 120 150 D 110 150 E 14 22 F 45 60 G 100 H 300 325 I 430 Rev 1.00 2011-04-13 85 HT46R064B/0
255、65B/066B 24-pin SOP (300mil) 外形尺寸外形尺寸 MS-013 符号符号 尺寸(尺寸( 单位:单位:mil) 最小值最小值 典型值典型值 最大值最大值 A 393 419 B 256 300 C 12 20 C 598 613 D 104 E 50 F 4 12 G 16 50 H 8 13 0 8 Rev 1.00 2011-04-13 86 HT46R064B/065B/066B 24-pin SSOP (150 mil) 外形尺寸外形尺寸 符号符号 尺寸(尺寸( 单位:单位:mil) 最小值最小值 典型值典型值 最大值最大值 A 228 244 B 150 15
256、7 C 8 12 C 335 346 D 54 60 E 25 F 4 10 G 22 28 H 7 10 0 8 Rev 1.00 2011-04-13 87 HT46R064B/065B/066B 28-pin SKDIP (300mil) 外形尺寸外形尺寸 符号符号 尺寸(尺寸( 单位:单位:mil) 最最小值小值 典型值典型值 最大值最大值 A 1375 1395 B 278 298 C 125 135 D 125 145 E 16 20 F 50 70 G 100 H 295 315 I 375 Rev 1.00 2011-04-13 88 HT46R064B/065B/066B 2
257、8-pin SOP (300mil) 外形尺寸外形尺寸 MS-013 符号符号 尺寸(尺寸( 单位:单位:mil) 最小值最小值 典型值典型值 最大值最大值 A 393 419 B 256 300 C 12 20 C 697 713 D 104 E 50 F 4 12 G 16 50 H 8 13 0 8 Rev 1.00 2011-04-13 89 HT46R064B/065B/066B 28-pin SSOP (150mil) 外形尺寸外形尺寸 符号符号 尺寸(尺寸( 单位:单位:mil) 最小值最小值 典型值典型值 最大值最大值 A 228 244 B 150 157 C 8 12 C
258、386 394 D 54 60 E 25 F 4 10 G 22 28 H 7 10 0 8 Rev 1.00 2011-04-13 90 HT46R064B/065B/066B 包装带和卷轴规格包装带和卷轴规格 卷轴尺寸卷轴尺寸 SOP 16N(150 mil) 符号符号 说明说明 尺寸尺寸(mm) A 卷轴外圈直径 330.01.0 B 卷轴内圈直径 100.01.5 C 轴心直径 13.02 . 0/5 . 0 D 缝宽 2.00.5 T1 轮缘宽 16.82 . 0/3 . 0 T2 卷轴宽 22.20.2 SOP 20W,SOP 24W,SOP 28W(300mil) 符号符号 说明
259、说明 尺寸尺寸(mm) A 卷轴外圈直径 330.01.0 B 卷轴内圈直径 100.01.5 C 轴心直径 13.02 . 0/5 . 0 D 缝宽 2.00.5 T1 轮缘宽 24.82 . 0/3 . 0 T2 卷轴宽 30.20.2 SSOP 20S(150mil),SSOP 24S(150mil),SSOP 28S(150mil) 符号符号 说明说明 尺寸尺寸(mm) A 卷轴外圈直径 330.01.0 B 卷轴内圈直径 100.01.5 C 卷轴内圈直径 13.02 . 0/5 . 0 D 缝宽 2.00.5 T1 轮缘宽 16.82 . 0/3 . 0 T2 卷轴宽 22.20.
260、2 Rev 1.00 2011-04-13 91 HT46R064B/065B/066B 运输带尺寸运输带尺寸 SOP 16N (150mil) 符号符号 说明说明 尺寸尺寸(mm) W 运输带宽 16.00.3 P 空穴间距 8.00.1 E 穿孔位置 1.750.1 F 空穴至穿孔距离(宽度) 7.50.1 D 穿孔直径 1.5500. 0/10. 0 D1 空穴中之小孔直径 1.5000. 0/25. 0 P0 穿孔间距 4.00.1 P1 空穴至穿孔距离(长度) 2.00.1 A0 空穴长 6.50.1 B0 空穴宽 10.30.1 K0 空穴深 2.10.1 t 传送带厚度 0.30
261、0.05 C 覆盖带宽度 13.30.1 Rev 1.00 2011-04-13 92 HT46R064B/065B/066B SOP 20W 符号符号 说明说明 尺寸尺寸(mm) W 运输带宽 24.01 . 0/3 . 0 P 空穴间距 12.00.1 E 穿孔位置 1.750.1 F 空穴至穿孔距离(宽度) 11.50.1 D 穿孔直径 1.50 . 0/1 . 0 D1 空穴中之小孔直径 1.5000. 0/25. 0 P0 穿孔间距 4.00.1 P1 空穴至穿孔距离(长度) 2.00.1 A0 空穴长 10.80.1 B0 空穴宽 13.30.1 K0 空穴深 3.20.1 t 传
262、送带厚度 0.300.05 C 覆盖带宽度 21.30.1 SOP 24W 符号符号 说明说明 尺寸尺寸(mm) W 运输带宽 24.00.3 P 空穴间距 12.00.1 E 穿孔位置 1.750.1 F 空穴至穿孔距离(宽度) 11.50.1 D 穿孔直径 1.5500. 0/10. 0 D1 空穴中之小孔直径 1.5000. 0/25. 0 P0 穿孔间距 4.00.1 P1 空穴至穿孔距离(长度) 2.00.1 A0 空穴长 10.90.1 B0 空穴宽 15.90.1 K0 空穴深 3.10.1 t 传送带厚度 0.350.05 C 覆盖带宽度 21.30.1 Rev 1.00 20
263、11-04-13 93 HT46R064B/065B/066B SOP 28W (300mil) 符号符号 说明说明 尺寸尺寸(mm) W 运输带宽 24.00.3 P 空穴间距 12.00.1 E 穿孔位置 1.750.1 F 空穴至穿孔距离(宽度) 11.50.1 D 穿孔直径 1.500. 0/10. 0 D1 空穴中之小孔直径 1.5000. 0/25. 0 P0 穿孔间距 4.00.1 P1 空穴至穿孔距离(长度) 2.00.1 A0 空穴长 10.850.10 B0 空穴宽 18.340.10 K0 空穴深 2.970.10 t 传送带厚度 0.350.01 C 覆盖带宽度 21.
264、30.1 SSOP 20S (150mil) 符号符号 说明说明 尺寸尺寸(mm) W 运输带宽 16.01 . 0/3 . 0 P 空穴间距 8.00.1 E 穿孔位置 1.750.1 F 空穴至穿孔距离(宽度) 7.50.1 D 穿孔直径 1.50 . 0/1 . 0 D1 空穴中之小孔直径 1.5000. 0/25. 0 P0 穿孔间距 4.00.1 P1 空穴至穿孔距离(长度) 2.00.1 A0 空穴长 6.50.1 B0 空穴宽 9.00.1 K0 空穴深 2.30.1 t 传送带厚度 0.300.05 C 覆盖带宽度 13.30.1 Rev 1.00 2011-04-13 94
265、HT46R064B/065B/066B SSOP 24S (150mil) 符号符号 说明说明 尺寸尺寸(mm) W 运输带宽 16.01 . 0/3 . 0 P 空穴间距 8.00.1 E 穿孔位置 1.750.10 F 空穴至穿孔距离(宽度) 7.50.1 D 穿孔直径 1.50 . 0/1 . 0 D1 空穴中之小孔直径 1.5000. 0/25. 0 P0 穿孔间距 4.00.1 P1 空穴至穿孔距离(长度) 2.00.1 A0 空穴长 6.50.1 B0 空穴宽 9.50.1 K0 空穴深 2.10.1 t 传送带厚度 0.300.05 C 覆盖带宽度 13.30.1 SSOP 28
266、S (150mil) 符号符号 说明说明 尺寸尺寸(mm) W 运输带宽 16.00.3 P 空穴间距 8.00.1 E 穿孔位置 1.750.1 F 空穴至穿孔距离(宽度) 7.50.1 D 穿孔直径 1.5500. 0/10. 0 D1 空穴中之小孔直径 1.5000. 0/25. 0 P0 穿孔间距 4.00.1 P1 空穴至穿孔距离(长度) 2.00.1 A0 空穴长 6.50.1 B0 空穴宽 10.30.1 K0 空穴深 2.10.1 t 传送带厚度 0.300.05 C 覆盖带宽度 13.30.1 Rev 1.00 2011-04-13 95 HT46R064B/065B/066
267、B 盛群半导体股份有限公司(总公司)盛群半导体股份有限公司(总公司) 新竹市科学工业园区研新二路 3 号 电话: 886-3-563-1999 传真: 886-3-563-1189 网站: .tw 盛群半导体股份有限公司(台北业务处)盛群半导体股份有限公司(台北业务处) 台北市南港区园区街 3 之 2 号 4 楼之 2 电话: 886-2-2655-7070 传真: 886-2-2655-7373 传真: 886-2-2655-7383 (International sales hotline) 盛扬半导体有限公司(上海业务处)盛扬半导体有限公司(上海业务处) 上海闵行区宜山路 2016 号合
268、川大厦 1 号楼 3 楼 G 室 201103 电话: 86-21-5422-4590 传真: 86-21-5422-4705 网站: 盛扬半导体有限公司(深圳业务处)盛扬半导体有限公司(深圳业务处) 深圳市南山区科技园科技中三路与高新中二道交汇处生产力大楼 A 单元五楼 518057 电话: 86-755-8616-9908, 86-755-8616-9308 传真: 86-755-8616-9722 盛扬半导体有限公司(北京业务处)盛扬半导体有限公司(北京业务处) 北京市西城区宣武门西大街甲 129 号金隅大厦 1721 室 100031 电话: 86-10-6641-0030, 86-
269、10-6641-7751, 86-10-6641-7752 传真: 86-10-6641-0125 Holtek Semiconductor (USA), Inc.(北美业务处)(北美业务处) 46729 Fremont Blvd., Fremont, CA 94538, USA 电话: 1-510-252-9880 传真: 1- 510-252-9885 网站: http:/ Copyright 2011 by HOLTEK SEMICONDUCTOR INC. 使用指南中所出现的信息在出版当时相信是正确的,然而盛群对于说明书的使用不负任何责任。文中提到的应用目的仅仅是用来做说明,盛群不保证
270、或表示这些没有进一步修改的应用将是适当的,也不推荐它的产品使用在会由于故障或其它原因可能会对人身造成危害的地方。盛群产品不授权使用于救生、维生器件或系统中做为关键器件。盛群拥有不事先通知而修改产品的权利,对于最新的信息,请参考我们的网址 http:/.tw HT46R064B/065B/066B - 增强 A/D 型八位 OTP 单片机http:/ 08:34:43 HT46R064B/065B/066B - 增强 A/D 型八位 OTP 单片机 (增强型OTP单片机)概要增强 A/D 型系列单片机是一款 8 位具有高性能精简指令集的单片机,应用相当广泛。秉承 HOLTEK 单片机具有的低功耗
271、、I/O 灵活、定时器功能、振荡类型可选、休眠和唤醒功能、看门狗和低电压复位等丰富的功能选项,增强 A/D 型单片机具有极高的性价比,其内部集成了系统振荡器 HIRC,提供三种频率选择,不需要增加外部元器件。可以广泛适用于各种应用,例如工业控制,消费类产品,家用电器子系统控制等。特性CPU特性工作电压:fSYS=4MHz: 2.2V5.5VfSYS=8MHz: 3.0V5.5V fSYS=12MHz: 4.5V5.5V振荡模式: 外部高频晶振 HXT 外部 RC ERC 内部 RC HIRC 外部低频晶振 LXT在VDD=5V ,系统频率为12MHz时,指令周期为0.33s3种工作模式:正常,
272、低速,休眠内部集成 4MHz,8MHz 和 12MHz 振荡器,无需外接元件看门狗定时器功能LIRC 振荡用于看门狗时钟所有指令都可在 1 或 2 个指令周期内完成查表指令63 条功能强大的指令系统多达 6 层堆栈位操作指令低电压复位功能 提供多种封装类型 周边特性多达 26 个双向 I/O 口多达 8 个通道 12 位 ADC多达 2 个通道 8 位 PWM4 个软件控制 SCOM 口 1/2 bias LCD 驱动一个与 I/O 口复用的外部中断输入多达 2 个 8 位可编程定时/计数器,具有溢出中断和预分频功技术相关信息Data Sheet封装信息16-pin DIP 封裝16-pin NSOP 封裝20-pin DIP 封裝20-pin SOP 封裝20-pin SSOP 封裝24-pin SKDIP 封裝24-pin SOP 封裝24-pin SSOP 封裝28-pin SKDIP 封裝28-pin SOP 封裝28-pin SSOP 封裝其它相关信息产品相关信息 盛群半导体推出HT48R06xB与HT46R06xB系列微控制器第三方出版书籍HT46R064B/065B/066B - 增强 A/D 型八位 OTP 单片机http:/ 08:34:43能时基功能PFD 功能