dsPIC30F Programmer’s Reference Manual

Size: px
Start display at page:

Download "dsPIC30F Programmer’s Reference Manual"

Transcription

1 dspic30f/33f 程序员 参考手册 高性能数字信号控制器 2006 Microchip Technology Inc. 初稿 DS70157B_CN

2 请注意以下有关 Microchip 器件代码保护功能的要点 : Microchip 的产品均达到 Microchip 数据手册中所述的技术指标 Microchip 确信 : 在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一 目前, 仍存在着恶意 甚至是非法破坏代码保护功能的行为 就我们所知, 所有这些行为都不是以 Microchip 数据手册中规定的操作规范来使用 Microchip 产品的 这样做的人极可能侵犯了知识产权 Microchip 愿与那些注重代码完整性的客户合作 Microchip 或任何其他半导体厂商均无法保证其代码的安全性 代码保护并不意味着我们保证产品是 牢不可破 的 代码保护功能处于持续发展中 Microchip 承诺将不断改进产品的代码保护功能 任何试图破坏 Microchip 代码保护功能的行为均可视为违反了 数字器件千年版权法案 (Digital Millennium Copyright Act) 如果这种行为导致他人在未经授权的情况下, 能访问您的软件或其他受版权保护的成果, 您有权依据该法案提起诉讼, 从而制止这种行为 提供本文档的中文版本仅为了便于理解 请勿忽视文档中包含的英文部分, 因为其中提供了有关 Microchip 产品性能和使用情况的有用信息 Microchip Technology Inc. 及其分公司和相关公司 各级主管与员工及事务代理机构对译文中可能存在的任何差错不承担任何责任 建议参考 Microchip Technology Inc. 的英文原版文档 本出版物中所述的器件应用信息及其他类似内容仅为您提供便利, 它们可能由更新之信息所替代 确保应用符合技术规范, 是您自身应负的责任 Microchip 对这些信息不作任何明示或暗示 书面或口头 法定或其他形式的声明或担保, 包括但不限于针对其使用情况 质量 性能 适销性或特定用途的适用性的声明或担保 Microchip 对因这些信息及使用这些信息而引起的后果不承担任何责任 如果将 Microchip 器件用于生命维持和 / 或生命安全应用, 一切风险由买方自负 买方同意在由此引发任何一切伤害 索赔 诉讼或费用时, 会维护和保障 Microchip 免于承担法律责任, 并加以赔偿 在 Microchip 知识产权保护下, 不得暗中或以其他方式转让任何许可证 商标 Microchip 的名称和徽标组合 Microchip 徽标 Accuron dspic KEELOQ microid MPLAB PIC PICmicro PICSTART PRO MATE PowerSmart rfpic 和 SmartShunt 均为 Microchip Technology Inc. 在美国和其他国家或地区的注册商标 AmpLab FilterLab Migratable Memory MXDEV MXLAB SEEVAL SmartSensor 和 The Embedded Control Solutions Company 均为 Microchip Technology Inc. 在美国的注册商标 Analog-for-the-Digital Age Application Maestro dspicdem dspicdem.net dspicworks ECAN ECONOMONITOR FanSense FlexROM fuzzylab In-Circuit Serial Programming ICSP ICEPIC Linear Active Thermistor Mindi MiWi MPASM MPLIB MPLINK PICkit PICDEM PICDEM.net PICLAB PICtail PowerCal PowerInfo PowerMate PowerTool REAL ICE rflab rfpicdem Select Mode Smart Serial SmartTel Total Endurance UNI/O WiperLock 和 ZENA 均为 Microchip Technology Inc. 在美国和其他国家或地区的商标 SQTP 是 Microchip Technology Inc. 在美国的服务标记 在此提及的所有其他商标均为各持有公司所有 2006, Microchip Technology Inc. 版权所有 Microchip 位于美国亚利桑那州 Chandler 和 Tempe 位于俄勒冈州 Gresham 及位于加利福尼亚州 Mountain View 的全球总部 设计中心和晶圆生产厂均于通过了 ISO/TS-16949:2002 认证 公司在 PICmicro 8 位单片机 KEELOQ 跳码器件 串行 EEPROM 单片机外设 非易失性存储器和模拟产品方面的质量体系流程均符合 ISO/TS-16949:2002 此外, Microchip 在开发系统的设计和生产方面的质量体系也已通过了 ISO 9001:2000 认证 DS70157B_CN 第 ii 页初稿 2006 Microchip Technology Inc.

3 M 目录 页码 第 1 章简介 1-1 简介 本手册的宗旨 开发支持 风格和符号的约定 指令集符号 相关技术文档 第 2 章编程模型 2-1 dspic30f/33f 概述 编程模型 第 3 章指令集概述 3-1 简介 指令集概述 指令集汇总表 第 4 章指令集详解 4-1 数据寻址模式 程序空间寻址模式 指令停顿 字节操作 字传送操作 使用 10 位立即数操作数 软件堆栈指针和帧指针 条件转移指令 Z 状态位 规定的工作寄存器用法 DSP 数据格式 累加器的使用 累加器访问 DSP MAC 类指令 DSP 累加器类指令 使用 FBCL 指令换算数据 使用 FBCL 指令将累加器中内容归一化 第 5 章 5-1 指令符号 指令编码字段描述符介绍 示例 第 6 章参考信息 6-1 数据存储区映射 内核特殊功能寄存器映射 程序存储区映射 指令位映射 指令集汇总表 Microchip Technology Inc. 初稿 DS70157B_CN 第 iii 页

4 dspic30f/33f 程序员参考手册 注 : DS70157B_CN 第 iv 页初稿 2006 Microchip Technology Inc.

5 1 第 1 章简介 简介 目录 本章主要包括以下内容 : 1.1 简介 本手册的宗旨 开发支持 风格和符号的约定 指令集符号 相关技术文档 Microchip Technology Inc. 初稿 DS70157B_CN 第 1-1 页

6 dspic30f/33f 程序员参考手册 1.1 简介 1.2 本手册的宗旨 Microchip 主要生产满足嵌入式控制市场需求的产品 我们是以下产品的领先供应商 : 8 位通用单片机 (PICmicro MCU) dspic30f 和 dspic33f 16 位数字信号控制器 (dspic DSC) 专用和标准的非易失性存储器件 安防器件 (KEELOQ 安防 IC) 专用标准产品欲获得您所感兴趣的全部产品系列, 请申请一份 Microchip 产品选型指南 该文献可从当地的销售办事处或从 Microchip 网址 ( 获得 根据指令字长度和数据线宽度来对 PICmicro MCU 以及 dspic30f 和 dspic33f 器件进行分类 目前器件系列包括 : 1. 低档系列 : 12 位指令字长度, 8 位数据线 2. 中档系列 : 14 位指令字长度, 8 位数据线 3. 高档系列 : 16 位指令字长度, 8 位数据线 4. 增强系列 : 16 位指令字长度, 8 位数据线 5. dspic30f/33f: 24 位指令字长度,16 位数据线本手册是 dspic30f 和 dspic33f DSC 系列器件软件开发人员的参考手册 本手册对指令集进行了详细介绍, 并提供通用信息以帮助用户进行 dspic30f 和 dspic33f 系列器件的软件开发 本手册的内容没有包括有关内核 外设 系统集成或针对具体器件的详细信息 有关器件内核 外设以及系统集成的信息, 请参阅 dspic30f 系列参考手册 (DS70046D_CN) 关于针对具体器件的信息, 请参阅相应器件的数据手册 数据手册提供的信息包括 : 器件存储器映射 器件引脚和封装细节 器件电气特性 器件上包含的外设本手册中给出了大量的代码示例 这些代码示例适用于 dspic30f 或 dspic33f 系列中的任何器件 1.3 开发支持 Microchip 提供了大量的开发工具, 使用户可以高效地开发和调试应用代码 Microchip 的开发工具可以分为四类 : 1. 代码生成 2. 硬件 / 软件调试 3. 器件编程器 4. 产品评估板用户可从 Microchip 网站 ( 或当地的 Microchip 销售办事处获取有关最新工具 产品简介和用户指南的信息 Microchip 还提供了其他参考工具来帮助用户加速开发过程, 包括 : 应用笔记 参考设计 Microchip 网站 当地销售办事处提供的现场应用支持 公司的技术支持热线 Microchip 的网站列出了其他一些有用的链接 DS70157B_CN 第 1-2 页初稿 2006 Microchip Technology Inc.

7 1.4 风格和符号的约定 第 1 章简介 本文档采用了某些风格和字体格式约定 大多数字体约定表示强调的文本与正文的区别 单片机行业中有许多符号和非常规字词的定义和缩写 表 1-1 说明了本文档中所包含的许多约定 1 表 1-1: 文档约定 符号或术语 说明 置 1 强制某一位 / 寄存器的值为逻辑 1 清零 强制某一位 / 寄存器的值为逻辑 0 复位 1) 强制某一寄存器 / 位回到默认状态 2) 复位器件后的状态 某些位将被强制为 0 ( 如中断允许位 ), 而其他位被 强制为 1( 如 I/O 数据方向位 ) 0xnnnn 指定数据 nnnn 为十六进制数 这种约定用于代码示例中 例如, 0x013F 或 0xA800 :( 冒号 ) 用来指定范围, 或寄存器 / 位 / 引脚的组合 如 ACCAU:ACCAH:ACCAL 表示由三个寄存器组成一个 40 位累加器 组合顺序 ( 左 - 右 ) 通常指定一种位置关系 (MSb 到 LSb, 高位到低位 ) < > 指定特定寄存器中位的位置 如 SR<IPL2:IPL0> ( 或 IPL<2:0>) 指定了寄存器和相关位或位的位置 LSb, MSb 表示位段中的最低位或最高位 LSB, MSB, lsw, 表示位段中的最低字节 / 最高字节或最低位字 / 最高位字 msw Courier 字体 用于代码示例 二进制数以及文本中的指令助记符 Times 字体 用于公式和变量 Times, 黑体, 斜体 用于图表 / 公式 / 示例中的说明文本 简介 注 : 注 表示希望再次强调的信息, 帮助您避免常见的错误, 或提醒您注意同一系列器件间的操作区别 在大多数情况下, 注 以阴影的方框出现 ( 如下 ), 除非用于表格中, 这时它位于表格的下方 ( 如表 1-2 所示 ) 注 : 这是一个带阴影注释框中的 注 2006 Microchip Technology Inc. 初稿 DS70157B_CN 第 1-3 页

8 dspic30f/33f 程序员参考手册 1.5 指令集符号 在第 3.2 节和第 6.5 节中的汇总表以及第 5.4 节的中使用了表 1-2 中所示的符号 表 1-2: 指令汇总表和说明中使用的符号 符号 说明 { } 可选字段或操作 [text] 由文本寻址的地址 (text) 文本内容 #text 由文本定义的立即数 a [b, c, d] a 一定在集合 [b, c, d] 中 <n:m> 寄存器位段 {label:} 可选标号名 Acc 累加器 A 或累加器 B AWB 累加器回写 bit4 4 位宽位位置 ( 对于字节模式为 0:7, 对于字模式为 0:15) Expr 绝对地址 标号或表达式 ( 由链接器解析 ) f 文件寄存器地址 lit1 1 位立即数 (0:1) lit4 4 位立即数 (0:15) lit5 5 位立即数 (0:31) lit8 8 位立即数 (0:255) lit10 10 位立即数 ( 对于字节模式为 0:255, 对于字模式为 0:1023) lit14 14 位立即数 (0:16383) lit16 16 位立即数 (0:65535) lit23 23 位立即数 (0: ) Slit4 有符号 4 位立即数 (-8:7) Slit6 有符号 6 位立即数 (-32:31) ( 范围限制为 -16:16) Slit10 有符号 10 位立即数 (-512:511) Slit16 有符号 16 位立即数 (-32768:32767) TOS 栈顶 Wb 基本工作寄存器 Wd 目的工作寄存器 ( 直接和间接寻址 ) Wm, Wn 除法工作寄存器对 ( 被除数, 除数 ) Wm*Wm 乘法工作寄存器对 ( 相同的源寄存器 ) Wm*Wn 乘法工作寄存器对 ( 不同的源寄存器 ) Wn 既是源工作寄存器又是目的工作寄存器 ( 直接寻址 ) Wnd 目的工作寄存器 ( 直接寻址 ) Wns 源工作寄存器 ( 直接寻址 ) WREG 默认工作寄存器 ( 分配给 W0) Ws 源工作寄存器 ( 直接和间接寻址 ) Wx 源寻址模式和用于 X 数据总线预取操作的工作寄存器 Wxd 用于 X 数据总线预取操作的目的工作寄存器 Wy 源寻址模式和用于 Y 数据总线预取操作的工作寄存器 Wyd 用于 Y 数据总线预取操作的目的工作寄存器 注 : 每个符号的范围取决于指令 对于特定指令的范围, 可参阅第 5 章 DS70157B_CN 第 1-4 页初稿 2006 Microchip Technology Inc.

