Size: px
Start display at page:

Download ""

Transcription

1 HT48R10A-1/HT48R30A-1 HT48R50A-1/HT48R70A-1 I/O 型单片机使用手册 本使用手册版权为盛群半导体股份有限公司所有, 非经盛群半导体股份有限公司书面授权同意, 不得通过任何形式复制 储存或传输

2

3 目录 目录 第一部份单片机概论... 1 第一章硬件结构... 3 简介...3 特性...4 技术特性...4 内核特性...4 周边特性...5 选择表...5 系统框线图...6 引脚分配...7 引脚说明...9 极限参数...13 直流电气特性...13 交流电气特性...14 系统结构...15 时序和流水线结构 (Pipelining)...15 程序计数器...16 堆栈...18 算术及逻辑单元 ALU...19 程序存储器...20 结构...20 特殊向量...21 查表...21 查表程序范例...22 数据存储器...24 结构...24 通用数据存储器...24 专用数据存储器...25 i

4 I/O 型单片机使用手册 特殊功能寄存器...26 间接寻址寄存器 IAR, IAR0, IAR 间接寻址指针 MP, MP0, MP 累加器 ACC...27 程序计数器低字节寄存器 PCL...27 表格寄存器 TBLP, TBLH...28 看门狗定时寄存器 WDTS...28 状态寄存器 STATUS...28 中断控制寄存器 INTC...29 定时 / 计数寄存器...29 输入 / 输出端口和控制寄存器...30 输入 / 输出端口...30 上拉电阻...30 PA 口的唤醒...31 输入 / 输出端口控制寄存器...31 引脚共用功能...31 编程注意事项...34 定时 / 计数器...35 配置定时 / 计数器输入时钟源...36 定时 / 计数寄存器 TMR, TMR0, TMR0L/TMR0H, TMR1L/TMR1H...37 定时 / 计数控制寄存器 TMRC,TMR0C,TMR1C...38 定时器模式...39 事件计数模式...40 脉冲宽度测量模式...40 可编程分频器 (PFD) 和蜂鸣器的应用...41 预分频器 (Prescaler)...42 输入 / 输出接口...42 编程注意事项...42 中断...43 外部中断...44 定时 / 计数器中断...44 中断优先权...45 编程注意事项...45 复位和初始化...46 复位...46 振荡器...53 系统时钟配置...53 系统晶体 / 陶瓷振荡器...53 系统电阻电容振荡器...54 内部系统电阻电容振荡器...54 ii

5 目录 RTC 振荡器...55 看门狗定时振荡器...55 暂停模式下的暂停和唤醒...56 看门狗定时器...57 掩膜选项...58 应用电路...59 第二部份程序语言 第二章指令集介绍 指令集...63 指令周期...63 数据的传送...63 算术运算...64 逻辑和移位运算...64 分支和控制的转换...64 位运算...64 查表运算...65 其它运算...65 指令设定一览表...66 惯例...66 第三章指令定义 第四章汇编语言和编译器 常用符号...83 语句语法...84 名称...84 操作项...84 操作数项...84 注解...84 编译伪指令...85 条件编译伪指令...85 文件控制伪指令...86 程序伪指令...88 数据定义伪指令...92 宏指令...94 汇编语言指令...98 名称...98 助记符...98 操作数 运算子和表达式...98 其它 前置引用 局部标号 iii

6 I/O 型单片机使用手册 汇编语言保留字 编译器选项 编译列表文件格式 源程序列表 编译总结 其它 第三部份开发工具 第五章单片机开发工具 HT-IDE 集成开发环境 盛群单片机仿真器 (HT-ICE) HT-ICE 接口卡 OTP 烧录器 OTP 适配卡 系统配置 HT-ICE 接口卡设置 安装 系统需求 硬件安装 软件安装 第六章快速开始 步骤一 : 建立一个新项目 步骤二 : 将源程序文件加到项目中 步骤三 : 完成项目 步骤四 : 烧录 OTP 单片机 步骤五 : 传送程序与掩膜选项单至 Holtek 附录 附录 A 特性曲线图 附录 B 封装信息 iv

7 前言 前言 自从盛群半导体公司成立以来, 即致力于单片机产品的设计与开发 虽然盛群半导体提供给客户各式各样的半导体芯片, 但其中单片机仍是盛群的主要关键产品, 未来盛群半导体仍将继续扩展单片机产品系列完整性与功能性 通过长期累积的单片机研发经验与技术, 盛群半导体能为各式各样的应用范围开发出高性能且低价位的单片机芯片 盛群的 I/O 型单片机提供客户绝佳的产品方案, 大大地为顾客提升他们产品的功能, 当设计者使用盛群所开发出的各式开发工具时, 更可减少产品开发周期并大大的增加他们的产品附加价值 为了使用者阅读方便, 本手册分成三部份 关于一般的单片机的规格信息可在第一部份中找到 与单片机程序相关的信息, 如指令集 指令定义和汇编语言编译伪指令, 可在第二部份找到 第三部份则是关于盛群半导体的开发工具有关如何安装和使用的相关信息 希望使用 I/O 型单片机的盛群半导体客户, 通过这本手册, 能以一种简单 有效 且完整的方法, 实现他们在单片机上的各种应用 由于盛群半导体将单片机规格 程序规划和开发工具等信息结合在一本使用手册上, 预期客户将可充分利用盛群半导体各种单片机的特性, 获取最大的产品优势 盛群半导体也欢迎客户提供宝贵的意见和建议, 以作为我们未来的改进参考 v

8 vi I/O 型单片机使用手册

9 第一部份单片机概论 第一部份 单片机概论 1

10 2 I/O 型单片机使用手册

11 第一章硬件架构 第一章 硬件结构 1 本章主要为 I/O 型单片机的规格信息, 并且包含了所有参数和相关的硬件信息 这些信息提供设计者此类单片机的主要硬件特性细节, 结合程序部份的信息将能够让使用者快速且成功地实现各种单片机的应用 参考本章中的相关部份, 也保证使用者可以充分利用 I/O 型单片机 简介 HT48R10A-1/HT48C10-1 HT48R30A-1/HT48C30-1 HT48R50A-1/HT48C50-1 和 HT48R70A-1/HT48C70-1 是 8 位高性能 高效益的 RISC 结构单片机, 适用于多输入 / 输出控制产品 内部的特殊特性, 如暂停 唤醒功能 振荡器选择和蜂鸣器驱动等, 提升了单片机的灵活度, 而这些特性也同时保证实际应用时只需要最少的外部组件, 进而降低了整个产品成本 有了低功耗 高性能 灵活控制的输入 / 输出和低成本等优势, 这些芯片拥有许多功能, 并适合被广泛应用在如工业控制 消费性产品和子系统控制器等场合, 该系列所有的单片机都拥有相同的特性, 主要的不同在于 I/O 引脚数目,RAM 和 ROM 的容量, 定时器数目和大小等方面 HT48R10A-1 HT48R30A-1 HT48R50A-1 和 HT48R70A-1 都是属于一次可编程 (One-Time Programmable, OTP) 单片机, 当配合使用盛群半导体的程序开发工具时, 可简单有效的更新程序 这提供了设计者快速有效的开发途径 而对于那些已经设计成熟的应用, 掩膜版的 HT48C10-1,HT48C30-1,HT48C50-1 和 HT48C70-1 则可满足大量生产和低成本的需求 由于和 OTP 版的功能完全兼容, 掩膜版对于已经设计完成而想要降低成本的产品, 提供了一个理想的解决方案 3

12 I/O 型单片机使用手册 特性 技术特性 高性能 RISC 结构 低功率完全静态 CMOS 设计 工作电压 : 在 4MHz 下, 由 2.2V 到 5.5V 在 8MHz 下, 由 3.3V 到 5.5V 功率损耗 : 在 5V/4MHz 下, 典型值为 2mA 不使用看门狗定时器和 RTC 时,3V 下静态 (standby) 电流小于 1µA 温度范围 : 工作温度 40 C 到 85 C( 工业级规格 ) 储存温度 50 C 到 125 C 内核特性 程序存储器 1K 14 OTP/Mask ROM (HT48R10A-1/HT48C10-1) 2K 14 OTP/Mask ROM (HT48R30A-1/HT48C30-1) 4K 15 OTP/Mask ROM (HT48R50A-1/HT48C50-1) 8K 16 OTP/Mask ROM (HT48R70A-1/HT48C70-1) 数据存储器 64 8 SRAM (HT48R10A-1/HT48C10-1) 96 8 SRAM (HT48R30A-1/HT48C30-1) SRAM (HT48R50A-1/HT48C50-1) SRAM (HT48R70A-1/HT48C70-1) 表格读取功能 多层硬件堆栈 4-level (HT48R10A-1/HT48C10-1,HT48R30A-1/HT48C30-1) 6-level (HT48R50A-1/HT48C50-1) 16-level (HT48R70A-1/HT48C70-1) 直接和间接数据寻址模式 位操作指令 63 条强大的指令 大多数指令执行时间只需要一个指令周期 4

13 第一章硬件架构 周边特性 从 21 个到 56 个具有上拉功能的双向输入输出口 PA 口具有唤醒功能 外部中断输入 事件计数输入 具有预分频器 (Prescaler) 及中断功能的定时器 看门狗定时器 (WDT) 暂停与唤醒特性可以节省功耗 PFD/ 蜂鸣器驱动输出 芯片内置晶体及电阻电容振荡电路 具有低电压复位特性 32768Hz 的实时时钟 (RTC) 功能 具有低电压复位 (LVR) 特性 具有烧录电路接口及程序代码保护功能 Mask 版单片机适用于大量生产 提供高效的软硬件支持工具 选择表 这个系列的 I/O 型单片机拥有广泛的功能特性, 其中有些是普通的, 有些则是独有的 大部份的特性对该系列所有的单片机来说是共通的, 主要的区别在于程序存储器和数据存储器的容量 I/O 数目和定时器功能 为了帮助使用者在应用时能选择适当的单片机, 以下表格提供了各个单片机主要的特性概述 型号 HT48R10A-1 HT48C10-1 HT48R30A-1 HT48C30-1 HT48R50A-1 HT48C50-1 HT48R70A-1 HT48C70-1 电源 程序存储器 数据存储器 输入 / 输出口 定时器中断堆栈封装种类 2.2V~5.5V 1K bit SKDIP/SOP 2.2V~5.5V 2K bit V~5.5V 4K bit 1 16-bit V~5.5V 8K bit SKDIP/SOP 28SKDIP/SOP 28SKDIP/SOP 48SSOP 48SSOP 64QFP 注意 : 型号部份包含 C 的为 Mask 版本, 而 R 则是 OTP 版本 5

14 I/O 型单片机使用手册 系统框线图以下的系统框线图为 I/O 型单片机系列的主要功能模块 5 O I JA 4 + : J= I? E = J H 1 JA H = , 6 I? E = J H 6 E E C / A A H= J H, = J= A HA I I, A H 7: 1 I JHK? JE, A H A HO 2 E JA H 1 I JHK? JE 4 A C EI JA H 7 : ) + + ) 7 5 D EBJA H 2 H C H= A HO K F 6 = > A 4 A C EI JA HA I I, A H K F 6 = > A 2 E JA H 2 H C H= + K JA H 5 J=? 5 J=? 2 E JA H 6 2 H C H= A HO + BEC K H= JE F JE 4 A I A J BEC 9 = J? C 4 A C EI JA H 6 E A H + BEC 6 E A HI 4 A C EI JA H + K JA H * K A H, HEL A H + BEC 4 A C EI JA H 1 JA HHK F J + EH? K EJ + BEC 4 A C EI JA H 1 2 HJI, A L E? A 2 H C H= E C + EH? K EJHO 注意 : 本系统框线图为 OTP 单片机, 至于 Mask 型单片机则没有 Device Programming Circuitry 6

15 第一章硬件架构 引脚分配 2 * # 2 * " 2 )! 2 ) 2 ) 2 ) 2 *! 2 * 2 * * 2 * * ! " # $ % & ' "! ' & % $ # "! 2 * $ 2 * % 2 ) " 2 ) # 2 ) $ 2 ) % " ! 8,, * # 2 * " 2 )! 2 ) 2 ) 2 ) 2 *! 2 * 2 * * 2 * * / 1 6! " # $ % & ' "! ' & % $ # "! 2 * $ 2 * % 2 ) " 2 ) # 2 ) $ 2 ) % / / 8,, * # 2 * " 2 )! 2 ) 2 ) 2 ) 2 *! 2 * 2 * * 2 * * / ! " # $ % & '! " & % $ # "! ' & % $ # 2 * $ 2 * % 2 ) " 2 ) # 2 ) $ 2 ) % / / 8,, # 2 + " 2 +! " & 4 ) 0 6 " & + " 5, 12 ) 5 2 ) 0 6 " & 4! ) 0 6 " & +! " 5, 12 ) 5 2 ) 0 6 " & 4! ) 0 6 " & +! & 5, 12 ) 5 2 ) 2 * # 2 * " 2 )! 2 ) 2 ) 2 ) 2 *! 2 * 2 * * 2 * * / ! " # $ % & '! " 0 6 " & 4 # ) 0 6 " & + # & 5, 12 ) 5 2 ) & % $ # "! ' & % $ # 2 * $ 2 * % 2 ) " 2 ) # 2 ) $ 2 ) % / / 8,, # " 2 +! * # 2 * " 2 )! 2 ) 2 ) 2 ) 2 *! 2 * 2 * * 2 * * , % 2, $ 2, # 2, " / ! " # $ % & '! " # $ % & '! " " & " % " $ " # " " "! " " "! '! &! %! $! #! "!!!!! 0 6 " & 4 # ) 0 6 " & + # " & ) ' & % $ # 2 * $ 2 * % 2 ) " 2 ) # 2 ) $ 2 ) % / / 8,, ,! 2, 2, 2, 2 + % 2 + $ 2 + # 2 + " 2 +! 2 * # 2 * " 2 )! 2 ) 2 ) 2 ) 2 *! 2 * 2 * * 2 * * 2 -! , % 2, $ 2, # 2, " ! " # $ % & '! " # $ % & '! " " & " % " $ " # " " "! " " "! '! &! %! $! #! "!!!!! 2 * $ 2 * % 2 ) " 2 ) # 2 ) $ 2 ) % ! ,, ,! 2, 2, 2, 2 + % 2 + $ 2 + # 2 + " 2 +! 0 6 " & 4 % ) 0 6 " & + % " & ) ' & % $ # 7

16 I/O 型单片机使用手册 2 ) $ 2 ) # 2 ) " 2 * % 2 * $ 2 * # 2 * " 2 / % 2 / $ 2 / # 2 / " 2 )! 2 ) 2 ) 2 ) 2 - % 2 - $ 2 - # 2 - " 2 *! 2 * 2 * * 2 * * 2 -! , % 2, $ 2, # 2, " $ " $! $ $ $ # ' # & # % # $ # # # " #! # # #! " ' " " & # " % $ " $ % " # & " " ' 0 6 " & 4 % ) 0 6 " & + % $ " 3. 2 ) "! " " "!! ' "! & #! % $! $ %! # &! " '!!! " # $ % & '!!! 2 ) % ! " 2. # 2. $ 2. % 8,, ,! 2, 2, 2, 2 + % 2 + $ 2 + # 2 + " 2 +! /! 2 / 2 / 2 / 注意 : SKDIP/SOP 封装的单片机的引脚具有兼容特性, 使其在硬件应用时以最小的改变去提供设 备直接升级到更高的功能 8

17 第一章硬件架构 引脚说明 HT48R10A-1/HT48C10-1 引脚名称 I/O 掩膜选项说明 PA0~PA7 PB0/BZ PB1/ BZ PB2 ~ PB7 PC0/ INT PC1/TMR PC2 OSC1/PC3 OSC2/PC4 I/O I/O I/O I O Pull-high Wake-up Schmitt Trigger Pull-high I/O or BZ/ BZ Pull-high Pull-high Crystal or RC or Int. RC+I/O or Int. RC+RTC 8 位双向输入 / 输出口, 每个位可由掩膜选项设置成唤醒输入 软件指令决定引脚是 CMOS 输出或输入 掩膜选项决定所有引脚是否有上拉电阻及输入为斯密特触发器或非斯密特触发器 8 位双向输入 / 输出口 软件指令决定引脚是 CMOS 输出或斯密特触发器输入 掩膜选项决定所有引脚是否有上拉电阻 PB0 和 PB1 分别与 BZ 和 BZ 引脚共用 3 位双向输入 / 输出口 软件指令决定引脚是 CMOS 输出或斯密特触发器输入 掩膜选项决定所有引脚是否有上拉电阻 引脚 PC0 和外部中断 INT 引脚共用而 PC1 和外部定时器 TMR 引脚共用 外部中断在高电平转低电平时被触发 OSC1 OSC2 连接外部 RC 电路或晶体振荡器 ( 由掩膜选项决定 ) 作为内部系统时钟 对于外部 RC 系统时钟的操作,OSC2 的输出端信号是系统时钟四分频 这两个引脚可以被选择成一个 RTC 振荡器 (32768Hz) 或 I/O 口 在这两种情况下系统时钟来自内部 RC 振荡器, 其正常频率在 5V 时有 3.2MHz, 1.6MHz, 800kHz 和 400kHz 四种选择 如果引脚使用成普通 I/O 引脚, 则上拉选项是可用的 如果使用成振荡器引脚, 位 PC3 和 PC4 可以被应用程序自由的使用 在这个情况下上拉选项是不可用的 RES I 触发复位输入 低电平有效 VDD 正电源供应 VSS 负电源供应, 接地 注意 : 1. PA 上的每个引脚可通过掩膜选项被设定成拥有唤醒功能 2. 单独的引脚或口不可以被选择为带上拉电阻, 如果选择了上拉配置, 则该端口的所有 输入引脚都将被连接到上拉电阻 9

18 I/O 型单片机使用手册 HT48R30A-1/HT48C30-1 引脚名称 I/O 掩膜选项说明 PA0~PA7 PB0/BZ PB1/ BZ PB2 ~ PB7 PC0/TMR PC1 ~ PC5 I/O I/O I/O Pull-high Wake-up Schmitt Trigger Pull-high I/O or BZ/ BZ Pull-high 8 位双向输入 / 输出口, 每个位可由掩膜选项设置成唤醒输入 软件指令决定引脚是 CMOS 输出或输入 掩膜选项决定所有引脚是否有上拉电阻及输入为斯密特触发器或非斯密特触发器 8 位双向输入 / 输出口 软件指令决定引脚是 CMOS 输出或斯密特触发器输入 掩膜选项决定所有引脚是否有上拉电阻 PB0 和 PB1 分别与 BZ 和 BZ 引脚共用 6 位双向输入 / 输出口 软件指令决定引脚是 CMOS 输出或斯密特触发器输入 掩膜选项决定所有引脚是否有上拉电阻 引脚 PC0 和外部定时器 TMR 引脚共用 PG0/ INT I/O Pull-high 1 位双向输入 / 输出口 软件指令决定引脚是 CMOS 输出或斯密特触发器输入 掩膜选项决定引脚是否有上拉电阻 引脚 PG0 和外部中断 INT 引脚共用 外部中断在高电平转低电平时被触发 OSC1/PG1 OSC2/PG2 I O Pull-high Crystal or RC or Int. RC+I/O or Int. RC+RTC OSC1 OSC2 连接外部 RC 电路或晶体振荡器 ( 由掩膜选项决定 ) 作为内部系统时钟 对于外部 RC 系统时钟的操作,OSC2 的输出端信号是系统时钟四分频 这两个引脚可以被选择成一个 RTC 振荡器 (32768Hz) 或 I/O 口 在这两种情况下系统时钟来自内部 RC 振荡器, 其正常频率在 5V 时有 3.2MHz, 1.6MHz, 800kHz 和 400kHz 四种选择 如果引脚使用成普通 I/O 引脚, 则上拉选项是可用的 如果使用成振荡器引脚, 位 PG1 和 PG2 可以被应用程序自由的使用 在这个情况下上拉选项是不可用的 RES I 触发复位输入 低电平有效 VDD 正电源供应 VSS 负电源供应, 接地 注意 : 1. PA 上的每个引脚可通过掩膜选项被设定成拥有唤醒功能 2. 单独的引脚或口不可以被选择为带上拉电阻, 如果选择了上拉配置, 则该端口的所有输入引脚都将被连接到上拉电阻 3. 引脚 PC1 和 PC3 ~ PC5 只存在于 28-pin 的封装 在 24-pin 的封装中这些引脚是无效的 10

19 第一章硬件架构 HT48R50A-1/HT48C50-1 引脚名称 I/O 掩膜选项说明 PA0~PA7 PB0/BZ PB1/ BZ PB2 ~ PB7 PC0/TMR0 PC5/TMR1 PC1 ~ PC4 PC6 ~ PC7 I/O I/O I/O Pull-high Wake-up Schmitt Trigger Pull-high I/O or BZ/ BZ Pull-high PD0 ~ PD7 I/O Pull-high PG0/ INT I/O Pull-high OSC1/PG1 OSC2/PG2 I O Pull-high Crystal or RC or Int. RC+I/O or Int. RC+RTC 8 位双向输入 / 输出口, 每个位可由掩膜选项设置成唤醒输入 软件指令决定引脚是 CMOS 输出或输入 掩膜选项决定所有引脚是否有上拉电阻及输入为斯密特触发器或非斯密特触发器 8 位双向输入 / 输出口 软件指令决定引脚是 CMOS 输出或斯密特触发器输入 掩膜选项决定所有引脚是否有上拉电阻 PB0 和 PB1 分别与 BZ 和 BZ 引脚共用 8 位双向输入 / 输出口 软件指令决定引脚是 CMOS 输出或斯密特触发器输入 掩膜选项决定所有引脚是否有上拉电阻 在 28-pin 的封装中 TMR0 和 TMR1 分别与 PC0 和 PC5 引脚共用 8 位双向输入 / 输出口 软件指令决定引脚是 CMOS 输出或斯密特触发器输入 掩膜选项决定所有引脚是否有上拉电阻 1 位双向输入 / 输出口 软件指令决定引脚是 CMOS 输出或斯密特触发器输入 掩膜选项决定引脚是否有上拉电阻 引脚 PG0 和外部中断 INT 引脚共用 OSC1 OSC2 连接外部 RC 电路或晶体振荡器 ( 由掩膜选项决定 ) 作为内部系统时钟 对于外部 RC 系统时钟的操作,OSC2 的输出端信号是系统时钟四分频 这两个引脚可以被选择成一个 RTC 振荡器 (32768Hz) 或 I/O 口 在这两种情况下系统时钟来自内部 RC 振荡器, 其正常频率在 5V 时有 3.2MHz, 1.6MHz, 800kHz 和 400kHz 四种选择 如果引脚使用成普通 I/O 引脚, 则上拉选项是可用的 如果使用成振荡器引脚, 位 PG1 和 PG2 可以被应用程序自由的使用 在这个情况下上拉选项是不可用的 RES I 触发复位输入 低电平有效 VDD 正电源供应 VSS 负电源供应, 接地 注意 : 1. PA 上的每个引脚可通过掩膜选项被设定成拥有唤醒功能 2. 单独的引脚或口不可以被选择为带上拉电阻, 如果选择了上拉配置, 则该端口的所有输入引脚都将被连接到上拉电阻 3. 在 48-pin 的封装中, 端口 PC 没有共用引脚 所有的 PC 引脚都是普通的 I/O, 而 TMR0 和 TMR1 都是独立的引脚 4. 引脚 PC6 和 PC7 只存在于 48-pin 的封装中 5. 端口 PD 只出现在 48-pin 的封装中 11

20 I/O 型单片机使用手册 HT48R70A-1/HT48C70-1 引脚名称 I/O 掩膜选项说明 PA0~PA7 PB0/BZ PB1/ BZ PB2 ~ PB7 PC0 ~ PC7 PD0 ~ PD7 PE0 ~ PE7 PF0 ~ PF7 PG0 ~ PG7 I/O I/O Pull-high Wake-up Schmitt Trigger Pull-high I/O or BZ/ BZ INT I 8 位双向输入 / 输出口, 每个位可由掩膜选项设置成唤醒输入 软件指令决定引脚是 CMOS 输出或输入 掩膜选项决定所有引脚是否有上拉电阻及输入为斯密特触发器或非斯密特触发器 8 位双向输入 / 输出口 软件指令决定引脚是 CMOS 输出或斯密特触发器输入 每个端口由掩膜选项决定所有引脚是否有上拉电阻 PB0 和 PB1 分别与 BZ 和 BZ 引脚共用 外部中断斯密特触发器输入 电平由高到低转换时产生边沿触发 TMR0 I 斯密特触发器输入的定时 / 计数器 0 TMR1 I 斯密特触发器输入的定时 / 计数器 1 OSC1 OSC2 I O Crystal or RC or Int. RC+RTC OSC1 OSC2 连接外部 RC 电路或晶体振荡器 ( 由掩膜选项决定 ) 作为内部系统时钟 对于外部 RC 系统时钟的操作,OSC2 的输出端信号是系统时钟四分频 这两个引脚可以被选择成一个 RTC 振荡器 (32768Hz) 在这种情况下系统时钟来自内部 RC 振荡器, 其正常频率在 5V 时有 3.2MHz, 1.6MHz, 800kHz 和 400kHz 四种选择 RES I 触发复位输入 低电平有效 VDD 正电源供应 VSS 负电源供应, 接地 注意 : 1. PA 上的每个引脚可通过掩膜选项被设定成拥有唤醒功能 2. 单独的引脚或口不可以被选择为带上拉电阻, 如果选择了上拉配置, 则该端口的所有输入引脚都将被连接到上拉电阻 3. 引脚 PE4 ~ PE7 和引脚 PF4 ~ PF7 只存在于 64-pin 的封装中 4. 端口 PG 只存在于 64-pin 的封装中 12

21 第一章硬件架构 极限参数 供应电压...V SS 0.3V to V SS +6.0V 输入电压... V SS 0.3V to V DD +0.3V 储存温度 C~125 C 工作温度 C~85 C 这里只强调额定功率, 超过极限参数功率的范围将对芯片造成损害, 芯片在所标示范围外的表现并不能预期, 而长期工作在标示范围外条件下也可能影响芯片的可靠性 直流电气特性 Ta=25 C 符号 V DD I DD1 I DD2 I DD3 I STB1 I STB2 I STB2 Operating Voltage Operating Current (Crystal OSC) 参数 Operating Current (RC OSC) Operating Current (Crystal OSC) Standby Current (WDT Enabled, RTC Off) Standby Current (WDT Disabled, RTC Off) Standby Current (WDT Disabled, RTC On) 测试条件 V DD 条件 最小 典型 最大 单位 f SYS=4MHz V f SYS=8MHz V 3V No load, ma 5V f SYS=4MHz 2 4 ma 3V No load, ma 5V f SYS=4MHz ma 5V No load, f SYS=8MHz 3 5 ma 3V No load, 5 µa 5V system HALT 10 µa 3V No load, 1 µa 5V system HALT 2 µa 3V No load, 5 µa 5V system HALT 10 µa V IL1 Input Low Voltage for I/O Ports 0 0.3V DD V V IH1 Input High Voltage for I/O Ports 0.7V DD V DD V V IL2 Input Low Voltage ( RES ) 0 0.4V DD V V IH2 Input High Voltage ( RES ) 0.9V DD V DD V V LVR Low Voltage Reset LVR enabled V I OL I/O Port Sink Current 3V V OL=0.1V DD 4 8 ma 5V V OL=0.1V DD ma I OH I/O Port Source Current 3V V OH=0.9V DD 2 4 ma 5V V OH=0.9V DD 5 10 ma R PH Pull-high Resistance 3V kω 5V kω 13

22 I/O 型单片机使用手册 交流电气特性 Ta=25 C 符号 f SYS1 f SYS2 f SYS3 f TIMER t WDTOSC 参数 System Clock (Crystal OSC) System Clock (RC OSC) System Clock (Internal RC OSC) Timer I/P Frequency (TMR) Watchdog Oscillator Period 测试条件 V DD 条件 最小 典型 最大 单位 2.2V ~ 5.5V khz 3.3V ~ 5.5V khz 2.2V ~ 5.5V khz 3.3V ~ 5.5V khz 3.2MHz khz 5V 1.6MHz khz 800kHz khz 400kHz khz 2.2V ~ 5.5V khz 3.3V ~ 5.5V khz 3V µs 5V µs t WDT1 Watchdog Time-out Period 3V Without WDT ms (WDT OSC) 5V prescaler ms t WDT2 Watchdog Time-out Period Without WDT (System Clock) Prescaler 1024 t SYS* t WDT3 Watchdog Time-out Period Without WDT (RTC OSC) Prescaler ms t RES External Reset Low Pulse Width 1 µs t SST System Start-up Timer Period Wake-up from HALT 1024 t SYS* t LVR Low Voltage Width to Reset 1 ms t INT Interrupt Pulse Width 1 µs * t SYS =1/f SYS1, 1/f SYS2 或 1/f SYS3 注意 : 内部 RC 系统时钟在 5V 时有一典型的基本频率 3.2MHz 其它在 5V 时的 1.6MHz 800kHz 和 400kHz 内部 RC 系统时钟是这个基本频率 3.2MHz 的分频 14

23 第一章硬件架构 系统结构 内部系统结构是盛群半导体公司 I/O 型单片机具有良好运行性能的主要因素 由于采用 RISC 结构, 此系列单片机具有高运算速度和高性能的特性 通过流水线的方式, 即指令的取得和执行同时进行, 此举使得除了分支 调用和查表指令外, 其它指令都能在一个指令周期内完成 8 位的 ALU 参与指令集中所有的运算, 它可完成算术运算 逻辑运算 移位 加 减和分支等功能, 而内部的数据路径则以通过累加器或 ALU 的方式加以简化 有些寄存器在数据存储器中被实现, 且可以直接或间接寻址 简单的寄存器寻址方式和结构特性, 确保了在提供最大可靠度和灵活性的输入 / 输出控制系统时, 仅需要少数的外部器件 这使得这些单片机适合用在低成本高产量的控制应用上, 可以提供 1K 至 8K 字的程序存储器和 64 至 224 字节数据储存 时序和流水线结构 (Pipelining) 系统时钟由晶体 / 陶瓷振荡器, 或是由 RC 振荡器提供, 细分为 T1~T4 四个内部产生的非重叠时序 程序计数器在 T1 时自动加一并抓取一条新的指令 剩下的 T2~T4 时钟完成解码和执行功能, 因此一个 T1~T4 时钟组成一个指令周期 虽然指令的取得和执行发生在连续的指令周期, 但单片机流水线的结构会保证指令在一个指令周期内被有效的执行 特殊的情况发生在程序计数器的内容被改变的时候, 如子程序的调用或跳转, 在这情况下指令将需要多一个指令周期的时间去执行 注意 : 当使用 RC 振荡器时,OSC2 可以如同一个 T1 相时钟同步引脚一样地被使用, 这个 T1 相时钟有 f SYS /4 的频率, 拥有 1:3 高 / 低的占空比 15

24 I/O 型单片机使用手册 I? E = J H+? 5 O I JA +? 2 D = I A +? 6 2 D = I A +? 6 2 D = I A +? 6! 2 D = I A +? 6 " 2 H C H= + K JA H EF A E E C. A J? D 1 I J N A? K JA 1 I J 2 +. A J? D 1 I J N A? K JA 1 I J 2 +. A J? D 1 I J N A? K JA 1 I J 2 + 系统时序和流水线 如果指令牵涉到分支, 例如跳转或调用等指令, 则需要两个指令周期才能完成指令执行 需要一个额外周期的原因是程序先用一个周期取出当前指令地址的下一条指令, 再用另一个周期去实际执行分支动作, 因此程序设计师必须特别考虑额外周期的问题, 尤其是在执行时间要求比较严格的时候! " 8 ) 0 + ), - ) ; A J? D 1 I J - N A? K JA 1 I J. A J? D 1 I J - N A? K JA 1 I J. A J? D 1 I J!. K I D 2 EF A E A. A J? D 1 I J $ - N A? K JA 1 I J $ #. A J? D 1 I J % $, - ) ; 2 程序计数器程序执行期间, 程序计数器用来指向下一条要执行的指令地址 除了 JMP 或 CALL 这些要求跳转到一个非连续的程序存储器地址之外, 它会在每条指令执行完后自动增加一 对于输入 / 输出系列的单片机, 根据所选择的单片机型号不同, 程序计数器宽度会因程序存储器容量的不同而不同 然而必须要注意只有较低的 8 位, 即所谓的程序计数器低字节寄存器, 是可以让使用者直接读写的 当执行的指令要求跳转到非连续的地址时, 如跳转指令 子程序调用 中断或复位等, 单片机通过载入所需的地址到程序计数器来控制程序 对于条件跳转指令, 一旦条件符合, 下一条在现在指令执行时所取得的指令即会被摒弃, 而由一个空指令周期来加以取代 16

25 第一章硬件架构 程序计数器较低字节, 即程序计数器低字节寄存器或 PCL, 可以通过程序控制取得, 且它是可以读取和写入的寄存器 通过直接传送数据到这寄存器, 一个程序短跳转可以直接被执行, 然而因为只有低字节的运用是有效的, 因此跳转被限制在同页存储器, 即 256 个存储器地址的范围内, 当这样一个程序跳转要执行时, 需注意会插入一个空指令周期 注意 : 程序计数器较低字节在程序控制下是完全可用的 PCL 的使用可能导致程序分支, 所以额 外的周期需要预先取得 有关 PCL 寄存器更多的信息可在特殊功能寄存器部份中找到 程序计数器模式 b12 b11 b10 b9 b8 b7 b6 b5 b4 b3 b2 b1 b0 复位 外部中断 定时 / 计数器 0 中断 定时 / 计数器 1 中断 条件跳转 Program Counter + 2 写入 PCL 寄存器 PC12 PC11 PC10 跳转或调用子程序 #12 #11 #10 #9 #8 #7 #6 #5 #4 #3 #2 #1 #0 由子程序返回 S12 S11 S10 S9 S8 S7 S6 S5 S4 S3 S2 S1 S0 注意 : 1. PC12~PC8: 目前程序计数器位 位 3. #12~#0: 指令码位 4. S12~S0: 堆栈寄存器位 5. 对于 HT48R70A-1/HT48C70-1, 程序计数器有 13 个位, 即从 b12~b0 6. 对于 HT48R50A-1/HT48C50-1, 由于程序计数器只有 12 个位, 表格中的列 b12 是无效的 7. 对于 HT48R30A-1/HT48C30-1, 由于程序计数器只有 11 个位, 表格中的列 b11 和 b12 无效的 8. 对于 HT48R10A-1/HT48C10-1, 由于程序计数器只有 10 个位, 表格中的列 b10, b11 和 b12 是无效的 9. 定时 / 计数器 1 中断, 只有 HT48R50A-1/HT48C50-1 和 HT48R70A-1/HT48C70-1 可用 10. 对于 HT48R10A-1/HT48C10-1 和 HT48R30A-1/HT48C30-1, 定时 / 计数器 0 即 TMR 17

26 I/O 型单片机使用手册 堆栈堆栈是存储器中一个特殊的部分, 它只用来储存程序计数器中的内容 根据选择的单片机, 堆栈可介于 4 6 或 16 层之间, 它们既不是数据部分也不是程序空间部分, 且既不是可读取也不是可写入的 当前层由堆栈指针 (Stack Pointer, SP) 加以指示, 同样也是不可读写的 在子程序调用或中断响应服务时, 程序计数器的内容被压入到堆栈中 当子程序或中断服务程序结束时, 返回指令 (RET 或 RETI) 使程序计数器从堆栈中重新得到它以前的值 当一个芯片复位之后,SP 将指向堆栈的顶部 如果堆栈已满, 且有非屏蔽的中断发生, 中断请求标志位会被置位, 但是中断响应将被禁止 当堆栈指针减少 ( 执行 RET 或 RETI), 中断将被响应 这个特性提供程序设计者简单的方法来预防堆栈溢出 然而即使堆栈已满,CALL 指令仍然可以被执行, 而造成堆栈溢出 使用时应避免堆栈溢出的情况发生, 因为这可能会造成不可预期的程序分支指令执行错误 2 H C H= + K JA H 6 F B5 6 ) + 5 J=? 2 E JA H 5 J=? A L A 5 J=? A L A 5 J=? A L A! 2 H C H= A HO * JJ B5 6 ) + 5 J=? A L A 注意 : 1. 对 HT48R10A-1/HT48C10-1 和 HT48R30A-1/HT48C30-1 而言,N=4, 即 4 层堆栈可用 2. 对 HT48R50A-1/HT48C50-1 而言,N=6, 即 6 层堆栈可用 3. 对 HT48R70A-1/HT48C70-1 而言,N=16, 即 16 层堆栈可用 18

27 第一章硬件架构 算术及逻辑单元 ALU 算术逻辑单元是单片机中很重要的部份, 执行指令集中的算术和逻辑运算 ALU 连接到单片机的数据总线, 在接收相关的指令码后执行需要的算术与逻辑操作, 并将结果储存在指定的寄存器, 当 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 分支判断 :MP SZ SZA SNZ SIZ SDZ SIZA SDZA CALL RET RETI 19

28 I/O 型单片机使用手册 程序存储器程序存储器用来存放用户代码即存储程序 对于 I/O 型的单片机而言, 有两种程序存储器可供使用 第一种是一次可编程存储器 (OTP), 使用者可编写他们的应用码到芯片中, 具有 OTP 存储器的单片机在芯片名称上有 R 做标示 使用适当的编程工具,OTP 单片机可以提供使用者以灵活的方式来自由开发他们的应用, 这对于除错或需要经常升级与改变程序的产品是很有帮助的 对于中小型量产,OTP 亦为极佳的选择 另一种存储器为掩膜存储器, 单片机名称上有 C 做标示, 这些芯片对于大量生产提供最佳的成本效益 结构 14 位的程序存储器的容量是 1K,16 位的程序存储器的容量则是 8K, 这取决于选用哪种单片机 程序存储器用程序计数器来寻址, 其中也包含数据 表格和中断入口 数据表格可以设定在程序存储器的任何地址, 由表格指针来寻址 以下是 I/O 型单片机程序存储器结构图 0 " 0 & " & 4 ) 0 6 " & + 1 EJE= E = JE 8 A? J H - N JA H = 1 JA HHK F J8 A? J H 6 E A H + K JA H 1 JA HHK F J8 A? J H 0 6 " & 4! ) 0 6 " & +! 1 EJE= E = JE 8 A? J H - N JA H = 1 JA HHK F J8 A? J H 6 E A H + K JA H 1 JA HHK F J8 A? J H 0 6 " & 4 # ) 0 6 " & + # 1 EJE= E = JE 8 A? J H - N JA H = 1 JA HHK F J8 A? J H 6 E A H + K JA H 1 JA HHK F J8 A? J H 6 E A H + K JA H 1 JA HHK F J8 A? J H 0 6 " & 4 % ) 0 6 " & + % 1 EJE= E = JE 8 A? J H - N JA H = 1 JA HHK F J8 A? J H 6 E A H + K JA H 1 JA HHK F J8 A? J H 6 E A H + K JA H 1 JA HHK F J8 A? J H!.. 0 " 0 %.. 0 & " > EJI " > EJI # > EJI $ > EJI J1 F A A 20

29 第一章硬件架构 特殊向量程序存储器内部某些地址保留用做诸如复位和中断入口等特殊用途 地址 000H 这个向量是芯片复位后的程序起始地址 在芯片复位之后, 程序将跳到这个地址并开始执行 地址 004H 这个向量用做外部中断入口, 假如单片机外部中断引脚电平转成低电平, 而外部中断使能且堆栈没有满的情况下, 程序将跳到这个地址开始执行 地址 008H 此内部中断向量被定时 / 计数器所使用, 当定时器发生溢出, 而内部中断使能且堆栈没有满的情况下, 程序将跳到这个地址并开始执行 对于 HT48R50A-1/HT48C50-1 和 HT48R70A-1/HT48C70-1 而言, 这个定时 / 计数器称为定时 / 计数器 0 地址 00CH 此内部中断向量被定时 / 计数器所使用, 当定时器发生溢出, 而内部中断使能且堆栈没有满的情况下, 程序将跳到这个地址并开始执行, 此向量只可用于 HT48R50A-1/HT48C50-1 和 HT48R70A-1/HT48C70-1, 该定时 / 计数器称为定时 / 计数器 1 查表程序存储器中的任何地址都可以定义成一个表格, 以便储存固定的数据 使用表格时, 表格指针必须先行设定, 其方式是将表格的低字节地址放在表格指针寄存器 TBLP 中 这个寄存器定义表格较低的 8 位地址 在设定完表格指针后, 表格数据可以使用 TABRDC [m] 或 TABRDL [m] 指令从当前程序所在的存储器页或存储器最后一页中来查表读取 当这些指令执行时, 程序存储器中表格数据的低字节, 将被传送到使用者所指定的数据存储器, 程序存储器中表格数据的高字节, 则被传送到 TBLH 特殊寄存器, 而高字节中未使用的位将被读取为 0 下图是查表中寻址 / 数据流程图 2 H C H= + K JA H D EC D > O JA 6 * 2 2 H C H= A HO 6 * 0 5 F A? > O 0 EC D > O JA BJ= > A? JA JI M > O JA BJ= > A? JA JI 21

30 I/O 型单片机使用手册 查表程序范例 以下范例说明 HT48R10A-1 输入 / 输出型单片机中, 表格指针和表格数据如何被定义和执行 这个例子使用的表格数据用 ORG 伪指令储存在存储器的最后一页, 在此 ORG 伪指令中的值为 300H, 即 1K 程序存储器 HT48R10A-1 单片机中最后一页存储器的开始地址, 而表格指针的初始值则为 06H, 这可保证从数据表格读取的第一笔数据位于程序存储器地址 306H 即最后一页开始地址后的第六个地址 值得注意的是假如 TABRDC 指令被使用, 则表格指针指向当前页 在这个例子中, 表格数据的高字节等于零, 而当 TABRDL 指令被执行时, 此值将会自动的被传送到 TBLH 寄存器 tempreg1 db? ; temporary register #1 tempreg2 db? ; temporary register #2 : : mov a,06h ; initialize table pointer note that this ; address is referenced mov tblp,a ; to 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 ; tempreg1 and TBLH dec tblp ; reduce value of table pointer by one tabrdl tempreg2 ; transfers value in table referenced by table ; pointer to tempreg2 ; data at prog.memory address 305H transferred to ; tempreg2 and TBLH ; in this example the data 1A is transferred ; to tempreg1 and data 0F to register tempreg2 ; the value 0 will be transferred to the high ; byte register TBLH : : org 300h ; sets initial address of last page ; (for HT48R10A-1) dc : : 00Ah, 00Bh, 00Ch, 00Dh, 00Eh, 00Fh, 01Ah, 01Bh 22

31 第一章硬件架构 因为 TBLH 寄存器是只读寄存器, 不能重新储存, 若主程序和中断服务程序都使用表格读取指令, 应该注意它的保护 使用表格读取指令, 中断服务程序可能会改变 TBLH 的值, 若随后在主程序中再次使用这个值, 则会发生错误 因此建议避免同时使用表格读取指令 然而在某些情况下, 如果同时使用表格读取指令是不可避免的, 则在执行任何主程序的表格读取指令前, 中断应该先禁止, 另外要注意的是所有与表格相关的指令, 都需要两个指令周期去完成操作 表格地址指令 b12 b11 b10 b9 b8 b7 b6 b5 b4 b3 b2 b1 b0 TABRDC[m] PC12 PC11 PC10 TABRDL[m] 注意 : 1. PC12 ~ PC8: 当前程序计数器位 是表格指针 TBLP 位 3. 对 HT48R70A-1/HT48C70-1 来说, 表格地址是 13 位, 从 b12~b0 4. 对 HT48R50A-1/HT48C50-1 来说, 表格地址是 12 位, 从 b11~b0 5. 对 HT48R30A-1/HT48C30-1 来说, 表格地址是 11 位, 从 b10~b0 6. 对 HT48R10A-1/HT48C10-1 来说, 表格地址是 10 位, 从 b9~b0 23

32 I/O 型单片机使用手册 数据存储器数据存储器是内容可更改的 8 位 RAM 内部存储器, 用来储存临时数据, 且分为两部份 第一部份是特殊功能寄存器, 这些寄存器有固定的地址且与单片机的正确操作密切相关 大多特殊功能寄存器都可在程序控制下直接读取和写入, 但有些被加以保护而不对用户开放 第二部份数据存储器是做一般用途使用, 都可在程序控制下进行读取和写入 结构 数据存储器的两个部份, 即专用和通用数据存储器, 位于连续的地址 全部 RAM 为 8 位宽度, 但存储器长度因所选择的单片机而不同 所有芯片的数据存储器的开始地址都是 00H HT48R10A-1/HT48C10-1 和 HT48R30A-1/ HT48C30-1 的结束地址是 7FH,HT48R50A-1/ HT48C50-1 和 HT48R70A-1/ HT48C70-1 的结束地址是 FFH 常见的寄存器, 如 ACC 和 PCL 等, 全都具有相同的数据存储器地址 0 5 F A? E= 2 K HF I A, = J= A HO. 0 0 % / A A H= 2 K HF I A, = J= A HO + = F =? EJO A L E? A F A J 注意 : 除了少数专用的位, 大部份数据存储器的位都可以直接使用 SET [m].i 和 CLR [m].i 加以操作 数据存储器也可通过间接寻址指针 (MP) 进行存取 通用数据存储器所有的单片机程序需要一个读 / 写的存储区, 让临时数据可以被储存和再使用 该 RAM 区域就是通用数据存储器 这个数据存储区可让使用者进行读取和写入的操作 使用 SET [m].i 和 CLR [m].i 指令可对个别的位做置位或复位的操作, 方便用户在数据存储器内进行位操作 24

33 第一章硬件架构 以下是 I/O 型单片机通用数据存储器的详细结构图 : " & 4 ) 0 6 " & " & 4! ) 0 6 " & +! " & 4 # ) 0 6 " & + # " & 4 % ) 0 6 " & + % " 0 %. 0 %. 0 $ 0 / A A H= 2 K HF I A, = J= A HO K I 4 A = I 专用数据存储器这个区域的数据存储器是存放特殊寄存器的, 这些寄存器与单片机的正确操作密切相关, 大多数的寄存器可进行读取和写入, 只有一些是被保护而只能读取的, 相关细节的介绍请参看有关特殊功能寄存器的部份 要注意的是, 任何读取指令对存储器中未使用的地址进行读取将得到 00H 的值 以下是 I/O 型单片机中, 专用数据存储器的详细结构图 : 0 0 0! 0 " 0 # 0 $ 0 % 0 & 0 ' 0 ) 0 * 0 + 0, ! 0 " 0 # 0 $ 0 % 0 & 0 ' 0 ) 0 * 0 + 0, " & 4 ) 0 6 " & + 1) 4 2 ) * 2 6 * 0 9, ) ) 2 ) + 2 * 2 * " & 4! ) 0 6 " & +! 1) 4 2 ) * 2 6 * 0 9, ) ) 2 ) + 2 * 2 * / 2 / " & 4 # ) 0 6 " & + # 1) 4 2 1) 4 2 ) * 2 6 * 0 9, ) ) 2 ) + 2 * 2 * , 2, + 2 / 2 / " & 4 % ) 0 6 " & + % 1) 4 2 1) 4 2 ) * 2 6 * 0 9, ) ) 2 ) + 2 * 2 * , 2, / 2 / + 5 F A? E= 2 K HF I A, = J= A HO 7 K I 4 A = I 25

34 I/O 型单片机使用手册 特殊功能寄存器为了确保单片机能成功的操作, 数据存储器中设置了一些内部寄存器 这些寄存器确保内部功能 ( 如定时器 中断和看门狗等 ) 和外部功能 ( 如输入 / 输出数据控制 ) 的正确操作 在数据存储器中, 这些寄存器以 00H 作为开始地址 在特殊功能寄存器存储空间和通用数据存储器的起始地址之间, 有一些未定义的数据存储器, 被保留用来做未来的扩充, 若从这些地址读取数据将返回 00H 值 间接寻址寄存器 IAR, IAR0, IAR1 间接寻址的方法准许使用间接寻址指针做数据操作, 以取代定义实际存储器地址的直接存储器寻址方式 在间接寻址寄存器上的任何动作, 将对间接寻址指针 (MP) 所指定的存储器地址产生对应的读 / 写操作 对于 HT48R10A-1/ HT48C10-1 和 HT48R30A-1/HT48C30-1 系列, 提供一个间接寻址寄存器 (IAR) 和一个间接寻址指针 (MP) 而对于 HT48R50A-1/HT48C50-1 和 HT48R70A-1/ HT48C70-1 系列, 提供两个间接寻址寄存器 (IAR0 和 IAR1) 和两个间接寻址指针 (MP0 和 MP1) 要注意的是这些间接寻址寄存器并不是实际存在的, 直接读取 IAR 寄存器将返回 00H 的结果, 而直接写入此寄存器则不做任何操作 间接寻址指针 MP, MP0, MP1 对于 HT48R10A-1/HT48C10-1 和 HT48R30A-1/HT48C30-1 系列, 提供一个间接寻址指针, 即 MP 而对于 HT48R50A-1/HT48C50-1 和 HT48R70A-1/ HT48C70-1 系列, 提供两个间接寻址指针, 即 MP0 和 MP1 由于这些指针在数据存储器中能像普通的寄存器一般被写入和操作, 因此提供了一个寻址和数据追踪的有效方法 当对间接寻址寄存器进行任何操作时, 单片机指向的实际地址是由间接寻址指针所指定的地址 注意 : 对 HT48R10A-1/HT48C10-1 和 HT48R30A-1/HT48C30-1 而言, 间接寻址指针的第 7 位没有 作用 可是, 必须注意当间接寻址指针被读取时, 其值为 1 26

35 第一章硬件架构 以下的例子说明如何清除一个具有 4 个 RAM 地址的区块, 它们已事先被定义成地址 adres1 到 adres4 data.section data adres1 db? adres2 db? adres3 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 mp,a ; setup memory pointer with first RAM address loop: clr [00h] ; clear the data at address defined by mp inc mp sdz block jmp loop continue: ; increment memory pointer ; check if last memory location has been ; cleared 在上面的例子中有一点值得注意, 即并没有确定 RAM 地址 累加器 ACC 对任何单片机来说, 累加器是相当重要的且与 ALU 所完成的运算有密切关系, 所有 ALU 得到的运算结果都会暂时储存在 ACC 累加器里 若没有累加器, ALU 必须在每次进行如加法 减法和移位的运算时, 将结果写入到数据存储器, 这样会造成程序编写和时间的负担 另外数据传送也常常牵涉到累加器的临时储存功能, 例如在一使用者定义的寄存器和另一个寄存器之间传送数据时, 由于两寄存器之间不能直接传送数据, 因此必须通过累加器来传送数据 程序计数器低字节寄存器 PCL 为了提供额外的程序控制功能, 程序计数器较低字节设置在数据存储器的特殊功能区域内, 程序员可对此寄存器进行操作, 很容易的直接跳转到其它程序地址 直接给 PCL 寄存器赋值将导致程序直接跳转到程序存储器的某一地址, 然而由于寄存器只有 8 位的长度, 因此只允许在本页的程序存储器范围内进行跳转, 而当使用这种运算时, 要注意会插入一个空指令周期 27