9 1.6 相关技术文档 Microchip 技术文档 第 1 章简介 Microchip 及其他合作伙伴提供了其他文档来帮助用户使用 dspic30f/dspic33f DSC 进行开发 下面列出了最常用的文档, 当然还有其他文档可供参考 请访问 Microchip 网站 ( 查阅最新发布的技术文档 1 简介 第三方技术文档 Microchip 目前提供了以下 dspic30f/dspic33f 文档 其中许多文档都提供了具体的应用信息, 给出了 dspic30f/dspic33f DSC 的使用 编程和设计实例 1. dspic30f 系列参考手册 (DS70046D_CN) dspic30f 系列参考手册 介绍了有关 dspic30f 器件架构 外设以及系统集成特性的信息 该文档对器件操作进行了详细介绍, 并给出了许多代码示例 这个手册中所包含信息是对 dspic33f 数据手册中信息的补充 2. dspic30f 系列概述 (DS70043F_CN) 和 dspic33f 产品概述 (DS70155C_CN) 这两个文档提供了对这两个系列器件的汇总介绍, 包括器件引脚配置 存储器容量以及外设 3. dspic30f 数据手册 (DS70083) 和 dspic33f 数据手册 (DS70165) 数据手册包括诸如器件引脚配置及封装详细信息 电气特性和存储器映射在内的器件特定信息 请查询 Microchip 网站 ( 获取已发布的器件数据手册列表 我们遍布全球的第三方合作伙伴也提供了一些文档 Microchip 并没有验证这些文档的技术准确性, 然而, 这些文档有助于理解 Microchip dspic30f 或 dspic33f 器件的操作 可访问 Microchip 网站 ( 以查阅与 dspic30f 和 dspic33f 系列有关的第三方文档 2006 Microchip Technology Inc. 初稿 DS70157B_CN 第 1-5 页

10 dspic30f/33f 程序员参考手册 注 : DS70157B_CN 第 1-6 页初稿 2006 Microchip Technology Inc.

11 第 2 章编程模型 目录 本章对 dspic30f 和 dspic33f 器件进行概括介绍, 主要包括以下内容 : 2.1 dspic30f/33f 概述 编程模型 编程模型 2006 Microchip Technology Inc. 初稿 DS70157B_CN 第 2-1 页

12 dspic30f/33f 程序员参考手册 2.1 dspic30f/33f 概述 dspic30f 和 dspic33f 器件采用改进的哈佛架构内核, 数据线宽度为 16 位, 采用增强指令集, 包含对 DSP 的支持 内核采用具有可变长度操作码字段的 24 位指令字 程序计数器 (PC) 为 23 位宽, 可对最大为 4M x 24 位的用户程序存储空间进行寻址 单周期指令预取机制用来帮助维持吞吐量并提供可预测的执行 大多数指令都在单个周期内执行 使用 DO 和 REPEAT 指令支持无开销的程序循环结构, 这两个指令在任何时候都可被中断 dspic30f 和 dspic33f 拥有 16 个 16 位工作寄存器 每个工作寄存器可作为数据 地址或偏移量寄存器 第 16 个工作寄存器 (W15) 用作中断和调用时的软件堆栈指针 dspic30f 和 dspic33f 架构具有相同的指令集 包括两类指令 :MCU 类指令和 DSP 类指令 该架构将这两类指令进行了无缝集成, 所有指令的执行均由同一个执行单元来实现 该指令集包括多种寻址模式, 且设计为确保最佳的 C 编译器效率 数据空间可寻址为 32K 字或 64KB, 被分成两块, 称为 X 和 Y 数据存储空间 每个存储块有各自独立的地址发生单元 (Address Generation Unit,AGU) MCU 类指令只通过 X 数据空间 AGU 进行操作, 可将整个存储器映射作为一个线性数据空间访问 那些具有两个源操作数的 DSP 类指令通过 X 和 Y 的 AGU 进行操作, 这将数据地址空间分成两个部分,X 和 Y 数据空间的边界视具体器件而定 可以选择以 16K 程序字为边界 ( 由 8 位程序空间可视性页 (Program Space Visibility Page, PSVPAG) 寄存器定义 ) 将数据存储空间的高 32KB 映射到程序存储空间 程序存储空间到数据存储空间的映射功能让任何指令都能象访问数据存储空间一样访问程序存储空间, 这对于数据常数的存放是非常有用的 X 和 Y 地址空间都支持无开销循环缓冲区 ( 模寻址 ) 模寻址省去了 DSP 算法的软件边界检查开销 此外, X AGU 的循环寻址可以与任何 MCU 类指令一起使用 X AGU 还支持位反转寻址, 大幅简化了基为 2 的 FFT 算法对输入或输出数据的重新排序 该款器件内核支持固有 ( 无操作数 ) 寻址 相对寻址 立即数寻址 存储器直接寻址 寄存器直接寻址 寄存器间接寻址以及寄存器偏移量寻址模式 根据功能性要求的不同, 每一条指令都与预先定义的寻址模式组相关联 任何一条指令可支持多达 7 种寻址模式 对于大多数指令, dspic30f/33f 可在每一指令周期内执行数据 ( 或程序数据 ) 存储器读 工作寄存器 ( 数据 ) 读 数据存储器写以及程序 ( 指令 ) 存储器读操作 因此可支持 3 操作数指令, 即允许在单个周期内执行 A + B = C 操作 DSP 引擎具备一个高速 17 位 17 位乘法器 一个 40 位 ALU 两个 40 位饱和累加器和一个 40 位双向桶形移位寄存器 该桶形移位寄存器在单个周期内至多可将一个 40 位的值右移 16 位或左移 16 位 DSP 类指令可以无缝地与所有其他指令一起操作, 设计为可实现最佳的实时性能 MAC 类指令和其他相关指令可以同时从存储器中取出两个数据操作数并将两个工作寄存器相乘 这要求数据空间对于这些指令拆分为两块, 但对所有其他指令保持线性 这是通过为每个地址空间指定某些工作寄存器, 以透明和灵活的方式实现的 dspic30f 具有向量异常机制, 可支持最多 8 个不可屏蔽陷阱源和最多 54 个中断源 dspic33f 具有相似的向量异常机制, 不同的是可支持最多 118 个中断源 两个系列都可为每个中断源分配 7 个优先级之一 DS70157B_CN 第 2-2 页初稿 2006 Microchip Technology Inc.

13 第 2 章编程模型 2.2 编程模型 图 2-1 给出了 dspic30f 和 dspic33f 的编程模型 编程模型中的所有寄存器皆为存储器映射, 并能直接被指令集操作 表 2-1 提供了每一个寄存器的说明 表 2-1: 编程模型寄存器说明 寄存器 ACCA, ACCB CORCON DCOUNT DOEND DOSTART PC PSVPAG RCOUNT SPLIM SR TBLPAG W0 - W15 说明 40 位 DSP 累加器 CPU 内核配置寄存器 DO 循环计数寄存器 DO 循环结束地址寄存器 DO 循环起始地址寄存器 23 位程序计数器程序空间可视性页地址寄存器重复循环计数寄存器堆栈指针限制值寄存器 ALU 和 DSP 引擎 STATUS 寄存器表存储器页地址寄存器工作寄存器阵列 2 编程模型 工作寄存器阵列 默认工作寄存器 (WREG) 软件堆栈帧指针 16 个工作 (W) 寄存器可作为数据 地址或偏移量寄存器 W 寄存器的功能由访问它的指令所决定 字节指令以工作寄存器阵列为操作对象, 将只对目标寄存器的低位字节 (LSB) 产生影响 由于工作寄存器是存储映射的, 因此可以字节宽度的数据存储空间访问方式对低位字节和高位字节进行操作 指令集中的指令可分为两类 : 工作寄存器指令和文件寄存器指令 工作寄存器指令使用工作寄存器阵列作为数据值或作为指向某一存储单元的地址 相反, 文件寄存器指令对包含在指令操作码中的特定存储地址进行操作 文件寄存器指令也使用工作寄存器, 但并不指定指令中所使用的工作寄存器, 而是采用缺省的工作寄存器 (WREG) 工作寄存器 W0 指定为 WREG 用户无法对 WREG 的指定进行编程设定 帧是堆栈中用户定义的存储区域 函数通常使用帧来存放局部变量 W14 被指定作为 LNK ( 分配堆栈帧 ) 和 ULNK ( 释放堆栈帧 ) 指令中使用的堆栈帧指针 然而在未使用堆栈帧指针 LNK 和 ULNK 指令时,W14 可被指令当作普通的工作寄存器使用 有关帧指针的详细内容, 可参阅第 节 软件堆栈帧指针 2006 Microchip Technology Inc. 初稿 DS70157B_CN 第 2-3 页

14 dspic30f/33f 程序员参考手册 图 2-1: 编程模型图 15 0 DIV 和 MUL 结果寄存器 W0 / WREG W1 W2 PUSH.S 指令使用的影子寄存器 DO 指令使用的影子寄存器 W3 W4 图注 MAC 操作数寄存器 W5 W6 W7 W8 工作寄存器 MAC 地址寄存器 W9 W10 W11 W12/MAC 偏移量 W13/MAC 写返回 W14/ 帧指针 W15*/ 堆栈指针 * W15 & SPLIM 没有影子寄存器 SPLIM* 堆栈指针限制寄存器 DSP 累加器 ACCA ACCB 程序计数器 7 0 TBLPAG TABPAG 数据表页地址 7 0 PSVPAG 程序空间可视性页地址 15 0 RCOUNT REPEAT 循环计数器 15 0 DCOUNT DO 循环计数器 22 0 DOSTART 22 0 DOEND 15 0 CORCON DO 循环起始地址 DO 循环结束地址 CPU 内核控制寄存器 OA OB SA SB OAB SAB DA DC IPL2 IPL1 IPL0 RA N OV Z C STATUS 寄存器 SRH SRL DS70157B_CN 第 2-4 页初稿 2006 Microchip Technology Inc.

15 第 2 章编程模型 软件堆栈指针 W15 专用作软件堆栈指针, 将会被函数调用 异常处理以及返回指令自动修改 然而, W15 可像所有其他 W 寄存器一样被任何指令引用 这将简化对堆栈指针的读 写和控制操作 有关堆栈指针的详细信息, 可参阅第 节 软件堆栈指针 堆栈指针限制寄存器 (SPLIM) SPLIM 是与堆栈指针有关的 16 位寄存器, 用来防止堆栈指针上溢以及对超出用户分配堆栈存储区的存储空间进行访问 有关 SPLIM 的详细信息, 可参阅第 节 堆栈指针上溢 累加器 A 和累加器 B 程序计数器 累加器 A (ACCA) 和累加器 B (ACCB) 皆为 40 位宽的寄存器 DSP 类指令通过累加器执行数学和移位操作 每个累加器都是由 3 个存储区映射的寄存器构成 : ACCxU (bit 39-32) ACCxH (bit 31-16) ACCxL (bit 15-0) 有关 ACCA 和 ACCB 使用的详细内容, 可参阅第 4.12 节 累加器的使用 2 编程模型 TBLPAG 寄存器 PSVPAG 寄存器 程序计数器 (PC) 为 23 位宽 通过 PC<22:1> 对 4M x 24 位用户程序存储空间中的指令进行寻址, 其中 PC<0> 总是设定为 0, 以保持指令字对齐并提供与数据存储空间寻址的兼容性 这表明在正常的指令执行过程中, PC 值将以 2 为步长进行递增 位于 0x 及其以上地址的程序存储区用于存放器件配置数据 单元 ID 以及器件 ID 该存储区域不能用来执行用户代码且 PC 也不能访问这个区域 然而, 用户可通过使用表指令对这个区域进行访问 有关访问配置数据 单元 ID 和器件 ID 的详细内容, 可参阅 dspic30f 系列参考手册 (DS70046D_CN) TBLPAG 寄存器用来在表读和表写操作期间存放程序存储地址的高 8 位 表指令用来在程序存储空间和数据存储空间之间传送数据 有关使用表指令访问程序存储区的详细内容, 可参阅 dspic30f 系列参考手册 (DS70046D_CN) 程序空间可视性功能允许用户将 32 KB 的程序存储空间映射到高 32 KB 的数据地址空间 该功能允许通过对数据存储区进行操作的指令透明访问常量数据 PSVPAG 寄存器用于选择映射到数据地址空间的 32 KB 程序存储空间 有关程序空间可视性功能的具体内容, 可参阅 dspic30f 系列参考手册 (DS70046D_CN) 2006 Microchip Technology Inc. 初稿 DS70157B_CN 第 2-5 页

16 dspic30f/33f 程序员参考手册 RCOUNT 寄存器 14 位 RCOUNT 寄存器包含用于 REPEAT 指令的循环计数器 当执行 REPEAT 指令时,RCOUNT 将装载指令重复执行的次数, 如 REPEAT #lit14 指令中的 lit14 或 REPEAT Wn 指令中 Wn 寄存器中的内容 REPEAT 循环将被执行 RCOUNT + 1 次 注 1: 如果 REPEAT 循环执行过程被中断, 则当再次进入前台代码时中断服务程序可将 RCOUNT 清零以退出 REPEAT 循环 2: 有关 REPEAT 循环的详细内容, 可参阅 dspic30f 系列参考手册 (DS70046D_CN) DCOUNT 寄存器 14 位 DCOUNT 寄存器包含用于硬件 DO 循环的循环计数器 当执行 DO 指令时,DCOUNT 将装载指令的循环计数值, 如 DO #lit14,expr 指令中的 lit14 或 DO Ws,Expr 指令中 Ws 寄存器的低 14 位 DO 循环将执行 DCOUNT + 1 次 注 1:DCOUNT 包含一个影子寄存器 有关影子寄存器的信息, 可参阅第 节 影子寄存器 2: 有关 DO 循环的详细内容, 可参阅 dspic30f 系列参考手册 (DS70046D_CN) DOSTART 寄存器 DOSTART 寄存器包含硬件 DO 循环的起始地址 当执行 DO 指令时,DOSTART 将装载紧接 DO 指令的下一条指令的地址 该存储地址为 DO 循环的起始地址 当循环激活时, 程序将在 DO 循环的最后一条指令执行之后继续执行 DOSTART 地址中存储的指令 这种机制可实现零开销循环 注 1:DOSTART 具有一个影子寄存器 有关影子寄存器的信息, 可参阅第 节 影子寄存器 2: 有关 DO 循环的详细内容, 可参阅 dspic30f 系列参考手册 (DS70046D_CN) DOEND 寄存器 DOEND 寄存器包含硬件 DO 循环的终止地址 当执行 DO 指令时,DOEND 将装载 DO 指令中的表达式所指定的地址 该存储地址指定 DO 循环中的最后一条指令 当循环激活且 DOEND 地址中存储的指令被执行后, 程序将继续从 DO 循环起始地址 ( 存储在 DOSTART 寄存器中 ) 开始执行 注 1:DOEND 具有一个影子寄存器 有关影子寄存器的信息, 可参阅第 节 影子寄存器 2: 有关 DO 循环的详细内容, 可参阅 dspic30f 系列参考手册 (DS70046D_CN) DS70157B_CN 第 2-6 页初稿 2006 Microchip Technology Inc.

17 第 2 章编程模型 STATUS 寄存器 MCU ALU 状态位 如寄存器 2-1 所示, 16 位 STATUS 寄存器用于保存最近执行指令的状态信息 其中操作状态位用于 MCU 操作 循环操作以及 DSP 操作 此外, STATUS 寄存器还包含用于中断处理的 CPU 中断优先级位 IPL<2:0> 指令集中的大多数指令都会影响或使用 MCU 操作状态位 大多数逻辑 数学 循环 / 移位和位操作指令都将在执行后修改 MCU 状态位 条件转移指令使用各状态位的状态来确定程序执行流 第 4.8 节 条件转移指令 列出了所有条件转移指令 进位 全零 溢出 负和半进位 (C Z OV N 和 DC) 位用来指示 MCU ALU 的当前状态 这些状态位的状态分别表明指令执行结果是否导致进位 全零 溢出 负的结果或半进位等事件 当执行减法操作时, C 标志位用作借位标志 作为一个特殊的零状态位,Z 状态位可用于扩展精度的算术运算 除使用进位或借位输入的指令 (ADDC CPB SUBB 和 SUBBR) 外, 所有指令都使用状态位 Z 作为普通 Z 标志 有关 Z 状态位的使用, 可参阅第 4.9 节 Z 状态位 注 1: 在执行 PUSH.S 指令时, 所有 MCU 位都将被保存到影子寄存器中 在执行 POP.S 指令时, 它们将恢复原先的内容 2: 在异常处理过程中, 除 DC 标志 ( 不在 SRL 中 ) 外的所有 MCU 位都将被压入堆栈 ( 见第 节 软件堆栈指针 ) 2 编程模型 循环状态位 DO 激活和 REPEAT 激活 (DA 和 RA) 状态位用来指明循环是否处于激活状态 DO 指令将对 DA 标志产生影响以表明 DO 循环处于激活状态 当执行 DO 循环中的第一条指令时,DA 标志位将被置 1 当循环中的最后一条指令执行完时,DA 标志位将被清零 同样,RA 标志表明 REPEAT 指令是否正在执行, 而且只有 REPEAT 指令才会对该标志位的状态产生影响 当被重复的指令开始执行时, RA 标志位将被置 1 当被重复的指令完成最后一次执行时, 该标志位将被清零 DA 标志为只读位 这表明不能通过写 1 到 DA 来启动循环, 也不能通过清零 DA 来终止循环 如果必须提前终止 DO 循环, 应使用 EDT 位 (CORCON<11>) 由于 RA 标志也是只读位, 因此也不能对该位直接清零 然而, 如果 REPEAT 或其目标指令被中断, 中断服务程序可对位于堆栈中 SRL 的 RA 标志位清零 该操作将在程序执行从中断服务程序返回时禁止循环操作, 因为此时恢复的 RA 将为 Microchip Technology Inc. 初稿 DS70157B_CN 第 2-7 页

18 dspic30f/33f 程序员参考手册 DSP ALU 状态位 中断优先级状态位 DSP 类指令使用 STATUS 寄存器的高位字节 (SRH), 当数据经过其中一个加法器时,SRH 中内容将被修改 SRH 为两个累加器均提供了溢出和饱和状态信息 饱和 A 饱和 B 溢出 A 和溢出 B (SA SB OA 和 OB) 状态位提供了单独的累加器状态 而饱和 AB 和溢出 AB (SAB 和 OAB) 状态位提供了联合的累加器状态 SAB 和 OAB 状态位使得软件开发人员可高效地检查寄存器是否出现饱和或溢出状况 OA 和 OB 状态位用来指示一个操作是否产生溢出至相应累加器的警戒位 (bit 32-39) 只有当处理器处于超饱和模式或饱和模式被禁止时, 这种情况才会发生 这表明用累加器的低 31 位无法表示操作产生的数值 SA 和 SB 状态位用来指示一个操作是否从相应累加器的最高位产生溢出 无论何种饱和模式 ( 禁止 常规或超饱和 ), SA 位和 SB 位都处于 粘住 状态 即当 SA 或 SB 置 1 时, 该位只能由软件手动清零, 而与后续的 DSP 操作无关 在需要时, 我们建议使用 BCLR 指令对这些位进行清零 为简便起见, OA 和 OB 状态位通过逻辑或形成 OAB 标志, 而将 SA 和 SB 状态位通过逻辑或形成 SAB 标志 当实现用到两个累加器的算法时, 通过这些累加器状态位可实现高效的溢出和饱和检查 在进行算术运算溢出检查时, 只需查询 OAB 即可完成, 而不再需要单独查询 OA 和 OB 状态位 同样, 当进行饱和检查时, 可只检查 SAB 而不是所有 SA 和 SB 状态位 注意, 清零 SAB 标志将同时对 SA 和 SB 位进行清零 SRL 中的三个中断优先级 (IPL) 位 SR<7:5> 以及 IPL3 位 CORCON<3> 对用于异常处理的 CPU IPL 进行设定 异常包括中断和硬件陷阱 中断具有的优先级为 0 至 7, 可由用户进行定义, 而硬件陷阱的优先级是固定的, 为 8 至 15 第 4 中断优先级位 IPL3 为一个特殊的 IPL 位, 只可由用户对其进行读或清零 该位只在硬件陷阱激活时才被置 1, 在陷阱处理后被清零 CPU 的 IPL 用来标识可中断处理器的最低优先级的异常 当等待处理的异常具有比 CPU IPL 更高的中断优先级时,CPU 才会对其进行处理 这表明, 如果 IPL 为 0, 所有优先级为 1 或更高的异常都可中断处理器 如果 IPL 为 7, 只有硬件陷阱才可中断处理器 当正在处理一个异常时, IPL 将自动设定为该异常的优先级, 这将禁止所有同等或更低优先级的异常 当然而, 由于 IPL 字段为可读 / 写, 用户可在中断服务程序中修改 IPL 的低三位值以控制何种异常具有优先处理权 由于在异常处理过程中 SRL 将被压入堆栈, 因此在异常处理之后原先的 IPL 将被恢复 如果需要, 用户也可通过设置 NSTDIS 位 INTCON1<15> 来避免异常嵌套 注 : 有关异常处理的全部信息可参阅 dspic30f 系列参考手册 (DS70046D_CN) DS70157B_CN 第 2-8 页初稿 2006 Microchip Technology Inc.

19 第 2 章编程模型 内核控制寄存器 如寄存器 2-2 所示,16 位 CPU 内核控制寄存器 (CORCON) 用来对 CPU 的配置进行设定 该寄存器的功能包括 : 将程序存储空间映射到数据存储空间 使能 ACCA 和 ACCB 的饱和功能 设定数据空间写饱和模式 设定累加器饱和和舍入模式 设定 DSP 操作的乘法器模式 提前终止 DO 循环 在器件复位时, CORCON 设定为 0x0020, 设置以下工作模式 : 程序存储空间未映射到数据存储空间 (PSV = 0) 禁止 ACCA 和 ACCB 饱和 (SATA = 0, SATB = 0) 使能数据空间写饱和 (SATDW = 1) 累加器饱和模式设定为普通 (ACCSAT = 0) 设定累加器舍入模式为无偏型 (RND = 0) DSP 乘法模式设置为有符号小数类型 (US = 0, IF = 0) 除设置 CPU 模式外,CORCON 还包含 DO 循环嵌套等级 (DL<2:0>) 的信息以及表明是否正在处理陷阱异常的 IPL<3> 状态位 2 编程模型 影子寄存器 影子寄存器用作暂存寄存器 在某些事件发生时, 影子寄存器与其相关主寄存器之间能够实现存储内容的传送 编程模型中的一些寄存器具有影子寄存器 在 DO POP.S 或 PUSH.S 指令的执行过程中, 将会使用到这些影子寄存器 表 2-2 给出了影子寄存器的使用 表 2-2: 自动影子寄存器使用 地址 DO POP.S/PUSH.S DCOUNT 使用 DOSTART 使用 DOEND 使用 STATUS 寄存器 DC, N, OV, Z 和 C 位 使用 W0 - W3 使用 由于 DCOUNT DOSTART 和 DOEND 寄存器都具有影子寄存器, 因此可在没有额外开销的情况下实现 DO 循环嵌套的功能 所有影子寄存器的深度皆为一个寄存器, 因此可实现一级 DO 循环嵌套 在 CORCON 寄存器 DO 循环嵌套等级状态位 CORCON<10:8> 的支持下, 在程序中可实现更多级 DO 循环嵌套 注 : 所有影子寄存器的深度皆为一个寄存器, 且不能对其进行直接访问 更多级影子功能可通过软件堆栈用软件实现 2006 Microchip Technology Inc. 初稿 DS70157B_CN 第 2-9 页

20 dspic30f/33f 程序员参考手册 寄存器 2-1: SR, STATUS 寄存器 高位字节 (SRH): R-0 R-0 R/C-0 R/C-0 R-0 R/C-0 R-0 R/W-0 OA OB SA SB OAB SAB DA DC bit 15 bit 8 低位字节 (SRL): R/W-0 R/W-0 R/W-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0 IPL<2:0> RA N OV Z C bit 7 bit 0 bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9 bit 8 bit 7-5 bit 4 bit 3 bit 2 OA: 累加器 A 溢出位 1 = 累加器 A 溢出 0 = 累加器 A 未溢出 OB: 累加器 B 溢出位 1 = 累加器 B 溢出 0 = 累加器 B 未溢出 (1, 2) SA: 累加器 A 饱和位 1 = 累加器 A 饱和或在某刻已处于饱和 0 = 累加器 A 未饱和 SB: 累加器 B 饱和位 (1, 2) 1 = 累加器 B 饱和或在某刻已处于饱和 0 = 累加器 B 未饱和 OAB:OA OB 联合累加器溢出位 1 = 累加器 A 或 B 溢出 0 = 累加器 A 或 B 皆未溢出 (1, 2, 3) SAB:SA SB 联合累加器饱和位 1 = 累加器 A 或 B 饱和或在某刻已处于饱和 0 = 累加器 A 或 B 皆未溢出 (4) DA:DO 循环激活位 1 = DO 循环在进行 0 = DO 循环不在进行 DC:MCU ALU 半进位位 1 = 低半字节最高位发生进位 0 = 低半字节最高位未发生进位 (5) IPL<2:0>: 中断优先级位 111 = CPU 中断优先级是 7 (15) 禁止用户中断 110 = CPU 中断优先级是 6 (14) 101 = CPU 中断优先级是 5 (13) 100 = CPU 中断优先级是 4 (12) 011 = CPU 中断优先级是 3 (11) 010 = CPU 中断优先级是 2 (10) 001 = CPU 中断优先级是 1 (9) 000 = CPU 中断优先级是 0 (8) RA:REPEAT 循环激活位 1 = REPEAT 循环在进行 0 = REPEAT 循环不在进行 N:MCU ALU 负位 1 = 操作结果为负 0 = 操作结果非负 OV:MCU ALU 溢出位 1 = 发生溢出 0 = 未发生溢出 DS70157B_CN 第 2-10 页初稿 2006 Microchip Technology Inc.

21 第 2 章编程模型 寄存器 2-1: SR, STATUS 寄存器 ( 续 ) bit 1 (6) Z:MCU ALU 零位 1 = 操作结果为零 0 = 操作结果非零 bit 0 C:MCU ALU 进位 / 借位位 1 = 最高位发生进位 0 = 最高位未发生进位 注 1: 可对该位进行读或清零操作, 但不能置 1 2: 一旦该位置 1, 必须由软件手动清零 3: 对该位进行清零将导致 SA 和 SB 清零 4: 该位是只读位 5:IPL<2:0> 位与 IPL<3> 位 (CORCON<3>) 组合形成 CPU 断优先级 如果 IPL<3> = 1, 则圆括 号中的值即指 IPL 6: 有关 ADDC CP SUBB 和 SUBBR 指令的操作可参阅第 4.9 节 Z 状态位 图注 : R = 可读位 W = 可写位 C = 可清零位 -n = POR 时的值 1 = 置 1 0 = 清零 2 编程模型 2006 Microchip Technology Inc. 初稿 DS70157B_CN 第 2-11 页

22 dspic30f/33f 程序员参考手册 寄存器 2-2: CORCON, 内核控制寄存器 高位字节 : U U U R/W-0 R(0)/W-0 R-0 R-0 R/W-0 US EDT DL<2:0> bit 15 bit 8 低位字节 : R/W-0 R/W-0 R/W-1 R/W-0 R/C-0 R/W-0 R/W-0 R/W-0 SATA SATB SATDW ACCSAT IPL3 PSV RND IF bit 7 bit 0 bit 未用 bit 12 US: 无符号或有符号乘法器模式选择位 1 = 使能 DSP 乘法操作为无符号模式 0 = 使能 DSP 乘法操作为有符号模式 bit 11 EDT: 提前终止 DO 循环控制位 (1) 1 = 在当前迭代结束时终止执行 DO 循环 0 = 无影响 bit 10-8 DL<2:0>: DO 循环嵌套级别状态位 (2, 3) 111 = DO 循环位于 7 级嵌套 110 = DO 循环位于 6 级嵌套 110 = DO 循环位于 5 级嵌套 110 = DO 循环位于 4 级嵌套 011 = DO 循环位于 3 级嵌套 010 = DO 循环位于 2 级嵌套 001 = DO 循环处于激活状态, 但并未嵌套 ( 仅是 1 级 ) 000 = DO 循环并未激活 bit 7 SATA:ACCA 饱和使能位 1 = 使能累加器 A 饱和 0 = 禁止累加器 A 饱和 bit 6 SATB:ACCB 饱和使能位 1 = 使能累加器 B 饱和 0 = 禁止累加器 B 饱和 bit 5 SATDW:DSP 引擎对数据空间写饱和使能位 1 = 使能数据空间写饱和 0 = 禁止数据空间写饱和 bit 4 ACCSAT: 累加器饱和模式选择位 1 = 9.31 饱和 ( 超饱和 ) 0 = 1.31 饱和 ( 普通饱和 ) (4, 5) bit 3 IPL3: 中断优先级 3 状态位 1 = CPU 中断优先级为 8 或更高 ( 激活陷阱异常 ) 0 = CPU 中断优先级为 7 或更低 ( 未激活陷阱异常 ) bit 2 PSV: 数据空间中的 PSV 使能位 1 = 使能数据空间中的 PSV 0 = 禁止数据空间中的 PSV DS70157B_CN 第 2-12 页初稿 2006 Microchip Technology Inc.

23 第 2 章编程模型 寄存器 2-2: CORCON, 内核控制寄存器 ( 续 ) bit 1 RND: 舍入模式选择位 1 = 使能有偏 ( 常规 ) 舍入 0 = 使能无偏 ( 收敛 ) 舍入 bit 0 IF: 整数或小数乘法模式选择位 1 = 使能整数模式的 DSP 乘法操作 0 = 使能小数模式的 DSP 乘法操作 注 1: 该位总是读为 0 2:DL<2:1> 为只读位 3:DO 循环嵌套的前两级由硬件处理 4: 可对该位进行读或清零操作, 但不能将其置 1 5: 该位与 IPL<2:0> 位 (SR<7:5>) 组合形成 CPU 中断优先级 图注 : 2 R = 可读位 W = 可写位 C = 可清零位 x = 未知 -n = POR 时的值 1 = 置 1 0 = 清零 U = 未用位, 读作 0 编程模型 2006 Microchip Technology Inc. 初稿 DS70157B_CN 第 2-13 页

24 dspic30f/33f 程序员参考手册 注 : DS70157B_CN 第 2-14 页初稿 2006 Microchip Technology Inc.

25 第 3 章指令集概述 目录 本章主要包括以下内容 : 3.1 简介 指令集概述 指令集汇总表 指令集概述 2006 Microchip Technology Inc. 初稿 DS70157B_CN 第 3-1 页

26 dspic30f/33f 程序员参考手册 3.1 简介 3.2 指令集概述 dspic30f/33f 指令集提供了一整套支持传统单片机应用的指令, 以及一类支持数学密集型应用的指令 由于保留了几乎所有 PICmicro MCU 指令集的功能, 该混合指令集使得已熟悉 PICmicro 单片机的用户可以很容易地移植到 dspic DSC 器件 dspic30f/33f 指令集包含 84 条指令, 如表 3-1 所示可分为十个不同的功能组 表 1-2 对表 3-2 至表 3-11 指令汇总表中使用的符号进行了定义 这些表对每一条指令的语法 说明 存储以及执行要求进行了定义 存储要求以 24 位指令字的方式来表征, 而执行要求以指令周期的方式来表征 表 3-1: dspic30f/33f 指令组 功能组 汇总表 页码 传送指令 表 数学指令 表 逻辑指令 表 循环 / 移位指令 表 位操作指令 表 比较 / 跳过指令 表 程序流指令 表 影子 / 堆栈指令 表 控制指令 表 DSP 类指令 表 多周期指令 多数指令具有多种不同的寻址模式以及执行流, 这需要不同的指令形式 例如, 共有 6 种不同的 ADD 指令, 而每一种指令形式都具有其自身的指令编码 第 3 章 指令集概述 提供了指令格式的说明以及特定指令的操作 除此之外, 第 6 章 参考信息 给出了一个以阿拉伯字母顺序排列的指令集总表 如指令汇总表所示, 大多数指令的执行时间为一个指令周期, 但存在以下例外 : 指令 DO MOV.D POP.D PUSH.D TBLRDH TBLRDL TBLWTH 和 TBLWTL 的执行时间为 2 个指令周期 指令 DIV.S DIV.U 和 DIVF 为单周期指令, 应该作为 REPEAT 指令的目标被连续执行 18 次 改变程序计数器的指令执行时间同样需要 2 个指令周期, 但需要额外的一个指令周期来执行 NOP 指令 对于 SKIP 指令, 当跳过双字指令时需要 3 个指令周期来执行, 其中 2 个周期执行 NOP 指令 RETFIE RETLW 和 RETURN 是改变程序计数器的特殊指令 这些指令的执行时间为 3 个指令周期 如果有异常等待处理时, 将执行 2 个周期 注 : 当指令使用程序空间可视性以访问数据空间的方式访问程序存储空间时将导致一个或两个周期的延时 然而, 当 REPEAT 循环的目标指令以访问数据空间的方式访问程序储空间时, 只有目标指令的第一次执行会发生延时 有关具体内容可参阅 dspic30f 系列参考手册 (DS70046D_CN) DS70157B_CN 第 3-2 页初稿 2006 Microchip Technology Inc.

27 第 3 章指令集概述 多字指令 如表 3-2: 传送指令 所定义, 几乎所有的指令都占用一个指令字 (24 位 ), 但表 3-8 中所列的程序流指令 CALL DO 和 GOTO 例外 因为这些指令的操作码中包含较大的立即数操作数, 因此这些指令需要两个字的存储空间 3.3 指令集汇总表 表 3-2: 传送指令 汇编语法 说明 字数 周期数 页码 EXCH Wns,Wnd 将 Wns 和 Wnd 中的内容进行交换 MOV f {,WREG} ( 见注 ) 将 f 中内容传送到目的寄存器 MOV WREG,f 将 WREG 中内容传送到 f MOV f,wnd 将 f 中内容传送到 Wnd MOV Wns,f 将 Wns 中内容传送到 f MOV.B #lit8,wnd 将 8 位立即数传送到 Wnd MOV #lit16,wnd 将 16 位立即数传送到 Wnd MOV [Ws+Slit10],Wnd 将 [Ws + 有符号 10 位偏移量 ] 中的内容 传送到 Wnd MOV Wns,[Wd+Slit10] 将 Wns 中的内容传送到 [Wd + 有符号 位偏移量 ] MOV Ws,Wd 将 Ws 中的内容传送到 Wd MOV.D Ws,Wnd 将 Ws:Ws+1 中的内容传送到 Wnd:Wnd+1 MOV.D Wns,Wd 将 Wns:Wns+1 中的内容传送到 Wd:Wd+1 SWAP Wn Wn = 对 Wn 进行字节或半字节交换 TBLRDH Ws,Wd 将高程序字读入 Wd TBLRDL Ws,Wd 将低程序字读入 Wd TBLWTH Ws,Wd 将 Ws 中的内容写入高程序字 TBLWTL Ws,Wd 将 Ws 中的内容写入低程序字 注 : 当指定了可选的操作码 {,WREG} 时, 指令的目的寄存器为 WREG 当未指定 {,WREG} 时, 指令的目的寄存器为文件寄存器 f 3 指令集概述 2006 Microchip Technology Inc. 初稿 DS70157B_CN 第 3-3 页

28 dspic30f/33f 程序员参考手册 表 3-3: 数学指令 汇编语法 说明 字数 周期数 页码 ADD f {,WREG} (1) 目的寄存器 = f + WREG ADD #lit10,wn Wn = lit10 + Wn ADD Wb,#lit5,Wd Wd = Wb + lit ADD Wb,Ws,Wd Wd = Wb + Ws ADDC f {,WREG} (1) 目的寄存器 = f + WREG + (C) ADDC #lit10,wn Wn = lit10 + Wn + (C) ADDC Wb,#lit5,Wd Wd = Wb + lit5 + (C) ADDC Wb,Ws,Wd Wd = Wb + Ws + (C) DAW.B Wn Wn = 十进制调整 Wn DEC f {,WREG} (1) 目的寄存器 = f DEC Ws,Wd Wd = Ws DEC2 f {,WREG} (1) 目的寄存器 = f DEC2 Ws,Wd Wd = Ws DIV.S Wm, Wn 有符号 16/16 位整数除法 1 18 (2) DIV.SD Wm, Wn 有符号 32/16 位整数除法 1 18 (2) DIV.U Wm, Wn 无符号 16/16 位整数除法 1 18 (2) DIV.UD Wm, Wn 无符号 32/16 位整数除法 1 18 (2) DIVF Wm, Wn 有符号 16/16 位小数除法 1 18 (2) INC f {,WREG} (1) 目的寄存器 = f INC Ws,Wd Wd = Ws INC2 f {,WREG} (1) 目的寄存器 = f INC2 Ws,Wd Wd = Ws MUL f W3:W2 = f * WREG MUL.SS Wb,Ws,Wnd {Wnd+1,Wnd} = sign(wb) * sign(ws) MUL.SU Wb,#lit5,Wnd {Wnd+1,Wnd} = sign(wb) * unsign(lit5) MUL.SU Wb,Ws,Wnd {Wnd+1,Wnd} = sign(wb) * unsign(ws) MUL.US Wb,Ws,Wnd {Wnd+1,Wnd} = unsign(wb) * sign(ws) MUL.UU Wb,#lit5,Wnd {Wnd+1,Wnd} = unsign(wb) * unsign(lit5) MUL.UU Wb,Ws,Wnd {Wnd+1,Wnd} = unsign(wb) * unsign(ws) SE Ws,Wnd Wnd = 符号扩展 Ws SUB f {,WREG} (1) 目的寄存器 = f - WREG SUB #lit10,wn Wn = Wn lit SUB Wb,#lit5,Wd Wd = Wb lit SUB Wb,Ws,Wd Wd = Wb Ws SUBB f {,WREG} (1) 目的寄存器 = f WREG (C) SUBB #lit10,wn Wn = Wn lit10 (C) SUBB Wb,#lit5,Wd Wd = Wb lit5 (C) SUBB Wb,Ws,Wd Wd = Wb Ws (C) SUBBR f {,WREG} (1) 目的寄存器 = WREG f (C) SUBBR Wb,#lit5,Wd Wd = lit5 Wb (C) SUBBR Wb,Ws,Wd Wd = Ws Wb (C) SUBR f {,WREG} (1) 目的寄存器 = WREG f SUBR Wb,#lit5,Wd Wd = lit5 Wb SUBR Wb,Ws,Wd Wd = Ws Wb ZE Ws,Wnd Wnd = 零扩展 Ws 注 1: 当指定可选的 {,WREG} 操作数时, 指令的目的寄存器为 WREG 当未指定 {,WREG} 时, 指令的目的寄存器是文件寄存器 f 2: 除法指令前必须加上一条 REPEAT #17 指令, 这样除法指令才能连续执行 18 次 DS70157B_CN 第 3-4 页初稿 2006 Microchip Technology Inc.

29 第 3 章指令集概述 表 3-4: 逻辑指令 汇编语法 说明 字数 周期数 页码 AND f {,WREG} ( 见注 ) 目的寄存器 = f.and. WREG AND #lit10,wn Wn = lit10.and. Wn AND Wb,#lit5,Wd Wd = Wb.AND. lit AND Wb,Ws,Wd Wd = Wb.AND. Ws CLR f f = 0x CLR WREG WREG = 0x CLR Wd Wd = 0x COM f {,WREG} ( 见注 ) 目的寄存器 = f COM Ws,Wd Wd = Ws IOR f {,WREG} ( 见注 ) 目的寄存器 = f.ior. WREG IOR #lit10,wn Wn = lit10.ior. Wn IOR Wb,#lit5,Wd Wd = Wb.IOR. lit IOR Wb,Ws,Wd Wd = Wb.IOR. Ws NEG f {,WREG} ( 见注 ) 目的寄存器 = f NEG Ws,Wd Wd = Ws SETM f f = 0xFFFF SETM WREG WREG = 0xFFFF SETM Wd Wd = 0xFFFF XOR f {,WREG} ( 见注 ) 目的寄存器 = f.xor. WREG XOR #lit10,wn Wn = lit10.xor. Wn XOR Wb,#lit5,Wd Wd = Wb.XOR. lit XOR Wb,Ws,Wd Wd = Wb.XOR. Ws 注 : 当指定可选的 {,WREG} 操作数时, 指令的目的寄存器为 WREG 当未指定 {,WREG} 时, 指令的目的寄存器是文件寄存器 f 3 指令集概述 2006 Microchip Technology Inc. 初稿 DS70157B_CN 第 3-5 页

30 dspic30f/33f 程序员参考手册 表 3-5: 循环移位指令 汇编语法 说明 字数 周期数 页码 ASR f {,WREG} ( 见注 ) 目的寄存器 = f 算术右移 1 位 ASR Ws,Wd Wd = Ws 算术右移 1 位 ASR Wb,#lit4,Wnd Wnd = Wb 算术右移 lit4 位 ASR Wb,Wns,Wnd Wnd = Wb 算术右移 Wns 位 LSR f {,WREG} ( 见注 ) 目的寄存器 = f 逻辑右移 1 位 LSR Ws,Wd Wd = Ws 逻辑右移 1 位 LSR Wb,#lit4,Wnd Wnd = Wb 逻辑右移 lit4 位 LSR Wb,Wns,Wnd Wnd = Wb 逻辑右移 Wns 位 RLC f {,WREG} ( 见注 ) 目的寄存器 = f 带进位位循环左移 1 位 RLC Ws,Wd Wd = Ws 带进位位循环左移 1 位 RLNC f {,WREG} ( 见注 ) 目的寄存器 = f 循环左移 ( 不带进位位 ) 位 RLNC Ws,Wd Wd = Ws 循环左移 ( 不带进位位 ) 1 位 RRC f {,WREG} ( 见注 ) 目的寄存器 = f 带进位位循环右移 1 位 RRC Ws,Wd Wd = Ws 带进位位循环右移 1 位 RRNC f {,WREG} ( 见注 ) f 循环右移 ( 不带进位位 ) 1 位 RRNC Ws,Wd Wd = Ws 循环右移 ( 不带进位位 ) 1 位 SL f {,WREG} ( 见注 ) 目的寄存器 = f 左移 1 位 SL Ws,Wd Wd = Ws 左移 1 位 SL Wb,#lit4,Wnd Wnd = Wb 左移 lit4 位 SL Wb,Wns,Wnd Wnd = Wb 左移 Wns 位 注 : 当指定可选的 {,WREG} 操作数时, 指令的目的寄存器为 WREG 当未指定 {,WREG} 时, 指令的目的寄存器是文件寄存器 f DS70157B_CN 第 3-6 页初稿 2006 Microchip Technology Inc.

31 第 3 章指令集概述 表 3-6: 位操作指令 汇编语法 说明 字数 周期数 页码 BCLR f,#bit4 位清零 f BCLR Ws,#bit4 位清零 Ws BSET f,#bit4 位置 1 f BSET Ws,#bit4 位置 1 Ws BSW.C Ws,Wb 将 C 位写入 Ws<Wb> BSW.Z Ws,Wb 将 Z 位写入 Ws<Wb> BTG f,#bit4 将 f 进行位翻转 BTG Ws,#bit4 将 Ws 进行位翻转 BTST f,#bit4 位测试 f BTST.C Ws,#bit4 位测试 Ws, 并将被测试位的值存储到进 位标志位 C 中 BTST.Z Ws,#bit4 位测试 Ws, 并将被测试位的补码存储到 全零标志位 Z 中 BTST.C Ws,Wb 位测试 Ws<Wb>, 并将被测试位的值存储 到进位标志位 C 中 BTST.Z Ws,Wb 位测试 Ws<Wb>, 并将被测试位的补码存 储到全零标志位 Z 中 BTSTS f,#bit4 位测试 f, 然后将 f 中的该位置 BTSTS.C Ws,#bit4 位测试 Ws, 并将被测试位的值存储到进 位标志位 C 中, 然后将 Ws 中的该位置 1 BTSTS.Z Ws,#bit4 位测试 Ws, 并将被测试位的补码存储到全零标志位 Z 中, 然后将 Ws 中的该位置 FBCL Ws,Wnd 从左边 (MSb) 查找位变化 FF1L Ws,Wnd 从左边 (MSb) 查找第一个 FF1R Ws,Wnd 从右边 (LSb) 查找第一个 指令集概述 2006 Microchip Technology Inc. 初稿 DS70157B_CN 第 3-7 页

32 dspic30f/33f 程序员参考手册 表 3-7: 比较 / 跳过指令 汇编语法 说明 字数 周期数 ( 见注 ) 页码 BTSC f,#bit4 位测试 f, 如果为 0 则跳过 1 1 (2 或 3) 5-60 BTSC Ws,#bit4 位测试 Ws, 如果为 0 则跳过 1 1 (2 或 3) 5-62 BTSS f,#bit4 位测试 f, 如果为 1 则跳过 1 1 (2 或 3) 5-64 BTSS Ws,#bit4 位测试 Ws, 如果为 1 则跳过 1 1 (2 或 3) 5-65 CP f 比较 (f WREG) CP Wb,#lit5 比较 (Wb lit5) CP Wb,Ws 比较 (Wb Ws) CP0 f 比较 (f 0x0000) CP0 Ws 比较 (Ws 0x0000) CPB f 带借位位比较 (f WREG C) CPB Wb,#lit5 带借位位比较 (Wb lit5 C) CPB Wb,Ws 带借位位比较 (Wb Ws C) CPSEQ Wb, Wn 比较 (Wb Wn), 如果 = 则跳过 1 1 (2 或 3) 5-91 CPSGT Wb, Wn 比较 (Wb Wn), 如果 > 则跳过 1 1 (2 或 3) 5-92 CPSLT Wb, Wn 比较 (Wb Wn), 如果 < 则跳过 1 1 (2 或 3) 5-93 CPSNE Wb, Wn 比较 (Wb Wn), 如果 则跳过 1 1 (2 或 3) 5-94 注 : 如果未发生跳过, 则条件跳过指令的执行时间为 1 个周期 如果单字指令发生跳过, 则执 行时间为 2 个周期, 而双字指令发生跳过, 则执行时间为 3 个周期 DS70157B_CN 第 3-8 页初稿 2006 Microchip Technology Inc.

33 第 3 章指令集概述 表 3-8: 程序流指令 汇编语法 说明 字数 周期数 页码 BRA Expr 无条件转移 BRA Wn 计算转移 BRA C,Expr 如果进位 ( 无借位 ), 则转移 1 1 (2) (1) 5-33 BRA GE,Expr 如果大于或等于, 则转移 1 1 (2) (1) 5-35 BRA GEU,Expr 如果无符号大于或等于, 则转移 1 1 (2) (1) 5-36 BRA GT,Expr 如果大于, 则转移 1 1 (2) (1) 5-37 BRA GTU,Expr 如果无符号大于, 则转移 1 1 (2) (1) 5-38 BRA LE,Expr 如果小于或等于, 则转移 1 1 (2) (1) 5-39 BRA LEU,Expr 如果无符号小于或等于, 则转移 1 1 (2) (1) 5-40 BRA LT,Expr 如果小于, 则转移 1 1 (2) (1) 5-41 BRA LTU,Expr 如果无符号小于, 则转移 1 1 (2) (1) 5-42 BRA N,Expr 如果为负, 则转移 1 1 (2) (1) 5-43 BRA NC,Expr 如果无进位 ( 有借位 ), 则转移 1 1 (2) (1) 5-44 BRA NN,Expr 如果非负, 则转移 1 1 (2) (1) 5-45 BRA NOV,Expr 如果未溢出, 则转移 1 1 (2) (1) 5-46 BRA NZ,Expr 如果非零, 则转移 1 1 (2) (1) 5-47 BRA OA,Expr 如果累加器 A 溢出, 则转移 1 1 (2) (1) 5-48 BRA OB,Expr 如果累加器 B 溢出, 则转移 1 1 (2) (1) 5-49 BRA OV,Expr 如果溢出, 则转移 1 1 (2) (1) 5-50 BRA SA,Expr 如果累加器 A 饱和, 则转移 1 1 (2) (1) 5-51 BRA SB,Expr 如果累加器 B 饱和, 则转移 1 1 (2) (1) 5-52 BRA Z,Expr 如果为零, 则转移 1 1 (2) (1) 5-53 CALL Expr 调用子程序 CALL Wn 间接调用子程序 DO #lit14,expr 循环执行自下一条指令起到 PC+Expr 之间 的代码 (lit14 + 1) 次 DO Wn,Expr 循环执行自下一条指令起到 PC+Expr 之间 的代码 (Wn+1) 次 GOTO Expr 跳转到地址 GOTO Wn 间接跳转到地址 RCALL Expr 相对调用 RCALL Wn 计算调用 REPEAT #lit14 重复执行下一条指令 (lit14 + 1) 次 REPEAT Wn 重复执行下一条指令 (Wn+1) 次 RETFIE 从中断返回 1 3 (2) (2) RETLW #lit10,wn 从子程序返回, 并将 lit10 存储到 Wn 中 1 3 (2) (2) RETURN 从子程序返回 1 3 (2) (2) 注 1: 如果未发生转移, 则条件转移指令执行时间为 1 个周期 ; 而若转移发生, 则为 2 个周期 2: RETURN 指令执行时间为 3 个周期, 但如果有一个异常等待处理, 则执行 2 个周期 3 指令集概述 2006 Microchip Technology Inc. 初稿 DS70157B_CN 第 3-9 页

34 dspic30f/33f 程序员参考手册 表 3-9: 影子 / 堆栈指令 汇编语法 说明 字数 周期数 页码 LNK #lit14 分配堆栈帧 POP f 栈顶内容弹出到 f POP Wd 栈顶内容弹出到 Wd POP.D Wnd 从栈顶弹出双字到 Wd:Wnd POP.S 将影子寄存器内容弹出到主寄存器 PUSH f 将 f 内容压入栈顶 PUSH Ws 将 Ws 内容压入栈顶 PUSH.D Wns 将 Wns:Wns+1 的内容压入栈顶 PUSH.S 将主寄存器内容压入影子寄存器 ULNK 释放堆栈帧 表 3-10: 控制指令 汇编语法 说明 字数 周期数 页码 CLRWDT 清除看门狗定时器 DISI #lit14 在 (lit14 + 1) 个指令周期内禁止中断 NOP 空操作 NOPR 空操作 PWRSAV #lit1 进入低功耗模式 lit RESET 软件器件复位 表 3-11: DSP 类指令 汇编语法 说明 字数 周期数 页码 ADD Acc 累加器相加 ADD Ws,#Slit4,Acc 将 16 位有符号数加到 Acc CLR Acc,Wx,Wxd,Wy,Wyd,AWB 清零 Acc ED Wm*Wm,Acc,Wx,Wy,Wxd 欧几里德距离 ( 无累加 ) EDAC Wm*Wm,Acc,Wx,Wy,Wxd 欧几里德距离 LAC Ws,#Slit4,Acc 装载 Acc MAC Wm*Wn,Acc,Wx,Wxd,Wy, 相乘并累加 Wyd,AWB MAC Wm*Wm,Acc,Wx,Wxd,Wy,Wyd 平方并累加 MOVSAC Acc,Wx,Wxd,Wy,Wyd,AWB 将 Wx 中内容传送到 Wxd, 并将 Wy 中内容传送到 Wyd MPY Wm*Wn,Acc,Wx,Wxd,Wy,Wyd 将 Wn 与 Wm 相乘, 并将结果存 入 Acc MPY Wm*Wm,Acc,Wx,Wxd,Wy,Wyd 平方, 并将结果存入 Acc MPY.N Wm*Wn,Acc,Wx,Wxd,Wy,Wyd 将 Wn 与 -Wm 相乘, 并将结果 存入 Acc MSC Wm*Wn,Acc,Wx,Wxd,Wy, 将 Wn 与 Wm 相乘, 并将结果从 Wyd,AWB Acc 中减去 NEG Acc 求反 Acc SAC Acc,#Slit4,Wd 存储 Acc 内容 SAC.R Acc,#Slit4,Wd 存储舍入后的 Acc SFTAC Acc,#Slit6 对 Acc 进行算术移位 Slit6 次 SFTAC Acc,Wn 对 Acc 进行算术移位 (Wn) 次 SUB Acc 累加器相减 DS70157B_CN 第 3-10 页初稿 2006 Microchip Technology Inc.

35 第 4 章指令集详解 目录 本章主要包括以下内容 : 4.1 数据寻址模式 程序空间寻址模式 指令停顿 字节操作 字传送操作 使用 10 位立即数操作数 条件转移指令 Z 状态位 规定的工作寄存器用法 DSP 数据格式 累加器的使用 累加器访问 DSP MAC 类指令 DSP 累加器类指令 使用 FBCL 指令换算数据 使用 FBCL 指令将累加器中内容归一化 指令集详解 2006 Microchip Technology Inc. 初稿 DS70157B_CN 第 4-1 页

36 dspic30f/33f 程序员参考手册 4.1 数据寻址模式 dspic30f/33f 对数据存储器的访问, 除几种立即数寻址形式外, 还支持三种固有寻址模式 通过文件寄存器寻址 寄存器直接寻址或寄存器间接寻址模式实现对数据存储器的访问, 而立即数寻址使得指令可以使用固定值作为操作数 通过文件寄存器寻址模式可实现对存放在数据存储空间低 8K 存储区 (Near RAM) 中的数据进行操作, 且可实现工作寄存器和整个 64K 数据空间之间的数据传送 寄存器直接寻址模式用来对 16 个存储区映射的工作寄存器 W0:W15 进行访问 寄存器间接寻址模式通过使用工作寄存器中内容作为有效地址, 可对存储在整个 64K 数据存储空间中的数据进行高效操作 立即数寻址模式并不直接访问数据存储区, 但可使用常量值作为指令操作数 表 4-1 对所有模式的寻址范围进行了汇总 表 4-1: dspic30f/33f 的寻址模式 寻址模式 寻址范围 文件寄存器寻址 文件寄存器寻址 0x0000-0x1FFF ( 见注 ) 寄存器直接寻址 0x0000-0x001F ( 工作寄存器阵列 W0:W15) 寄存器间接寻址 0x0000-0xFFFF 立即数寻址 N/A ( 常量值 ) 注 : 文件寄存器 MOV 的寻址范围是 0x0000-0xFFFE 文件寄存器寻址模式由使用预先确定的数据地址作为操作数的指令使用 大多数支持文件寄存器寻址模式的指令都可对数字存储空间的低 8KB 存储区进行访问, 该存储区又称为 Near RAM 然而,MOV 指令可使用文件寄存器寻址模式对所有 64KB 存储空间进行访问 这将允许把数据存储区中任何地址单元中的数据装载到任一工作寄存器, 以及将任一工作寄存器的内容存放到数据存储区的任何地址单元中 应注意, 文件寄存器寻址模式支持以字节和字两种方式对数据存储空间进行访问, 而 MOV 指令则是例外, 它以字方式对所有 64K 存储空间进行访问 例 4-1 给出了文件寄存器寻址的指令示例 支持文件寄存器寻址的大多数指令以指定寄存器和默认工作寄存器 WREG 为操作对象 ( 见第 节 默认工作寄存器 (WREG) ) 如果指令中只提供一个操作数, WREG 将是一个隐含的操作数, 且操作结果将存回文件寄存器 此时, 该指令实际上是一条读 - 修改 - 写指令 然而, 当指令中同时指定文件寄存器和 WREG 时, 操作结果将存放在 WREG 中, 而文件寄存器中的内容将不发生改变 例 4-2 中给出了文件寄存器和 WREG 之间相互作用的指令示例 注 : 如第 3 章 指令集概述 中的指令汇总表所示, 支持文件寄存器寻址的指令使采用 f 作为操作数 DS70157B_CN 第 4-2 页 2006 Microchip Technology Inc.

37 第 4 章指令集详解 例 4-1: 文件寄存器寻址 DEC 0x1000 ; 对存储于 0x1000 的数据进行递减 : 数据存储区 0x1000 = 0x5555 : 数据存储区 0x1000 = 0x5554 MOV 0x27FE, W0 ; 将存储于 0x27FE 的数据传送到 W0 : W0 = 0x5555 数据存储区 0x27FE = 0x1234 : W0 = 0x1234 数据存储区 0x27FE = 0x1234 例 4-2: 文件寄存器寻址和 WREG AND 0x1000 ; 将 0x1000 和 WREG 的内容相与, 结果存入 0x1000 : W0 (WREG) = 0x332C 数据存储区 0x1000 = 0x5555 : W0 (WREG) = 0x332C 数据存储区 0x1000 = 0x1104 AND 0x1000, WREG ; 将 0x1000 和 WREG 的内容相与, 结果存入 WREG : W0 (WREG) = 0x332C 数据存储区 0x1000 = 0x5555 : W0 (WREG) = 0x1104 数据存储区 0x1000 = 0x 指令集详解 2006 Microchip Technology Inc. DS70157B_CN 第 4-3 页

38 dspic30f/33f 程序员参考手册 寄存器直接寻址 采用寄存器直接寻址模式对 16 个工作寄存器 (W0:W15) 的内容进行访问 寄存器直接寻址为全正交模式, 允许为使用寄存器直接寻址的指令指定任何工作寄存器, 且支持字节和字访问方式 采用寄存器直接寻址的指令使用指定工作寄存器中的内容作为数据来执行指令, 因此只有当数据已存入工作寄存器内时才可使用该寻址模式 例 4-3 中给出了使用寄存器直接寻址模式的指令示例 寄存器直接寻址的另一特点是它可提供动态流控制能力 由于 DO 和 REPEAT 指令的不同形式支持寄存器直接寻址, 因此可使用这些指令实现灵活的循环结构 注 : 对于那些必须使用寄存器直接寻址模式的指令, 需要用到符号 Wb Wn Wns 和 Wnd, 详见第 3 章 指令集概述 的汇总表 通常, 可使用寄存器间接寻址模式的场合也可使用寄存器直接寻址 使用寄存器间接寻址的指令使用第 3 章 指令集概述 汇总表中的符号 Wd 和 Ws 例 4-3: 寄存器直接寻址 EXCH W2,W3 ; 将 W2 和 W3 中的内容进行交换 : W2 = 0x3499 W3 = 0x003D : W2 = 0x003D W3 = 0x3499 IOR #0x44, W0 ; 将 0x44 和 W0 的内容相或 : W0 = 0x9C2E : W0 = 0x9C6E SL W6, W7, W8 ; 将 W6 左移 W7 位, 并将结果存入 W8 : W6 = 0x000C W7 = 0x0008 W8 = 0x1234 : W6 = 0x000C W7 = 0x0008 W8 = 0x0C00 DS70157B_CN 第 4-4 页 2006 Microchip Technology Inc.

39 第 4 章指令集详解 寄存器间接寻址 寄存器间接寻址模式通过将工作寄存器中内容作为数据存储有效地址 (EA), 可实现对数据空间中任何存储单元的访问 实质上, 工作寄存器中的内容变为一个指向指令要访问的数据存储单元的指针 因为该寻址模式允许在进行数据访问之前或之后, 通过对 EA 进行递增或递减来修改工作寄存器中的内容, 因此可实现强大的功能 通过在访问操作执行的同一周期内对 EA 中的内容进行修改, 寄存器间接寻址可对顺序存储在存储区中的数据进行高效处理 表 4-2 给出了 dspic30f/dspic33f 所支持的间接寻址模式 表 4-2: 间接寻址模式 间接模式 语法 功能 ( 字节指令 ) 功能 ( 字指令 ) 说明 无修改 [Wn] EA = [Wn] EA = [Wn] Wn 中的内容形成 EA 执行前递增 [++Wn] EA = [Wn+=1] EA = [Wn+=2] 对 Wn 中内容进行递增以形成 EA 执行前递减 [--Wn] EA = [Wn =1] EA = [Wn =2] 对 Wn 中内容进行递减以形成 EA 执行后递增 [Wn++] EA = [Wn]+= 1 EA = [Wn]+= 2 Wn 中内容形成 EA, 然后 Wn 中内容进行递增 执行后递减 [Wn--] EA = [Wn] = 1 EA = [Wn] = 2 Wn 中内容形成 EA, 然后 Wn 中内容进行递减 寄存器偏移量 [Wn+Wb] EA = [Wn+Wb] EA = [Wn+Wb] Wn 和 Wb 的和形成 EA Wn 和 Wb 中的内容未被修改 表 4-2 显示有四种寻址模式对指令中使用的 EA 进行修改, 且允许对工作寄存器进行以下更新 : 执行后递增 执行后递减 执行前递增以及执行前递减 由于所有 EA 必须赋以字节地址, 因此 EA 将以 2 为单位进行更新以支持字模式指令 也就是说, 在字模式中 / 前递减将对存储于工作寄存器中的 EA 减 2, 而 / 后递增将对 EA 进行加 2 该功能确保在 EA 修改之后, EA 将指向存储区中下一个相邻的字 例 4-4 说明了如何使用间接寻址对 EA 进行更新 表 4-2 也阐明了使用寄存器偏移量模式寻址的情况, 该寻址模式对距离一个工作寄存器中的基准 EA 某个偏移量的数据进行寻址 该模式使用另外一个工作寄存器的内容, 通过将两个指定的工作寄存器相加来形成 EA 该寻址模式不适用于字模式指令, 但其提供了整个 64KB 偏移量范围 注意, 用来形成 EA 的工作寄存器中内容将不会被修改 例 4-5 说明了如何使用寄存器偏移量间接寻址对数据存储区进行访问 注 : 带偏移量的 MOV 指令 ( 第 页和第 页 ) 提供了在间接寻址时可使用的立即数偏移量寻址功能 在这些指令中, 通过将工作寄存器的内容加到一个有符号的 10 位立即数以形成 EA 例 4-6 显示了如何利用这些指令实现从 / 向工作寄存器传送数据 4 指令集详解 2006 Microchip Technology Inc. DS70157B_CN 第 4-5 页

40 dspic30f/33f 程序员参考手册 例 4-4: 带有效地址更新的间接寻址 MOV.B [W0++], [W13--] ; 字节传送 [W0] 至 [W13] ; 执行后将 W0 内容递增, 执行后将 W13 内容递减 : W0 = 0x2300 W13 = 0x2708 数据存储区 0x2300 = 0x7783 数据存储区 0x2708 = 0x904E : W0 = 0x2301 W13 = 0x2707 数据存储区 0x2300 = 0x7783 数据存储区 0x2708 = 0x9083 ADD W1, [--W5], [++W8] ; 执行前将 W5 内容递减, 执行前将 W8 内容递增 ; 将 W1 加至 [W5], 将结果存放到 [W8] : W1 = 0x0800 W5 = 0x2200 W8 = 0x2400 数据存储区 0x21FE = 0x7783 数据存储区 0x2402 = 0xAACC : W1 = 0x0800 W5 = 0x21FE W8 = 0x2402 数据存储区 0x21FE = 0x7783 数据存储区 0x2402 = 0x7F83 DS70157B_CN 第 4-6 页 2006 Microchip Technology Inc.

41 第 4 章指令集详解 例 4-5: 寄存器偏移量间接寻址 MOV.B [W0+W1], [W7++] ; 字节传送 [W0+W1] 至 W7, 执行后对 W7 内容进行递增 : W0 = 0x2300 W1 = 0x01FE W7 = 0x1000 数据存储区 0x24FE = 0x7783 数据存储区 0x1000 = 0x11DC : W0 = 0x2300 W1 = 0x01FE W7 = 0x1001 数据存储区 0x24FE = 0x7783 数据存储区 0x1000 = 0x1183 LAC [W0+W8], A ; 将 [W0+W8] 装载至 ACCA ; ( 符号扩展和零回填 ) : W0 = 0x2344 W8 = 0x0008 ACCA = 0x 数据存储区 0x234C = 0xE290 : W0 = 0x2344 W8 = 0x0008 ACCA = 0xFF E 数据存储区 0x234C = 0xE290 例 4-6: 用立即数偏移量进行传送的指令 MOV [W0+0x20], W1 ; 将 [W0+0x20] 传送到 W1 : W0 = 0x1200 W1 = 0x01FE 数据存储区 0x1220 = 0xFD27 : W0 = 0x1200 W1 = 0xFD27 数据存储区 0x1220 = 0xFD27 MOV W4, [W8-0x300] ; 将 W4 传送到 [W8-0x300] : W4 = 0x3411 W8 = 0x2944 数据存储区 0x2644 = 0xCB98 : W4 = 0x3411 W8 = 0x2944 数据存储区 0x2644 = 0x 指令集详解 2006 Microchip Technology Inc. DS70157B_CN 第 4-7 页

42 dspic30f/33f 程序员参考手册 寄存器间接寻址和指令集 表 4-2 中给出的寻址模式展示了 dspic30f/33f 的间接寻址模式能力 出于操作编码和功能上的考虑, 并非所有支持间接寻址的指令都支持表 4-2 中所示的所有模式 使用间接寻址模式的大多数指令支持无修改 执行前递增 执行前递减 执行后递增和执行后递减寻址模式 MOV 指令和几种基于累加器的 DSP 类指令也具备使用寄存器偏移量寻址模式的能力 注 : 使用寄存器间接寻址的指令使用第 3 章 指令集概述 汇总表中的操作数符号 Wd 和 Ws DSP MAC 间接寻址模式 DSP MAC 类指令采用一类特殊的间接寻址模式 如后面第 4.14 节 DSP MAC 类指令 中所介绍, DSP MAC 类指令能够使用有效寻址两次从存储区取操作数 由于 DSP 算法经常需要更宽范围的地址更新, DSP MAC 类指令提供的寻址模式可实现更宽的有效地址更新大小范围 表 4-3 显示 X 和 Y 存储区的预取都支持执行后递增和执行后递减寻址模式, 且更新方式可为 2 4 和 6 字节 由于 DSP 类指令只以字模式的方式执行, EA 将不会以奇数方式进行更新 表 4-3: 模寻址和位反转寻址模式 DSP MAC 间接寻址模式 寻址模式 X 存储区 Y 存储区 无修改的间接寻址 EA = [Wx] EA = [Wy] 执行后递增 2 的间接寻址 EA = [Wx]+= 2 EA = [Wy]+= 2 执行后递增 4 的间接寻址 EA = [Wx]+= 4 EA = [Wy]+= 4 执行后递增 6 的间接寻址 EA = [Wx]+= 6 EA = [Wy]+= 6 执行后递减 2 的间接寻址 EA = [Wx]-= 2 EA = [Wy]-= 2 执行后递减 4 的间接寻址 EA = [Wx]-= 4 EA = [Wy]-= 4 执行后递减 6 的间接寻址 EA = [Wx]-= 6 EA = [Wy]-= 6 寄存器偏移量间接寻址 EA = [W9 + W12] EA = [W11 + W12] 注 : 如第 4.14 节 DSP MAC 类指令 中所述, 只有 W8 和 W9 才可用来访问 X 存储区, 而只有 W10 和 W11 才可用来访问 Y 存储区 dspic30f/33f 架构支持两种通常用来实现 DSP 算法的特殊寄存器间接寻址模式 模寻址 ( 又称循环寻址 ) 提供了一种自动支持 X 和 / 或 Y 存储区中循环数据缓冲区的方法 模缓冲区使得软件不再需要进行地址边界检查, 这将改善某些算法的性能 类似地, 位反转寻址可以实现以一种非线性方式对缓冲区中的单元进行访问 这种寻址模式简化了用于基为 2 的 FFT 算法的数据重新排序, 并大大减少了 FFT 的处理时间 这两种寻址模式体现了 dspic30f 和 dspic33f 架构的强大功能 使用间接寻址的任何指令都可利用这两种寻址模式 有关使用模寻址和位反转寻址的详细内容, 可参阅 dspic30f 系列参考手册 (DS70046D_CN) DS70157B_CN 第 4-8 页 2006 Microchip Technology Inc.

43 第 4 章指令集详解 立即数寻址 在立即数寻址模式中, 指令编码包含一个指令使用的预先定义常量操作数 该寻址模式可以独立使用, 但通常是同文件寄存器 直接和间接寻址模式联合使用 根据指令类型的不同, 可以使用长度不同的立即数操作数 常量的长度可以是 1 位 (#lit1) 4 位 (#bit4 #lit4 和 #Slit4) 5 位 (#lit5) 6 位 (#Slit6) 8 位 (#lit8) 10 位 (#lit10 和 #Slit10) 14 位 (#lit14) 以及 16 位 (#lit16) 常量可以是有符号或无符号的, 符号 #Slit4 #Slit6 和 #Slit10 指定为有符号常量, 而所有其他立即数常量都是无符号的 表 4-4 给出了每种立即数操作数在指令集中的使用 表 4-4: 操作数 #lit1 #bit4 #lit4 #Slit4 #lit5 #Slit6 #lit8 #lit10 #Slit10 #lit14 #lit16 指令集中的立即数操作数 PWRSAV 指令使用 BCLR, BSET, BTG, BTSC, BTSS, BTST, BTST.C, BTST.Z, BTSTS, BTSTS.C, BTSTS.Z ASR, LSR, SL ADD, LAC, SAC, SAC.R ADD, ADDC, AND, CP, CPB, IOR, MUL.SU, MUL.UU, SUB, SUBB, SUBBR, SUBR, XOR SFTAC MOV.B ADD, ADDC, AND, CP, CPB, IOR, RETLW, SUB, SUBB, XOR MOV DISI, DO, LNK, REPEAT MOV 4 指令集详解 2006 Microchip Technology Inc. DS70157B_CN 第 4-9 页

44 dspic30f/33f 程序员参考手册 立即数寻址的语法规则要求必须将数值符号 (#) 放在常量操作数值之前且紧靠常量操作数 # 符号向汇编器表明该量为常量 如果指令中使用的常量超出范围, 汇编器将产生一个错误 例 4-7 中给出了几个立即数寻址的实例 例 4-7: 立即数寻址 PWRSAV #1 ; 进入空闲模式 ADD.B #0x10, W0 ; 将 0x10 加到 W0 ( 字节模式 ) : W0 = 0x12A9 : W0 = 0x12B9 XOR W0, #1, [W1++] ; 将 W0 和 0x1 异或 ; 将结果存入 [W1] ; 递增 W1 : W0 = 0xFFFF W1 = 0x0890 数据存储区 0x0890 = 0x0032 : W0 = 0xFFFF W1 = 0x0892 数据存储区 0x0890 = 0xFFFE 数据空间寻址模式树 图 4-1 对 dspic30f 和 dspic33f 的数据空间寻址模式进行了汇总 图 4-1: 数据空间寻址模式树 基本 立即数文件寄存器直接间接 未修改执行前递增执行前递减执行后递增执行后递减 数据空间寻址模式 立即数偏移量 寄存器偏移量 直接 DSP MAC 间接 无修改执行后递增 (2 4 和 6) 执行后递减 (2 4 和 6) 寄存器偏移量 DS70157B_CN 第 4-10 页 2006 Microchip Technology Inc.

45 第 4 章指令集详解 4.2 程序空间寻址模式 dspic30f 和 dspic33f 拥有一个 23 位程序计数器 (PC) PC 可对 24 位宽的程序存储空间进行寻址以取出将执行的指令 可通过几种不同方式实现对 PC 的装载 对于和表读以及表写指令的字节兼容性, 每一个指令字都在程序存储区中占用两个地址单元 这表明程序顺序执行时, PC 递增的方式将为 PC + 2 有几种不同的方法可实现以非顺序方式修改 PC 值进行改动, 这些改动可以是绝对或是相对的 PC 值的改变可能来自指令编码中的立即数或包含在工作寄存器中的动态值 当执行 DO 循环时, 在 DOEND 地址中的指令执行结束后, PC 将装载存放于 DOSTART 寄存器中的地址 对于异常处理, PC 将装载异常处理程序的入口地址, 该地址存放在中断向量表中 在需要时, 可用软件堆栈来保存现场, 返回到程序流发生变化处的前台进程 表 4-5 汇总了修改 PC 值的指令 当进行函数调用时, 由于 RCALL 仅占用一个字的程序存储空间, 因此建议使用 RCALL 而不使用 CALL 指令 表 4-5: 改变程序流的方法 条件 / 指令 PC 改变软件堆栈使用情况 顺序执行 PC = PC + 2 无 BRA Expr (1) PC = PC + 2 * Slit16 无 ( 无条件转移 ) BRA Condition, Expr (1) ( 条件转移 ) PC = PC + 2 ( 条件为假 ) PC = PC + 2 * Slit16 ( 条件为真 ) 无 CALL Expr (1) ( 调用子程序 ) PC = lit23 (2) PC+4 压入堆栈 CALL Wn ( 间接调用子程序 ) PC = Wn PC + 2 压入堆栈 (2) GOTO Expr (1) ( 无条件跳转 ) PC = lit23 无 GOTO Wn ( 无条件间接跳转 ) PC = Wn 无 RCALL Expr (1) ( 相对调用 ) PC = PC + 2 * Slit16 (2) PC + 2 压入堆栈 RCALL Wn ( 计算相对调用 ) 异常处理 PC = PC + 2*Wn PC = 异常处理程序入口地址 ( 从向量表中读出 ) PC + 2 压入堆栈 (2) PC + 2 压入堆栈 (3) 4 PC = 目标 REPEAT 指令 (REPEAT 循环 ) PC 未改动 ( 如果 REPEAT 激活 ) PC = DOEND 地址 (DO 循环 ) PC = DOSTART ( 如果 DO 激活 ) 无 注 1: 对于 BRA CALL 以及 GOTO 指令,Expr 可以是标号 绝对地址或表达式 Expr 将由链 接器解析为一个 16 位或 23 位值 (Slit16 或 lit23) 有关详细内容, 可参阅第 5 章 指 令描述 2: 在执行 CALL 或 RCALL 指令后, RETURN 或 RETLW 将把栈顶内容弹回 PC 3: 在异常处理结束后, RETFIE 将把栈顶内容弹回 PC 无 指令集详解 2006 Microchip Technology Inc. DS70157B_CN 第 4-11 页

46 dspic30f/33f 程序员参考手册 4.3 指令停顿 RAW 相关性检测 为尽可能缩短数据空间 EA 计算和取操作数的时间, 部分 X 数据空间读和写访问采用流水线方式进行 这种流水线方式的一个可能后果是, 在使用共用的寄存器进行连续的读写操作可能导致地址寄存器数据的相关性 写 - 读 (RAW) 相关性问题发生在跨指令边界时, 由硬件检测 RAW 相关性的一个实例是在修改 W5 的写操作结束后, 使用 W5 作为地址指针的读操作 在前次写操作结束之前, W5 中的内容将不能作为读操作的有效数据 这个问题可通过对指令执行停顿一个周期来解决, 这将允许在下一次读操作启动之前结束写操作 在指令预解码期间, 内核将确定地址寄存器相关性是否即将跨指令边界 停顿检测逻辑将用于当前执行指令的目的 EA 的 W 寄存器 ( 如果有 ) 和用于预取指令源 EA ( 如果有 ) 的 W 寄存器进行比较 当发现目的寄存器和源寄存器相匹配时, 将应用一组规则来判定是否将对指令执行停顿一个周期 表 4-6 列出了导致指令执行停顿的各种 RAW 条件 表 4-6: Raw 相关性规则 ( 由硬件检测 ) 使用 Wn 的目的地址模式 使用 Wn 的源地址模式 需要停顿吗? 实例 (Wn = W2) 直接 直接 无停顿 ADD.W W0, W1, W2 MOV.W W2, W3 间接 直接 无停顿 ADD.W W0, W1, [W2] MOV.W W2, W3 间接 间接 无停顿 ADD.W W0, W1, [W2] MOV.W [W2], W3 间接 带执行前 / 后修改的间接地址 无停顿 ADD.W W0, W1, [W2] MOV.W [W2++], W3 带执行前 / 后修改的间接地址直接 无停顿 ADD.W W0, W1, [W2++] MOV.W W2, W3 直接 间接 (1) 停顿 ADD.W W0, W1, W2 MOV.W [W2], W3 直接 带执行前 / 后修改的间接地址 停顿 (1) ADD.W W0, W1, W2 MOV.W [W2++], W3 间接 间接 停顿 (1) ADD.W W0, W1, [W2] (2) MOV.W [W2], W3 (2) 间接 带执行前 / 后修改的间接地址 (1) 停顿 ADD.W W0, W1, [W2] (2) MOV.W [W2++], W3 (2) 带执行前 / 后修改的间接地址间接停顿 (1) 带执行前 / 后修改的间接地址带执行前 / 后修改的间接地址 注 停顿 (1) 1: 当检测到停顿时, 指令执行时间将增加 1 个周期 2: 对于这些实例, W2 的内容 = W2 的映射地址 (0x0004) ADD.W W0, W1, [W2++] MOV.W [W2], W3 ADD.W W0, W1, [W2++] MOV.W [W2++], W3 DS70157B_CN 第 4-12 页 2006 Microchip Technology Inc.

47 第 4 章指令集详解 指令停顿和异常 指令停顿和改变程序流的指令 为保持确定的操作, 将允许指令停顿发生, 即使停顿在异常处理之前发生 CALL 和 RCALL 使用 W15 来写堆栈, 因此如果下一条指令的读源操作数操作使用 W15 寄存器则可能发生指令停顿 GOTO RETFIE 和 RETURN 指令的执行过程中将不会发生指令停顿的现象, 因为他们不执行写入工作寄存器的操作 指令停顿和 DO/REPEAT 循环 指令停顿和 PSV 如同其他任何指令, 运行于 DO 或 REPEAT 循环中的指令也易发生指令停顿的现象 停顿可能发生在循环入口 出口以及在循环处理过程中 如同其他任何指令, 运行于 PSV 地址空间的指令易发生指令停顿的现象 如果紧接 PSV 数据访问之后的指令执行中检测到数据相关性的问题, 指令的第二个周期将启动一个停顿 如果紧接 PSV 数据访问之前的指令执行中检测到数据相关性的问题, 前条指令的最后一个周期将启动一个停顿 注 : 有关 RAW 指令停顿更为详细的信息, 可参阅 dspic30f 系列参考手册 (DS70046D_CN) 4.4 字节操作 由于数据存储区可字节寻址, 大多数基本指令可运行在字节或字两种模式 当这些指令运行于字节模式时, 以下规则将适用 : 所有直接工作寄存器访问使用 16 位工作寄存器的低位字节, 而高位字节 (MSB) 将不会被改动 所有间接工作寄存器访问使用由存放在工作寄存器中的 16 位地址指定的数据字节 所有文件寄存器访问使用由字节地址指定的数据字节 STATUS 寄存器内容将被更新以反映字节操作的结果 应注意, 数据地址总是以字节地址来表示 此外, 固有的数据存放格式 little-endian, 即将低位字节存放在较低地址中, 而将高位字节存放在相邻的较高地址中 ( 如图 4-2 所示 ) 例 4-8 给出了字节传送操作的实例, 而例 4-9 给出了字节数学操作的实例 4 注 : 工作于字节模式的指令必须使用.b 或.B 指令扩展以指定字节指令 例如, 以下两条指令为字节清零操作的有效形式 : CLR.b W0 CLR.B W0 指令集详解 2006 Microchip Technology Inc. DS70157B_CN 第 4-13 页

48 dspic30f/33f 程序员参考手册 例 4-8: 字节传送操作示例 MOV.B #0x30, W0 ; 将立即数字节 0x30 传送到 W0 : W0 = 0x5555 : W0 = 0x5530 MOV.B 0x1000, W0 ; 将 0x1000 中的字节传送到 W0 : W0 = 0x5555 数据存储区 0x1000 = 0x1234 : W0 = 0x5534 数据存储区 0x1000 = 0x1234 MOV.B W0, 0x1001 ; 将 W0 中字节传送到地址 0x1001 : W0 = 0x1234 数据存储区 0x1000 = 0x5555 : W0 = 0x1234 数据存储区 0x1000 = 0x3455 MOV.B W0, [W1++] ; 将 W0 中字节传送到 [W1], 然后递增 W1 : W0 = 0x1234 W1 = 0x1001 数据存储区 0x1000 = 0x5555 : W0 = 0x1234 W1 = 0x1002 数据存储区 0x1000 = 0x3455 DS70157B_CN 第 4-14 页 2006 Microchip Technology Inc.

49 第 4 章指令集详解 例 4-9: 字节数学操作示例 CLR.B [W6--] ; 字节清零 [W6], 然后将 W6 递减 : W6 = 0x1001 数据存储区 0x1000 = 0x5555 : W6 = 0x1000 数据存储区 0x1000 = 0x0055 SUB.B W0, #0x10, W1 ; 从 W0 中字节减立即数 0x10 ; 将结果存入 W1 : W0 = 0x1234 W1 = 0xFFFF : W0 = 0x1234 W1 = 0xFF24 ADD.B W0, W1, [W2++] ; 将 W0 和 W1 进行字节加, 将结果存入 [W2] ; 然后将 W2 进行递增 : W0 = 0x1234 W1 = 0x5678 W2 = 0x1000 数据存储区 0x1000 = 0x5555 : W0 = 0x1234 W1 = 0x5678 W2 = 0x1001 数据存储区 0x1000 = 0x55AC 4 指令集详解 2006 Microchip Technology Inc. DS70157B_CN 第 4-15 页

50 dspic30f/33f 程序员参考手册 4.5 字传送操作 即使数据空间采用字节寻址模式, 所有以字模式进行的传送操作也必须满足字对齐的原则 这表明对于所有源操作数和目的操作数, 最低地址位必须是 0 如果发生字传送操作的一方是奇数地址, 那将产生一个地址出错异常 类似地, 所有双字传送操作也必须满足字对齐原则 图 4-2 说明了如何实现字节和字在数据存储区的对齐 例 4-10 给出了几种合法的字传送操作示例 当由于未对齐访问导致异常产生时, 将在进行异常处理 如果在数据读操作期间发生非法访问, 该操作将被允许完成, 但是源地址的最低位将被清零以强制字对齐 如果在数据写操作期间发生非法访问, 该写操作将被禁止 例 4-11 中包含了几种非法字传送操作 图 4-2: 存储区中数据对齐方式 0x1001 b0 0x1000 0x1003 b1 0x1002 0x1005 b3 b2 0x1004 0x1007 b5 b4 0x1006 0x1009 b7 b6 0x1008 0x100B b8 0x100A 图注 : b0 - 存放于 0x1000 中的字节 b1 - 存放于 0x1003 中的字节 b3:b2 - 存放于 0x1005:1004 中的字 (b2 为 LSB) b7:b4 - 存放于 0x1009:0x1006 的双字 (b4 为 LSB) b8 - 存放于 0x100A 中的字节 注 : 工作于字模式的指令不需要使用指令扩展 但如果需要可对其指定可选的.w 或.W 扩展 例如, 以下指令为字清零操作的有效形式 CLR W0 CLR.w W0 CLR.W W0 DS70157B_CN 第 4-16 页 2006 Microchip Technology Inc.

51 第 4 章指令集详解 例 4-10: 合法的字传送操作 MOV #0x30, W0 ; 将立即数字 0x30 传送到 W0 : W0 = 0x5555 : W0 = 0x0030 MOV 0x1000, W0 ; 将 0x1000 中的字传送到 W0 : W0 = 0x5555 数据存储区 0x1000 = 0x1234 : W0 = 0x1234 数据存储区 0x1000 = 0x1234 MOV [W0], [W1++] ; 字传送 [W0] 至 [W1] ; 然后将 W1 递增 : W0 = 0x1234 W1 = 0x1000 数据存储区 0x1000 = 0x5555 数据存储区 0x1234 = 0xAAAA : W0 = 0x1234 W1 = 0x1002 数据存储区 0x1000 = 0xAAAA 数据存储区 0x1234 = 0xAAAA 4 指令集详解 2006 Microchip Technology Inc. DS70157B_CN 第 4-17 页

52 dspic30f/33f 程序员参考手册 例 4-11: 非法的字传送操作 MOV 0x1001, W0 ; 将 0x1001 中的字传送到 W0 : W0 = 0x5555 数据存储区 0x1000 = 0x1234 数据存储区 0x1002 = 0x5678 : W0 = 0x1234 数据存储区 0x1000 = 0x1234 数据存储区 0x1002 = 0x5678 产生地址出错陷阱 ( 源地址未对齐, 因此执行 MOV) MOV W0, 0x1001 ; 将 W0 传送到 0x1001 : W0 = 0x1234 数据存储区 0x1000 = 0x5555 数据存储区 0x1002 = 0x6666 : W0 = 0x1234 数据存储区 0x1000 = 0x5555 数据存储区 0x1002 = 0x6666 产生地址出错陷阱 ( 目的地址未对齐, 因此不执行 MOV) MOV [W0], [W1++] ; 字传送 [W0] 至 [W1], ; 然后递增 W1 : W0 = 0x1235 W1 = 0x1000 数据存储区 0x1000 = 0x1234 数据存储区 0x1234 = 0xAAAA 数据存储区 0x1236 = 0xBBBB : W0 = 0x1235 W1 = 0x1002 数据存储区 0x1000 = 0xAAAA 数据存储区 0x1234 = 0xAAAA 数据存储区 0x1236 = 0xBBBB 产生地址出错陷阱 ( 源地址未对齐, 因此执行 MOV) ( 源地址未对齐, 因此执行 MOV) DS70157B_CN 第 4-18 页 2006 Microchip Technology Inc.

53 第 4 章指令集详解 4.6 使用 10 位立即数操作数 支持字节和字模式的几条指令具有 10 位操作数 对于字节指令, 10 位立即数太大而不能使用 因此在字节模式下使用 10 位立即数时, 操作数的范围必须减至 8 位, 否则汇编器将产生一个错误 表 4-7 说明, 在字模式中 10 位立即数的范围是 0:1023, 而在字节模式下则为 0:255 在字节和字模式使用 10 位立即数的指令为 :ADD ADDC AND IOR RETLW SUB SUBB 和 XOR 例 4-12 以 ADD 指令为例说明了如何在字节模式下使用正或负的立即数 表 4-7: 立即数值 10 位立即数编码 字模式 kk kkkk kkkk 字节模式 kkkk kkkk N/A N/A N/A 例 4-12: 使用 10 位立即数作为字节操作数 ADD.B #0x80, W0 ; 将 128 ( 或 -128) 加到 W0 ADD.B #0x380, W0 ; 出错... 字节模式的非法语法 ADD.B #0xFF, W0 ; 将 255 ( 或 -1) 加到 W0 ADD.B #0x3FF, W0 ; 出错... 字节模式的非法语法 ADD.B #0xF, W0 ; 将 15 加到 W0 ADD.B #0x7F, W0 ; 将 127 加到 W0 ADD.B #0x100, W0 ; 出错... 字节模式的非法语法 注 : 由于字节最高位被置 1, 在字节模式下使用大于 127 的立即数在功能上与使用负的二进制补码值等效 当工作于字节模式时, 汇编器将接受正或负的立即数值 ( 例如, #-10) 4 指令集详解 2006 Microchip Technology Inc. DS70157B_CN 第 4-19 页

54 dspic30f/33f 程序员参考手册 4.7 软件堆栈指针和帧指针 软件堆栈指针 dspic30f 和 dspic33f 都具有一个软件堆栈, 有助于函数调用以及异常处理 W15 为默认的堆栈指针 (SP), 在复位之后, 它被初始化为 0x0800 这将确保在所有 dspic30f 和 dspic33f 器件中 SP 都将指向有效的 RAM 单元并允许异常处理可以使用堆栈, 这可能发生在用户软件对 SP 进行设定之前 在初始化时, 用户可重新编程设定 SP 为数据空间内的任何地址单元 SP 总是指向堆栈顶部第一个可供使用的字, 并按照地址从低到高的原则对堆栈进行填充 SP 在弹出堆栈 ( 读 ) 前递减而在压入堆栈 ( 写 ) 后递增 使用 PUSH 和 POP 指令对软件堆栈进行操作 PUSH 和 POP 指令等同于将 W15 用作目的指针的 MOV 指令 例如, 可通过以下指令将 W0 中内容压入栈顶 (TOS): 该语法等同于 PUSH W0 MOV W0,[W15++] 通过以下指令可将 TOS 中内容返回 W0 该语法等同于 POP W0 MOV [--W15],W0 在执行任何 CALL 指令过程中, PC 的内容将被压入堆栈, 因此当执行完子程序时程序流将从正确地址继续执行 当将 PC 压入堆栈时, PC<15:0> 被压入第一个可用的堆栈字, 然后将 PC<22:16> 压入堆栈 如图 4-3 所示, 当 PC<22:16> 被压入堆栈时, 在压栈前 PC 的高七位将进行零扩展 在异常处理过程中, PC 的高 7 位将与 STATUS 寄存器的低位字节 (SRL) 和 IPL<3> CORCON<3> 组合起来, 这将使得在中断行过程中主要的 STATUS 寄存器内容和 CPU 中断优先级被自动保存 注 : 为防止未对齐的堆栈访问操作发生, W15<0> 总是清零 图 4-3: CALL 指令执行时的堆栈操作 0x 堆栈向高地址生长 0x0 栈顶 PC<15:0> PC<22:16> W15( 在 CALL 之前 ) W15( 在 CALL 之后 ) 0xFFFE 注 : 对于异常, 第二个被压入堆栈的字的高 9 位包含 SRL 和 IPL<3> DS70157B_CN 第 4-20 页 2006 Microchip Technology Inc.

55 第 4 章指令集详解 堆栈指针实例 图 4-4 至图 4-7 说明了例 4-13 的代码段中是如何修改软件堆栈的 图 4-4 显示了第一条 PUSH 软件堆栈的情况 注意, SP 已被初始化为 0x0800 此外, 示例代码将 0x5A5A 和 0x3636 分别装入 W0 和 W1 在图 4-5 中第一次执行压入堆栈的操作, W0 中的内容被复制到 TOS W15 被自动更新以指向下一个可用的堆栈地址单元, 且新的 TOS 为 0x0802 在图 4-6 中, W1 中内容被压入堆栈, 此时新的 TOS 变为 0x0804 在图 4-7 中, 堆栈被弹出, 将最后一次压入堆栈的值 (W1 内容 ) 复制到 W3 在弹出操作过程中,SP 将递减, 且在示例代码执行结束时 TOS 最终值为 0x0802 例 4-13: 堆栈指针的使用 MOV #0x5A5A, W0 ; 将 0x5A5A 装载至 W0 MOV #0x3636, W1 ; 将 0x3636 装载至 W1 PUSH W0 ; 将 W0 中内容压入 TOS ( 见图 4-5) PUSH W1 ; 将 W1 中内容压入 TOS ( 见图 4-6) POP W3 ; 将 W3 中内容压入 TOS ( 见图 4-7) 图 4-4: 第一次执行 PUSH 指令之前的堆栈指针 0x0000 0x0800 <TOS> W15(SP) 0xFFFE W0 = 0x5A5A W1 = 0x3636 W15 = 0x0800 图 4-5: 执行 PUSH W0 指令后的堆栈指针 0x0000 0x0800 0x0802 5A5A <TOS> W15(SP) 4 0xFFFE W0 = 0x5A5A W1 = 0x3636 W15 = 0x0802 指令集详解 2006 Microchip Technology Inc. DS70157B_CN 第 4-21 页

56 dspic30f/33f 程序员参考手册 图 4-6: 执行 PUSH W1 指令后的堆栈指针 0x0000 0x0800 5A5A 0x x0804 <TOS> W15(SP) 0xFFFE W0 = 0x5A5A W1 = 0x3636 W15 = 0x0804 图 4-7: 执行 POP W3 指令后的堆栈指针 0x0000 0x0800 0x0802 0x0804 5A5A <TOS> W15(SP) 0xFFFE W0 = 0x5A5A W1 = 0x3636 W3 = 0x3636 W15 = 0x0802 注 : 0x802 中内容和新的 TOS 将保持不变 (0x3636) 软件堆栈帧指针 堆栈帧是用户定义的驻留在软件堆栈中的存储区 它用来为函数使用的临时变量分配存储区, 可为每个函数建立一个堆栈帧 W14 是默认的堆栈帧指针 (FP), 它在任何复位时被初始化为 0x0000 如果未使用堆栈帧指针, W14 可被当作普通的工作寄存器使用 分配堆栈帧 (LNK) 和释放堆栈帧 (ULNK) 指令提供了堆栈帧功能 LNK 指令用来建立一个堆栈帧, 在调用过程中用来调整 SP, 这样堆栈可用来存放被调用函数使用的临时变量 在函数执行结束后,ULNK 指令用来移除 LNK 指令建立的堆栈帧 LNK 和 ULNK 指令必须总是一起使用以防止堆栈溢出 DS70157B_CN 第 4-22 页 2006 Microchip Technology Inc.

57 第 4 章指令集详解 堆栈帧指针实例 图 4-8 至图 4-10 说明了在例 4-14 的代码段中是如何建立及移除堆栈帧的 该例程展示了堆栈帧是如何操作的而并不表示 dspic30f/33f 编译器生成的代码 图 4-8 显示了例程开始时的堆栈状态, 此时所有寄存器尚未被压入堆栈 这里, W15 指向第一个可用的堆栈地址单元 (TOS), W14 指向分配给当前正在执行的函数的堆栈存储区 在调用函数 COMPUTE 之前, 函数参数 (W0 W1 和 W2) 被压入堆栈 在 CALL COMPUTE 指令执行之后, PC 变为 COMPUTE 的地址, 且函数 TASKA 的返回地址被压入堆栈 ( 图 4-9) COMPUTE 函数随后使用 LNK #4 指令将调用函数的帧指针值压入堆栈, 且新的帧指针将被设定指向当前堆栈指针 随后, 立即数 4 被加到 W15 中的堆栈指针地址, 这将为临时数据保留两个字的存储区 ( 图 4-10) 在函数 COMPUTE 中, FP 用来访问函数参数以及临时 ( 局部 ) 变量 [W14+n] 将用来对函数使用的临时变量进行访问, 而 [W14-n] 用来对参数进行访问 在函数出口, ULNK 指令被用来将帧指针地址拷贝到堆栈指针然后将调用函数的帧指针弹回 W14 寄存器 ULNK 指令将使堆栈返回至图 4-9 中所示的状态 RETURN 指令将使程序执行返回至调用子程序的代码 调用代码负责将参数从堆栈中移除 RETURN 和 POP 指令将堆栈恢复至图 4-8 所示的状态 例 4-14: 帧指针用法 TASKA:... PUSH W0 ; 将参数 1 压入堆栈 PUSH W1 ; 将参数 2 压入堆栈 PUSH W2 ; 将参数 3 压入堆栈 CALL COMPUTE ; 调用 COMPUTE 函数 POP W2 ; 弹出参数 3 POP W1 ; 弹出参数 2 POP W0 ; 弹出参数 1... COMPUTE: LNK #4 ; 堆栈 FP, 为局部变量分配 4 个字节... ULNK ; 释放分配的存储区, 恢复原先的 FP RETURN ; 返回到 TASKA 图 4-8: 在例 4-14 开始时的堆栈情况 0x x0800 TASKA 的堆栈帧 <TOS> W14 (FP) W15 (SP) 指令集详解 0xFFFE 2006 Microchip Technology Inc. DS70157B_CN 第 4-23 页

00872a.book

00872a.book 从 MCP2510 升 级 至 MCP2515 作 者 : 介 绍 Pat Richards Microchip Technology Inc. 开 发 MCP2510 独 立 CAN 控 制 器 的 初 衷 是 赋 予 CAN 系 统 和 模 块 设 计 人 员 更 多 的 灵 活 性, 允 许 他 们 为 自 己 的 应 用 选 择 最 好 的 处 理 器 使 用 MCP2510 不 会 使 设

More information

untitled

untitled C 8051 MCU SPI EEPROM Alexandru Valeanu Microchip Technology Inc. Microchip Technology 25XXX EEPROM SPI 25XXX EEPROM SO 25XXX EEPROM 3MHz 20 MHz SPI HOLD 25XXX EEPROM EEPROM MCU HOLD 25XXX EEPROM SPI EEPROM

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

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

dspic33f 系列参考手册 2.1 简介 dspic33f CPU 采用 16 位 ( 数据 ) 的改进型哈佛架构, 具有增强指令集, 其中包括对数字信号处理的强大支持 CPU 具有 24 位指令字, 指令字带有长度可变的操作码字段 程序计数器 (Program Counter, PC) 为 2

dspic33f 系列参考手册 2.1 简介 dspic33f CPU 采用 16 位 ( 数据 ) 的改进型哈佛架构, 具有增强指令集, 其中包括对数字信号处理的强大支持 CPU 具有 24 位指令字, 指令字带有长度可变的操作码字段 程序计数器 (Program Counter, PC) 为 2 第 2 章 CPU 目录 本章包括下列主题 : 2 2.1 简介...2-2 2.2 编程模型... 2-5 2.3 软件堆栈指针 (SSP)... 2-9 2.4 CPU 寄存器说明... 2-12 2.5 算术逻辑单元 (ALU)... 2-18 2.6 DSP 引擎... 2-19 2.7 除法支持... 2-29 2.8 指令流类型... 2-30 2.9 循环结构... 2-33 2.10

More information

PIC24 MSSP FRM Rev A.book

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

More information

01262B.book

01262B.book 使用 C30 编译器实现单片机与片外串行 SRAM 的通信 作者 : 引言 Martin Bowman Microchip Technology Inc. 适用于 Microchip 的 dspic DSC 和 PIC24 系列单片机的 C30 编译器为寻址外部存储器提供了一个解决方案 该编译器支持这样的功能, 即允许用户按照访问 MCU 的片内存储器的方式来访问外部存储器 本应用笔记主要介绍如何使用

More information

Section1_16bit Arc.ppt

Section1_16bit Arc.ppt 16-bit Elite Program 2009 Summer Section-1 Microchip 16-bit 2005 Microchip Technology Incorporated. All Rights Reserved. Slide 1 MCU CPU (NOP),, (Data Memory), I/O CPU w. ALU/Working Reg. Data Mem. Data

More information

Microsoft Word - em78 sub program.doc

Microsoft Word - em78 sub program.doc 一 二进制数转换为 ASCⅡ 码 将一个字节的二进制数转换为两位 16 进制数的 ASCⅡ 码 main: mov a,@0x9f ; 二进制数为 0x9f mov 0x30,a ; 二进制数存入 0x30 mov a,@0x02 mov 0x10,a ;0x10 中存放转换次数 mov a,@0x31 mov 0x04,a ;0x04 中为转换后数据存放地址 mov a,0x30 B1: ; 取

More information

untitled

untitled PICkit MCP3422 DS51781A_CN Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Digital Millennium Copyright Act Microchip Microchip Technology

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

untitled

untitled MCP3421 SOT23-6 DS51793A_CN Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Digital Millennium Copyright Act Microchip Microchip Technology

More information

dsPIC Architecture Overview

dsPIC Architecture Overview Digital Signal Control 2004 Microchip Technology dspic30f 16-bit Architecture Workshop 1 dspic30f MCU P P MCU 2004 Microchip Technology dspic30f 16-bit Architecture Workshop 2 dspic30f dspic 1. 2. 3. dspic30f:

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

dspic33e/pic24e 系列参考手册 2.1 简介 注 : 本系列参考手册章节旨在用作对器件数据手册的补充 根据不同的器件型号, 本手册章节可能并不适用于所有 dspic33e/pic24e 器件 请参见当前器件数据手册中 CPU 章节开头部分的注, 以检查本文档是否支持您所使用的器件 器件

dspic33e/pic24e 系列参考手册 2.1 简介 注 : 本系列参考手册章节旨在用作对器件数据手册的补充 根据不同的器件型号, 本手册章节可能并不适用于所有 dspic33e/pic24e 器件 请参见当前器件数据手册中 CPU 章节开头部分的注, 以检查本文档是否支持您所使用的器件 器件 第 2 章 CPU 目录 本章包括下列主题 : 2 2.1 简介...2-2 2.2 编程模型... 2-5 2.3 软件堆栈指针... 2-9 2.4 CPU 寄存器说明... 2-13 2.5 算术逻辑单元 (ALU)... 2-19 2.6 DSP 引擎... 2-20 2.7 除法支持... 2-30 2.8 指令流类型... 2-31 2.9 循环结构... 2-34 2.10 地址寄存器相依性...

More information

21928a.book

21928a.book PS080, PowerTool 800 开发软件用户指南 2005 Microchip Technology Inc. DS21928A_CN 请注意以下有关 Microchip 器件代码保护功能的要点 : Microchip 的产品均达到 Microchip 数据手册中所述的技术指标 Microchip 确信 : 在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一

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

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

21999a_cn.book

21999a_cn.book 1.5A 低 电 压 低 静 态 电 流 LDO 稳 压 器 MCP1727 特 性 输 出 电 流 能 力 为 1.5A 输 入 工 作 电 压 范 围 :2.3V 至 6.0V 可 调 输 出 电 压 范 围 :0.8V 至 5.0V 标 准 固 定 输 入 电 压 : - 0.8V 1.2V 1.8V 2.5V 3.0V 3.3V 和 5.0V 可 根 据 需 要 提 供 其 他 固 定 输

More information

PIC24 intro.fm

PIC24 intro.fm 1 第 1 章简介 简介 目录 本章包括下列主题 : 1.1 简介... 1-2 1.2 手册目标... 1-2 1.3 器件结构... 1-2 1.4 开发支持... 1-4 1.5 样式和符号约定... 1-4 1.6 相关文档... 1-6 1.7 版本历史... 1-7 2008 Microchip Technology Inc. 超前信息 DS39718A_CN 第 1-1 页 PIC24F

More information

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

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

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

39733a_cn.book

39733a_cn.book 第 45 章具有扩展数据空间 (EDS) 的数据存储器 目录 本章包括下列主题 : 45.1 简介... 45-2 45.2 数据存储器构成... 45-3 45.3 扩展数据空间... 45-7 45.4 数据对齐... 45-14 45.5 软件堆栈... 45-15 45.6 程序存储空间与数据存储空间的连接... 45-15 45.7 相关应用笔记... 45-16 45.8 版本历史...

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

MCP47x6_DaughterBoard.book

MCP47x6_DaughterBoard.book MCP47X6 PICtail Plus 子 板 用 户 指 南 DS51932B_CN 请 注 意 以 下 有 关 Microchip 器 件 代 码 保 护 功 能 的 要 点 : Microchip 的 产 品 均 达 到 Microchip 数 据 手 册 中 所 述 的 技 术 指 标 Microchip 确 信 : 在 正 常 使 用 的 情 况 下, Microchip 系 列 产 品

More information

01018A.book

01018A.book 使用 C18 编译器进行 SPI 串行 EEPROM 与 PIC18 单片机的接口设计 作者 : 引言 Chris Parris Microchip Technology Inc. Microchip Technology 生产的 25XXX 系列串行 EEPROM 兼容 SPI 通信标准, 最大时钟频率范围从 3MHz 到 20 MHz 许多时候, 在设计利用串行 EEPROM 器件的应用时, 使用非专用

More information

PIC18F65J90/85J90 Product Brief

PIC18F65J90/85J90 Product Brief 采用纳瓦技术内置 LCD 驱动器的 64/80 引脚高性能单片机 单片机的特殊性能 : 闪存程序存储器可承受 1000 次擦写 ( 典型值 ) 闪存数据保存时间为 20 年 ( 典型值 ) 软件控制下可自编程 中断具有优先级 8 x 8 单周期硬件乘法器 扩展的看门狗定时器 (Watchdog Timer, WDT): - 周期从 4 ms 到 131s, 可编程设定 通过两个引脚可进行在线串行编程

More information

39697b.book

39697b.book 第 9 章看门狗定时器 (WDT) 目录 本章包括下列主题 : 9.1 简介...9-2 9.2 WDT 工作原理... 9-3 9.3 寄存器映射... 9-7 9.4 设计技巧... 9-8 9.5 相关应用笔记... 9-9 9.6 版本历史... 9-10 9 看门狗定时器 (WDT) 2010 Microchip Technology Inc. DS39697B_CN 第 9-1 页 PIC24F

More information

21498c_cn.book

21498c_cn.book 精密温度 - 电压转换器 特性 工作电压范围 : - TC147:2.7V 至 4.4V - TC147A:2.5V 至 5.5V 宽温度测量范围 : - -4 C 至 +125 C 温度转换精度高 : - 在 25 C 时为 ±2 C ( 最大值 ) 线性温度斜率 :1 mv/ C ( 典型值 ) 提供 3 引脚 SOT-23B 封装 低工作电流 : - 35 µa 典型值 应用 移动电话 电源过热关断控制

More information

61146A.book

61146A.book PIC32 2008 Microchip Technology Inc. DS61146A_CN Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Digital Millennium Copyright Act Microchip

More information

00975A.book

00975A.book 使用 MSSP 模块进行 Microwire 串行 EEPROM 与 PIC16 器件的接口设计 作者 : 引言 Martin Kvasnicka Microchip Technology Inc. 目前市场上有许多种单片机用在嵌入式控制系统设计中, 这些嵌入式控制系统中的很大一部分都要用到非易失性存储器 由于串行 EEPROM 具有封装尺寸小, 存储容量灵活, 对 I/O 引脚要求低, 和低功耗低成本等特点,

More information

00966A.book

00966A.book SPI 串行 EEPROM 与 PICmicro 单片机的接口设计 作者 : 引言 Martin Kvasnicka Microchip Technology Inc. 目前市场上有许多种单片机用在嵌入式控制系统设计中, 这些嵌入式控制系统中的很大一部分都要用到非易失性存储器 由于串行 EEPROM 具有封装尺寸小, 存储容量灵活, 对 I/O 引脚要求低, 和低功耗低成本等特点, 已成为非易失性存储器的首选

More information

文件名

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

More information

CTMU Temperature Measurement AN.book

CTMU Temperature Measurement AN.book 利用 PIC MCU 中的 CTMU 测量温度 TB3016 作者 : 最新一代 PIC24F 和 PIC18F 器件包含的充电时间测量单元 (Charge Time Measurement Unit,CTMU) 使用恒流源来计算电容值的变化以及事件的间隔时间 运用半导体物理学的基本原理, 同样的电流源也可用来测量温度 这允许使用普通而廉价的二极管来取代相对昂贵的热敏电阻和温度传感器 本技术简介描述了使用

More information

00513D_CN.FM

00513D_CN.FM 使用 PIC16C54 实现模数转换 AN513 作者 : 简介 本应用笔记介绍了一种使用 PIC16C5X 系列单片机实现模数转换 (Analog to Digital,A/D) 的方法 仅需 5 个外部元件即可实现该转换器, 且可通过软硬件配置使转换分辩率达到 6 到 10 位且转换时间不短于 250 µs 这一方法可用于电压和电流转换且使用软件校准技术来补偿由于时间和温度漂移以及元件误差造成的精度误差

More information

33023A.book(31001A_cn.fm)

33023A.book(31001A_cn.fm) 1 第 1 章 简 介 简 介 目 录 本 章 包 括 下 面 一 些 主 要 内 容 : 1.1 简 介...1-2 1.2 本 手 册 的 宗 旨... 1-3 1.3 器 件 结 构... 1-4 1.4 开 发 支 持... 1-6 1.5 器 件 种 类... 1-7 1.6 格 式 和 符 号 的 约 定... 1-12 1.7 相 关 文 档... 1-14 1.8 相 关 应 用 笔

More information

01020B.book

01020B.book 使用 MSSP 进行 Microwire 串行 EEPROM 与 PIC18 器件的接口设计 作者 : 引言 Martin Kvasnicka Microchip Technology Inc. 当前市场上有许多不同的单片机用于嵌入式控制应用领域 许多这种嵌入式控制系统都需要非易失性存储器 由于外形小巧 提供字节级灵活性 I/O 引脚要求低 低功耗和低成本等特点, 串行 EEPROM 成为非易失性存储器的流行选择

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

61127c_cn.book

61127c_cn.book 1 第 1 章 简 介 简 介 目 录 本 章 包 括 下 列 主 题 : 1.1 简 介... 1-2 1.2 本 手 册 的 目 标... 1-2 1.3 器 件 结 构... 1-2 1.4 开 发 支 持... 1-4 1.5 样 式 和 符 号 约 定... 1-4 1.6 相 关 文 档... 1-6 1.7 版 本 历 史... 1-7 2010 Microchip Technology

More information

01236B.book

01236B.book 使用 C3 和定时器连接 dspic33 DSC 和 PIC24 MCU 与兼容 UNI/O 总线的串行 EEPROM 作者 : 简介 Martin Kvasnicka Microchip Technology Inc. 随着嵌入式系统小型化的趋势, 市场对于减少器件间通信所用 I/O 引脚数的需求也与日俱增 Microchip 开发的 UNI/O 总线正满足了这一需求, 这一个低成本且易于实现的解决方案,

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

70178C.book

70178C.book 数 据 手 册 28/44 引 脚 高 性 能 开 关 电 源 数 字 信 号 控 制 器 2007 Microchip Technology Inc. 初 稿 DS70178C_CN 请 注 意 以 下 有 关 Microchip 器 件 代 码 保 护 功 能 的 要 点 : Microchip 的 产 品 均 达 到 Microchip 数 据 手 册 中 所 述 的 技 术 指 标 Microchip

More information

共同构成 16 位数据存储单元的地址 当 CPL=1 时, 将堆栈指针 SP 的 16 位地址 与指令中的 7 位地址相加, 形成 16 位的数据存储器地址 (2) 当 SP=0100h, 偏移地址为 50h 时, 寻址 0150h 单元 ; 当 DP=2, 偏移地址为 50h 时, 寻址 0150

共同构成 16 位数据存储单元的地址 当 CPL=1 时, 将堆栈指针 SP 的 16 位地址 与指令中的 7 位地址相加, 形成 16 位的数据存储器地址 (2) 当 SP=0100h, 偏移地址为 50h 时, 寻址 0150h 单元 ; 当 DP=2, 偏移地址为 50h 时, 寻址 0150 DSP 原理与应用教程 ( 张卫宁著 ) 课后习题答案第 3 章 (2014 年 10 月整理 刘忠国 ) 第三章习题答案 : 作业 :3.2, 3.6, 3.7,3.8, 3.11, 3.17, 3.19,3.21 3.1. TMS320C54x 的数据空间寻址方式各有什么特点? 应该应用在什么场合? ( 教材涉及特点较少 ) 答 :TMS320C54x 有 7 种基本的数据寻址方式 : 立即寻址,

More information

TB3109 PIC32MX 器件中与 USB 模块相关的更改 USB 模块中断位 ( 即 USBIF USBIE USBIP 和 USBIS 位 ) 的位置变化会影响 PIC32MX 器件上的 USB 协议栈操作 表 1 给出了所列 PIC32MX 器件系列中 USBIF USBIE USBIP

TB3109 PIC32MX 器件中与 USB 模块相关的更改 USB 模块中断位 ( 即 USBIF USBIE USBIP 和 USBIS 位 ) 的位置变化会影响 PIC32MX 器件上的 USB 协议栈操作 表 1 给出了所列 PIC32MX 器件系列中 USBIF USBIE USBIP 在 v2013-06-15 MLA USB 设备和主机协议栈中更新 PIC32MX 支持 TB3109 简介 我们提供适合 PIC32MX MCU 的 Microchip 应用程序库 (Microchip Libraries for Applications,MLA), 但未计划向 MLA 添加新功能 v2013-06-15 MLA USB 协议栈本质上支持所有适用的 PIC32MX MCU 器件

More information

21666b.book

21666b.book 具 有 关 断 功 能 的 80 ma 小 型 CMOS LDO TC1016 特 性 节 省 空 间 的 5 引 脚 SC-70 和 SOT-23 封 装 极 低 的 工 作 电 流, 利 于 延 长 电 池 寿 命 : 典 型 值 53 µa 很 低 的 电 压 差 (Dropout Voltage) 额 定 输 出 电 流 :80 ma 仅 需 一 个 1µF 的 陶 瓷 输 出 电 容 高

More information

untitled

untitled N1113 8051MU I 2 EEPROM lexandru Valeanu Microchip Technology Inc. Microchip Technology 24XXX EEPROM 2 SL 24XXX EEPROM 24XXX EEPROM I 2 100 khz 1MHz 24XXX EEPROM 2 I 2 EEPROM 128 512 b 100 khz 1MHz 1.7V

More information

01096B.book

01096B.book 使用 C30 编译器进行 SPI 串行 EEPROM 与 dspic33f 和 PIC24F 的接口设计 AN1096 作者 : 引言 Martin Kvasnicka Microchip Technology Inc. Microchip 的 25XXX 系列串行 EEPROM 均与 SPI 兼容, 其最大时钟频率在 3 MHz 到 20 MHz 的范围内 许多时候, 当设计利用串行 EEPROM

More information

93004A.book

93004A.book 用 dspic DSC MCPWM 模块驱动交流感应电机 作者 : Jorge Zambada Microchip Technology Inc. 如图 1 所示, 电机绕组的电感对 PWM 电压源的电流进行滤波 正如下文即将介绍的, 基于该原理我们可利用 PWM 信号产生正弦波来对三相 ACIM 进行通电 引言 本文档概括介绍了采用 dspic3f 电机控制数字信号控制器系列芯片实现的电机控制 PWM

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

01277A_cn.book

01277A_cn.book 使用 C32 编译器进行串行 SRAM 器件与 PIC32 MCU 的接口设计 作者 : 引言 Pinakin K Makwana Microchip Technology Inc. Microchip 的串行 SRAM 产品线提供了向应用添加附加 RAM 的一种新方法 这些器件采用 8 引脚小型封装以及 SPI 接口, 使设计人员提升系统的灵活性 Microchip Technology 的 23XXXX

More information

70135e_cn.book

70135e_cn.book 数据手册 高性能 16 位数字信号控制器 2007 Microchip Technology Inc. DS70135E_CN 请注意以下有关 Microchip 器件代码保护功能的要点 : Microchip 的产品均达到 Microchip 数据手册中所述的技术指标 Microchip 确信 : 在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一 目前, 仍存在着恶意

More information

TB3098 PIC16F170X 外设引脚选择 (PPS) 技术简介 作者 : 简介 Stephen Allen Microchip Technology Inc. 外设引脚选择 (Peripheral Pin Select,PPS) 可以使数字外设灵活地映射到各种外部引脚 在过去, 外设硬接线到

TB3098 PIC16F170X 外设引脚选择 (PPS) 技术简介 作者 : 简介 Stephen Allen Microchip Technology Inc. 外设引脚选择 (Peripheral Pin Select,PPS) 可以使数字外设灵活地映射到各种外部引脚 在过去, 外设硬接线到 PIC16F170X 外设引脚选择 (PPS) 技术简介 作者 : 简介 Stephen Allen Microchip Technology Inc 外设引脚选择 (Peripheral Pin Select,PPS) 可以使数字外设灵活地映射到各种外部引脚 在过去, 外设硬接线到特定引脚 ( 例如 : 引脚 RC5 上的 PWM1 输出 ) PPS 允许开发人员从大量输出引脚中进行选择, 这提供了以下优势

More information

0507A_Auto Tech_Microchip

0507A_Auto Tech_Microchip 汽 车 无 线 安 全 接 入 技 术 解 决 方 案 Youbok Lee 主 任 工 程 师 Willie Fitzgerald 产 品 营 销 总 监 Microchip Technology Inc. 引 言 全 球 汽 车 半 导 体 面 临 极 大 的 市 场 机 会, 而 汽 车 设 计 工 程 师 正 在 应 对 高 性 价 比 的 性 能 增 强 功 耗 小 尺 寸 和 安 全 性

More information

Microsoft PowerPoint - 05-第五讲-寻址方式.pptx

Microsoft PowerPoint - 05-第五讲-寻址方式.pptx 第五讲 授课教师 : 陆俊林王箫音 2012 年春季学期 主要内容 一 寻址方式概述 二 数据的寻址方式 三 转移地址的寻址方式 教材相关章节 : 微型计算机基本原理与应用 ( 第二版 ) 第 4 章寻址方式与指令系统 1 主要内容 一 寻址方式概述 二 数据的寻址方式 三 转移地址的寻址方式 2 指令的组成 指令由操作码和操作数两部分组成 操作码操作数 MOV AX, 8726H ADD AX,

More information

ICD ICD ICD ICD ICD

ICD ICD ICD ICD ICD MPLAB ICD2 MPLAB ICD2 PIC MPLAB-IDE V6.0 ICD2 usb PC RS232 MPLAB IDE PC PC 2.0 5.5V LED EEDATA MPLAB ICD2 Microchip MPLAB-IDE v6.0 Windows 95/98 Windows NT Windows 2000 www.elc-mcu.com 1 ICD2...4 1.1 ICD2...4

More information

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

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

More information

untitled

untitled MCP3421 DS51683A_CN Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Digital Millennium Copyright Act Microchip Microchip Technology Inc. Microchip

More information

主要内容 指令系统的一般概念 指令操作方式操作码的含义指令对操作数的要求指令执行的结果 寻址方式 指令说明 2015 年 3 月 16 日星期一 8 时 2 分 37 秒 2

主要内容 指令系统的一般概念 指令操作方式操作码的含义指令对操作数的要求指令执行的结果 寻址方式 指令说明 2015 年 3 月 16 日星期一 8 时 2 分 37 秒 2 第 3 章 8086 的寻址方式和指令系统 (1) 2015 年 3 月 16 日星期一 8 时 2 分 37 秒 1 主要内容 指令系统的一般概念 指令操作方式操作码的含义指令对操作数的要求指令执行的结果 寻址方式 指令说明 2015 年 3 月 16 日星期一 8 时 2 分 37 秒 2 3.1 8086 的寻址方式 两种不同的类型 : 一类是程序地址 ( 在代码段中 ) 的寻址方式 ; 另一类是操作数地址的寻址方式

More information

指令系统 可分成如下 6 类 : 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 程序控制指令 处理器控制指令 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 2

指令系统 可分成如下 6 类 : 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 程序控制指令 处理器控制指令 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 2 第 3 章 8086 的寻址方式和指令系统 (2) 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 1 3.3 8086 指令系统 可分成如下 6 类 : 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 程序控制指令 处理器控制指令 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 2 3.3.1 数据传送指令 可实现 存储器 立即数 段寄存器 CS DS

More information

L15 MIPS Assembly

L15 MIPS Assembly Lecture 19: MIPS Assembly Language 程序的机器级表示主要内容 MIPS 指令格式 R- 类型 / I- 类型 / J- 类型 MIPS 寄存器 长度 / 个数 / 功能分配 MIPS 操作数 寄存器操作数 / 存储器操作数 / 立即数 / 文本 / 位 MIPS 指令寻址方式 立即数寻址 / 寄存器寻址 / 相对寻址 / 伪直接寻址 / 偏移寻址 MIPS 指令类型

More information

MCP1630

MCP1630 可 用 单 片 机 控 制 的 高 速 脉 宽 调 制 器 特 性 高 速 PWM 操 作 ( 电 流 检 测 至 输 出 有 12 ns 延 时 ) 工 作 温 度 范 围 : - -4 C 至 125 C 精 确 峰 值 电 流 限 制 (±5%)(MCP163) 电 压 模 式 和 平 均 电 流 模 式 控 制 (MCP163V) CMOS 输 出 驱 动 器 ( 直 接 驱 动 MOSFET

More information

+00DE _01EN.book

+00DE _01EN.book TCS-NET MODBUS TCS-NET Modbus TCB-IFMB640TLE 1...... 2 2 RS 485... 3 3... 3 4... 4 5... 4 6... 5 7... 6 8... 16 TCS-NET Modbus 1 http://www.modbus-ida.org/ >=3.5 8 8 N*8 ( N = 252.) 16 >= 3.5 Modbus-Master

More information

00686A.Book

00686A.Book 理解和使用监控电路 AN686 概要 本应用笔记讨论了什么是单片机监控器件, 为什么需要这些器件以及在选择这些器件时需要考虑的一些因素 监控器件属于一个很广的范畴, 它涵盖了上电复位 (Power on Reset,POR) 器件 欠压检测 (Brown-Out Detect,BOD) 器件和看门狗定时器器件 本应用笔记将仅讨论具有 POR 和 BOD 功能的监控器件 监控电路的工作 监控电路可用于几种不同的应用,

More information

查询 DSPIC30F3010( 汉 ) 供应商 捷多邦, 专业 PCB 打样工厂,24 小时加急出货 dspic30f6010a/6015 数据手册 高性能 16 位数字信号控制器 2007 Microchip Technology Inc. DS70150B_CN

查询 DSPIC30F3010( 汉 ) 供应商 捷多邦, 专业 PCB 打样工厂,24 小时加急出货 dspic30f6010a/6015 数据手册 高性能 16 位数字信号控制器 2007 Microchip Technology Inc. DS70150B_CN 查询 DSPIC30F3010( 汉 ) 供应商 捷多邦, 专业 PCB 打样工厂,24 小时加急出货 数据手册 高性能 16 位数字信号控制器 2007 Microchip Technology Inc. DS70150B_CN 请注意以下有关 Microchip 器件代码保护功能的要点 : Microchip 的产品均达到 Microchip 数据手册中所述的技术指标 Microchip 确信

More information

70116g_cn.book

70116g_cn.book 数据手册 高性能 16 位数字信号控制器 2007 Microchip Technology Inc. DS70116G_CN 请注意以下有关 Microchip 器件代码保护功能的要点 : Microchip 的产品均达到 Microchip 数据手册中所述的技术指标 Microchip 确信 : 在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一 目前, 仍存在着恶意

More information

AVR单片机指令系统.PDF

AVR单片机指令系统.PDF AVR 4 1 (1) 89 :AT90S1200, ; (2) 90 ( ):Attiny11/12/15/22; 90 = +89 (3) 118 ( ):AT90S2313/2323/2343/2333,/4414/4433/4434/8515/90S8534/8535 ;118 = + 90 ; (4) 121 ( )ATmega603/103; 121 = + 118 ; (5) 130

More information

数据库系统概论

数据库系统概论 指令系统 是指 CPU 能完成的所有 指令的集合, 它是在 CPU 设计时就确定了的 所以, 对不同的 CPU, 其指令系统中所包含的具体指令将是各不相同的 但 8088/8086 CPU 的指令系统是完全一样的 8088/8086 CPU 的指令系统可分成下面 9 类 : (1) 数据传送指令 ; (2) 算术运算指令 ; (3) 逻辑运算指令 ; (4) 移位指令 ; (5) 标志处理指令和 CPU

More information

Section 5. Flash Programming

Section 5. Flash  Programming 第 5 章闪存编程 目录 本章包括下列主题 : 5.1 简介...5-2 5.2 表指令操作... 5-2 5.3 控制寄存器... 5-5 5.4 运行时自编程 (RTSP)... 5-8 5.5 寄存器映射... 5-16 5.6 相关应用笔记... 5-17 5.7 版本历史... 5-18 5 闪存编程 2011 Microchip Technology Inc. DS70609C_CN 第

More information

数据库系统概论

数据库系统概论 2. 减法指令 8086/8088 共有 5 条减法指令 1 不带 CF 的减法指令 (SUB) 格式 :SUB DST, SRC 功能 :(1)DST (DST)-(SRC) (2) 根据差设置 6 个状态标志 2 带 CF 的减法指令 (SBB) 格式 :SBB DST, SRC 功能 : (1)DST (DST)-(SRC)-CF (2) 根据差设置 6 个状态标志 3 减 1 指令 (DEC)

More information

70149B.book

70149B.book 数据手册 高性能 16 位数字信号控制器 2007 Microchip Technology Inc. DS70149B_CN 请注意以下有关 Microchip 器件代码保护功能的要点 : Microchip 的产品均达到 Microchip 数据手册中所述的技术指标 Microchip 确信 : 在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一 目前, 仍存在着恶意

More information

2 PIC PIC 1 / CPU PIC MCU PIC RC

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

More information

93002A.book

93002A.book 使用 QEI 模块测量速度和位置 GS002 作者 : 引言 本文档给出了电机控制系列 dspic30f 数字信号控制器中正交编码器 (Quadrature Encoder Interface, QEI) 模块的概述 还提供了一个需要测量转子速度和位置的典型电机控制应用的代码示例 QEI 模块 Jorge Zambada Microchip Technology Inc. 正交编码器 ( 又称增量式编码器或光电式编码器

More information

41632B.book

41632B.book 互 补 波 形 发 生 器 (CWG) 可 配 置 逻 辑 单 元 (CLC) 和 数 控 振 荡 器 (NCO) 外 设 技 巧 与 诀 窍 简 介 Microchip 致 力 于 不 断 向 客 户 提 供 体 积 更 小 速 度 更 快 使 用 更 简 便 与 运 行 更 可 靠 的 创 新 产 品 我 们 的 闪 存 PIC MCU 已 广 泛 应 用 于 日 常 生 活 中 从 烟 雾 探

More information

Andes Technology PPT Temp

Andes Technology PPT Temp 晶心科技線上技術研討會 AndesCore 便捷的全 C 嵌入式编程 晶心科技市場及技術服務部毛礼杰軟件經理 WWW.ANDESTECH.COM 大纲 系统初始化介绍 异常和中断说明 全 C 语法例子说明 总结 2 CPU 相关特性 1: 中断向量表 系统初始化 (1) 2: 系统寄存器 通常需要用 assembly( 汇编 / 组合 ) 语言来操作 AndesCore 全 C 嵌入式编程 C 扩展语法

More information

PIC8位单片机汇编语言常用指令的识读(上)

PIC8位单片机汇编语言常用指令的识读(上) PIC8 位单片机汇编语言常用指令的识读 ( 上 ) 各大类单片机的指令系统是没有通用性的, 它是由单片机生产厂家规定的, 所以用户必须遵循厂家规定的标准, 才能达到应用单片机的目的 PIC 8 位单片机共有三个级别, 有相对应的指令集 基本级 PIC 系列芯片共有指令 33 条, 每条指令是 12 位字长 ; 中级 PIC 系列芯片共有指令 35 条, 每条指令是 14 位字长 ; 高级 PIC

More information

Microsoft PowerPoint sun-arm isa2.ppt [Compatibility Mode]

Microsoft PowerPoint sun-arm isa2.ppt [Compatibility Mode] 嵌入式系统设计与应用 第二章 ARM 指令系统 (2) 西安交通大学电信学院 孙宏滨 汇编伪指令 汇编伪指令 : 在 ARM 汇编语言里, 有一些特殊指令助记符, 没有相对应的操作码 ( 或直接对应指令 ) 通常称这些特殊指令助记符为伪指令, 它们所完成的操作叫做伪操作 伪指令在源程序中的作用是为完成汇编程序作各种准备工作 这些伪指令仅在汇编过程中起作用, 一旦汇编结束, 伪指令的使命完成 ADR:

More information

Microsoft PowerPoint - 第01章 基础知识.pptx

Microsoft PowerPoint - 第01章 基础知识.pptx 微处理器与微计算机系统 教材 : 单片机原理与应用及 C51 程序设计 ( 第 3 版 ) 清华大学出版社 主讲 : 谢维成 http://xweicheng.ys168.com scxweicheng@mail.xhu.edu.cn 西华大学电气与电子信息学院 第 1 章计算机基础知识 主要内容 : 1 有符号数的表示 2 微型计算机工作原理 3 单片机的概念及特点 A Historical Background

More information

工作原理 脉冲血氧仪基于氧合血红蛋白 (HbO 2 ) 和脱氧血红蛋白 (Hb) 的红光 ( 波长为 nm) 和红外光 ( 波长为 nm) 吸收特性来监测人体血液的氧饱和度 (SpO 2 ) 脉冲血氧仪会交替地闪烁红光和红外光, 光线穿过手指到达光电二极管 HbO

工作原理 脉冲血氧仪基于氧合血红蛋白 (HbO 2 ) 和脱氧血红蛋白 (Hb) 的红光 ( 波长为 nm) 和红外光 ( 波长为 nm) 吸收特性来监测人体血液的氧饱和度 (SpO 2 ) 脉冲血氧仪会交替地闪烁红光和红外光, 光线穿过手指到达光电二极管 HbO 使用 Microchip 的 dspic 数字信号控制器 (DSC) 和模拟器件实现脉冲血氧仪设计 作者 : Zhang Feng Microchip Technology Inc. 简介 脉冲血氧仪是一种用于监测患者血氧饱和度和心率的非侵入式医疗设备 本应用笔记演示了如何使用 Microchip 的 dspic 数字信号控制器 (Digital Signal Controller, DSC) 和模拟器件来实现高精度脉冲血氧仪

More information

Microsoft PowerPoint - 微原-第3章3.ppt [兼容模式]

Microsoft PowerPoint - 微原-第3章3.ppt [兼容模式] 本教案内容 第 3 章 8086CPU 指令系统 1. 汇编语言指令 9. 转移指令 10. 2. 8086 指令分类循环控制指令 11. 子程序调用返回 3. 数据与转移地址的指令寻址方式 12. 中断调用返回指 4. 数据传送类指令令 5. 算术运算类指令 13. 字符串操作指令 6. 逻辑运算类指令 14. I/O 输入输出指令 7. 移位类指令 15. 其它指令 8. 标志位操作指令 16.

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

数据库系统概论

数据库系统概论 所谓寻址方式, 就是指令中用于说明操 作数所在地或者所在地地址的方法 8088/8086 的寻址方式分为两类 : 关于寻找数据的寻址方式 关于寻找转移地址的寻址方式 下面讲关于数据的寻址方式时, 均以数 据传送指令 MOV 为例讲解 MOV 指令格式如下 : MOV DST, SRC 助记符 目的操作数 指令完成的功能 : (DST) 源操作数 (SRC) 一. 关于寻找数据的寻址方式 ( 共 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

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

Microsoft PowerPoint - 微原-第3章2.ppt [兼容模式]

Microsoft PowerPoint - 微原-第3章2.ppt [兼容模式] 本教案内容 第 3 章 8086CPU 指令系统 1. 汇编语言指令 9. 转移指令 10. 2. 8086 指令分类循环控制指令 11. 子程序调用返回 3. 数据与转移地址的指令寻址方式 12. 中断调用返回指 4. 数据传送类指令令 5. 算术运算类指令 13. 字符串操作指令 6. 逻辑运算类指令 14. I/O 输入输出指令 7. 移位类指令 15. 其它指令 8. 标志位操作指令 16.

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

微机第02章1(指令寻址)

微机第02章1(指令寻址) 微机原理及应用 主讲 : 谢维成 http://xweicheng.ys168.com scxweicheng@yahoo.com.cn 西华大学电气信息学院 1 第 03 章 80X86 的寻址方式和指令 ( 本章内容 ) 3.1 指令的格式 3.2 8086/8088 的寻址方式 3.3 指令系统 3.3.1 数据传送指令 3.3.2 算术运算指令 3.3.3 逻辑运算与移位指令 3.3.4 串操作指令

More information

AN1487 DALI 控制装置 作者 : 简介 数字可寻址照明接口 (Digitally Addressable Lighting Interface,DALI) 已成为欧洲应对能源危机的一项标准, 主要针对商业和工业用途 DALI 是 IEC 规范的一部分, 具体与数控可调光荧光镇流

AN1487 DALI 控制装置 作者 : 简介 数字可寻址照明接口 (Digitally Addressable Lighting Interface,DALI) 已成为欧洲应对能源危机的一项标准, 主要针对商业和工业用途 DALI 是 IEC 规范的一部分, 具体与数控可调光荧光镇流 DALI 控制装置 作者 : 简介 数字可寻址照明接口 (Digitally Addressable Lighting Interface,DALI) 已成为欧洲应对能源危机的一项标准, 主要针对商业和工业用途 DALI 是 IEC 60929 规范的一部分, 具体与数控可调光荧光镇流器有关 本文档结合 DALI 通信应用笔记 (AN1465A) (ww1.microchip.com/downloads/cn/appnotes/

More information

70641A.book

70641A.book AN1299 调整指南 1.1 配置双电流检测电阻模式 本文档介绍了 AN1299 PMSM 无传感器 FOC 的单电流检测电阻三相电流重构算法 (DS01299A_CN) 中所述算法调整所需的步骤和设置 1. 第一步, 用户需完成 AN1078 中的调整过程, 其中介绍了在具体电机和硬件上运行滑模控制器 (Slide Mode Controller, SMC) 所需的全部步骤 2. 应用运行后,

More information

800 mA Fixed-Output CMOS LDO with Shutdown

800 mA Fixed-Output CMOS LDO with Shutdown I 2 C 7/8-7 128 129-8 256 257 4 R AB - 5 kω - 1 kω - 5 kω - 1 kω 75Ω - 5 ppm -7 C - 15 ppm I 2 C - 1 khz - 4 khz - 3.4 MHz / TCON 1.5V 2.5 ua 12.5V SCL SDA - 2.7V 5.5V - 1.8V 5.5V -3 db 2 MHz 5. kω -4

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

3.3.2 算术运算指令 数据类型 : 无符号和有符号整数 无符号数又分成 : 无符号二进制数 ; 无符号压缩十进制 :1 字节表示 2 个十进制数 ; 无符号非压缩十进制 :1 字节表示 1 个十进制数 有符号数 : 有符号二进制数 用补码表示 2015 年 3 月 26 日星期四 11 时 3

3.3.2 算术运算指令 数据类型 : 无符号和有符号整数 无符号数又分成 : 无符号二进制数 ; 无符号压缩十进制 :1 字节表示 2 个十进制数 ; 无符号非压缩十进制 :1 字节表示 1 个十进制数 有符号数 : 有符号二进制数 用补码表示 2015 年 3 月 26 日星期四 11 时 3 第 3 章 8086 的寻址方式和指令系统 (3) 2015 年 3 月 26 日星期四 11 时 3 分 17 秒 1 3.3.2 算术运算指令 数据类型 : 无符号和有符号整数 无符号数又分成 : 无符号二进制数 ; 无符号压缩十进制 :1 字节表示 2 个十进制数 ; 无符号非压缩十进制 :1 字节表示 1 个十进制数 有符号数 : 有符号二进制数 用补码表示 2015 年 3 月 26 日星期四

More information

Microsoft Word - LMB402CBC-AppNote-V0.1.doc

Microsoft Word - LMB402CBC-AppNote-V0.1.doc LMB402CBC 液晶显示模块应用参考 深圳市拓普微科技开发有限公司 版本描述日期编者 0.1 新版本 2006-02-09 杨军 http://www.topwaysz.com 1 / 1 目录 1 概述 3 2 硬件接口 3 3 软件特性 3 3.1 控制器接口信号说明 3 3.2 模块指令系统 4 4 显示数据存储器的地址 4 5 字符发生器 CGRAM 的地址 5 6 应用举例 5 6.1

More information

3 程序的机器级表示 2017 年 3 月 11 日 11: 计算机执行机器代码, 用字节序列编码低级的操作, 包括处理数据 管理存储器 读写存储在设备上的数据, 以及利用网络通信 通常情况下, 现代的优化编译器产生的代码至少与一个熟练的汇编语言程序员手工编写的代码一样有

3 程序的机器级表示 2017 年 3 月 11 日 11: 计算机执行机器代码, 用字节序列编码低级的操作, 包括处理数据 管理存储器 读写存储在设备上的数据, 以及利用网络通信 通常情况下, 现代的优化编译器产生的代码至少与一个熟练的汇编语言程序员手工编写的代码一样有 3 程序的机器级表示 2017 年 3 月 11 日 11:29 2. 3. 4. 计算机执行机器代码, 用字节序列编码低级的操作, 包括处理数据 管理存储器 读写存储在设备上的数据, 以及利用网络通信 通常情况下, 现代的优化编译器产生的代码至少与一个熟练的汇编语言程序员手工编写的代码一样有效 用高级语言编写的程序可以在很多不同的机器上编译和执行, 而汇编代码则是与特定机器密切相关的 学习机器代码的意义在于,

More information

<4D F736F F D20B5DA33D5C D A3A84CA3A9B5C4D6B8C1EECFB5CDB32E646F6378>

<4D F736F F D20B5DA33D5C D A3A84CA3A9B5C4D6B8C1EECFB5CDB32E646F6378> AVR 单片机 C 语言开发入门与典型实例 ( 修订版 ) 作者 : 华清远见 第 3 章 ATmega128(L) 的指令系统 本章目标 本章主要介绍 ATmega128(L) 的指令系统, 首先分析 ATmega128(L) 的 指令的特点 分类和寻址方式, 并详细介绍了指令系统的每条指令, 最后介绍了 ATmega128(L) 汇编语言的一些基本知识 本章的主要内容有以下几个方面 指令系统的特点

More information

Static Enforcement of Security with Types

Static Enforcement of Security with Types 例题 1 一个 C 语言程序及其在 X86/Linux 操作系统上的编译结 果如下 根据所生成的汇编程序来解释程序中四个变 量的存储分配 生存期 作用域和置初值方式等方面 的区别 static long aa = 10; short bb = 20; func( ) { } static long cc = 30; short dd = 40; static long aa = 10; func(

More information

01019A.book

01019A.book EEPROM 耐擦写能力教程 作者 : 基本术语 David Wilkie Microchip Technology Inc. 耐擦写能力 (Endurance) ( 指 EEPROM) 的定义中包含一些需要明确定义和理解的词语和短语 从以下段落可以看出, 不同厂商使用不同的标准 耐擦写循环 (Endurance Cycling) 是所有厂商 ( 和一些客户 ) 采用的测试方法, 用以确定产品经过多少次

More information

untitled

untitled 2007 12 1 2 SIRIUS 3 4 5 6 2 2/2 3SB3 2/4 3SB3 2/5 3SB3 2/5 2/7 2/10 2/11 2/13 3SB3 2/14 3SB3 2/15 3SB3 2/17 3SB37 SIRIUS 3SB3 3SB3 (/) (/) (/) () Ø22mm (/) (/) (/) () 23 RONIS (/) (SB30) () 23 OMR (/)

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

微机原理(计算机原理与接口技术)

微机原理(计算机原理与接口技术) 微机原理 ( 计算机原理 ) 第 10 讲 MIPS 体系结构与编程 1 第 10 讲 MIPS 体系结构与编程 MIPS 体系结构概述 MIPS 指令集简介 MIPS 汇编语言程序设计 2 MIPS 体系结构概述 MIPS 诞生于 1980 年代, 是最早的 RISC 处理器之一, 也是目前销量最好的 RISC 处理器之一, 从游戏机到路由器, 再到 SGI 的超级计算机, 都可以看到 MIPS

More information

Microsoft PowerPoint - Ch3-8086CPUæ„⁄令系ç»�(3)-æŁ°æ“®ä¼€é•†æ„⁄令

Microsoft PowerPoint - Ch3-8086CPUæ„⁄令系ç»�(3)-æŁ°æ“®ä¼€é•†æ„⁄令 2017 版 微机原理与系统设计 第 3 章 8086CPU 指令系统 董明皓, 博士 西安电子科技大学 dminghao@xidian.edu.cn 目录 (12 课时 ) 1 2 3 4 5 汇编语言基本概念 8086 指令分类数据与转移地址的寻址方式 8086 的六类指令总结 微机原理与系统设计 8086CPU 的指令系统董明皓 dminghao@xidian.edu.cn 2 基础知识引入

More information