36 I/O 型单片机使用手册 表格寄存器 TBLP, TBLH 这两个特殊功能寄存器对储存在程序存储器中的表格进行操作 TBLP 为表格指针, 指向表格的地址 它的值必须在任何表格读取指令执行前加以设定, 由于它的值可以被如 INC 或 DEC 的指令所改变, 这就提供了一种简单的方法对表格数据进行读取 表格读取数据指令执行之后, 表格数据高字节存储在 TBLH 中 其中要注意的是, 表格数据低字节会被传送到使用者指定地址 看门狗定时寄存器 WDTS 看门狗在单片机中的特性是提供一个自动复位的功能, 给予单片机一个保护工具去预防不正确的程序跳转 当看门狗定时器溢出时会产生复位 为了提供可变的看门狗定时器复位时间, 看门狗定时器的时钟源可被预分频, 分频值可由 WDTS 寄存器来设定 对 WDTS 寄存器赋值, 可以设定适当的预分频值的看门狗定时器时钟源 要注意的是, 在 WDTS 中只有较低的 3 位被使用来设定从 1 到 128 之间的分频比例,8 位中剩下的 5 位可以被程序设计者用来做其它用途 状态寄存器 STATUS 这 8 位寄存器 (0AH) 包含零标志位 (Z) 进位标志位(C) 辅助进位标志位(AC) 溢出标志位 (OV) 暂停标志位(PDF) 和看门狗溢出标志位 (TO) 它同时记录状态数据和控制运算顺序 除了 TO 和 PDF 标志位外, 状态寄存器中的位像其它大部份寄存器一样可以被改变, 但任何数据写入到状态寄存器将不会改变 TO 或 PDF 标志位 另外, 执行不同的指令后, 与状态寄存器有关的运算可能会得到不同的结果 TO 标志位只会受系统上电 看门狗溢出 或执行 CLR WDT 或 HALT 指令影响 PDF 标志位只会受执行 HALT 或 CLR WDT 指令或系统上电影响 Z OV AC 和 C 标志位通常反映最近运算的状态 当加法运算的结果产生进位, 或减法运算的结果没有产生借位时, 则 C 被置位, 否则 C 被清零, 同时 C 也会被带进位 / 借位的移位指令所影响 当低半字节加法运算的结果产生进位, 或高半字节减法运算的结果没有产生借位时,AC 被置位, 否则 AC 被清零 当算术或逻辑运算结果是零时,Z 被置位, 否则 Z 被清零 当运算结果高两位的进位状态异或结果为 1 时,OV 被置位, 否则 OV 被清零 28

37 第一章硬件架构 系统上电或执行 CLR WDT 指令会清零 PDF, 而执行 HALT 指令则会置位 PDF 系统上电或执行 CLR WDT 或 HALT 指令会清零 TO, 而当 WDT 溢出则会置位 TO 另外当进入一个中断程序或执行子程序调用时, 状态寄存器不会自动压入到堆栈保存 假如状态寄存器的内容是重要的且子程序可能改变状态寄存器的话, 则需谨慎的去做正确的储存 > % > 6 2,. 8 ) ) A C EI JA H ) H EJD A JE? C E? F A H = JE B = C I + = HHO. = C ) K N E E= HO + = HHO. = C A H. = C L A HB M. = C 5 O I JA = = C A A JB = C I 2 M A H@ M B = C 9 = J? C JE A K JB = C JE F A A HA = I 中断控制寄存器 INTC 8 位的 INTC 寄存器用来控制外部和内部中断的动作 通过使用标准的位操作指令来设定这寄存器的位的值, 外部中断和内部中断的使能和除能功能可分别被控制 寄存器中主中断位 (EMI) 控制所有中断的使能 / 除能, 用来设定所有中断使能位的开或关 当一个中断程序被响应时, 就会自动屏蔽其它中断,EMI 位将被清零, 而执行 RETI 指令则会置位 EMI 位 注意 : 若遇到在当前中断服务程序中要再响应其它的中断程序时, 可以在进入该中断服务程序后, 在程序中用手动的方式将 EMI 置为 1 定时 / 计数器寄存器单片机包含一个或二个 8 位或 16 位的定时 / 计数器, 这取决于您选择该系列中的哪款型号 对拥有一个 8 位定时器的单片机而言, 寄存器 TMR 是计数值存放的位置 对应的控制寄存器, 即 TMRC, 可对 TMR 寄存器进行一系列的设定 对拥有两个定时器的单片机而言, 分别是 TMR0 和 TMR1 及各自的控制寄存器 TMR0C 和 TMR1C 对于 16 位的定时器, 存储实际的计时数值需要两个字节, 分别为高字节与低字节 寄存器对应为 TMR0L/TMR0H 和 TMR1L/ TMR1H 定时器寄存器可以预先载入固定的数据, 以允许设定不同的时间中断 29

38 I/O 型单片机使用手册 输入 / 输出端口和控制寄存器在特殊功能寄存器中, 输入 / 输出寄存器和它们相对应的控制寄存器很重要 所有的输入 / 输出端口都有相对应的寄存器, 且被标示为 PA PB PC 等 如数据存储器结构图中所示, 这些输入 / 输出寄存器映射到数据存储器的特定地址, 用以传送端口上的输入 / 输出数据 每个输入 / 输出端口有一个相对应的控制寄存器, 分别为 PAC PBC 和 PCC 等, 也同样映射到数据存储器的特定地址 这些控制寄存器设定引脚的状态, 以决定哪些是输入口, 哪些是输出口 要设定一个引脚为输入, 控制寄存器对应的位必须设定成高, 若引脚设定为输出, 则控制寄存器对应的位必须设为低 程序初始化期间, 在从输入 / 输出端口中读取或写入数据之前, 必须先设定控制寄存器的位以确定引脚为输入或输出 使用 SET [m].i 和 CLR [m].i 指令可以直接设定这些寄存器的某一位 这种在程序中可以通过改变输入 / 输出端口控制寄存器中某一位而直接改变该端口输入 / 输出口状态的能力是此系列单片机非常有用的特性 输入 / 输出端口 盛群单片机的输入 / 输出端口控制具有很大的灵活性 这体现在每一个引脚在使用者的程序控制下可以被指定为输入或输出 所有引脚的上拉选项 以及指定引脚的唤醒选择, 这些特性也使得此类单片机在广泛应用上都能符合开发的要求 依据所选单片机及封装类别的不同, 该系列单片机提供从 21 到 56 个不等双向输入 / 输出口, 标示为 PA PB PC 等 这些输入 / 输出端口在数据存储器的对应指定地址如表所示 所有输入 / 输出口都可做为输入及输出之用 作为输入操作时, 输入 / 输出引脚是不锁存的, 也就是输入数据必须在指令 MOV A,[m] T2 上升沿准备好,m 表示端口地址 对于输出操作, 所有数据是锁存的, 而且持续到输出锁存被重写 上拉电阻很多产品应用在端口处于输入状态时需要外加一个上拉电阻来实现上拉的功能 为了免去这个外加的电阻, 当引脚规划为输入时, 可由内部连接到一上拉电阻 这些上拉电阻可通过掩膜选项来加以选择, 它用一个 PMOS 晶体管来实现 要注意的是一旦某一输入 / 输出端口选择了上拉电阻, 则这个输入 / 输出端口的所有引脚都将被连接到上拉电阻, 个别引脚是不能单独设置成带上拉电阻的 30

39 第一章硬件架构 PA 口的唤醒本系列的单片机都具有暂停功能, 使得单片机进入暂停模式以节省功耗, 此功能对于电池及低功率应用是很重要的 唤醒单片机有很多种方法, 其中之一就是使 PA 口其中的一个引脚从高电平转为低电平 当使用暂停指令 HALT 迫使单片机进入暂停状态以后, 单片机将保持闲置即低功率状态, 直到 PA 口上被选为唤醒输入的引脚电平发生下降沿跳变 这个功能特别适合于通过外部开关来唤醒的应用 值得注意的是 PA 口的每个引脚都可单独的选择具有唤醒的功能 输入 / 输出端口控制寄存器每一个输入 / 输出端口都拥有自己的控制寄存器 (PAC PBC PCC 等 ) 去控制输入 / 输出状态 利用此控制寄存器, 每一个 CMOS 输出或者斯密特触发器输入不管有没有上拉电阻设置, 均可利用软件控制方式加以动态的重新设置 所有输入 / 输出端口的引脚都各自对应于输入 / 输出端口控制寄存器的某一位 若输入 / 输出引脚要实现输入功能, 则对应的控制寄存器位必须设定为 1 这时程序指令可以直接读出输入引脚的逻辑状态 如果引脚的控制寄存器位被设定为 0, 则此引脚被设置为 CMOS 输出 当引脚被设置为输出状态, 程序指令读取的是输出端口寄存器的内容 请注意当输入 / 输出口被设置为输出状态时, 此时如果对输出口做读取的动作, 则会读取到内部数据寄存器中的锁存值, 而不是输出引脚实际的逻辑状态 引脚共用功能如果引脚能有超过一个以上的功能, 则单片机灵活程度将大大的提升 有限的引脚个数会严重地限制设计者, 但是引脚的多功能特性, 可以解决很多此类问题 多功能输入 / 输出引脚的功能选择, 有些是由掩膜选项设定, 另一些则是在应用程序控制时做设定 蜂鸣器蜂鸣器引脚 BZ 及 BZ 与输入 / 输出引脚 PB0 及 PB1 共用 假如定义为蜂鸣器引脚, 则需选择正确的硬件及软件选项 31

40 I/O 型单片机使用手册 外部中断输入外部中断引脚 INT 与输入 / 输出引脚 PC0 或 PG0 共用, 这取决于使用哪种型号 然而对于 HT48R70A-1/HT48C70-1 而言, 外部中断引脚是一个独立的引脚 要把这个共用引脚做为外部中断引脚, 而不是一般输入 / 输出引脚, 必须正确地设定中断控制寄存器 INTC 里的外部中断使能位 如果不需要外部中断输入, 除了 HT48R70A-1/HT48C70-1 外, 此引脚可当作一般的输入 / 输出引脚使用, 此时 INTC 寄存器中的外部中断使能位必须被关断 外部定时器时钟输入每一款芯片均包含一个或二个定时器, 这取决于芯片型号的选择 每个定时器都有一个外部输入引脚, 仅有一个定时器的单片机中此引脚称为 TMR, 而在拥有两个定时器的单片机中这些引脚称为 TMR0 和 TMR1 对所有仅有一个定时器的单片机来说, 外部输入引脚 TMR 与输入 / 输出引脚 PC0 或 PC1 共用 而对所有拥有两个定时器的单片机来说, 外部输入引脚 TMR0 和 TMR1 或分别与引脚 PC0 和 PC5 共用, 或独立存在不与其它引脚共用, 这取决于所选单片机的型号和封装 如果定时器输入引脚是共用引脚, 并且要把这个引脚做为定时器输入, 则必须正确地设置 TMRC 定时器寄存器的控制位 这些外部定时器引脚如果是共用引脚, 那么在不需要外部定时器输入引脚的场合, 也可以当作一般输入 / 输出引脚使用 对于此种应用,TMRC 寄存器中的定时器模式位必须选为定时器模式 ( 内部时钟源 ), 以避免输入 / 输出引脚与定时器操作的冲突 8,,, = J= * K I + JH * EJ, 3 2 K 0 EC D F JE 9 HEJA + JH 4 A C EI JA H + D EF 4 A I A J A + JH 4 A C EI JA H, = J= * EJ, 3 2 ) 2 ) % 9 HEJA, = J= 4 A C EI JA H A = J= 4 A C EI JA H 7 : 5? D EJJ6 HEC C A H1 F K J F JE 5 O I JA 9 = A K F 9 = A K F F JE PA 输入 / 输出端口 32

41 第一章硬件架构 8,,, = J= * K I + JH * EJ, 3 2 K 0 EC D F JE 9 HEJA + JH 4 A C EI JA H + D EF 4 A I A J A + JH 4 A C EI JA H, = J= * EJ, 3 2 * * 2 * * 9 HEJA, = J= 4 A C EI JA H 2 *, = J= * EJ * 2 * O * 2 * O : 7 : * F JE 4 A = J= 4 A C EI JA H PB0/PB1 输入 / 输出端口 8,,, = J= * K I + JH * EJ, 3 2 K 0 EC D F JE 9 HEJA + JH 4 A C EI JA H + D EF 4 A I A J A + JH 4 A C EI JA H 9 HEJA, = J= 4 A C EI JA H 4 A = J= 4 A C EI JA H / O # O ! 2 / O " 2 / O, = J= * EJ, : / # ! / / " 0 6 " & 4 ) 0 6 " & " & 4! ) 0 6 " & +! 0 6 " & 4 # ) 0 6 " & + # 0 6 " & 4! ) 0 6 " & +! 0 6 " & 4 # ) 0 6 " & + # 0 6 " & 4 ) 0 6 " & " & 4 # ) 0 6 " & + # 0 6 " & 4 ) 0 6 " & " & 4! ) 0 6 " & +! 0 6 " & 4 # ) 0 6 " & + # 0 6 " & 4! ) 0 6 " & +! 0 6 " & 4 # ) 0 6 " & + # 0 6 " & 4 ) 0 6 " & + PB2~PB7 PC PD PE PF 和 PG 输入 / 输出端口 33

42 I/O 型单片机使用手册 振荡器对于 HT48R10A-1/HT48C10-1, 振荡器引脚 OSC1 OSC2 与 PC3 PC4 共用, 而在 HT48R30A-1/HT48C30-1 以及 HT48R50A-1/HT48C50-1 中, 则是与 PG1 PG2 共用 对于 HT48R70A-1/HT48C70-1, 振荡器引脚是独立的 掩膜选项决定此引脚共用功能的选择, 如果选择输入 / 输出引脚功能, 则可选择上拉选项 编程注意事项在使用者的程序中, 最先要考虑的是端口的初始化 复位之后, 所有的输入 / 输出数据及端口控制寄存器都将被设为逻辑高 意思是说所有输入 / 输出引脚默认为输入状态, 而其电平则取决于其它相连接电路以及是否选择了上拉选项 假如 PAC PBC PCC 等端口控制寄存器接着被设定某些引脚为输出状态, 这些输出引脚会有初始高输出值, 除非数据寄存器口 PA PB PC 被预先设定 要选择哪些引脚是输入及哪些引脚是输出, 可通过设置正确的值到适当的端口控制寄存器, 或者使用指令 SET [m].i 及 CLR [m].i 来设定端口控制寄存器中个别的位 要注意的是当使用这些位控制指令时, 一个读 - 修改 - 写的操作将会发生 单片机必须先读入整个口上的数据, 修改个别位的值, 然后重新把这些数据写入到输出端口 5 O I JA +? 6 6 6! 6 " 6 6 6! 6 " 2 HJ, = J= 9 HEJA J F HJ 4 A BH F HJ PA 口有唤醒的额外功能, 当芯片在 HALT 状态时有很多方法去唤醒此单片机, 其中之一就是 PA 口任一个引脚电平由高到低的转换,PA 口的一个或多个引脚都可被设定有这项功能 34

43 第一章硬件架构 定时 / 计数器定时 / 计数器在任何单片机中都是一个很重要的部分, 提供程序设计者一种实 现和时间有关功能的方法 在 I/O 型单片机中, 通常包含一个或两个 8 或 16 位的向上计数器, 这取决于选用哪款单片机 每个定时 / 计数器有三种不同的工作模式, 可以被当作一个普通定时器 外部的事件计数器 或者脉冲宽度测量器使用 在 8 位定时器里 8 级预分频器 (Prescaler) 也加大了定时器的范围 有两个和定时 / 计数器相关的寄存器 其中, 一个寄存器是存储实际的计数值, 赋值给此寄存器可以设定初始值, 读取此寄存器可获得定时 / 计数器的内容 另一个寄存器是定时 / 计数器的控制寄存器, 此寄存器设置定时 / 计数器的选项, 控制定时 / 计数器的使用 定时 / 计数器的时钟源可来自内部时钟源或在外部定时器引脚, 下列附表列举了对应定时 / 计数器寄存器的名称 HT48R10A-1 HT48R30A-1 HT48R50A-1 HT48R70A-1 HT48C10-1 HT48C30-1 HT48C50-1 HT48C 位定时 / 计数器个数 定时 / 计数器寄存器名称 TMR TMR TMR0 - 定时 / 计数器控制寄存器 TMRC TMRC TMR0C - 16 位定时 / 计数器个数 定时 / 计数器寄存器名称 - - TMR1L/TMR1H 定时 / 计数器控制寄存器 - - TMR1C TMR0L/TMR0H TMR1L/TMR1H TMR0C TMR1C 定时 / 计数器在事件计数模式下使用外部时钟源, 而时钟源从外部计数器的引脚输入, 即 TMR TMR0 或 TMR1, 这取决于选用哪种型号的单片机 这些外部引脚可能与其它输入 / 输出引脚共用 每当外部定时 / 计数器输入引脚由高电平到低电平或者由低电平到高电平 ( 由 TE 位决定 ) 进行转换时, 将使得计数器值增加一 35

44 I/O 型单片机使用手册 配置定时 / 计数器输入时钟源内部定时 / 计数器的时钟源可以来自系统时钟或外部时钟源 当定时 / 计数器在定时器模式或者在脉冲宽度测量模式时, 使用系统时钟作为时钟源 对于 8 位定时 / 计数器而言, 内部定时器时钟来源也经过一个预分频器 (Prescaler), 预分频值由 PSC0 PSC1 及 PSC2 三位决定 定时 / 计数器在事件计数模式时使用外部时钟源, 而时钟源是由外部定时 / 计数器引脚 TMR TMR0 TMR1 来提供, 这取决于哪种型号的单片机及哪一个定时 / 计数器被使用 每当外部引脚由高电平到低电平或者由低电平到高电平 ( 由 TE 位决定 ) 进行转换时, 将使得计数器值增加一, = J= * K I F JE 2 HA 4 A C EI JA H 4 A B5 ; 5 B : 6 4 H6 4 E F K J # $ & I J= C A F HA I? = A H E A H - L A J+ K JA A + JH 6 6 E A H - L A J + K JA H & * EJ6 E A H - L A J+ K JA H L A HB M J 1 JA HHK F J * * 8 位定时 / 计数器结构, = J= * K I M * O JA * K BBA H 6 4 H6 4 E F K J B5 ; 5 " B F JE 7 : E A H - L A J+ K JA A + JH 6 $ * EJ 2 HA 4 A C EI JA H 0 EC D * O JA M * O JA $ * EJ6 E A H - L A J+ K JA H 4 A L A HB M J 1 JA HHK F J * * 16 位定时 / 计数器结构 36

45 第一章硬件架构 定时 / 计数寄存器 TMR, TMR0, TMR0L/TMR0H, TMR1L/TMR1H 定时 / 计数器寄存器是位于专用数据存储器内的特殊功能寄存器, 储存实际的定时器值 对 8 位定时 / 计数器来说, 这个寄存器是 HT48R10A-1/HT48C10-1 和 HT48R30A-1/HT48C30-1 中的 TMR 及 HT48R50A-1/HT48C50-1 中的 TMR0 对于 16 位定时 / 计数器, 需要用两个 8 位寄存器来储存 16 位定时 / 计数器的值, 这些成对的寄存器即为 TMR0L/TMR0H 或 TMR1L/ TMR1H 当用作内部定时器模式时收到一个内部计时脉冲时, 或用作外部计数模式时外部定时 / 计数器引脚发生电平转换时, 定时 / 计数寄存器的值将会加一 定时器从预置寄存器所载入的值开始向上计数, 直到 8 位定时 / 计数器计到 FFH, 或 16 位定时 / 计数器计到 FFFFH, 此时定时器发生溢出且会产生一个内部中断信号 定时器的值随后被预置寄存器的值重设, 定时 / 计数器继续计数 注意当预置寄存器被清为零, 就可以得到 8 位定时 / 计数器 FFH 或 16 位定时 / 计数器 FFFFH 的最大计算范围 此时要注意的是, 上电后预置寄存器中的数值处于未知状态 定时 / 计数器在 OFF 条件下, 如果把数据写入预置寄存器, 这数据将被立即写入实际的定时器 然而如果定时 / 计数器已经被打开且正在计数, 在这个周期内写入到预置寄存器的任何新数据将被保留在预置寄存器中, 等到下一个溢出发生时才会被写入实际的定时器 当定时 / 计数寄存器被读取时, 定时器计时时钟会停止以避免错误, 然而这可能造成某些时序的错误, 因此程序设计者必须考虑到这点 对于 16 位定时 / 计数器, 它有低字节与高字节两个定时 / 计数寄存器, 访问这些寄存器需要以指定方式进行 必须要注意的是当使用指令载入数据到低字节寄存器, 即 TMRL TMR0L 或 TMR1L 时, 数据只被载入到低字节缓冲器而不是直接送到低字节寄存器 当数据写入相应高字节寄存器, 即 TMRH TMR0H 或 TMR1H 时, 低字节缓冲器中的数据才真正被写入低字节寄存器 换句话说, 写入数据到高字节定时 / 计数寄存器时, 数据会被直接写入到高字节寄存器 同时在低字节缓冲器里的数据将被写入相应低字节寄存器 所以当载入数据到 16 位定时 / 计数寄存器时, 低字节数据应该先写入 另外要注意的是读取低字节寄存器的内容时, 必须先读取高字节寄存器的内容, 相应低字节寄存器中的内容就会载入低字节缓冲器中并被锁存 在此动作执行之后, 低字节寄存器中的内容可使用一般的方式读取 请注意, 读取定时 / 计数器低字节寄存器实际是读取先前锁存在低字节缓冲器中的内容, 而非定时 / 计数器低字节寄存器的实际内容 37

46 I/O 型单片机使用手册 定时 / 计数控制寄存器 TMRC,TMR0C,TMR1C 定时 / 计数器能工作在三种不同的模式, 至于选择工作在哪一种模式则是由各自的控制寄存器的内容决定 对于只有一个定时 / 计数器的单片机而言, 定时 / 计数控制寄存器即 TMRC, 而对于有两个定时 / 计数器的单片机而言, 定时 / 计数控制寄存器为 TMR0C 和 TMR1C 定时/ 计数器寄存器和定时 / 计数控制寄存器控制计时 / 事件计数器的全部操作 在定时器使用之前必须先正确地设定定时 / 计数控制寄存器, 以便保证定时器能正确操作, 而这个过程通常在程序初始化期间完成 > % > & > EJ6 E A H - L A J+ K JA H + JH 4 A C EI JA H 6 E A HF HA I? = A HH= JA I A A? J E A H4 = JA " & $! $ " & # $ - L A J+ K JA H=? JEL A C A I A A? J? K J B= E C C A? K J HEI E C C A 2 K I A 9 E@ JD A = I K HA A J=? JEL A C A I A A? J I J= HJ? K JE C HEI E C C A I J F B= E C C A I J= HJ? K JE C B= E C C A I J F HEI E C C A 6 E A H - L A J+ K JA H? K JE C A = > A A = > EI = > A JE F A A HA = I F A H= JE A I A A? J 6 A = L = E = > A A L A J? K JA A JE A A F K I A M E@ JD A = I K HA A A 38

47 第一章硬件架构 > % > $ > EJ6 E A H - L A J+ K JA H + JH 4 A C EI JA H JE F A A HA = I - L A J+ K JA H=? JEL A C A I A A? J? K J B= E C C A? K J HEI E C C A 2 K I A 9 E@ JD A = I K HA A J=? JEL A C A I A A? J I J= HJ? K JE C HEI E C C A I J F B= E C C A I J= HJ? K JE C B= E C C A I J F HEI E C C A 6 E A H - L A J+ K JA H? K JE C A = > A A = > EI = > A JE F A A HA = I F A H= JE A I A A? J 6 A = L = E = > A A L A J? K JA A JE A A F K I A M E@ JD A = I K HA A A 为了确定定时器工作在哪一种模式, 位 TM0 和 TM1 必须设定到要求的逻辑电平 定时器打开位 TON, 即定时 / 计数控制寄存器的第 4 位, 是定时器控制的开关, 设定逻辑高时定时器开始计数, 而清零时则定时器停止计数 对 8 位定时 / 计数器而言, 定时 / 计数控制寄存器的位 0~2 决定输入定时预分频器 (Prescaler) 中的分频比例 如果使用外部计时源, 预分频器 (Prescaler) 将不作用 如果定时器工作在事件计数或脉冲宽度测量模式,TE 的逻辑电平即 TMRC 寄存器的第 3 位将可用来选择上升或下降沿触发 定时器模式在这个模式, 定时 / 计数器可以用来测量固定时间间距, 当定时器发生溢出时, 就会提供一个内部中断信号 要工作在这个模式,TMRC 寄存器中位 TM1(bit7) 和 TM0(bit6) 必须分别设为 1 和 0 在这个模式, 内部时钟源被用来当定时器的计时源 对 8 位定时 / 计数器而言, 定时 / 计数器的输入计时频率是 f SYS 或 f RTC 除以定时器预分频器 (Prescaler) 的值, 预分频器的值是由 TMRC 寄存器的 PSC0 ~PSC2 位来决定 对 16 位定时 / 计数器而言, 定时 / 计数器的输入计时频率是 f SYS /4 或 f RTC,16 位的定时器没有预分频器 (Prescaler) 功能 定时器打开位 TON 必须被设为逻辑高才能让定时器开始工作 每次内部时钟由高到低的电平转换都会使定时器值增加一 ; 当定时器已满即溢出时, 会产生中断信号且定时器会重新载入已经载入到预置寄存器的值, 然后继续向上计数 定时器溢出是中断的一种, 也是唤醒暂停模式的一种方法 6 E A H+? H 2 HA I? = A H K JF K J 1? HA A J 6 E A H+ JH A H 6 E A H 6 E A H 6 E A H 6 E A H 定时器模式时序图 39

48 I/O 型单片机使用手册 事件计数模式在这个模式, 发生在外部引脚的外部逻辑事件改变的数目, 可以通过内部定时 / 计数器来记录 为使定时 / 计数器工作于事件计数模式,TMRC 寄存器中位 TM1 和 TM0 必须分别设为 0 和 1 定时器打开位 TON 必须设为逻辑高, 令定时器开始计数 当 TE 为逻辑低时, 每次外部定时 / 计数器引脚接收到由低到高电平的转换将使计数器加一 而当 TE 为逻辑高时, 每次外部定时 / 计数器引脚接收到由高到低电平的转换将使计数器加一 与另外两个模式一样, 当计数器计满时, 将会发生溢出且产生一个内部中断信号, 同时定时 / 计数器重新载入一个已经载入到预置寄存器的值 如果 TMR 输入与其它 I/O 共用引脚, 为确保事件计数模式正常工作, 除了 TM0 与 TM1 位需设定在事件计数模式, 还需通过输入 / 输出端口控制寄存器将该 I/O 设定在输入模式 计数器溢出是中断的一种, 也是唤醒暂停模式的一种方法 - N JA H = - L A J 1? HA A J 6 E A H+ K JA H 6 E A H 事件计数模式时序图 6 E A H 6 E A H! 脉冲宽度测量模式在这个模式, 可以测量外部定时 / 计数器引脚的外部脉冲宽度 在脉冲宽度测量模式中, 定时 / 计数器时钟源由内部时钟提供, 而位 TM0 和 TM1 则必须都设为逻辑高 如果 TE 位是逻辑低, 当外部定时 / 计数器引脚接收到一个由高到低电平的转换时, 定时 / 计数器将开始计数直到外部定时 / 计数器引脚回到它原来的高电平, 此时 TON 位将自动清除为零且定时 / 计数器将停止计数 而如果 TE 位是逻辑高, 则当外部定时 / 计数器引脚接收到一个由低到高电平的转换时, 定时 / 计数器开始计数直到外部定时 / 计数器引脚回到原来的低电平 如上所述, TON 位将自动清除为零, 且定时 / 计数器停止计数 请注意, 在脉冲宽度测量模式中, TON 位将自动地清除为零且定时 / 计数器会停止计数, 而在其他两种模式下,TON 位要在程序控制下才会被清除为零 这时定时 / 计数器中的剩下的值被程序读取, 可以由此得知 PC1/TMR 引脚接收到的脉冲的长度 当 TON 位被清零时, 任何在外部定时 / 计数器引脚的进一步转换将被忽略, 而直到 TON 位再次被程序设定为逻辑高, 定时 / 计数器才又开始脉冲宽度测量 40

49 第一章硬件架构 利用这种方法可以轻松完成单一脉冲测量 要注意的是在这种模式下, 定时 / 计数器是通过外部定时 / 计数器引脚上的逻辑转换来控制, 而不是通过逻辑电平 与另外两个模式一样, 当定时 / 计数器已满, 将溢出且产生一个内部中断信号, 定时 / 计数器也将清零并载入预置寄存器的值 如果 TMR 输入与其他 I/O 共用引脚, 为确保脉冲宽度测量模式正常工作, 要注意两点 第一点是要将 TM0 与 TM1 位设定在脉冲宽度测量模式, 第二点是确定此引脚的输入 / 输出口控制寄存器对应位被设定为输入状态 这种定时器溢出是中断的一种, 也是唤醒暂停模式的一种方法 - N JA H = 6 E A H 2 E 1 F K J 6 M EJD 6-2 HA I? = A H K JF K J M EJD?? B5 ; 5 1? HA A J 6 E A H+ K JA H 6 E A H! " 2 HA I? = A H K JF K JEI I = F = JA L A HO B= E C C A B6 脉冲宽度测量模式时序图 可编程分频器 (PFD) 和蜂鸣器的应用与可编程分频器的作用相似, 单片机中蜂鸣器的功能在于能提供可变频率输出, 以适用于像压电蜂鸣器驱动 或其它需要精确频率输出的场合 BZ 和 BZ 是一对和输入 / 输出引脚 PB0 与 PB1 共用的蜂鸣器输出 可通过掩膜选项选择单一 BZ 输出或是 BZ 和 BZ 输出 如果不选择为蜂鸣器输出, 其功能即如正常的输入 / 输出引脚 要注意的是 BZ 引脚是 BZ 引脚的反向输出, 两者配合可以产生更强的输出功率驱动蜂鸣器等器件 蜂鸣器电路使用定时器溢出信号作为其时钟源 载入合适的值到定时器预分频器 (Prescaler), 可以产生需要的时钟源分频比例, 由此来控制输出的频率 系统时钟被预分频器 (Prescaler) 分频后的时钟源, 进入定时器计时, 定时器从预置寄存器的值开始往上计算, 直到计数值满并产生溢出信号, 并改变 BZ/ BZ 输出状态 定时器将自动地重新载入预置寄存器的值, 并继续往上计数 具体设置和运作细节可参考定时 / 计数器章节 若要蜂鸣器正确工作, 必须将 PB 口控制寄存器 PBC.0 与 PBC.1 设置为输出 若将它设置为输入, 则蜂鸣器输出将不会动作, 只能当作一般输入引脚 BZ 和 BZ 只有在对 PB.0 设为 1 才会有蜂鸣器输出 这个输出数据位被用来作为 BZ/ BZ 输出的开关控制 注意,PB0 为 0 的话,BZ/ BZ 输出都为低电平 注意,PB1 对 BZ/ BZ 输出控制不起作用 41

50 I/O 型单片机使用手册 6 E A H L A HB M * K A H+? 2 *, = J= * K JF K J= J2 * * K JF K J= J2 * 假如系统时钟使用晶体振荡器, 则使用这种频率产生的方法可以产生非常精确的频率值 预分频器 (Prescaler) 对 8 位定时 / 计数器而言,TMRC 的位 0~2 可以用来定义定时 / 计数器中内部时钟源的预先分频级数 定时 / 计数器溢出信号可用来驱动蜂鸣器或产生定时器的中断 输入 / 输出接口当运行在事件计数器或脉冲宽度测量模式时, 定时 / 计数器需要使用外部定时 / 计数器引脚以确保正确的动作 外部定时 / 计数器引脚是否和其它输入 / 输出引脚共用的, 取决于选用哪种型号的单片机 可以选择上拉电阻来连接定时器输入引脚 定时器也可设定驱动引脚共用的蜂鸣器 当通过掩膜选项选择蜂鸣器引脚时, 定时器可以根据定时 / 计数寄存器的内容, 以不同的频率来驱动蜂鸣器 编程注意事项当定时 / 计数器运行在定时器模式时, 定时器的时钟源是使用内部系统时钟或 RTC, 与单片机所有运算都能同步 在这个模式下, 当定时器寄存器溢出时, 单片机将产生一个内部中断信号, 使程序进入相应的内部中断向量 对于脉冲宽度测量模式, 计数器的时钟源也是使用内部系统时钟或 RTC, 但定时器只有在正确的逻辑条件出现在外部定时 / 计数器输入引脚时才执行动作 当这个外部事件没有和内部定时器时钟同步时, 只有当下一个定时器时钟到达时, 单片机才会看到这个外部事件, 因此在测量值上可能有小的差异, 需要程序设计者在程序应用时加以注意 同样的情况发生在定时器配置为外部事件计数模式时, 它的时钟来源是外部事件, 和内部系统时钟或者定时器时钟不同步 42

51 第一章硬件架构 中断 输入 / 输出系列单片机提供外部中断和内部定时 / 计数器中断两种功能 中断控制寄存器 (INTC;0BH) 包含了中断打开 / 关闭的中断控制位和中断请求标志位 一旦中断子程序被响应, 所有其它的中断将被屏蔽 ( 通过清零 EMI 位 ), 这个方式可以预防任何进一步的中断相互嵌套 其它的中断请求可能发生在这个期间, 但只有中断请求标志位会被记录 如果某个中断服务子程序正在执行, 此时有另一个中断要求响应,EMI 位和 INTC 相关的位可以被置位, 以允许此中断响应 如果堆栈已满, 即使此中断已经被允许, 中断请求也不会响应, 直到 SP 减少为止 如果要求立刻动作, 堆栈必须避免成为储满状态 > % > A C EI JA A L E? A I M EJD I E C A JE A H = I JA H1 JA HHK F JC > = A = > A C > = A = > A C > EI = > A - N JA H = E JA HHK F JA = > A 6 E A H - L A J+ K JA HE JA HHK F JA = > A A = > EI = > A JE F A A HA = I - N JA H = E JA HHK F JHA G K A I JB = C 6 E A H - L A J+ K JA HE JA HHK F JHA G K A I JB = C HA G K A I JEI I K HA G K A I J JEI I K JE F A A HA = I > % > A C EI JA A L E? A I M EJD JM JE A H I = I JA H1 JA HHK F JC > = A = > A C > = A = > A C > EI = > A - N JA H = E JA HHK F JI K H? A A = > A 6 E A H - L A J+ K JA H E JA HHK F JA = > A A = > EI = > A 6 E A H - L A J+ K JA H E JA HHK F JA = > A A = > EI = > A - N JA H = E JA HHK F JHA G K A I JB = C 6 E A H - L A J+ K JA H HA G K A I JB = C HA G K A I JEI I K HA G K A I J JEI I K 6 E A H - L A J+ K JA H HA G K A I JB = C HA G K A I JEI I K HA G K A I J JEI I K JE F A A HA = I 43

52 I/O 型单片机使用手册 单片机中所有中断都有唤醒暂停模式的能力 当一个中断被响应时, 首先将程序计数器的值压入堆栈, 并跳转到程序存储器中指定的子程序地址 要注意的是只有程序计数器的值会被压入堆栈, 假如寄存器或状态寄存器的内容被中断服务程序改变, 可能会破坏原先想要的控制顺序, 因此这内容应该预先加已储存 不同中断的允许位 请求标志 优先级如下图所示 ) K J = JE? = O + A = > O 15 4 = K = O 5 A J H+ A = > O 5 BJM = HA ) K J = JE? = O, EI = > > O = > A - = > = K = O - N JA H = 1 JA HHK F J 4 A G K A I J. = C HE HEJO 0 EC D 6 E A H - L A J+ K JA H 1 JA HHK F J4 A G K A I J. = C JA HHK F J 2 E C 6 E A H - L A J+ K JA H 1 JA HHK F J4 A G K A I J. = C M 注意 : 在图中,T0F 和 T1F 中断请求标志位与 ET0I 和 ET1I 中断允许位提供给 HT48R70A-1/ HT48C70-1 和 HT48R50A-1/HT48C50-1 使用, 因为它们拥有两个定时 / 计数器 HT48R10A-1/ HT48C10-1 和 HT48R30A-1/HT48C30-1 只有一个定时 / 计数器, 定时 / 计数器 0 代表唯一的定时 / 计数器 TMR, 拥有中断请求标志位 TF 和中断允许位 ETI 外部中断要使外部中断发生, 相应的外部中断允许标志位必须被置位, 也就是 INTC 寄存器的第 1 位, 即 EEI 外部中断是通过 INT 端口上由高到低的电平转换来触发, 之后相应中断请求标志位 (EIF;INTC 的第 4 位 ) 被置位 当中断允许, 堆栈没有满且外部中断产生时, 会调用地址 04H 的子程序, 中断请求标志位 EIF 将被清零, 且 EMI 位将被清零来屏蔽其它中断 定时 / 计数器中断当相关内部中断允许标志位被置位时, 定时 / 计数器内部中断会发生 仅拥有单个定时 / 计数器的单片机, 中断允许位是 INTC 寄存器的第 2 位即 ETI 对于有两个定时 / 计数器的单片机, 定时 / 计数器 0 中断允许位是 INTC 的第 2 位即 ET0I, 而定时 / 计数器 1 的中断允许位是 INTC 的的 3 位即 ET1I 当定时 / 计数器溢出, 会置位定时 / 计数器中断请求标志位, 定时 / 计数器中断发生 在只有一个定时 / 计数器的单片机中, 此位是 INTC 寄存器的第 5 位即 TF, 而在有两个定时 / 计数器的单片机中, 定时 / 计数器 0 中断请求标志位是 INTC 的第 5 位 44

53 第一章硬件架构 即 T0F, 而定时 / 计数器 1 中断请求标志位是 INTC 的第 6 位即 T1F 当主中断位被打开 堆栈未满且相关内部中断允许位打开, 定时 / 计数器溢出时会发生内部中断 对于只有一个定时 / 计数器的单片机将调用地址 08H 的子程序 对于有两个定时 / 计数器的单片机, 定时 / 计数器 0 中断将调用地址 08H 的子程序, 而定时 / 计数器 1 中断将调用地址 0CH 的子程序 内部中断发生时, 中断请求标志位 TF T0F 或 T1F 被清零, 且 EMI 位将被清零来屏蔽其它中断 中断优先权当中断是发生在两个连续的 T2 脉冲上升沿之间时, 如果相应的中断请求被允许, 中断将在后一个 T2 脉冲响应 下面的表格指出在同时提出请求的情况下所提供的优先权, 这个可以通过重新设定 EMI 位来加以屏蔽 中断源 优先权 中断向量 外部中断 1 04H 定时 / 计数器 0 中断 2 08H 定时 / 计数器 1 中断 3 0CH 注意 : 此表应用于 HT48R70A-1/HT48C70-1 和 HT48R50A-1/HT48C50-1, 它们拥有两个定时 / 计数器, 即为 TMR0 和 TMR1 而 HT48R10A-1/HT48C10-1 和 HT48R30A-1/HT48C30-1 只有一个定时 / 计数器, 定时 / 计数器 0 代表唯一的定时 / 计数器, 即 TMR 当外部和内部两个中断同时被允许, 且外部和内部中断同时发生的情况下, 外部中断将拥有优先权首先动作 使用 INTC 寄存器来做个别中断的屏蔽可以预防同时发生的情形 编程注意事项定时 / 计数器中断请求标志位 TF T0F 和 T1F 外部中断请求标志位 EIF 定时 / 计数器中断允许位 ETI ET0I 和 ET1I 外部中断允许位 EEI 和主中断允许位 EMI 构成一个位于数据存储器 0BH 的中断控制寄存器 INTC 当中断允许标志位被关闭时, 可以禁止中断响应动作 一旦中断请求标志位被设定, 它们被保留在 INTC 寄存器直到对应的中断服务子程序执行或被软件指令清除 在中断子程序中建议不要使用 调用子程序 指令 中断通常发生在不可预期的情况或需要立刻执行的某些应用 假如只剩下一层堆栈且没有控制好中断使能, 当 CALL 指令在中断子程序执行时, 将破坏原来的控制序列 45

54 I/O 型单片机使用手册 复位和初始化复位功能是任何单片机中基本的部分, 使得单片机可以设定一些与外部参数无关的先置条件 最重要的是单片机上电后, 经短暂延迟, 将处于预期的稳定状态并且准备执行第一条程序语句 上电复位之后, 在程序未开始执行前, 部分重要的内部寄存器将会被预先设定状态 程序计数器就是其中之一, 它会被清除为零, 使得单片机从最低的程序存储器地址开始执行程序 除了上电复位外, 即使单片机处于执行状态, 有些情况的发生也迫使单片机必须复位 例如, 当单片机上电执行程序后,RES 引脚被强制拉下至低电平 这个例子是正常操作复位, 单片机中只有一些寄存器受影响, 而大部份寄存器则是不受影响, 以便复位引脚回复至高电平后, 单片机仍可以正常工作 复位的另一种形式是看门狗定时器溢出复位单片机, 所有复位操作类型导致不同的寄存器条件被加以设定 另外一种复位以低电压即 LVR 的类型存在, 在电源供应电压低于某一临界值的情况下, 一种和 RES 引脚复位类似的完全复位将会被执行 复位 包括内部与外部事件触发复位, 单片机共有五种复位方式 : 上电复位这是最基本而不可避免的复位, 发生在单片机上电后 除了保证程序存储器会从起始地址开始执行, 上电复位也使得其它寄存器被设定在预设条件, 所有的输入 / 输出端口和输入 / 输出端口控制寄存器在上电复位时将保持逻辑高, 以确保所有引脚被设为输入状态 虽然单片机有一个内部 RC 复位功能, 由于接通电源不稳定, 还是推荐使用和 RES 引脚连接的外部 RC 电路,RC 电路所造成的时间延迟使得 RES 引脚在电源供应稳定前的一段延长周期内保持在低电平 在这段时间内, 单片机是不能正常工作的 在经过延迟时间 t RSTD, 而 RES 引脚达到一电压值后, 单片机才可恢复正常工作 下列图中 SST 是系统延时周期 (System Start-up Timer) 的缩写 8,, 4-5 ' 8,, J4 5 6, E A K J 1 JA H = 4 A I A J 电源打开复位时序图 46

55 第一章硬件架构 RES 引脚复位当单片机正常工作时, 而 RES 引脚通过外部硬件 ( 如外部开关 ) 被强迫拉至低电平时, 此种复位形式即会发生 这种复位模式和其它复位的例子一样, 程序计数器会被清除为零且程序从头开始执行 E A K J " 8,, ' 8,, J4 5 6, 1 JA H = 4 A I A J RES 引脚复位时序图 低电压复位 -LVR 单片机有低电压复位电路的目的是为了监看单片机的电源供应电压 例如更换电池的情况下, 单片机电源供应的电压可能会落在 0.9V~V LVR 的范围内, 则 LVR 将会自动地从内部复位单片机 有效的 LVR 信号, 即在 0.9V~V LVR 的低电压, 必须存在超过 1ms 如果低电压存在不超过 1ms, 则 LVR 将会忽略它且不会执行复位功能 E A K J 1 JA H = 4 A I A J J4 5 6, 低电压复位时序图 正常工作时看门狗溢出复位除了看门狗溢出标志位 TO 将被设为 1 之外, 正常工作时看门狗溢出复位和 RES 复位相同 9, 6 6 E A K J J4 5 6, E A K J 1 JA H = 4 A I A J 正常工作时看门狗溢出复位时序图 47

56 I/O 型单片机使用手册 暂停时看门狗溢出复位暂停时看门狗溢出复位有些不同于其它种类的复位, 除了程序计数器与堆栈指 针将被清除为 0 及 TO 标志位被设为 1 外, 绝大部份的条件保持不变 图中 t SST 的细节请参考 A.C 特性 9, 6 6 E A K J J E A K J 暂停时看门狗溢出复位时序图 不同的复位方法以不同的方式影响复位标志位 这些标志位即 PDF 和 TO, 被放在状态寄存器中, 由如暂停功能或看门狗计数器等几种控制器操作控制 复位标志位如下所示 : TO PDF 复位条件 0 0 上电时的 RES 复位 u u 一般运行时的 RES 复位或 LVR 低压复位 1 u 一般运行时的 WDT 溢出复位 1 1 HALT 暂停时的 WDT 溢出复位 u 表示不变化 在单片机复位之后, 各功能单元初始化的情形, 列于下表 项目程序计数器中断看门狗定时器定时 / 计数器预分频器输入 / 输出口堆栈指针 复位后情况清除为零所有中断被关闭 WDT 清零并重新计时所有定时 / 计数器停止定时 / 计数器之预分频器内容清零所有 I/O 设为输入模式堆栈指针指向堆栈顶端 不同的复位以不同的方式影响单片机中的内部寄存器 为保证复位发生后程序的正常执行, 在特定的复位发生后, 知道单片机内的条件是非常重要的 下表是描述每一个复位类型如何影响单片机的内部寄存器 48

57 第一章硬件架构 HT48R10A-1/HT48C10-1 寄存器 RES 复位 RES 或 LVR 复位 WDT 溢出复位 WDT 溢出复位 ( 上电时 ) ( 一般运行时 ) ( 一般运行时 ) (HALT 暂停时 ) MP xxx xxxx uuu uuuu uuu uuuu uuu uuuu ACC xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu PCL TBLP xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu TBLH xx xxxx uu uuuu uu uuuu uu uuuu STATUS 00 xxxx uu uuuu 1u uuuu 11 uuuu INTC uu uuu WDTS uuuu uuuu TMR xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu TMRC uu u uuuu PA uuuu uuuu PAC uuuu uuuu PB uuuu uuuu PBC uuuu uuuu PC u uuuu PCC u uuuu u 表示不变化 x 表示不确定 表示不存在 49

58 I/O 型单片机使用手册 HT48R30A-1/HT48C30-1 寄存器 RES 复位 RES 或 LVR 复位 WDT 溢出复位 WDT 溢出复位 ( 上电时 ) ( 一般运行时 ) ( 一般运行时 ) (HALT 暂停时 ) MP xxx xxxx uuu uuuu uuu uuuu uuu uuuu ACC xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu PCL TBLP xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu TBLH xx xxxx uu uuuu uu uuuu uu uuuu STATUS 00 xxxx uu uuuu 1u uuuu 11 uuuu INTC uu uuu WDTS uuuu uuuu TMR xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu TMRC uu u uuuu PA uuuu uuuu PAC uuuu uuuu PB uuuu uuuu PBC uuuu uuuu PC uu uuuu PCC uu uuuu PG uuu PGC uuu u 表示不变化 x 表示不确定 表示不存在 50

59 第一章硬件架构 HT48R50A-1/HT48C50-1 寄存器 RES 复位 RES 或 LVR 复位 WDT 溢出复位 WDT 溢出复位 ( 上电时 ) ( 一般运行时 ) ( 一般运行时 ) (HALT 暂停时 ) MP0 xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu MP1 xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu ACC xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu PCL TBLP xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu TBLH xxx xxxx uuu uuuu uuu uuuu uuu uuuu STATUS 00 xxxx uu uuuu 1u uuuu 11 uuuu INTC uuu uuu WDTS uuuu uuuu TMR0 xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu TMR0C uu u uuuu TMR1H xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu TMR1L xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu TMRC uu u u PA uuuu uuuu PAC uuuu uuuu PB uuuu uuuu PBC uuuu uuuu PC uuuu uuuu PCC uuuu uuuu PD uuuu uuuu PDC uuuu uuuu PG uuu PGC uuu u 表示不变化 x 表示不确定 表示不存在 51

60 I/O 型单片机使用手册 HT48R70A-1/HT48C70-1 寄存器 RES 复位 RES 或 LVR 复位 WDT 溢出复位 WDT 溢出复位 ( 上电时 ) ( 一般运行时 ) ( 一般运行时 ) (HALT 暂停时 ) MP0 xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu MP1 xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu ACC xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu PCL TBLP xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu TBLH xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu STATUS 00 xxxx uu uuuu 1u uuuu 11 uuuu INTC uuu uuu WDTS uuuu uuuu TMR0H xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu TMR0L xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu TMR0C uu u u TMR1H xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu TMR1L xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu TMR1C uu u u PA uuuu uuuu PAC uuuu uuuu PB uuuu uuuu PBC uuuu uuuu PC uuuu uuuu PCC uuuu uuuu PD uuuu uuuu PDC uuuu uuuu PE uuuu uuuu PEC uuuu uuuu PF uuuu uuuu PFC uuuu uuuu PG uuuu uuuu PGC uuuu uuuu u 表示不变化 x 表示不确定 表示不存在 52

61 第一章硬件架构 振荡器 多种振荡器选项可以让使用者根据他们不同的应用需求来做选择 有三种系统时钟可供选择, 看门狗定时器也有多种时钟源选择, 另外还有实时时钟 RTC 所有振荡器选项都是通过掩膜选项来加以选择 系统时钟配置有三种方法产生系统时钟 : 使用外部晶体 / 陶瓷振荡器 外部 RC 电路或是内部 RC 时钟源, 选择方法是通过掩膜选项来加以选择 系统晶体 / 陶瓷振荡器对于晶体振荡器的结构配置, 晶体只要简单的连接至 OSC1 和 OSC2, 就会产生所需的相移及反馈, 而不需其它外部器件 陶瓷共振器可以用来代替晶体, 但是要连接两个小电容在 OSC1 OSC2 和地之间 晶体 / 陶瓷振荡器 下表表示对应于不同的晶体 / 陶瓷振荡频率, 所需的 C1 C2 及 R1 的值 晶体或共振器 C1, C2 R1 4MHz 晶体 0pF 10kΩ 4MHz 共振器 (3 脚 ) 0pF 12kΩ 4MHz 共振器 (2 脚 ) 10pF 12kΩ 3.58MHz 晶体 0pF 10kΩ 3.58MHz 共振器 (2 脚 ) 25pF 10kΩ 2MHz 晶体与共振器 (2 脚 ) 25pF 10kΩ 1MHz 晶体 35pF 27kΩ 480kHz 共振器 300pF 9.1kΩ 455kHz 共振器 300pF 10kΩ 429kHz 共振器 300pF 10kΩ 53

62 I/O 型单片机使用手册 系统电阻电容振荡器使用外部 RC 电路作为系统振荡器, 需要在 OSC1 和 VDD 之间连接一个在 24kΩ 到 1MΩ 之间的电阻, 且要连接一个 470pF 的电容到地 产生的系统时钟将除以 4, 再提供给 OSC2 作输出以达到外部同步化的目的 虽然此振荡器配置成本较低, 但振荡频率会因 VDD 温度和芯片本身的制成而改变, 因此不适合用在计时严格或需要精确振荡器频率的场合 外部 RC 振荡器 R OSC 请参考附录章节典型 RC 振荡器 vs. 温度和 V DD 特性曲线图 8,, " % F. 5 + B5 ; 5 " 5 F A, H= E 5 + 电阻电容振荡器 内部系统电阻电容振荡器除了外部晶体 / 陶瓷振荡器或外部 RC 系统时钟配置外, 单片机还有内部 RC 系统时钟 这种振荡器整合在单片机内部, 不需要接外部器件 内部 RC 振荡器的频率可通过掩膜选项选择, 在 5V 时典型频率为 3.2MHz 1.6MHz 800kHz 或 400kHz, 频率 1.6MHz 800kHz 和 400kHz 是内部通过将 3.2MHz 的基本频率连续除频 2 产生而得到 请注意, 如果选择了内部系统时钟, 则除了 HT48R70A-1/HT48C70-1 系列以外,OSC1 和 OSC2 引脚可以当作一般输入 / 输出引脚使用 单片机的 OSC1 和 OSC2 引脚也可以连接一个 32768Hz 的晶体作为 RTC 振荡器使用, 如果 RTC 振荡器正被使用, 则系统时钟必须是内部 RC 振荡器 请注意内部系统 RC 振荡器的振荡频率会随着 VDD 温度和制成而变化 2 +! " JA H = 4 + I? E = J H 2 / / JA H = I? E = J H! % $ & 0 + HO I J= JA H = 4 + I? E = J H JA H = O I JA I? E = J H B H 0 6 " & 4 ) 0 6 " & + I? E = J H 2 E I 7 I = I 1 I 1 JA H = O I JA I? E = J H B H 0 6 " & 4! ) 0 6 " & +! 0 6 " & 4 # ) 0 6 " & + # I? E = J H 2 E I 7 I = I 1 I 1 JA H = O I JA I? E = J H 4 6 +! % $ & 0 + H O I J= + A? J I? E = J H 2 E I ) F F E? = > A J =, A L E? A I 54

63 第一章硬件架构 RTC 振荡器当单片机进入暂停模式即 HALT 状态下, 系统时钟被关闭以停止单片机的运作来节省电源 然而在许多单片机应用中, 即使是在 HALT 状态下, 也必须要维持内部定时 / 计数器的运作 在这种情况下, 必须提供一个独立于系统时钟的其它时钟 针对这项要求, 所有盛群 I/O 型单片机都加上了实时时钟即 RTC 的功能 此种时钟源拥有固定的频率 32768Hz, 且要求在 OSC1 和 OSC2 引脚上连接一个 32768Hz 的晶体振荡器 当使用 RTC 振荡器时, 内部 RC 振荡器必须当作系统时钟来使用 振荡器掩膜选项决定 RTC 是否被使用 如果选择了 RTC 振荡器掩膜选项, 则定时 / 计数器时钟来源的掩膜选项是内部 RC 系统时钟或是 RTC 作为它的时钟源 如果选择 RTC 作为定时 / 计数器的时钟源, 则既使单片机是工作在暂停即 HALT 模式之下, 定时 / 计数器依然有效工作, 当定时器溢出时, 还会发出正常的内部中断信号, 此信号使单片机从 HALT 状态下被唤醒, 并且继续正常工作直到下一个 HALT 指令被执行 看门狗定时振荡器 WDT 振荡器是一种完全独立在芯片上自由动作的振荡器, 它在 5V 条件下的周期时间典型值是 65µs 周期, 且不需外部的器件搭配 当单片机进入暂停模式时, 系统时钟将停止动作, 但 WDT 振荡器继续自由动作且保持看门狗有效 然而在某些应用中, 为了保持功率,WDT 振荡器可以通过掩膜选项来关闭 55

64 I/O 型单片机使用手册 暂停模式下的暂停和唤醒 暂停模式是通过 HALT 指令实现且造成如下结果 : 系统振荡器将被关闭 在 RAM 芯片和寄存器上的内容保持不变 假如 WDT 时钟源是来自 WDT 振荡器,WDT 和 WDT 预分频器 (Prescaler) 将被清零然后再重新计数 所有输入 / 输出端口状态保持不变 PDF 标志位被置位而 TO 标志位被清零系统可以通过外部复位 内部中断 PA 口上外部下降沿信号或 WDT 溢出来离开暂停模式 外部复位将初始化芯片, 而 WDT 溢出可以从暂停模式启动 WDT 溢出复位, 通过检查 TO 和 PDF 标志位, 可以判定复位来源 PDF 标志位可以通过系统上电或执行 CLR WDT 指令来清零, 而执行 HALT 指令则可置位 PDF 标志位 如果 WDT 溢出发生,TO 标志位将被置位, 同时造成一个只复位 PC 和 SP 的唤醒, 而其它的标志位则保持原来状态 PA 口唤醒和中断唤醒方法可以视为一般执行的延续 PA 口中的每个位可以通过掩膜选项独立选择唤醒功能 输入 / 输出口唤醒后, 程序将在下一条指令处继续执行 如果系统是通过中断唤醒, 则有两种可能, 假如相关的中断被禁止或中断允许但堆栈已满, 程序将在下一条指令处继续执行 ; 假如相关的中断允许且堆栈未满, 则正常的中断响应将会发生 假设在进入暂停模式之前中断请求标志位被设为 1, 相应中断的唤醒功能将无效 一旦唤醒事件发生, 回到正常运算将需要 1024 个系统时钟周期, 换句话说, 一个空周期将插在唤醒之后 如果在唤醒后是接着去响应中断, 则真实的中断子程序执行将延迟一个或数个周期, 如果唤醒后接着是去执行下一条指令, 则它将在若干个空周期结束后立刻执行 56

65 第一章硬件架构 看门狗定时器看门狗定时器的功能在防止如电的干扰等外部不可控制事件, 所造成的程序不正常动作或跳转到未知的地址 当 WDT 计数器溢出时, 它产生一个 芯片复位 的动作 WDT 时钟通过选择掩膜选项中两个时钟源之一提供 : 它本身内部的 WDT 振荡器或指令时钟 ( 系统时钟除以 4) 要注意的是假如 WDT 掩膜选项设为除能, 则任何相关指令将无效 内部 WDT 振荡器在 5V 电压下有接近 65µs 的周期 如果选择这种操作条件, 它首先通过 8 阶计数器除以 256 来产生一个 18ms 的周期, 要注意的是这个周期会因 VDD 温度和制成而变化 WDT 预分频器 (Prescaler) 可以用于产生更长的溢出周期 通过写入需要的值到 WDT 寄存器位 0 1 和 2, 即 WS0 WS1 和 WS2, 更长的溢出周期就能实现 如果 WS0 WS1 和 WS2 都等于 1, 分频比例为 1:128 且产生大约 2.1s 的最大溢出周期 WDT 中高半字节和第 3 位保留给使用者定义标志位, 可以用来指示一些特殊状况 > % > 9 5 9, A C EI JA H , 6 F HA I? = A HH= JA I A A? J JK I K I A H=?? A I I E> A 9, 6 4 = JA " & $! $ " & WDT 振荡器可以被关闭且 WDT 时钟可以由指令时钟 ( 系统时钟除以 4) 所提供 假如指令时钟作为时钟源, 要注意到当系统进入到暂停模式时, 指令时钟会停止造成 WDT 将失去其保护作用, 在这种情况下系统只能通过外部逻辑重新打开, 当系统工作在干扰严重的环境时, 建议使用内部 WDT 振荡器或 32kHz RTC 振荡器 系统在正常运行状态下,WDT 溢出将导致 芯片复位, 并置位状态位 TO 然而假如系统在暂停模式,WDT 溢出复位发生, 它只影响程序计数器和 SP 有三种方法可以用来清零 WDT 的内容, 包括 WDT 预分频器 (Prescaler) 第一种是外部硬件复位 ( RES 引脚低电平 ), 第二种是通过软件指令, 而第三种是通过 HALT 指令 使用软件指令有两种方法去清除看门狗寄存器, 必须由掩膜选项选择 第一种选择是使用单一 CLR WDT 指令而第二种是使用 CLR WDT1 和 CLR WDT2 两条指令 对于第一种选择, 只要执行 CLR WDT 便清除 WDT 而第二种选择必须交替执行 CLR WDT1 和 CLR 57

66 I/O 型单片机使用手册 WDT2 两者才能成功的清除 WDT 关于第二种选择要注意到如果 CLR WDT1 正被使用来清除 WDT, 接着执行这条指令是无效的, 只有执行 CLR WDT2 指令才能清除 WDT 同样的 CLR WDT2 指令已经执行后, 只有接着执行 CLR WDT1 指令才可以清除看门狗定时器 + 4 9, 6. = C + 4 9, 6. = C + JH C E? H 1 I JHK? JE I B5 ; 5 "! , K JF K J + BEC F JE 5 A A? J + 4 & > EJ+ K JA H # $ + 4 % > EJ2 HA I? = A H 9, 6 5 K H? A 5 A A? J & J 7 : 看门狗定时器 9, 6 6 E A K J 掩膜选项 通过 HT-IDE 的软件介面, 使用者可以选择掩膜选项, 并储存在选项存储器 所有的位必须按照正确的系统功能去设定, 具体内容可由下表得到 要注意的是, 当使用者把掩膜选项烧录进单片机后, 就无法再在之后的应用程序中修改 对于 Mask 版单片机, 单片机掩膜选项一经定义则会在厂生产时制作完成, 使用者不能再重新配置 No. 选项 1 看门狗定时器时钟源 : 看门狗振荡器 f SYS/4 RTC 振荡器或者关闭看门狗定时器 2 清除看门狗计数指令 :1 条或者 2 条指令 3 定时 / 计数器 TMR 或者 TMR0 时钟源 :f SYS 或者 RTC 振荡器定时 / 计数器 TMR1 时钟源 :f 4 SYS/4 或者 RTC 振荡器 ( 仅对 HT48R50A-1/HT48C50-1 和 HT48R70A-1/HT48C70-1 ) 5 PA0~PA7 唤醒 : 打开 / 关闭 6 PA 斯密特输入 : 有 / 无 7 PA, PB, PC, PD, PE, PF 和 PG 上拉电阻 : 有 / 无 ( 不同型号芯片, 具有端口不同 ) 8 蜂鸣器功能 : 打开单个 BZ 口 打开 BZ 和 BZ 口 全部关闭蜂鸣器时钟源 : 定时 / 计数器 0 或定时 / 计数器 1 ( 对于 HT48R50A-1/HT48C50-1,HT48R70A-1/HT48C70-1) 9 LVR 功能 : 打开 / 关闭 10 系统时钟 : 外部 RC 外部晶振 内部 RC+RTC 内部 RC+I/O ( 最后一项对 HT48R70A-1/HT48c70-1 无效 ) 11 内部 RC 频率选择 :3.2MHz 1.6MHz 800kHz 或者 400kHz 58

67 第一章硬件架构 应用电路 接下来的应用电路虽然是以 HT48R50A-1 单片机为例, 但同时也可应用在所有 I/O 型单片机上. 9 8,, EH? K EJ 5 A A * A M. 9. 8,, ) 2 ) % 2 * 2 * % % 2, 2, % 2 * * 2 * * / " & 4 # ) 0 6 " & + # 8,, " % F F H= E O I JA I? E = J H " H O I J= 5 O I JA I? E = J H. H? F A JL = K A I? I K J I? E = J HI A? JE JA H = 4 + I? E = J H A BJ K? A? F. 5 +! % $ & JA H = 4 + I? E = J H M EJD EH? K EJ 59

68 60 I/O 型单片机使用手册

69 第二部份程序语言 第二部份 程序语言 61

70 62 I/O 型单片机使用手册

71 第二章指令集介绍 第二章 指令集介绍 2 指令集 任何单片机成功运作的核心在于它的指令集, 此指令集为一组程序指令码, 用来指导单片机如何去执行指定的工作 在盛群单片机中, 提供了丰富且易变通的指令, 共超过六十条, 程序设计师可以事半功倍地实现他们的应用 为了更加容易了解各式各样的指令码, 接下来按功能分组介绍它们 指令周期大部分的操作均只需要一个指令周期来执行 分支 调用或查表则需要两个指令周期 一个指令周期相当于四个系统时钟周期, 因此如果在 8MHz 的系统时钟振荡器下, 大部分的操作将在 0.5µs 中执行完成, 而分支或调用操作则将在 1µs 中执行完成 虽然需要两个指令周期的指令通常指的是 JMP CALL RET RETI 和查表指令, 但如果牵涉到程序计数器低字节寄存器 PCL 也将多花费一个周期去加以执行 即指令改变 PCL 的内容进而导致直接跳转至新地址时, 需要多一个周期去执行 例如 CLR PCL 或 MOV PCL, A 对于跳转命令必须注意的是, 如果比较的结果牵涉到跳转动作将多花费一个周期, 如果没有则需一个周期即可 数据的传送单片机程序的数据传送是使用最为频繁的操作之一 使用三种 MOV 的指令, 数据不但可以从寄存器转移至累加器 ( 反之亦然 ), 而且能够直接移动立即数到累加器 数据传送最重要的应用之一是从接收端口接收数据或者传送数据到输出端口 63

72 I/O 型单片机使用手册 算术运算算术运算和数据处理是大部分单片机应用所需具备的能力, 在盛群单片机内部的指令集中, 可直接实现加与减的运算 当加法的结果超出 255 或减法的结果少于 0 时, 要注意正确的处理进位和借位的问题 INC INCA DEC 和 DECA 指令提供了对一个指定地址的值加一或减一的功能 逻辑和移位运算标准逻辑运算例如 AND OR XOR 和 CPL 全都包含在盛群单片机内部的指令集中, 如同大多数牵涉到数据运算的指令, 数据的传送必须通过累加器 在所有逻辑数据运算中, 如果运算结果为零, 则零标志位将被置位 另外逻辑数据运用形式还有移位指令, 例如 RR RL RRC 和 RLC 提供了向左或向右移动一位的方法 移位指令常用于串行端口的程序应用, 数据可从内部寄存器转移至进位标志位, 而此位则可被检验 移位运算还可应用在乘法与除法的运算组成中 分支和控制的转换程序分支是采取使用 JMP 指令跳转到指定地址或使用 CALL 指令调用子程序的形式 两者之不同在于当子程序被执行完毕后, 程序必须马上返回原来的地址 这个动作是由放置在子程序里的返回指令 RET 来实现, 它可使程序跳回 CALL 指令之后的地址 在 JMP 指令中, 程序则只是跳到一个指定的地址而已, 并不需如 CALL 指令般跳回 一个非常有用的分支指令是条件跳转, 条件是由数据存储器或指定位来加以决定 遵循跳转条件, 程序将继续执行下一条指令或略过且跳转至接下来的指令 因此这些分支指令可在进行决策时加以使用 位运算提供数据存储器单一位的运算指令是盛群单片机的特性之一, 这特性对于输出端口位的规划尤其有用, 其中个别的位或端口的引脚可以使用 SET [m].i 或 CLR [m].i 指令来设定其为高位或低位 如果没有这特性, 程序设计师必须先读入输出口的 8 位数据, 处理这些数据, 然后再输出正确的新数据 这种读入 - 修改 - 写出的程序现在则由位指令所取代 64

73 第二章指令集介绍 查表运算数据的储存通常由寄存器完成, 然而当处理大量的数据时, 其庞大与复杂的内容常造成对指定存储器储存上的不便, 为了改善此问题, 盛群单片机允许在程序存储器中设定一块数据可直接存取的区域, 只需要一组简易的指令即可对数据进行查表 其它运算除了上述功能指令外, 其它指令还包括用于省电的 HALT 指令和使程序在极端电压或电磁环境下仍能正常工作的看门狗定时器控制指令 这些指令的使用则请查阅相关的章节 65

74 I/O 型单片机使用手册 指令设定一览表 惯例 x: 立即数 m: 数据存储器地址 A: 累加器 i:0~7 号位 addr: 程序存储器地址 助记符 指令简易描述 周期 影响标志位 算术运算 ADD A, [m] ACC 与数据存储器相加, 结果放入 ACC 1 Z,C,AC,OV ADDM A, [m] ACC 与数据存储器相加, 结果放入数据存储器 1 Note Z,C,AC,OV ADD A, x ACC 与立即数相加, 结果放入 ACC 1 Z,C,AC,OV ADC A, [m] ACC 与数据存储器 进位标志相加, 结果放入 ACC 1 Z,C,AC,OV ADCM A, [m] ACC 与数据存储器 进位标志相加, 结果放入数据存储器 1 Note Z,C,AC,OV SUB A, x ACC 与立即数相减, 结果放入 ACC 1 Z,C,AC,OV SUB A, [m] ACC 与数据存储器相减, 结果放入 ACC 1 Z,C,AC,OV SUBM A, [m] ACC 与数据存储器相减, 结果放入数据存储器 1 Note Z,C,AC,OV SBC A, [m] ACC 与数据存储器 进位标志相减, 结果放入 ACC 1 Z,C,AC,OV SBCM A, [m] ACC 与数据存储器 进位标志相减, 结果放入数据存储器 1 Note Z,C,AC,OV DAA [m] 将加法运算中放入 ACC 的值调整为十进制数, 并将结果放入数据存储器 1 Note C 66

75 第二章指令集介绍 助记符 指令简易描述 周期 影响标志位 逻辑运算 AND A, [m] ACC 与数据存储器做 与 运算, 结果放入 ACC 1 Z OR A, [m] ACC 与数据存储器做 或 运算, 结果放入 ACC 1 Z XOR A, [m] ACC 与数据存储器做 异或 运算, 结果放入 ACC 1 Z ANDM A, [m] ACC 与数据存储器做 与 运算, 结果放入数据存储器 1 Note Z ORM A, [m] ACC 与数据存储器做 或 运算, 结果放入数据存储器 1 Note Z XORM A, [m] ACC 与数据存储器做 异或 运算, 结果放入数据存储器 1 Note Z AND A, x ACC 与立即数做 与 运算, 结果放入 ACC 1 Z OR A, x ACC 与立即数做 或 运算, 结果放入 ACC 1 Z XOR A, x ACC 与立即数做 异或 运算, 结果放入 ACC 1 Z CPL [m] 对数据存储器取反, 结果放入数据存储器 1 Note Z CPLA [m] 对数据存储器取反, 结果放入 ACC 1 Z 递增和递减 INCA [m] 递增数据存储器, 结果放入 ACC 1 Z INC [m] 递增数据存储器, 结果放入数据存储器 1 Note Z DECA [m] 递减数据存储器, 结果放入 ACC 1 Z DEC [m] 递减数据存储器, 结果放入数据存储器 1 Note Z 移位 RRA [m] 数据存储器右移一位, 结果放入 ACC 1 无 RR [m] 数据存储器右移一位, 结果放入数据存储器 1 Note 无 RRCA [m] 带进位将数据存储器右移一位, 结果放入 ACC 1 C RRC [m] 带进位将数据存储器右移一位, 结果放入数据存储器 1 Note C RLA [m] 数据存储器左移一位, 结果放入 ACC 1 无 RL [m] 数据存储器左移一位, 结果放入数据存储器 1 Note 无 RLCA [m] 带进位将数据存储器左移一位, 结果放入 ACC 1 C RLC [m] 带进位将数据存储器左移一位, 结果放入数据存储器 1 Note C 数据传送 MOV A, [m] 将数据存储器送至 ACC 1 无 MOV [m], A 将 ACC 送至数据存储器 1 Note 无 MOV A, x 将立即数送至 ACC 1 无 位运算 CLR [m].i 清除数据存储器的位 1 Note 无 SET [m].i 设置数据存储器的位 1 Note 无 67

76 I/O 型单片机使用手册 助记符 指令简易描述 周期 影响标志位 转移 JMP addr 无条件跳转 2 无 SZ [m] 如果数据存储器为零, 则跳过下一条指令 1 Note 无 SZA [m] 数据存储器送至 ACC, 如果内容为零, 则跳过下一条指令 1 Note 无 SZ [m].i 如果数据存储器的第 i 位为零, 则跳过下一条指令 1 Note 无 SNZ [m].i 如果数据存储器的第 i 位不为零, 则跳过下一条指令 1 Note 无 SIZ [m] 递增数据存储器, 如果结果为零, 则跳过下一条指令 1 Note 无 SDZ [m] 递减数据存储器, 如果结果为零, 则跳过下一条指令 1 Note 无 SIZA [m] 递增数据存储器, 将结果放入 ACC, 如果结果为零, 则跳 1 Note 无 过下一条指令 SDZA [m] 递减数据存储器, 将结果放入 ACC, 如果结果为零, 则跳 1 Note 无 过下一条指令 CALL addr 子程序调用 2 无 RET 从子程序返回 2 无 RET A, x 从子程序返回, 并将立即数放入 ACC 2 无 RETI 从中断返回 2 无 查表 TABRDC [m] 读取当前页的 ROM 内容, 并送至数据存储器和 TBLH 1 Note 无 TABRDL [m] 读取最后页的 ROM 内容, 并送至数据存储器和 TBLH 1 Note 无 其它指令 NOP 空指令 1 无 CLR [m] 清除数据存储器 1 Note 无 SET [m] 设置数据存储器 1 Note 无 CLR WDT 清除看门狗定时器 1 TO,PDF CLR WDT1 预清除看门狗定时器 1 TO,PDF CLR WDT2 预清除看门狗定时器 1 TO,PDF SWAP [m] 交换数据存储器的高低字节, 结果放入数据存储器 1 Note 无 SWAPA [m] 交换数据存储器的高低字节, 结果放入 ACC 1 无 HALT 进入暂停模式 1 TO,PDF 注意 : 1. 对跳转指令而言, 如果比较的结果牵涉到跳转即需 2 个周期, 如果没有跳转发生, 则只需一个周期即可 2. 任何指令若要改变 PCL 的内容将需要 2 个周期来执行 3. 对于 CLR WDT1 和 CLR WDT2 指令而言,TO 和 PDF 标志位也许会受执行结果影响, CLR WDT1 和 CLR WDT2 被执行后,TO 和 PDF 标志位会被清零, 除此外 TO 和 PDF 标志位保持不变 68

77 第三章指令定义 第三章 指令定义 3 ADC A, [m] 指令说明功能表示影响标志位 Add Data Memory to ACC with Carry 将指定数据存储器 累加器和进位标志位的内容相加后, 把结果储存回累加器 ACC ACC + [m] + C OV, Z, AC, 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 将累加器和立即数的内容相加后, 把结果储存回累加器 ACC ACC + x OV, Z, AC, C 69

78 I/O 型单片机使用手册 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 data 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 获得下一个要执行的指令地址并压入堆栈, 接着载入指定地址并从新地址继续执行程序, 由于此指令需要额外的运算, 所以为一个 2 周期的指令 功能表示 Stack Program Counter + 1 Program Counter addr 影响标志位 None CLR [m] Clear Data Memory 指令说明 指定数据存储器中的每一位均清除为 0 功能表示 [m] 00H 影响标志位 None 70

79 第三章指令定义 CLR [m].i Clear bit of Data Memory 指令说明 指定数据存储器中的 i 位清除为 0 功能表示 [m].i 0 影响标志位 None CLR WDT 指令说明功能表示影响标志位 Clear Watchdog Timer 将 TO 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 全都清零, 请注意此指令要结合 CLR WDT1 一起动作且必须交替执行才有作用, 重复执行此项指令而没有与 CLR WDT1 交替执行将无任何作用 WDT cleared TO 0 PDF 0 TO, PDF CPL [m] Complement Data Memory 指令说明 将指定数据存储器中的每一位取逻辑反, 相当于从 1 变 0 或 0 变 1 功能表示 [m] [m] 影响标志位 Z 71

80 I/O 型单片机使用手册 CPLA [m] 指令说明功能表示影响标志位 Complement Data Memory with result in ACC 将指定数据存储器中的每一位取逻辑反, 相当于从 1 变 0 或 0 变 1, 而结果被储存回累加器且数据存储器中的内容不变 ACC [m] Z 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, 并可以进行双精度十进制数相加 功能表示 [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 72

81 第三章指令定义 HALT Enter power down mode 指令说明此指令停止程序的执行并且关闭系统时钟, 但数据存储器和寄存器的内容仍被保留,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 addr 指令说明功能表示影响标志位 Jump unconditionally 程序计数器的内容被指定地址所取代, 程序由新地址继续执行, 当新地址被加载入时, 必须插入一个空指令周期, 所以此指令为 2 个周期的指令 Program Counter addr None MOV A, [m] 指令说明功能表示影响标志位 Move Data Memory to ACC 将指定数据存储器的内容复制到累加器中 ACC [m] None MOV A, x 指令说明功能表示影响标志位 Move immediate data to ACC 将立即数载入至累加器中 ACC x None 73

82 I/O 型单片机使用手册 MOV [m], A 指令说明功能表示影响标志位 Move ACC to Data Memory 将累加器的内容复制到指定数据存储器 [m] ACC None NOP 指令说明功能表示影响标志位 OR A, [m] 指令说明功能表示影响标志位 No operation 空操作, 接下来顺序执行下一条指令 No operation None Logical OR Data Memory to ACC 将存在累加器和指定数据存储器中的数据作 OR 的运算, 然后把结果储存回累加器 ACC ACC OR [m] Z OR A, x 指令说明功能表示影响标志位 Logical 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 Counter Stack None 74

83 第三章指令定义 RET A, x 指令说明功能表示影响标志位 Return from subroutine and load immediate data to ACC 将堆栈区的数据取回至程序计数器且累加器载入立即数, 程序由取回的地址继续执行 Program Counter Stack ACC x None RETI 指令说明功能表示影响标志位 Return from interrupt 将堆栈区的数据取回至程序计数器且中断功能通过 EMI 位重新被使能,EMI 是控制中断使能的主中断位 ( 寄存器 INTC 的第 0 位 ), 如果在执行 RETI 指令之前还有中断未被响应, 则这个中断将在返回主程序之前被响应 Program Counter Stack EMI 1 None RL [m] Rotate Data Memory left 指令说明 将指定数据存储器的内容向左移 1 个位, 且第 7 位移回第 0 位 功能表示 [m].(i+1) [m].i ; (i = 0~6) [m].0 [m].7 影响标志位 None RLA [m] Rotate Data Memory left with result in ACC 指令说明 将指定数据存储器的内容向左移 1 个位, 且第 7 位移回第 0 位, 而移位的结果 储存回累加器且数据存储器中的内容不变 功能表示 ACC.(i+1) [m].i ; (i = 0~6) ACC.0 [m].7 影响标志位 None RLC [m] Rotate Data Memory Left through Carry 指令说明将指定数据存储器的内容连同进位标志位向左移 1 个位, 第 7 位取代进位位且原本的进位标志位移至第 0 位 功能表示 [m].(i+1) [m].i ; (i = 0~6) [m].0 C C [m].7 影响标志位 C 75

84 I/O 型单片机使用手册 RLCA [m] Rotate Data Memory left through Carry with result in ACC 指令说明将指定数据存储器的内容连同进位标志位向左移 1 个位, 第 7 位取代进位位且原本的进位标志位移至第 0 位, 而移位的结果储存回累加器且数据存储器中的内容不变 功能表示 ACC.(i+1) [m].i ; (i = 0~6) ACC.0 C C [m].7 影响标志位 C RR [m] Rotate Data Memory right 指令说明 将指定数据存储器的内容向右移 1 个位, 且第 0 位移回第 7 位 功能表示 [m].i [m].(i+1) ; (i = 0~6) [m].7 [m].0 影响标志位 None RRA [m] Rotate Data Memory right with result in ACC 指令说明 将指定数据存储器的内容向右移 1 个位, 且第 0 位移回第 7 位, 而移位的结果 储存回累加器且数据存储器中的内容不变 功能表示 ACC.i [m].(i+1) ; (i = 0~6) ACC.7 [m].0 影响标志位 None RRC [m] Rotate Data Memory right through Carry 指令说明将指定数据存储器的内容连同进位标志位向右移 1 个位, 第 0 位取代进位位且原本的进位标志位移至第 7 位 功能表示 [m].i [m].(i+1) ; (i = 0~6) [m].7 C C [m].0 影响标志位 C 76

85 第三章指令定义 RRCA [m] Rotate Data Memory right through Carry with result in ACC 指令说明将指定数据存储器的内容连同进位标志位向右移 1 个位, 第 0 位取代进位位且原本的进位标志位移至第 7 位, 而移位的结果储存回累加器且数据存储器中的内容不变 功能表示 ACC.i [m].(i+1) ; (i = 0~6) 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, 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 跳过下一条指令, 由于取得下一指令时会要求插入一个空指令周期, 所以此指令为 2 个周期的指令 如果结果不为 0, 则程序继续执行下面的指令 功能表示 [m] [m] 1 Skip if [m] = 0 影响标志位 None 77

86 I/O 型单片机使用手册 SDZA [m] Skip if decrement Data Memory is zero with result in ACC 指令说明将指定数据存储器的内容先减去 1 后, 如果结果为 0, 则程序计数器再加 1 跳过下一条指令, 此结果会被储存回累加器且指定数据存储器中的内容不变, 由于取得下一指令时会要求插入一个空指令周期, 所以此指令为 2 个周期的指令 如果结果不为 0, 则程序继续执行下面的指令 功能表示 ACC [m] 1 Skip if ACC = 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 SIZ [m] Skip if increment Data Memory is 0 指令说明将指定数据存储器的内容先加上 1 后, 如果结果为 0, 则程序计数器再加 1 跳过下一条指令, 由于取得下一指令时会要求插入一个空指令周期, 所以此指令为 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 if ACC = 0 影响标志位 None 78

87 第三章指令定义 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 标志位设置为 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 标志位清除为 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 79

88 I/O 型单片机使用手册 SWAPA [m] 指令说明功能表示影响标志位 Swap nibbles of Data Memory with result in ACC 将指定数据存储器的低 4 位与高 4 位互相交换, 然后把结果储存回累加器且数据存储器的内容不变 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, 则程序计数器再加 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 80

89 第三章指令定义 TABRDC [m] Read table (current 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 XOR Data Memory to ACC 将存在累加器和指定数据存储器中的数据作 XOR 的运算, 然后把结果储存回累加器 ACC ACC XOR [m] Z XORM A, [m] Logical XOR ACC to Data Memory 指令说明将存在指定数据存储器和累加器中的数据作 XOR 的运算, 然后把结果储存回数据存储器 功能表示 [m] ACC XOR [m] 影响标志位 Z XOR A, x 指令说明功能表示影响标志位 Logical XOR immediate data to ACC 将存在累加器中的数据和立即数作 XOR 的运算, 然后把结果储存回累加器 ACC ACC XOR x Z 81

90 82 I/O 型单片机使用手册

91 第四章汇编语言和编译器 第四章 汇编语言和编译器 4 源程序由汇编语言程序构成, 由盛群编译器 (Holtek Assembler) 编译成目标文件 (Object File), 再由连接器 (Linker) 连接并产生任务文件 (Task File) 源程序 (source program) 由语句 (statement) 和表格 (look up table) 组成, 在编译器进行编译或程序执行时会给予指示, 而语句是由助记符 (mnemonic) 操作数 (operand) 和注解 (comment) 组成 常用符号 下表描述了文章中所用到的常用符号 范例 [optional items] {choice1 choice2} Repeating elements 描述 中括号内的项目是可选择的, 下列的命令行语法中 : HASM [options] filename [;] options 和分号都是可选的, 而 filename 则必须设定 但是在指令操作数中的中括号则是指定存储器地址之用, 必须要有 大括号和垂直线代表两个或更多的选项, 大括号圈出这些选项而垂直线则用来分隔选项, 只能有一个选项被选出 三个连续的点表示允许输入更多同样形式的数据, 例如以下的指令格式 : PUBLIC name1 [,name2 [, ]] name2 之后的三个连续点表示允许输入更多的名称, 只要每两个名称之间用逗号隔开即可 83

92 I/O 型单片机使用手册 语句语法语句的语法格式如下 : [ 名称 ] [ 操作项 ] [ 操作数项 ] [ ; 注解 ] 上述四个成员不一定都要指定 每两个成员之间 ( 除了注解 ) 最少要以一个空格或一个 tab 符号分隔开 成员的字型无大小写之分, 换言之, 编译器在编译之前会将小写字母改为大写字母 名称 语句前可有标号以便于其它语句使用, 如果名称当做标号使用, 则必须在名称后紧接一个冒号 (:) 名称由下列字符组成: A~Z a~z 0~9? 在使用上有以下的限制 : 不可使用数字 0~9 作为名称的第一个字符? 不能单独作为名称 只有最前面的 31 个字符被认可 操作项 操作项定义两种形态的语句, 伪指令与指令 伪指令用来指导编译器如何在编译时产生目标码 指令则是引导单片机执行各种运算 两者都会在编译时产生目标码, 目标码会在执行时指导单片机的运作 操作数项 操作数项定义伪指令与指令所使用的数据, 由符号 常数 表达式和寄存器所组成 注解 注解是对程序代码的一种叙述与说明 编译器不会编译它 任何在分号之后的文字均被视为注解 84

93 第四章汇编语言和编译器 编译伪指令编译伪指令用来指导编译器如何在编译时产生目标码 编译伪指令可以依其行为细分如下 条件编译伪指令 条件区段的格式如下 : IF statements [ELSE statements] ENDIF 语法 IF expression IFE expression 说明伪指令 IF 和 IFE 对其后的 expression 进行检测 如果 expression 的数值为真, 换言之不为零, 则在 IF 与 ELSE 或 IF 与 ENDIF( 没有 ELSE) 之间所有的语句会被编译 如果 expression 的数值为假, 换言之为零, 则在 IFE 与 ELSE 或 IFE 与 ENDIF( 没有 ELSE) 之间所有的语句会被编译 范例 IF debugcase ACC1 equ 5 extern username: byte ENDIF 在此范例中, 如果符号 debugcase 的数值为真, 也就是不为零, 则变量 ACC1 的数值将被设定为 5 同时 username 被声明为外部变量 85

94 I/O 型单片机使用手册 语法 IFDEF name IFNDEF name 说明 IFDEF 和 IFNDEF 的差异在检测 name 是否被定义, 只要 name 已在前面定义为标号 变量或符号, 则在 IFDEF 与 ENDIF 之间的语句都会被编译, 相反的如果 name 还未被定义, 则在 IFNDEF 与 ENDIF 之间的语句会被编译, 条件编译伪指令提供最多 7 层的嵌套 范例 IFDEF buf_flag buffer DB 20 dup (?) ENDIF 在此范例中, 只要 buf_flag 被事先定义, 即配置存储器空间给 buffer 文件控制伪指令 语法 INCLUDE file-name 或 INCLUDE file-name 说明 此伪指令会在编译时, 把包含入文件 file-name 的内容, 嵌入至当前的源程序文件, 并被视为源程序 编译器可提供最多 7 层的嵌套 范例 INCLUDE macro.def 在此范例中, 编译器把包含入文件 macro.def 内的源程序, 嵌入至当前的源程序文件 语法 PAGE size 说明 此伪指令指定程序列表文件 (program listing file) 中每一页的行数, 其范围介于 10 行至 255 行之间, 编译器的默认值为 60 行 范例 PAGE 57 在此范例中, 程序列表文件的每一页最多为 57 行 86

95 第四章汇编语言和编译器 语法.LIST.NOLIST 说明 伪指令.LIST 和.NOLIST 用来决定是否要将源程序行存储到程序列表文件 (program listing file).nolist 会禁止将其后的源程序存写到程序列表文件, 而.LIST 则会将其后的源程序存写到程序列表文件 编译器的默认值为.LIST 范例.NOLIST mov a, 1 mov b1, a.list 上面的范例中, 被.NOLIST 和.LIST 所包围的两条指令将不会被存写到程序列表文件 语法.LISTMACRO.NOLISTMACRO 说明 伪指令.LISTMACRO 会引导编译器将宏指令中包括注解的所有语句都存写到程序列表文件 伪指令.NOLISTMACRO 则中止写入所有宏指令的语句 编译器的默认值为.NOLISTMACRO 语法.LISTINCLUDE.NOLISTINCLUDE 说明.LISTINCLUDE 会引导编译器将所有包含文件 (included files) 的内容写入程序列表文件中,.NOLISTINCLUDE 则会禁止编译器将其后的包含文件的内容写进程序列表文件, 编译器的默认值为.NOLISTINCLUDE 语法 MESSAGE text-string 说明 伪指令 MESSAGE 引导编译器将 text-string 显示于屏幕上, text-string 的字符必须使用一对单引号括起来 87

96 I/O 型单片机使用手册 语法 ERRMESSAGE error-string 说明伪指令 ERRMESSAGE 引导编译器显示错误信息, error-string 的字符必须使用一对单引号括起来 程序伪指令 语法 ( 注解 ) ; text 说明注解是以分号 (semicolon) 开始的字符所组成, 而由回车 / 换行符结束 语法 name.section [align] [combine] class 说明 伪指令.SECTION 标明程序段 (program section) 或数据段 (data section) 的起始地址 程序段是由指令和 / 或数据所组成, 这些指令与数据的地址是以该程序段的段名 name 为起始标准而定出的 程序段的段名 name 可以是唯一的或者是与程序中其它段的段名相同, 若两个程序段设定有完全相同的名称 (complete name), 则被视为是同一个程序段 选项 align 定义程序段起始地址的形态, 可以用下列中的一种 : BYTE 以任意字节地址 (byte) 当做起始地址 ( 编译器的默认形式 ) WORD 以字地址 (word, 两个字节, 即偶数地址 ) 当做起始地址 PARA 以节段地址 (paragraph,16 的倍数 ) 当做起始地址 PAGE 以分页地址 (page,256 的倍数 ) 当做起始地址针对 CODE 类别 (class) 的程序段, 是以一条指令当做一个字节地址 BYTE 会将程序段的起始地址安排在任何指令的地址,WORD 则将程序段的起始地址安排在偶数的指令地址,PARA 将程序段的起始地址安排在 16 倍数的指令地址, 而 PAGE 则将程序段的起始地址安排在 256 倍数的指令地址 对于 DATA 类别的数据段而言, 是以一个字节 (8 位 / 字节 ) 当做地址的计算单位 BYTE 会将数据段的起始地址安排在任何字节地址,WORD 则将数据段的起始地址安排在偶数地址,PARA 将数据段的起始地址安排在 16 倍数的地址, 而 PAGE 会将数据段的起始地址安排在 256 倍数的地址 88

97 第四章汇编语言和编译器 选项 combine 定义如何结合有完全相同名称的程序段的方法, 可以选用下列中的一种 : COMMON 将具有完全相同名称的所有程序段的起始地址安排在同一个地址, 所使用的存储器长度则是以最长的程序段的长度为准 AT address 此选项是指定程序段的起始地址为 address, 一个固定地址 编译器及连接器不能把它安排到其它的地址, 而其内的标号 (label) 和变量 (variable) 的地址可以直接从 address 计算出 除了不可有前置引用 (forward reference) 的变量或符号外, 可以使用任何合乎规定的表达式来表示 address, 而运算结果的数值必须是合法的 ROM/RAM 存储器地址, 且不能超出 ROM/RAM 的大小范围 如果没有设定 combine 的形式, 则该程序段是可结合的, 换句话说, 此程序段和其它具有完全相同名称的程序段可以连接成一个单一的程序段 Class 是定义段存放的存储器类别 相同类别的段被安排在存储器中的连续区域 以其输入的先后顺序一个个紧接地安排在存储器中 类别名称为 CODE 的程序段将会放置在程序存储器 (program memory - ROM), 而类别名称为 DATA 的数据段则是存储在数据存储器 (data memory - RAM) 完整的段伪指令包括一个 section 名称和一个 class 名称 在此伪指令之后, 直到下一段伪指令之前的所有指令及数据, 都属于此段 语法 ROMBANK banknum section-name [,section-name,...] 说明 此伪指令是用来声明程序存储器 (program memory) 的某一区块 (bank) 所包含的程序段 banknum 指定程序存储器的区块编号, 范围从 0 到单片机的最大程序存储器区块数 section-name 则是先前已定义的程序段的名称 可以在同一个存储器区块内声明多个程序段, 只要这些被声明的程序段的总和不超过 8K 字 如果程序中没有声明此伪指令, 则所有类别为 CODE 的程序段都被视为属于区块 0 (bank 0) 如果某个类别为 CODE 的程序段没有被声明为属于任何程序存储器的区块内, 此程序段将被视为属于区块 0 89

98 I/O 型单片机使用手册 语法 RAMBANK banknum section-name [,section-name,...] 说明 此伪指令与 ROMBANK 相似, 不同的地方是声明数据存储器 (data memory) 的区块所包含的数据段 (data section) 数据存储器区块的大小则为 256 字节 语法 END 说明此伪指令声明程序的结束, 因此应该避免在任何包含文件 (included file) 中加入此伪指令 语法 ORG expression 说明此伪指令会将 expression 的计算数值设定给编译器的地址计数器 (location counter), 其后的程序代码和数据偏移地址将根据 expression 所计算的偏移量做相对的调整 程序代码和数据偏移量与伪指令 ORG 所在的程序段的起始地址有关, 程序段的属性会决定偏移量的实际值 ( 是绝对地址或相对地址 ) 范例 ORG 8 mov A, 1 在此范例中, 语句 mov A, 1 的地址是在程序段的第 8 个地址 90

99 第四章汇编语言和编译器 语法 PUBLIC name1 [,name2 [,...]] EXTERN name1:type [,name2:type [,...]] 说明伪指令 PUBLIC 用来声明可被其它程序文件中的程序模块所使用的变量或标号, 也就是公用变量或标号 另一方面, 伪指令 EXTERN 则用来声明程序将使用的外部变量 标号或符号的名称和类型 这里提到的类型可使用下列四种形式中的一种 :BYTE WORD BIT( 这三种形式适用于数据变量 ) 和 NEAR( 用于调用或跳转的标号形式 ) 范例 PUBLIC start, setflag EXTERN tmpbuf:byte CODE.SECTION CODE start: mov a, 55h call setflag... setflag proc mov tmpbuf, a ret setflag endp end 在此范例中, 标号 start 和程序 setflag 都被声明为公用变量, 而其它源程序文件中的程序可以使用这些变量 变量 tmpbuf 则被声明为外部变量 在其它的源程序文件中, 一定有一个名为 tmpbuf 的 byte 型变量定义, 而且被声明为公用变量 语法 name PROC name ENDP 说明伪指令 PROC 和 ENDP 用来定义一段可被其它程序调用或跳转到的程序代码 必须要指定一个名称 name 给 PROC 代表此程序 (procedure) 第一条指令的地址, 而编译器会将标号的值设定至地址计数器中 范例 toggle PROC mov tmpbuf, a mov a, 1 xorm a, flag mov a, tmpbuf ret toggle ENDP 91

100 I/O 型单片机使用手册 语法 [label:] DC expression1 [,expression2 [,...]] 说明 伪指令 DC 会将 expression1 及 expression2 等的值存储在存储器的连续地址里, 此伪指令只能使用于 CODE 类别的程序段之内, expression1 及 expression2 计算的数值将视单片机的程序存储器的宽度大小而定, 编译器会将任何多余的位清除掉,expression1 必须为数值或标号, 此伪指令通常被用在程序段之内建立表格以便查询 范例 table: DC 0128H, 025CH 在此范例中, 编译器会预留两个地址的 ROM 空间, 并将 0128H 和 025CH 储存至这两个地址中 数据定义伪指令 汇编程序由语句和注解组成 语句或注解则是由字符 数字和名称构成 汇编语言支持整数数字 整数可由二进制 八进制 十进制或十六进制加以表示 ( 配合字尾的基数 ), 如果未选基数, 则编译器会使用默认值 ( 十进制 ), 下表为可用的基数 基数 型态 数字 B 二进制 01 O 八进制 D 十进制 H 十六进制 ABCDEF 92

101 第四章汇编语言和编译器 语法 [name] DB value1 [,value2 [,...]] [name] DW value1 [,value2 [,...]] [name] DBIT [name] DB repeated-count DUP(?) [name] DW repeated-count DUP(?) 说明上述伪指令会引导编译器在数据存储器 (data memory) 内保留空间给变量 name( 如果有指定 name) 存储器保留的空间大小则由其后的个数及数据类型, 或由重复次数及数据类型来决定 由于单片机的数据存储器无法事先记录数据内容, 编译器不会对数据存储器做初始值的设定, 因此 value1 和 value2 必须为?, 表示只是保留存储器空间给程序执行时使用, 并没有设定其初始值 DBIT 只保留一个位, 编译器会将每 8 个 DBIT 整合在一起并且保留一字节给这 8 个 DBIT 变量 范例 DATA.SECTION DATA tbuf DB? chksum DW? flag1 DBIT sbuf DB? cflag DBIT 在此范例中, 编译器保留字节地址 0 给变量 tbuf 字节地址 1 和 2 给变量 chksum 字节地址 3 的第 0 位给变量 flag1 字节地址 4 给变量 sbuf 以及字节地址 3 的第 1 位给变量 cflag 语法 name LABEL {BIT BYTE WORD} 说明 此伪指令会将 name 的地址设定为与其后的变量相同的存储器地址 范例 lab1 LABEL WORD d1 DB? d2 DB? 在这个范例中,d1 是 lab1 的低字节, 而 d2 则是 lab1 的高字节 93

102 I/O 型单片机使用手册 语法 name EQU expression 说明 EQU 伪指令将 expression 传送给 name, 从而产生一个绝对符号 别名或文字符号 绝对符号是一个代表 16 位值的名称 ; 别名则替代另一个符号 ; 而文字符号则是代表一串字符组合的名称 name 必须是唯一的, 即先前未被定义过 expression 可以是一个整数 字符串常数 指令助记符 数字表达式或地址表达式 范例 accreg EQU 5 bmove EQU mov 在这个范例中, 变量 accreg 等于 5, 而 bmove 相当于指令 mov 宏指令宏指令定义一个名称来代表一段源程序语句, 而在源程序文件中可以重复用这个名称以取代这段语句 在编译时, 编译器会自动将每一个宏指令的名称用宏指令所定义的程序语句来取代 宏指令可以在源文件的任何地方被定义, 只要调用此宏指令是在宏指令定义之后即可 宏指令的定义中, 可以调用先前已经被定义的其它宏指令, 如此将形成一种嵌套的结构, 编译器提供最多 7 层的嵌套 语法 name MACRO [dummy-parameter [,...]] statements ENDM 在宏指令中, 可以使用伪指令 LOCAL 来定义只能在宏指令本体内使用的变量 94

103 第四章汇编语言和编译器 语法 name LOCAL dummy-name [,...] 说明 宏指令 LOCAL 用来定义只能在宏指令本体内使用的符号, 使用时必须定义在 MACRO 伪指令之后的第一行 dummy-name 是一个暂时使用的名称, 当宏指令被调用展开时, 它将被一个唯一的名称所取代 编译器会对 dummy-name 产生对应的实际名称 这个实际名称的格式为??digit, 其中 digit 数字为十六进制且范围由 0000 至 FFFF 当 MACRO/ENDM 的定义区段中使用到一些标号 (label) 时, 要将这些标号加入 LOCAL 伪指令中, 否则当 MACRO 被源文件多次引用时, 相同的标号名称会重复出现在程序中, 编译器会发布程序错误的信息 下面的范例中,tmp1 和 tmp2 都是形式参数, 当调用此宏指令时, 都会被实际参数所取代,label1 和 label2 都被声明为 LOCAL, 如果没有其它的 MACRO 被引用, 在第一次引用时将分别被??0000 和??0001 所取代, 如果没有声明 LOCAL,label1 和 label2 则会类似于源程序中的标号声明, 而在第二次调用此宏指令时, 就会出现重复定义的错误信息 Delay MACRO LOCAL mov mov label1: mov label2: clr clr sdz jmp sdz jmp ENDM tmp1, tmp2 label1, label2 a, 70h tmp1, a tmp2, a wdt1 wdt2 tmp2 label2 tmp1 label1 95

104 I/O 型单片机使用手册 下面的源程序将会调用名为 Delay 宏指令 ; T.ASM ; Sample program for MACRO..ListMacro Delay MACRO tmp1, tmp2 LOCAL label1, label2 mov a, 70h mov tmp1, a label1: mov tmp2, a label2: clr wdt1 clr wdt2 sdz tmp2 jmp label2 sdz tmp1 jmp label1 ENDM data.section data BCnt db? SCnt db? code.section at 0 code Delay BCnt, SCnt End 编译器会将宏指令 Delay 展开如下列的程序 请注意在宏指令本体内的第 4 行到第 17 行, 它们的偏移地址 (offset) 都是 0000, 也就是宏指令在定义时, 本体内的指令并不占用存储器空间 在程序第 24 行调用 Delay 宏指令时, 它就被展开成 11 行, 也就是展开为宏指令程序 形式参数 tmp1 和 tmp2 分别被实际参数 BCnt 和 SCnt 所取代 96

105 第四章汇编语言和编译器 File: T.asm Holtek Cross-Assembler Version 2.80 Page ; T.ASM ; Sample Program for MACRO ListMacro Delay MACRO tmp1, tmp LOCAL label1, label mov a, 70h mov tmp1, a label1: mov tmp2, a label2: clr wdt clr wdt sdz tmp jmp label sdz tmp jmp label ENDM data.section data BCnt db? SCnt db? code.section at 0 code Delay BCnt, SCnt F70 1 mov a, 70h R1 mov BCnt, a ??0000: R1 mov SCnt, a ??0001: clr wdt clr wdt R1 sdz SCnt jmp?? R1 sdz BCnt jmp?? end 0 Errors 97

106 I/O 型单片机使用手册 汇编语言指令指令的语法形式如下 : [name:] mnemonic [operand1 [,operand2] ] [; comment] 其中 name: 符号名称 mnemonic 指令名称 ( 关键字 ) operand1 operand2 名称 寄存器存储器地址 寄存器存储器地址立即数 名称由字母 数字或特殊字符所组成, 可以当标号 (label) 使用 当标号使用时, 必须在名称后面紧接一个冒号 (colon) 助记符 助记符是源程序中使用的指令名称, 它取决于源程序所使用的单片机型号 操作数 运算子和表达式 操作数 ( 源操作数或目的操作数 ) 定义被指令所使用的数值 它们可以是常数 变量 寄存器 表达式或关键字 当使用指令时, 必须谨慎选择正确的操作数, 即源操作数和目的操作数 符号 $ 是一个特殊的操作数, 它代表当前的地址 表达式是由操作数所组成, 在程序编译时用来计算出数值或存储器地址 表达式是常数 符号以及任何被算术运算子分隔的常数和符号组合 运算子定义表达式中各操作数之间的运算动作 编译器提供了许多运算子去处理操作数 有些运算子只处理常数, 有些则处理存储器数值, 也有两者兼具的 运算子在程序编译时就会直接计算出数值 以下是编译器所提供的运算子 98

107 第四章汇编语言和编译器 算术运算子 + * / %(MOD) SHL 和 SHR 运算子 语法 expression SHR count expression SHL count 这些位平移运算子的值全都为常数,expression 依照 count 所指定的数目向右移 (SHR) 或向左移 (SHL), 如果被平移的位超过有效位数时, 则对应的位会以 0 填满, 如 : mov A, b SHR 3 ; result ACC= b mov A, b SHL 4 ; result ACC= b 逻辑运算子 NOT AND OR XOR 语法 NOT expression expression1 AND expression2 expression1 OR expression2 expression1 XOR expression2 NOT 各位的 1 阶补码 AND OR XOR OFFSET 运算子 各位 AND 运算 各位 OR 运算 各位 XOR 运算 语法 OFFSET expression OFFSET 运算子返回 expression 的偏移地址 expression 可以是标号 变量或其它直接存储器的操作数 被 OFFSET 运算子所返回的数值必须是立即数 LOW MID 和 HIGH 运算子 语法 LOW expression MID expression HIGH expression 如果 expression 的结果为一个立即数的话, 则 LOW/MID/HIGH 运算子返回值就是 expression 的值, 而且是分别取此数值的低 / 中 / 高字节 但是如果 expression 是标号, 则 LOW/MID/HIGH 运算子将取得此标号所在的程序存储器地址的低 / 中 / 高字节的数值 99

108 I/O 型单片机使用手册 BANK 储存区块运算子 语法 BANK name BANK 运算子会返回程序段所在的存储器区块的编号, 此程序段的名称是 name 如果 name 是标号, 则返回 ROM 程序存储器区块 如果 name 是数据变量则返回 RAM 数据存储器区块 存储器区块的数值格式与寄存器 BP 的格式相同, 请参考各单片机的规格 ( 注意 : 不同的单片机可能有不同的 BP 格式 ) 范例 1: mov A, BANK start mov BP, A jmp start 范例 2: mov A, BANK var mov BP, A mov A, OFFSET var mov MP1, A mov A, R1 运算子的优先权 优先权 1(Highest) (Lowest) 运算子 ( ), [ ] +, (unary), LOW, MID, HIGH, OFFSET, BANK *, /, %, SHL, SHR +, (binary) > (greater than), >= (greater than or equal to), < (less than), <= (less than or equal to) = = (equal to),!= (not equal to)! (bitwise NOT) & (bitwise AND) (bitwise OR), ^ (bitwise XOR) 100

109 第四章汇编语言和编译器 其它 前置引用 当标号 变量名称和其它符号在源程序中被声明之前, 编译器允许它们被使用 ( 前置命名引用 ), 但是在伪指令 EQU 右边的符号是不允许前置引用的 局部标号 局部标号有固定的形式 $number 其中 number 可以为 0 至 29, 局部标号除了可以重复使用外, 其它功用与一般标号相同 局部标号必须使用在任意两个连续的标号之间而且同样的局部标号名称也可以用在其它的两个连续标号之间 在编译源程序文件之前, 编译器会将每一个局部标号转换成唯一的标号 任何两个连续标号之间, 最多可以定义 30 个局部标号 范例 Label1: ; label1 $1: ;; local label mov a, 1 jmp $3 $2: ;; local label mov a, 2 jmp $1 $3: ;; local label jmp $2 Label2: ; label Jmp $1 $0: ;; local label jmp Label1 $1: jmp $0 Label3: 101

110 I/O 型单片机使用手册 汇编语言保留字 下表是汇编语言上使用的保留字 保留字 ( 伪指令 运算子 ) $ DUP INCLUDE NOT * DW LABEL OFFSET + ELSE.LIST OR - END.LISTINCLUDE ORG. ENDIF.LISTMACRO PAGE / ENDM LOCAL PARA = ENDP LOW PROC? EQU MACRO PUBLIC [ ] ERRMESSAGE MESSAGE RAMBANK AND EXTERN MID ROMBANK BANK HIGH MOD.SECTION BYTE IF NEAR SHL DB IFDEF.NOLIST SHR DBIT IFE.NOLISTINCLUDE WORD DC IFNDEF.NOLISTMACRO XOR 保留字 ( 指令助记符 ) ADC HALT RLCA SUB ADCM INC RR SUBM ADD INCA RRA SWAP ADDM JMP RRC SWAPA AND MOV RRCA SZ ANDM NOP SBC SZA CALL OR SBCM TABRDC CLR ORM SDZ TABRDL CPL RET SDZA XOR CPLA RETI SET XORM DAA RL SIZ DEC RLA SIZA DECA RLC SNZ 保留字 ( 寄存器名称 ) A WDT WDT1 WDT2 102

111 第四章汇编语言和编译器 编译器选项编译器选项可以通过 HT-IDE3000 中的 Options 菜单的 Project 命令来设定, 编译器的选项位于 Project Option 对话框的中心部分 可在符号定义 (Define Symbol) 编辑框中定义符号 语法 symbol1 [=value1] [,symbol2 [=value2 ] [,...]] 范例 debugflag=1, newver=3 产生列表文件的检查框可用来指定是否要生成列表文件 (Listing file), 如果检查框被选中, 则要生成列表文件, 否则将不会产生列表文件 编译列表文件格式编译列表文件包含源程序的列表和概要信息, 每页的第一行是标题, 内容则包括公司名称 编译器版本 源文件名称 编译时的日期 时间以及页码 源程序列表 在源程序中的每行语句都以下列的格式输出到编译列表文件 : [line-number] offset [code] statement Line-number 是指语句在源程序文件的第几行, 从一个语句开始计算起 (4 位十进制数 ) offset- 是从语句所在的程序段开始到这个语句的存储器地址的偏移量 (4 位十六进制数 ) code- 只有会产生机器码 (machine code) 或数据的语句才会出现此项 ( 两个 4 位十六进制数 ) 如果数值在编译时已确定的话, 会用十六进制数字表示 code 的数值, 否则的话, 将使用适当的标志位表明应该使用何种方式去计算此数值 下列两个标志位可能会出现于 code 项之后 R 需要重新安置地址 ( 连接器解决此状况 ) E 需要参考外部符号 ( 连接器解决此状况 ) 下列标志位可能会出现于 code 项之前 = EQU 或等号 103

112 code 项中可能出现下列的符号或数字 ---- 代表程序段的起始地址 ( 连接器会解决此符号 ) nn[xx] DUP 符号 :nn DUP(?) 重复次数 I/O 型单片机使用手册 statement- 源文件对应的源程序语句或是宏指令所展开的语句, 在语句之前可能会出现下列的符号 n 宏指令展开时的嵌套层次 C 总结 此语句是从包含文件 (INCLUDE 文件 ) 引进的! " # $! " # $ % & '! " # $ % & '! " # $ % & '! " # $ % & '! " # $ % & '! " # $ % & ' D D D D D D D D - + I K H? A F H C H= I J = JA A J 4 IIII 行号 (4 位数, 向右靠齐 ) oooo 机器码的地址偏移量 (4 位数 ) hhhh 两个 4 位数的机器码 E 外部引用 C 从包含文件加入的语句 R 需要重新安置地址 n 宏指令展开后的嵌套层次编译总结在编译列表文件的结尾处会统计此次编译所发生的警告及错误的总数 其它在编译期间如果发生错误, 则错误信息和编号会直接出现在发生错误的语句下方 104

113 第四章汇编语言和编译器 编译列表文件的范例 File: SAMPLE.ASM Holtek Cross-Assembler Version 2.86 Page page message Sample Program listinclude listmacro #include sample.inc C pa equ [12h] C pac equ [13h] C pb equ [14h] C pbc equ [15h] C pc equ [16h] C pcc equ [17h] C extern extlab : near extern extb1 : byte clrpb macro clr pb endm clrpa macro mov a, 00h mov pa, a clrpb endm data.section data b1 db? b2 db? bit1 bit code.section code F55 mov a, 055h R mov b1, a E mov extb1, a FAA mov a, 0aah mov pac, a clrpa F00 1 mov a, 00h mov [12h], a clrpb F14 2 clr [14h] R mov a, b F00 E mov a, bank extlab A 0F00 E mov a, offset extb B 2800 E jmp extlab C C dw 1234h, 5678h, 0abcdh, 0ef12h ABCD EF end 0 Errors 105

114 106 I/O 型单片机使用手册

115 第三部份开发工具 第三部分 开发工具 107

116 108 I/O 型单片机使用手册

117 第五章单片机开发工具 第五章 单片机开发工具 5 为简化应用程序的开发过程, 支持工具的重要性和有效性对于单片机来说是不可低估的 为了支持所有系列的 MCU, 盛群用心的提供了具有完整功能的工具, 让用户在开发与使用上更加便利, 例如众所周知的 HT-IDE 集成开发环境, 软件方面有 HT-IDE3000 软件, 提供友好的视窗接口以便进行程序的编辑及除错, 同时硬件方面为 HT-ICE 仿真器, 提供多种实时仿真功能, 包含多功能跟踪 单步执行和设定断点功能 HT-IDE 开发系统提供完整的接口卡与定期软件服务包的更新, 因此保证设计者可以有最佳的工具, 且能以最高效率进行单片机应用程序的设计与开发 HT-IDE 集成开发环境 HT-IDE(Holtek Integrated Development Environment) 是一个具有高效能, 使用于 设计盛群 8 位 MCU 应用程序的集成开发环境 系统中的硬件及软件工具能帮助客户使用盛群 8 位 MCU 芯片, 快速且容易的开发应用程序 在 HT-IDE 中最主要的组件为 HT-ICE, 它提供盛群 8 位单片机的实时仿真功能, 以及强有力的除错和跟踪功能 最近版本的 HT-ICE 仿真器更进一步集成 OTP writer 烧录器在仿真器上, 提供使用者从程序设计 除错到烧录所有的功能 在软件方面,HT-IDE3000 开发系统提供友好的工作平台 此平台将所有的软件工具, 例如编辑器 编译器 连接器 函数库管理器和符号除错器, 并入到视窗环境, 使程序开发过程更为容易 HT-IDE3000 还提供软件仿真功能, 无需接上 HT-ICE 仿真器, 就可以进行程序开发 此软件仿真器可以仿真盛群 8 位 MCU, 以及 HT-ICE 硬件的所有基本功能 109

118 I/O 型单片机使用手册 HT-IDE3000 使用手册中包含 HT-IDE 开发系统的相关细节 为了确保开发系统包含有最新的单片机和软件更新信息, 盛群也定期提供 HT-IDE3000 服务软件 (Service Pack) 以配合 HT-IDE3000 的安装 这些服务软件不是用来取代 HT-IDE3000, 它必须要在 HT-IDE3000 系统软件安装后才被安装 HT-IDE3000 开发系统具有下列的特性 : 仿真 程序指令的实时仿真硬件 使用及安装容易 可使用内部或外部振荡器 断点功能 支持跟踪功能与触发能力的跟踪仿真器 HT-ICE 通过打印口与计算机连接 使用者的应用电路板通过 I/O 接口卡连接至 HT-ICE HT-ICE 中集成 OTP 烧录器软件 通用的视窗软件 源程序层次的除错方式 ( 符号除错器 ) 支持多个源程序文件的工作平台 ( 一个应用项目可以包含一个以上的源程序文件 ) 所有的工具都用于开发 除错 评估和产生最后的应用程序代码 (Mask ROM file) 可以建立公用程序的函数库, 之后被连接到另一个项目去使用 软件仿真器不需要连接 HT-ICE 硬件即可进行程序的仿真和除错 虚拟外围器件管理 (VPM) 可仿真外围器件的行为 LCD 仿真器可仿真 LCD 面板的动作 110

119 第五章单片机开发工具 盛群单片机仿真器 (HT-ICE) 对于盛群的 8 位单片机而言, 盛群的 ICE 是全功能的仿真器, 系统中的硬件及 软件工具能帮助客户快速方便的开发应用程序 系统中最主要的是硬件仿真器, 除了能够有效地提供除错和跟踪功能之外, 还能以实时的方式进行盛群 8 位 MCU 的仿真工作 在软件方面,HT-IDE3000 开发系统提供友好的工作平台, 将所有软件工具, 例如编辑器 编译器 连接器 函数库管理器和符号除错器, 合并到视窗环境 此外系统在软件仿真模式下不需连接 HT-ICE 硬件即能执行程序的仿真 HT-ICE 接口卡 HT-ICE 的接口卡可以被许多的应用电路使用, 但是使用者也可自行设计接口卡, 将必要的接口电路放在他们自己的接口卡上, 使用者可以直接把他们的应用电路板连接到 HI-ICE 的 CN1 和 CN2 连接器 OTP 烧录器 所有盛群的 OTP 芯片都有烧录器支持 对于工业级的 OTP 芯片烧录而言, 盛群 OTP writer 工具提供一个快速且有效的方法, 来进行 OTP 的小规模量产烧录 最新版本的 HT-ICE 仿真器更进一步的将 OTP writer 集成在 HT-ICE 仿真器上, 提供使用者从程序设计 除错到烧录验证的所有必需功能 另外有更多的烧录器供应商可提供有效及更大容量的烧录服务 请参阅网站以获得进一步供应商情况 OTP 适配卡 OTP 烧录器本身提供一个标准的芯片插座, 而 OTP 适配卡则是使用在烧录其它封装形式的 OTP 芯片, 这些封装形式的芯片无法在标准芯片插座上烧录, 需要在 OTP 烧录器插上此适配卡才能烧录 111

120 I/O 型单片机使用手册 系统配置 HT-IDE 集成开发环境硬件配置如下, 主机需为 Pentium 兼容机器 (Windows 95/98/NT/2000/XP 或更新 ) 注意在 Windows NT/2000/XP 系统下安装 HT-IDE3000 时, 需在 Supervisor Privilege 模式下执行 HT-IDE3000 软件安装 2 M A = F JA H - K = J H. = J+ = > A 2 HE JA H+ = > A - K = J H* N JA HB=? A + = H@ 6 = HC A J * = H@ HEJA H HT-IDE 集成系统环境包含下列硬件组成 : HT-ICE 机台, 包含印刷电路板 PCB, 其中有一条打印口用于连接硬件仿真器与主机 I/O 接口连接头以及电源指示灯 LED, 如下图所示 连接目标电路板与 HT-ICE 机台的 I/O 接口卡 变压器 ( 输出 16V) 25 脚的 D 型打印并口线 OTP writer 烧录器 2 HE JA H2 HJ 4 A I A J, + $ A = H 8 EA M H J8 EA M 112

121 第五章单片机开发工具 HT-ICE 接口卡设置 I/O 接口卡 (TPCB48MIO-A-1) 连接使用者的应用电路板与 HT-ICE, 它提供下列功能 : 外部时钟 外部输入的跟踪信号 MCU 引脚配置 2 " " 7 # 7 $ % 7 & 2! 8 4 7! 2 7 ' 5 9 外部的时钟来源有两种模式 :RC 和 Crystal, 使用 Crystal 模式时, 必须将 JP4 位置的第二和第三脚短路, 然后在 Y1 位置插入合适的晶振 而 RC 模式则是将 JP4 位置的第一和第二脚短路, 且可经 VR1 来调整系统频率 参考 HT-IDE3000 使用者手册中 Tools 菜单中的 Mask Option 命令选择时钟来源和系统频率 有四个外部信号跟踪输入, 地址在 JP3 上被标示为 ET0~ET3, 作为内部断点触发或者跟踪功能使用 想得到更多相关的信息, 请参考 HT-IDE3000 使用者手册中断和应用程序跟踪的章节 113

122 I/O 型单片机使用手册 开关 SW1 需要配合单片机型号以及下表设定使用 : 型号封装脚座 SW HT48R10A-1 24SKDIP U1 OFF OFF ON OFF ON OFF OFF HT48R30A-1 24SKDIP U2 ON OFF OFF ON OFF OFF ON HT48R30A-1 28SKDIP U3 ON OFF OFF ON OFF OFF ON HT48R50A-1 28SKDIP U4 ON OFF OFF ON OFF OFF ON 开关 SW2 需设定如下位置 : SW2 功能 HT48XA6 红外输出 其他单片机 U1 U2 和 U3 的引脚配置符合 I/O 系列单片机 接口卡上的 VME 连接器直接连接至 HT-ICE 的 CN1 和 CN2 插口 114

123 第五章单片机开发工具 安装 系统需求安装 HT-IDE3000 系统的硬件及软件需求如下 : Pentium 等级以上 CPU 之 PC/AT 兼容机器 SVGA 彩色显示器 至少 32M 以上的 RAM CD ROM 装置 ( 从 CD 安装时需要 ) 至少 20M 以上的硬盘空间 具有并行口, 可连接 PC 和 HT-ICE 操作系统 Windows 95/98/NT/2000/XP * Window 95/98/NT/2000/XP 是 Microsoft 公司注册商标 硬件安装 步骤 1 将电源变压器插入 HT-ICE 的电源插孔 步骤 2 通过 I/O 接口卡或排线连接目标电路板与 HT-ICE 步骤 3 使用打印并口线连接 HT-ICE 至主机此时 HT-ICE 上的 LED 应该是亮的, 如果不是, 则重新操作连接的步骤或与代理商联系 警告 : 请小心使用电源变压器, 勿使用输出不是 16V 的变压器, 否则可能导致 HT-ICE 损坏, 因此 强烈建议使用由盛群所提供的变压器 首先将电源变压器插入 HT-ICE 的电源插座 115

124 I/O 型单片机使用手册 软件安装 步骤 1 将 HT-IDE3000 CD 放入 CD ROM 装置中, 将出现下列的对话框 按下 <HT-IDE3000> 按钮, 下列的对话框会出现 依照你想要安装的功能, 请按下 <HT-IDE3000> 或 <Service Pack> 按钮 如果是首次安装, 请按 <HT-IDE3000>, 如果已安装 HT-IDE3000, 而需要更新版本时, 请按 <Service Pack> 以下为选择安装 <HT-IDE3000> 的范例说明, 按下 <HT-IDE3000> 116

125 第五章单片机开发工具 步骤 2 按下 <Next> 按钮 ( 继续安装 ) 或按下 <Cancel> 按钮 ( 中止安装 ) 步骤 3 下面显示的对话框会要求使用者输入安装处的文件夹名称 步骤 4 指定你希望安装 HT-IDE3000 的文件夹路径, 然后按下 <Next> 按钮 117

126 I/O 型单片机使用手册 步骤 5 SETUP 会将文件复制到你指定的文件夹 步骤 6 安装成功的话, 则会出现下面的对话框 118

127 第五章单片机开发工具 步骤 7 请按下 <Finish> 按钮完成安装并重新启动计算机系统之后, 你就可以执行 HT-IDE3000 程序了 SETUP 会在你指定的文件夹下, 建立四个子文件夹 (BIN INCLUDE LIB SAMPLE) BIN 子文件夹包含所有的系统可执行文件 (EXE) 动态链接库(DLL) 和配置文件 (CFG FMT),INCLUDE 子文件夹包含所有由盛群所提供的包含文件 (.H.INC),LIB 子文件夹包含由盛群所提供的库文件 (.LIB),SAMPLE 子文件夹包含范例程序 注意, 在第一次执行 HT-IDE3000 之前, 系统会要求输入如下图所示的公司资料, 请选择适当的区域并填入公司名称及识别码, 其中识别码可由 HT-IDE3000 的供应商提供 119

Microsoft Word - IO_hb_3rd_sim.doc

Microsoft Word - IO_hb_3rd_sim.doc HT48R10A-1, HT48R30A-1, HT48R50A-1, HT48R70A-1, HT48RU80 I/O 型单片机使用手册 二 六年六月第三版 Copyright 2006 by HOLTEK SEMICONDUCTOR INC. 本使用手册版权为盛群半导体股份有限公司所有, 非经盛群半导体股份有限公司书面授权同意, 不得通过任何形式复制 储存或传输 ii Cost-Effective

More information

Microsoft Word - Ö¸Á.doc

Microsoft Word - Ö¸Á.doc 指令集说明 注 由于资源大小问题 其中以下几款 MCU 只有 62 条指令 其余均为 63 条指令 HT48CA0/HT48RA0A 无 RETI 指令 HT48R05A-1 无 TABRDL 指令 指令寻址方式有下面 5 种 立即寻址 此一寻址法是将立即的常数值紧跟在运算码 (opcode) 后 例如 MOV A, 33H ADD A, 33H 直接寻址 直接寻址的情況只允许在存储器之间作数据传送

More information

HT46R62, HT46R63, HT46R64, HT46R65 A/D with LCD 型单片机使用手册 本使用手册版权为盛群半导体股份有限公司所有, 非经盛群半导体股份有限公司书面授权同意, 不得通过任何形式复制 储存或传输 目录 目录 第一部份单片机概论... 1 第一章硬件结构... 3 简介...3 特性...4 技术特性...4 内核特性...4 周边特性...5 选择表...6

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

HT46R47,HT46R22, HT46R23,HT46R24 A/D 型单片机使用手册 本使用手册版权为盛群半导体股份有限公司所有, 非经盛群半导体股份有限公司书面授权同意, 不得通过任何形式复制 储存或传输 目录 目录 第一部份单片机概论... 1 第一章硬件结构... 3 简介...3 特性...4 技术特性...4 内核特性...4 周边特性...5 选择表...5 系统框线图...6

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

<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

HT48R05A-1/HT48R06A-1 Cost-Effective I/O 型单片机使用手册 本使用手册版权为盛群半导体股份有限公司所有, 非经盛群半导体股份有限公司书面授权同意, 不得通过任何形式复制 储存或传输 目录 目录 第一部份单片机概论... 1 第一章硬件结构... 3 简介...3 特性...4 技术特性...4 内核特性...4 周边特性...5 选择表...5 系统框线图...6

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

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

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

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

Microsoft Word - sim48x050608_1v151.doc

Microsoft Word - sim48x050608_1v151.doc 经济型输入 / 输出八位单片机 盛群知识产权政策 专利权 盛群半导体公司在全球各地区已核准和申请中之专利权至少有 16 件以上, 享有绝对之合法权益 与盛群公司 MCU 或其它产品有关的专利权并未被同意授权使用, 任何经由不当手段侵害盛群公司专利权之公司 组织或个人, 盛群将采取一切可能的法律行动, 遏止侵权者不当的侵权行为, 并追讨盛群公司因侵权行为所受之损失 或侵权者所得之不法利益 商标权 盛群之名称和标识

More information

Microsoft Word - sim46x53_54av110.doc

Microsoft Word - sim46x53_54av110.doc A/D 型八位 OTP 单片机 盛群知识产权政策 专利权盛群半导体公司在全球各地区已核准和申请中之专利权至少有 6 件以上, 享有绝对之合法权益 与盛群公司 MCU 或其它产品有关的专利权并未被同意授权使用, 任何经由不当手段侵害盛群公司专利权之公司 组织或个人, 盛群将采取一切可能的法律行动, 遏止侵权者不当的侵权行为, 并追讨盛群公司因侵权行为所受之损失 或侵权者所得之不法利益 商标权盛群之名称和标识

More information

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

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

More information

Microsoft Word - ha0013s.doc

Microsoft Word - ha0013s.doc 文件编码 :HA0013s 简介 : 本文介绍利用 8 位微控制器控制 DV16100NRB 液晶显示驱动器的方法 该 LCM 由内置的 Hitachi HD44780 进行驱动及控制 本文应用中, 着重考虑如何使微控制器产生正确的信号以符合 LCM 所需的时序 若要获得详细的时序及指令信息, 请查阅 LCM 厂商的资料 LCM 能以 4 位或 8 位模式工作 在 4 位模式下, 传送一个字符或一条指令需两个传输周期完成

More information

目录 特性...5 CPU 特性... 5 周边特性... 5 概述...5 选型表...6 方框图...6 引脚图...6 引脚说明...7 极限参数...8 直流电气特性...9 交流电气特性...10 上电复位特性...10 系统结构 时序和流水线结构 程序计数器...

目录 特性...5 CPU 特性... 5 周边特性... 5 概述...5 选型表...6 方框图...6 引脚图...6 引脚说明...7 极限参数...8 直流电气特性...9 交流电气特性...10 上电复位特性...10 系统结构 时序和流水线结构 程序计数器... HT48R002/HT48R003 版本 : V1.11 日期 : 目录 特性...5 CPU 特性... 5 周边特性... 5 概述...5 选型表...6 方框图...6 引脚图...6 引脚说明...7 极限参数...8 直流电气特性...9 交流电气特性...10 上电复位特性...10 系统结构... 11 时序和流水线结构... 11 程序计数器... 12 堆栈... 12 算术逻辑单元

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

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

目录 目录 技术相关信息... 特性... CPU 特性... 周边特性... 概述... 选型表... 2 方框图... 2 引脚图... 3 引脚说明... 4 HT48R063B... 4 HT48R064B... 5 HT48R065B, HT48R066B... 6 极限参数... 7 直

目录 目录 技术相关信息... 特性... CPU 特性... 周边特性... 概述... 选型表... 2 方框图... 2 引脚图... 3 引脚说明... 4 HT48R063B... 4 HT48R064B... 5 HT48R065B, HT48R066B... 6 极限参数... 7 直 增强 I/O 型八位 OTP 单片机 HT48R063B/064B/065B/066B 版本 : V.0 日期 : 目录 目录 技术相关信息... 特性... CPU 特性... 周边特性... 概述... 选型表... 2 方框图... 2 引脚图... 3 引脚说明... 4 HT48R063B... 4 HT48R064B... 5 HT48R065B, HT48R066B... 6 极限参数...

More information

学习MSP430单片机推荐参考书

学习MSP430单片机推荐参考书 MSP430 16 MSP430 C MSP430 C MSP430 FLASH 16 1 CPU 16 ALU 16 PC SP SR R4~R15 2 3 00-FFH 100-1FFH 4 5 1 2 51 24 27 6 1 2 3 4 5 6 4 12 SR SP SR CPU SR CPU C Z N GIE CPUOff CPU OscOff SCG0 SCG1 CPU EXIT SP

More information

PowerPoint 演示文稿

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

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

技术相关信息

技术相关信息 8-Bit 触摸按键式 Flash 单片机 BS45F2 版本 :V02 日期 :202/05/4 www.greenmcu.com 目录 目 录 第 章概述及其特性.... 特性..... CPU 特性.....2 周边特性....2 概述....3 方框图... 2.4 引脚图... 2.5 引脚说明... 3.6 极限参数... 3.7 直流电气特性... 4.8 交流电气特性... 4.9

More information

1 TPIS TPIS 2 2

1 TPIS TPIS 2 2 1 1 TPIS TPIS 2 2 1. 2. 3. 4. 3 3 4 5 4 TPIS TPIS 6 5 350 Mark Coil F3/F6 350 M 150 M 25 M 7.12M 8 M F3 F6 F4 F7 F8 8M AA 7 350 28V 5V IC HCPL2731 0.5mA 6 8 (TPIS) TPIS 9 7 IC AT89C2051 AT89C2051 CMOS8

More information

mdt1030

mdt1030 深圳市英锐恩科技有限公司 第 1 页 单片机集成方案全方位解决服务商 优质智能电子产品 芯 方案解决商 Micon MDT1030 产品用户参考手册 全球销售及服务联系信息 : 深圳市英锐恩科技有限公司 ENROO-TECH(SHENZHEN)CO.,LTD 中国 深圳市福田区福华路嘉汇新城汇商中心 27 楼 2701 室 Enroo-Tech Technologies CO., Limited Light-Tech

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

Microsoft Word - simBS83Bxx-3v120.doc

Microsoft Word - simBS83Bxx-3v120.doc 技术相关信息 应用范例 HA0075S MCU 复位电路及振荡电路应用 特性 CPU 特性 工作电压 : f SYS = 8MHz:V LVR ~5.5V f SYS = 2MHz:2.7V~5.5V f SYS = 6MHz:4.5V~5.5V 集成 8/2/6 触摸按键功能 -- 不需要增加外接元件 暂停和唤醒功能, 以降低功耗 集成高 / 低速振荡器低速 -- 32kHz 高速 -- 8MHz,2MHz,6MHz

More information

?€?舐?喃縑?

?€?舐?喃縑? 增强 A/D 型八位 OTP 单片机 HT46R064B/065B/066B 版本 :V.00 日期 : 目录 目录 技术相关信息... 特性... 概述... 2 选型表... 2 方框图... 2 引脚图... 3 引脚说明... 4 HT46R064B... 4 HT46R065B... 5 HT46R066B... 6 极限参数... 7 直流电气特性... 8 交流电气特性... 9 ADC

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

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

12232A LED LED LED EL EL CCFL EL CCF

12232A LED LED LED EL EL CCFL EL CCF 12232A 0 50-20 +70-30 +85 LED LED LED EL EL CCFL EL CCF 122 x 32 1/32Duty 1/5Bias 6:00 STN( ), EL LED EL/100VAC 400HZ LED/4.2VDC 1 / VDD-VSS 0 6.5 V Ta=25 LCD VDD-V0 0 12.0 V V1 0 VDD V VDD-VSS - 4.75

More information

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

1. 介绍 义隆 8 位单片机指令介绍 Application Notes 义隆 8 位单片机指令介绍 EM78/EM88 系列是基于 RISC 的精简指令微控制器, 每条指令是 13 位 15 位, 除 LCALL LJMP MOV R2,A ADD R2,A 改变 PC 指针的指令是 2 个指令 1. 介绍 Application Notes EM78/EM88 系列是基于 RISC 的精简指令微控制器, 每条指令是 13 位 15 位, 除 LCALL LJMP MOV R2,A ADD R2,A 改变 PC 指针的指令是 2 个指令 * 周期, 其余为单指令周期 ( 部分第一代芯片 JMP CALL RET RETL RETI JBS JBC JZ JZA DJZ DJZA 指令为 2

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

技术相关信息

技术相关信息 8-Bit 带 A/D 触摸按键式 Flash 单片机 BS45F16 版本 :V06 日期 :2013/10/15 www.greenmcu.com 目录 目录第 1 章简述... 1 1.1 特性... 1 1.1.1 CPU 特性... 1 1.1.2 周边特性... 1 1.2 概述... 2 1. 3 方框图... 3 1.3.1 引脚图... 3 1.3.2 引脚说明... 5 1.3.3

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

untitled

untitled EDM12832-08 : 25-1 : 116600 : (0411)7612956 7632020 7631122 : (0411)7612958 Model No.: Editor: LCD 1. ----------------------------------------------------3 2. ----------------------------------------------------3

More information

FM1935X智能非接触读写器芯片

FM1935X智能非接触读写器芯片 FM33A0xx MCU 2017. 05 2.0 1 (http://www.fmsh.com/) 2.0 2 ... 3 1... 4 1.1... 4 1.2... 4 1.3... 5 1.3.1... 5 1.3.2... 5 1.4... 8 1.4.1 LQFP100... 8 1.4.2 LQFP80... 9 1.4.3... 9 2... 15 2.1 LQFP100... 15

More information

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

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

More information

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

General Description: Preliminary TTP916 Consumer IC VCD/DVD LCD Green mode Stand-by mode( 1W ) Features: 2.2V-5.5V LCD RAM read condition 2.6V-5.5V RC General Description: IC VCD/DVD LCD Green mode Stand-by mode( 1W ) Features: 2.2V-5.5V LCD RAM read condition 2.6V-5.5V RC 15K 300pF 256KHZ default on 32 function key Built-in TT6221/TT6222 decoder Provide

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(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

诺贝尔生理学医学奖获奖者

诺贝尔生理学医学奖获奖者 诺 贝 尔 生 理 学 医 学 奖 获 奖 者 1901 年 E.A.V. 贝 林 ( 德 国 人 ) 从 事 有 关 白 喉 血 清 疗 法 的 研 究 1902 年 R. 罗 斯 ( 英 国 人 ) 从 事 有 关 疟 疾 的 研 究 1903 年 N.R. 芬 森 ( 丹 麦 人 ) 发 现 利 用 光 辐 射 治 疗 狼 疮 1904 年 I.P. 巴 甫 洛 夫 ( 俄 国 人 ) 从 事

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

CH559指令周期.doc

CH559指令周期.doc CH55X 汇编指令周期表 CH55X 汇编指令概述 : 型号包含 : a. 指令单周期型号 :CH557 CH558 CH559; b. 指令 4 周期型号 :CH551 CH552 CH553 CH554; c. 非跳转指令的指令周期数与指令字节数相同 ; d. 跳转指令含 MOVC/RET/CALL 通常比字节数多若干个周期 ; e.movc 指令多 4 或 5 个周期 ( 下条指令地址为奇数时多

More information

DL1621-1

DL1621-1 General Description: DL1621-1, 含 LCD 的控制线路, 搭配 MCU 来使用, 将使使用者的成本降低, 以及应用更加. 宽广 Features: 工作电压 2.4V-5.5V 系统频率 : - 内建 RC 振荡器 (256Khz) - 外挂 32768Hz 晶振 - 外灌 256Khz 输入 ( 由 OSCI 脚 ) 提供简单 3 pins 串接接口 (CKRB/ CKWB/

More information

untitled

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

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

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

MSP430ϵÁе¥Æ¬»úµÄÖ¸Áîϵͳ.pps [¼æÈÝģʽ]

MSP430ϵÁе¥Æ¬»úµÄÖ¸Áîϵͳ.pps [¼æÈÝģʽ] 作者 : 利尔达 MSP430 系列单片机的指令系统 1 CPU 内核组成 : 16 位的 (ALU) 算术运算单元 16 个寄存器 (PC SP SR R4~R15) 指令控制单元 2 存储器组织结构 3 外围模块寄存器地址 它们被分配在相应的字模块或字节模块当中 分配在 00-FFH 中为字节, 分配在 100-1FFH 中为字 4 寻址模式 : 5 指令格式 : 1) 书写格式标号指令助记符源操作数,

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

HM705/6/813 WDI WDO MR GND I/O NMI INT MCU 1 HM V HM V HM813L 4.65V HM V HM V HM813M

HM705/6/813 WDI WDO MR GND I/O NMI INT MCU 1 HM V HM V HM813L 4.65V HM V HM V HM813M 705/706/707/708/813 HM705/706/707/708/813 1.15 HM705/706/707/708/813 2.6 5.0 0.1 1.22 5V 52 200 HM705/706/707/708/813 1.6 HM705/706/813 1.6 705/706/707/708/813 HM707/708 HM813 8 DIP8 8 SOP8 HM705/706 :

More information

目录 特性...6 CPU 特性... 6 周边特性... 6 概述...7 选型表...8 方框图...8 引脚图...9 引脚说明...10 极限参数...13 直流电气特性...13 交流电气特性...15 ADC 特性...16 上电复位特性...17 系统结构...18 时序和流水线结构.

目录 特性...6 CPU 特性... 6 周边特性... 6 概述...7 选型表...8 方框图...8 引脚图...9 引脚说明...10 极限参数...13 直流电气特性...13 交流电气特性...15 ADC 特性...16 上电复位特性...17 系统结构...18 时序和流水线结构. BS84B08A-3/BS84C12A-3 版本 : V1.20 日期 : 2016-08-25 目录 特性...6 CPU 特性... 6 周边特性... 6 概述...7 选型表...8 方框图...8 引脚图...9 引脚说明...10 极限参数...13 直流电气特性...13 交流电气特性...15 ADC 特性...16 上电复位特性...17 系统结构...18 时序和流水线结构...

More information

Ps22Pdf

Ps22Pdf ( ) ( 150 ) 25 15 20 40 ( 25, 1, 25 ), 1. A. B. C. D. 2. A. B. C. D. 3., J = 1 H = 1 ( A B, J', J, H ) A. A = B = 1, J' =0 B. A = B = J' =1 C. A = J' =1, B =0 D. B = J' = 1, A = 0 4. AB + AB A. AB B. AB

More information

目录 特性...6 CPU 特性... 6 周边特性... 6 概述...7 选型表...8 方框图...8 引脚图...9 引脚说明...10 极限参数...12 直流电气特性...12 交流电气特性...14 ADC 特性...15 上电复位特性...16 系统结构...17 时序和流水线结构.

目录 特性...6 CPU 特性... 6 周边特性... 6 概述...7 选型表...8 方框图...8 引脚图...9 引脚说明...10 极限参数...12 直流电气特性...12 交流电气特性...14 ADC 特性...15 上电复位特性...16 系统结构...17 时序和流水线结构. BS84B08A-3/BS84C12A-3 版本 : V1.00 日期 : 2013-03-19 目录 特性...6 CPU 特性... 6 周边特性... 6 概述...7 选型表...8 方框图...8 引脚图...9 引脚说明...10 极限参数...12 直流电气特性...12 交流电气特性...14 ADC 特性...15 上电复位特性...16 系统结构...17 时序和流水线结构...

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

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

Cost_Effective C Handbook

Cost_Effective C Handbook HT8 MCU 看门狗 (WDT) 应用范例 防止死机 文件编码 :AN0426S 简介 Holtek Flash MCU 提供了一个功能单元 WDT (Watch Dog Timer) 看门狗定时器, 其最主要的功能是避免程序因不可预期的因素 ( 如 : 电路噪声 ) 造成系统长时间的瘫痪 ( 如 : 跳至死循环或未知地址造成无法预测的结果 ) 功能说明 Holtek 新推出的 MCU 已无 2

More information

untitled

untitled EDM12864-GR 1 24 1. ----------------------------------------------------3 2. ----------------------------------------------------3 3. ----------------------------------------------------3 4. -------------------------------------------------------6

More information

电源管理类产品

电源管理类产品 CN705/706/707/708/813 CN705/706/707/708/813 CN705/706/707/708/813 5.0 0.1 1.22 5V 52 CN705/706/707/708/813 CN705/706/813 1.6 CN707/708 CN813 8 DIP8 8 CN705/706 CN705/706/707/708/813 8 MR 1 DIP8 8 SOP8

More information

技术相关信息

技术相关信息 8-Bit 触摸按键式 Flash 单片机 BS45FB 版本 :V0 日期 :203/06/4 www.greenmcu.com 目录 第 章概述及其特性.... 特性..... CPU 特性.....2 周边特性....2 概述....3 方框图... 2.4 引脚图... 2.5 引脚说明... 3.6 极限参数... 4.7 直流电气特性... 5.8 交流电气特性... 5.9 上电复位特性...

More information

Microsoft Word - S153B.doc

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

More information

untitled

untitled 8086/8088 CIP /. 2004.8 ISBN 7-03-014239-X.... TP313 CIP 2004 086019 16 100717 http://www.sciencep.com * 2004 8 2004 8 1 5 500 787 1092 1/16 16 1/2 391 000 1 2 ii 1 2 CAI CAI 3 To the teacher To the student

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

目 录

目 录 1 Quick51...1 1.1 SmartSOPC Quick51...1 1.2 Quick51...1 1.3 Quick51...2 2 Keil C51 Quick51...4 2.1 Keil C51...4 2.2 Keil C51...4 2.3 1 Keil C51...4 2.4 Flash Magic...9 2.5 ISP...9 2.6...10 2.7 Keil C51...12

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

* 4 6 R P r p . 1 2 3 4 7 89bk 6 5 1 2 3 4 5 6 7 8 9 0 bk r bl bm bn^ bo bl br bq bpbo bn bm [ ] [ ] [ ] bp 8 2 4 6 bq p [ ] [SET] br clckbt bs bs bt ck cl. 1 2 1 2+- 3 3 . 1 2 3 4 5 6 7 8 9 bk bl bm

More information

GH1220 Hall Switch

GH1220 Hall Switch Unipolar Hall Switch - Medium Sensitivity Product Description The DH220 is a unipolar h all switch designed in CMOS technology. The IC internally includes a voltage regulator, Hall sensor with dynamic

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

目录 特性...7 CPU 特性... 7 周边特性... 8 概述...9 选型表...9 方框图...10 引脚图 引脚说明...15 极限参数...21 直流电气特性...22 交流电气特性...24 ADC 特性...25 比较器电气特性...26 上电复位特性...26 系统结

目录 特性...7 CPU 特性... 7 周边特性... 8 概述...9 选型表...9 方框图...10 引脚图 引脚说明...15 极限参数...21 直流电气特性...22 交流电气特性...24 ADC 特性...25 比较器电气特性...26 上电复位特性...26 系统结 HT66F20 HT66F30/HT66FU30 HT66F40/HT66FU40 HT66F50/HT66FU50 HT66F60/HT66FU60 版本 : V.2.40 日期 : 目录 特性...7 CPU 特性... 7 周边特性... 8 概述...9 选型表...9 方框图...10 引脚图... 11 引脚说明...15 极限参数...21 直流电气特性...22 交流电气特性...24

More information

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

Application Note Transient Voltage Suppressors (TVS) for 表 1 VISHAY 的 SM6T 系列的电特性 25 C 型号 击穿电压 器件标识码 V BR AT I T I T 测试电流 (ma) 关态电压 V RM 漏电流 I RM AT V VISHAY GE NERAL SEMICONDUCTOR 瞬态电压抑制器 应用笔记 用于汽车电子保护的瞬态电压抑制器 (TVS) Soo Man (Sweetman) Kim, Vishay I) TVS 的重要参数 TVS 功率等级 TVS Vishay TVS 10 μs/1000 μs (Bellcore 1089) 1 TVS ESD 8 μs/20 μs 2 1 10 µs 10 µs/1000

More information

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

单片机应用编程技巧(专家:邓宏杰) 编 者 注 : 本 文 件 为 电 子 工 程 专 辑 网 站 编 辑 部 原 创, 电 子 工 程 专 辑 享 有 本 文 章 完 全 著 作 权, 如 需 转 载 该 文 章, 必 须 经 过 电 子 工 程 专 辑 网 站 编 辑 部 同 意 联 系 电 子 工 程 专 辑 网 站 编 辑 部, 请 发 信 至 eetcol@globalsources.com 单 片 机 应 用 编 程 技

More information

FM1935X智能非接触读写器芯片

FM1935X智能非接触读写器芯片 FM3316/3315 MCU 2017.06 FM3316/3315 MCU 2.21 (http://www.fmsh.com/) FM3316/3315 MCU 2.22 ... 3 1... 4 2... 5 2.1... 5 2.2... 5 2.3... 6 2.3.1... 6 2.3.2... 6 2.4... 9 2.5... 10 2.5.1 LQFP64... 10 2.5.2

More information

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

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor 1 4.1.1.1 (Load) 14 1.1 1 4.1.1.2 (Save) 14 1.1.1 1 4.1.2 (Buffer) 16 1.1.2 1 4.1.3 (Device) 16 1.1.3 1 4.1.3.1 (Select Device) 16 2 4.1.3.2 (Device Info) 16 2.1 2 4.1.3.3 (Adapter) 17 2.1.1 CD-ROM 2 4.1.4

More information

Microsoft Word - IRFWX_A051_C_SyncMOS_with_STC_APN_SC_.doc

Microsoft Word - IRFWX_A051_C_SyncMOS_with_STC_APN_SC_.doc EEPROM 应用说明 1 适用产品 :SM59D03G2 SM59D04G2 series 2 应用范围 : 针对需使用 EEPORM 功能替换 STC 89C5X 的应用及汇编语言之范例程序 ( 使用内部扩充内存为暂存区 ) 3 功能说明 : 3.1 本公司上述产品 EEPORM 功能皆可替换 STC89C5X, 仅需对特殊功能缓存器定义 ( 详见表 1) 及 ISP 命令定义 ( 详见表 2)

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

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

1 CPU

1 CPU 2000 Tel 82316285 82317634 Mail liuxd@buaa.edu.cn 1 CPU 2 CPU 7 72 A B 85 15 3 1/2 M301 2~17 : 3/4 1/2 323 IBM PC 1. 2. 3. 1. 2. 3. 1.1 Hardware Software 1.2 M3 M2 M1 1.2 M3 M1 M2 M2 M1 M1 M1 1.2 M3 M1

More information

目录 特性...6 CPU 特性... 6 周边特性... 6 概述...7 方框图...7 引脚图...8 引脚说明...9 极限参数...10 直流电气特性...10 交流电气特性...12 感应振荡器电气特性...13 A/D 转换器电气特性...17 上电复位特性...18 系统结构...1

目录 特性...6 CPU 特性... 6 周边特性... 6 概述...7 方框图...7 引脚图...8 引脚说明...9 极限参数...10 直流电气特性...10 交流电气特性...12 感应振荡器电气特性...13 A/D 转换器电气特性...17 上电复位特性...18 系统结构...1 BS84B06A-3 版本 : V1.30 日期 : 2016-06-30 目录 特性...6 CPU 特性... 6 周边特性... 6 概述...7 方框图...7 引脚图...8 引脚说明...9 极限参数...10 直流电气特性...10 交流电气特性...12 感应振荡器电气特性...13 A/D 转换器电气特性...17 上电复位特性...18 系统结构...19 时序和流水线结构...

More information

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

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

More information

目录 特性...1 CPU 特性... 1 周边特性... 1 概述...2 选型表...2 方框图...3 引脚图...4 引脚说明...5 极限参数...8 直流电气特性...8 交流电气特性...10 上电复位特性...10 系统结构 时序和流水线结构 程序计数器...

目录 特性...1 CPU 特性... 1 周边特性... 1 概述...2 选型表...2 方框图...3 引脚图...4 引脚说明...5 极限参数...8 直流电气特性...8 交流电气特性...10 上电复位特性...10 系统结构 时序和流水线结构 程序计数器... 8-Bit 触控按键式 Flash 单片机 BS83B08A-3/BS83B08A-4 BS83B12A-3/BS83B12A-4 BS83B16A-3/BS83B16A-4 版本 : V1.00 日期 : 目录 特性...1 CPU 特性... 1 周边特性... 1 概述...2 选型表...2 方框图...3 引脚图...4 引脚说明...5 极限参数...8 直流电气特性...8 交流电气特性...10

More information

untitled

untitled EDM16080-01 Model No.: Editor: 1. ----------------------------------------------------3 2. ----------------------------------------------------3 3. ----------------------------------------------------3

More information

微處理機期末專題

微處理機期末專題 微 處 理 機 期 末 專 題 自 動 鋼 琴 組 員 :b92611004 羅 鈞 瑋 b92611008 吳 妍 儂 b92611038 吳 韋 靜 b92611042 林 佳 穎 一 簡 介 本 組 的 主 題 是 自 動 鋼 琴 在 播 放 音 樂 的 同 時, 鋼 琴 會 自 動 按 下 琴 鍵, 被 按 下 的 琴 鍵 所 對 應 到 的 音 階, 就 是 正 在 撥 放 的 樂 曲 的

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

<4D F736F F D20C9EEDBDACAD0B6ABB3CFD0C5B5E7D7D3BFC6BCBCD3D0CFDEB9ABCBBEBDE9C9DCBCB0BFE2B4E6>

<4D F736F F D20C9EEDBDACAD0B6ABB3CFD0C5B5E7D7D3BFC6BCBCD3D0CFDEB9ABCBBEBDE9C9DCBCB0BFE2B4E6> 台湾合泰 HOLTEK 型号品牌封装说明 HT7022A-1#-SOT89 HOLTEK SOT89 2.2V N 沟开漏电压监测器 HT7022A-1-TO92 HOLTEK TO92 2.2V N 沟开漏电压监测器 HT7024A-1#-SOT89 HOLTEK SOT89 2.4V N 沟开漏电压监测器 HT7024A-1-TO92 HOLTEK TO92 2.4V N 沟开漏电压监测器 HT7027A-1#-SOT89

More information

<4D F736F F D20C7B0CBC4D5C2D7F7D2B5CCE22E646F6378>

<4D F736F F D20C7B0CBC4D5C2D7F7D2B5CCE22E646F6378> 第一章第二章 Q2 1: 高序 : 最低位字节存储在字的最低位 ; 低序 : 最低位字节存储在字的最高位 ; Q2 2: 冯. 诺依曼结构 : 数据和指令都存储在同一存储器中 ; 哈佛结构 : 数据和程序存储在各自独立的存储器中 Q2 3: a) ARM 有 16 个通用寄存器,r0 r15, 其中 r15 还被用作程序计数器 b) CPSR 是程序状态寄存器, 包含了条件码标识 中断禁止位 当前处理器模式和其他状态

More information

AT89C2051中文资料.doc

AT89C2051中文资料.doc 图形点阵液晶显示模块使用手册 TG12864C(L) 广州捷胜吉电子科技 地址 : 广州市天河区天河路 561# 新赛格电子城 B2226 电话 :(020)33550997 13829772038 网址 :WWW.GZJSJDZ.COM E-mail:CJKD@21CN.COM 目 录 ( 一 ) 概述 (1) ( 二 ) 外形尺寸图 (1) ( 三 ) 模块主要硬件构成说明 (2) ( 四 )

More information

97 04 25 0970002232 97 12 31 1-7 1 2 1 0 1 0 1 0 1 0 1 0 1 0 1 2 24 A1. 0 1 ( 6 ) 2 ( 6 ) 3 4 A1a.? 5 6 0 1 A1b.? 0 1 2 A2. 0 1 A2b. A2c. A2a. A2d. 1 A3. 1 A4 2 0 A4 A3a.?? 0 A4 1 A3b. 0 A4 1 A3c.?? 1

More information

目录 特性...5 CPU 特性... 5 周边特性... 5 概述...6 选型表...6 方框图...7 引脚图...7 引脚说明...8 极限参数...10 直流电气特性...10 交流电气特性 上电复位特性...12 系统结构...12 时序和流水线结构 程序计数器.

目录 特性...5 CPU 特性... 5 周边特性... 5 概述...6 选型表...6 方框图...7 引脚图...7 引脚说明...8 极限参数...10 直流电气特性...10 交流电气特性 上电复位特性...12 系统结构...12 时序和流水线结构 程序计数器. BS83A02A-4/BS83A04A-3/BS83A04A-4 版本 : V1.70 日期 : 目录 特性...5 CPU 特性... 5 周边特性... 5 概述...6 选型表...6 方框图...7 引脚图...7 引脚说明...8 极限参数...10 直流电气特性...10 交流电气特性... 11 上电复位特性...12 系统结构...12 时序和流水线结构... 12 程序计数器...

More information

目录 特性...6 CPU 特性... 6 周边特性... 6 概述...7 选型表...7 方框图...8 引脚图...9 引脚说明...10 极限参数...12 直流电气特性...12 交流电气特性...14 ADC 特性...15 比较器电气特性...15 上电复位特性...16 BandGa

目录 特性...6 CPU 特性... 6 周边特性... 6 概述...7 选型表...7 方框图...8 引脚图...9 引脚说明...10 极限参数...12 直流电气特性...12 交流电气特性...14 ADC 特性...15 比较器电气特性...15 上电复位特性...16 BandGa HT66F016/HT66F017 HT68F016/HT68F017 HT66F016R/HT66F017R HT68F016R/HT68F017R 版本 : V1.50 日期 : 2018-07-17 目录 特性...6 CPU 特性... 6 周边特性... 6 概述...7 选型表...7 方框图...8 引脚图...9 引脚说明...10 极限参数...12 直流电气特性...12 交流电气特性...14

More information

94/03/25 (94 0940002083 94 12 31 B 1-8 (12-64 29 5 16 82 5 15 1 2 22-24 29 25-28 k1. 1 A 2 k2k3 3 k2k3 k2. k2a. 1 2 3 4 k2b. 1 2 k2b1.? 3 k3. 11 12 02 ( ( ( 1 2 (24 A. A1.? 1 0 A1a.? 1. 1 2 2. A2. 1 2

More information

untitled

untitled EDM12864-03 : 25-1 : 116600 : (0411)7612956 7632020 7612955 : (0411)7612958 Model No.: Editor: 1. ----------------------------------------------------3 2. ----------------------------------------------------3

More information

Converting image (bmp/jpg) file into binary format

Converting image (bmp/jpg) file into binary format RAiO Image Tool 操作说明 Version 1.0 July 26, 2016 RAiO Technology Inc. Copyright RAiO Technology Inc. 2013 RAiO TECHNOLOGY INC. www.raio.com.tw Revise History Version Date Description 0.1 September 01, 2014

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

PowerPoint 演示文稿

PowerPoint 演示文稿 The BitCoin Scripting Language 交易实例 交易结构 "result": { "txid": "921a dd24", "hash": "921a dd24", "version": 1, "size": 226, "locktime": 0, "vin": [ ], "vout": [ ], "blockhash": "0000000000000000002c510d

More information

第二章

第二章 中 国 建 筑 股 份 有 限 公 司 内 部 控 制 手 册 (2009 年 版 ) 目 录 第 一 章 总 则 1 编 制 内 部 控 制 手 册 目 的 依 据 1 2 内 部 控 制 手 册 的 适 用 范 围 1 3 内 部 控 制 基 本 原 则 1 4 内 部 控 制 的 基 本 要 求 2 5 内 部 控 制 组 织 机 构 4 6 内 部 控 制 手 册 的 更 新 与 监 督 4

More information

银河银联系列证券投资基金

银河银联系列证券投资基金 2-1 ...3...7...8...9...15...23...25...26...27...28...35...35...38...39...39...40...45...45...46...48...50...52...53...56...58...59...59...60...61...61 2-2 1998 12 29 2004 6 8 2004 7 1 2004 6 29 2004 7

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.1 ML_ONOFF = 1 Q 3 Q 8 C 0.3V M 2 L 1 ML_ONOFF = 0 Q 3 Q 8 C 1. + R31 VCC R21 10K ML_ONOFF R15 0:off 1:on 1K Green Light VCC=5V L1 Q VDD=12V C

1.1 ML_ONOFF = 1 Q 3 Q 8 C 0.3V M 2 L 1 ML_ONOFF = 0 Q 3 Q 8 C 1. + R31 VCC R21 10K ML_ONOFF R15 0:off 1:on 1K Green Light VCC=5V L1 Q VDD=12V C AUTOMATIC TROLLEY H K Hwang K K Chen J-S Lin S-C Wang M-L Li C-C Lin W-B Lin Dept. Of Electrical Engineering Far East College ABSTRACT This paper proposes an automatic trolley which can move automatically

More information

79 SZ/SH/SM ONOFF SET/RST SZSHSM SET SET RST RESET ( ) ( ) SET XXXX SET XXXX XXXX RST XXXX RST XXXX XXXX 1(2) SZ3 SZ4 SH SM I000~I177 I000~I477 I000~I

79 SZ/SH/SM ONOFF SET/RST SZSHSM SET SET RST RESET ( ) ( ) SET XXXX SET XXXX XXXX RST XXXX RST XXXX XXXX 1(2) SZ3 SZ4 SH SM I000~I177 I000~I477 I000~I 78 SZ/SH/SM 55 ON OUT/ZOUT OUT OUT AOUT ZOUT SZ3 SZ4 SH SM SZSHSM I000~I177 I000~I477 I000~I077 I000~I077 1 Q000~Q177 Q000~Q477 Q000~Q077 Q000~Q077 M000~M377 M000~M377 M000~M377 M000~M377 1. ON OFF 2.OUT

More information