毕业设计论文-多点温度检测系统的设计内容摘要:

6 即为单片机的最小系统组成图,其接线比较简单,在 OSC0、 OSC1 端接上晶振电容,在锁相环压控振荡器的阻容输入 VCP 端接上相应的电容电阻后即 可工作。 其他不用的电源端和地端接上 F的去藕电容提高抗干扰能力。 SPCE061A 单片机概述 随着单片机功能集成化的发展,其应用领域也逐渐地由传统的控制,扩展为控制处理、数据处理以及数字信号处理( DSP, Digital Signal Processing)等领域。 凌阳的 16 位单片机就是为适应这种发展而设计的。 它的 CPU 内核采用凌阳最新推出的 181。 ’nSP™ ( Microcontroller and Signal Processor) 16 位微处理器芯片(以下简称 181。 ’nSP™ )。 围绕 181。 ’n SP™所形成的 16 位 181。 ’nSP™ 系列 单片机(以下简称181。 ’nSP™ 家族)采 用的是 模块式集成结构 ,它以 181。 ’ nSP™内核为中心集成不同规模的ROM、 RAM 和功能丰富的各种外设接口部件。 SPACE061A 单片机内部结构如图 7所示。 其主要功能模块有并行 I/O 端口、数/模转换 ADC、数 /模转换 DAC、存储器 RAMamp。 FLASH、定时器 /计数器 T/C(脉宽调制输出 PWM)、 WatchDog、异步串行通信口 UART、指令寄存器 IR、设备串行口 SIO、低电压检测 LVD(低电压复位)等。 黄石理工学院毕业设计(论文) 14 图 6 单片机的最小系统图 图 7 SPACE061A模块结构图 181。 ’nSP™ 内核是一个通用的核结构。 除此之外的其它功能模块均为可选结构,亦即这种结构可大可小或可有可无。 借助这种通用结构附加可选结构的积木式的构黄石理工学院毕业设计(论文) 15 成,便可形成各种不同系列派生产品,以适合不同的应用场合。 这样做无疑会使每一种派生产品具有更强的功能和更低的成本。 SPCE061A 单片机的 硬件 结构 SPCE061A 芯片内部集成了 ICE (在线实时仿真 /除错器 )、 FLASH (闪存 )、SRAM (静态内存 )、通用 I/O 端口、定时器 /计数器、中断控制、 CPU时钟锁相环 (PLL)、 ADC (模拟数字转换器 )、 DAC (数字模拟转换器 )输出、 UART (通用异步串行输入输出接口 )、 SIO (串行输入输出接口 )、低电压监测 /低电压复位等模块。 在本章中我们将详细介绍各个模块的结构及应用。 181。 ’nSP 的核心由总线、 ALU 算术逻辑运算单元、寄存器组、中断系统及堆栈等部分组成。 其结构如图 所示。 ALU 算术逻辑运算单元 181。 ’nSP 的 ALU 非常有特色,除了一般基本的 16 位算术逻辑运算,还提供了结合算术逻辑的 16 位移位运算。 在数字信号处理方面,提供了高速的 16 位 1黄石理工学院毕业设计(论文) 16 6 位乘法运算和内积 (乘加 )运算。 1 16 位算术逻辑运算 181。 ’nSP 与大多数 CPU 一样,提供了基本的算术运算与逻辑操作指令,加法、减法、比较、补码、异或、或、与、测试、写入、读出等 16 位算术逻辑运算及 数据传送操作。 2 结合算术逻辑的 16 位移位运算 181。 ’nSP 的移位运算包括:算术右移 ASR、逻辑左移 LSL、逻辑右移 LSR、旋转左移 ROL 及旋转右移 ROR。 181。 ’nSP 的移位器 shifter 就串接在 ALU 的前面,也就是说,操作数在经过移位处理后,马上会进入 ALU 进行算数逻辑运算。 所以, 181。 ’nSP 的移位指令都是复合式指令,一个指令会同时完成移位和算术逻辑运算。 程序设计者可利用这些复合式的指令,撰写更精简的程序代码,进而增加程序代码密集度 (Code Density)。 在微控制器 应用中,如何增加程序代码密集度是非常重要的问题;提高程序代码密集度可以减少程序代码的大小,进而减少 ROM 或 FLASH 的需求,以降低系统成本与增加执行效能。 3 16 位 16 位的乘法运算和内积 (乘加 )运算 除了普通的 16 位算数逻辑运算指令外, 181。 ’nSP 还提供了高速的 16 位 16 位乘法运算指令 MUL, 和 16 位内积运算指令 MULS。 二者都可以用于有符号数相乘 (signed signed) 或无符号数与有符号数相乘 (unsigned signed)的运算。 在181。 ’nSP 指令集下, MUL 指令只需花费 12 个时钟周期, MULS 指令花费 10n+6 个时钟周期,其中 n 为乘加的项数。 例如: “MR=[R2]*[R1] , 4” 表示求 4 项乘积的和, MULS 指令只需花费 46( 104+6=46 )个时钟周期。 这两条指令大大的提升了 181。 ’nSP 的数字信号处理能力。 寄存器组 181。 ’nSP CPU 的寄存器组一共有 8 个 16 位寄存器,可分为通用寄存器和专用寄存器两大类别。 通用寄存器包括: R1~R4,作为算术逻辑运算的来源及目标寄存器。 专用寄存器包括 SP、 BP、 SR、 PC,是与 CPU 特定用途相关的寄存器。 1. 通用寄存器 R1~R4 (Generalpurpose registers) 可用于数据运算或传送的来源及目标寄存器。 寄存器 R R3 配对使用,还可组成一个 32 位的乘法结果寄存器 MR;其中 R4 为 MR 的高字符组, R3 为 MR 的低字符组,用于存放乘法运算或内积运算结果。 2. 堆栈指针寄存器 SP (Stack Pointer) SP 是用来纪录堆栈地址的寄存器, SP 会指向堆栈的顶端。 堆栈是一个先进后出的内存结构, 181。 ’nSP 的堆栈结构是由高地址往低 地址的方向来储存的。 CPU 执行 push、子程序调用 call、以及进入中断服务子程序 (ISR, Interrupt Service Routine) 时,会在堆栈里储存寄存器内容,这时 SP 会递减以反映堆栈用量的增加。 当 CPU 执行 pop 时、子程序返回 ret、以及从 ISR 返回 reti 时, SP 会递增以反映堆栈用量的减少。 181。 ’nSP 堆栈的大小限制在 2K 字的 SRAM 内,即地址黄石理工学院毕业设计(论文) 17 为 0x000000~0x0007FF 的内存范围中。 3. 基址指针寄存器 BP (Base Pointer) 181。 ’nSP 提供了一种方便的寻址方式,即基址寻址方式 [BP+IM6];程序设计者可通过 BP 来存取 ROM 与 RAM 中的数据,包括:局部变量( Local Variable)、函数参数( FunctionParameter)、返回地址( Return Address)等等。 BP 除了上述用途外,也可做为通用寄存器 R5,用于数据运算传送的来源及目标寄存器。 因此,在本书或程序中, BP 与 R5 是共享的,均代表基址指针寄存器。 4. 程序计数器 PC (Program Counter) 它的作用与一般微控制器中的 PC 相同 ,是用来纪录程序目前执行位置的寄存器,以控制程序走向。 CPU 每执行完一个指令,就会改变 PC 的值,使其指向下一条指令的地址。 在 181。 ’nSP 里, 16 位的 PC 寄存器与 SR 寄存器的 CS 字段,共同组成一个 22 位的程序代码地址。 5. 状态寄存器 SR (Status Pointer) SR内含许多字段,每个字段都有特别的用途,如图 所示。 其中包含两个 6 位的区段选择字段 : CS (Code Segment), DS (Data Segment),它们可与其它 16 位的寄存器结合在一起形成一个 22 位的地址,用来寻址 4M字容量的内存。 SPCE061A 只有 32K 字的闪存,只占用一页的存储空间,所以 CS 和 DS 字段在 SPCE061A 中都是设为 0。 算数逻辑运算的结果会影响 CPU 内的标志 (flag),标志的内容可以作为条件判断的依据。 181。 ’nSP 有四个 1 位的标志 : N、 Z、 S、 C,即 SR 寄存器中间的 4 个位( B6~B9)。 CPU 在执行条件跳转指令时,会先测试这些标志位,以控制程序的流向。 这些标志的详细说明如下: 1 进位标志 C C=0 时表示运算过程中无进位或是有借位情况产生;而 C=1 表示运算过程中有进位或是无借位情况产生。 在无符号数运算中, 16 位可以表示的数值范围是0x0000~0xFFFF,即 0~65535。 如果运算结果大于 65535(0xFFFF),则标志位 C 被置为 1。 请注意:进位标志 C 一般用于无符号数运算的进、借位判断。 2 零标志 Z Z=0 时表示运算结果不为 0, Z=1 时表示运算结果为 0。 3 负标志 N 负标志 N 是用来判断运算结果的最高位( B15)是否为 1。 B15=0 则 N=0; B15=1 则 N=1。 4 符号标志 S S=0 时表示运算结果 为正数或是 0, S=1 时则表示运算结果(在二进制补码的规则下)为负。 对于有符号数运算, 16 位所能表示的数值范围是 0x8000~0x7FFF,即 32768~32767。 若运算结果小于零,则符号标志 S 被置为 1。 有符号数运算的运算结果可能会大于 0x7FFF 或小于 0x8000。 比如: 0x7FFF+0x7FFF=0xFFFE( 65534),运算结果为正( S=0),且无进位( C=0)发生;在此情况下,负标志黄石理工学院毕业设计(论文) 18 N 被置为 1(因为最高位为 1)。 若标志 N 与 S 不同,则说明了有溢出 (overflow)发生,即: S=0, N=1 或 S=1, N=0。 符号标志 S 可用来判断有符号数的正负。 而 JVC(N==S), JVS(N!=S)则可用来判断溢出。 请注意: N, S 的组合用于有符号数溢出的判断。 特别需要注意:在运算操作过程中,若目标寄存器是 PC,则所有标志位均不会受到影响。 总结: [1].由于补码可以把有符号数与无符号数的运算统一起来,所以对于同一条加法或减法指令,既可以认为是有符号数运算又可以认为是无符号数运算,只是观察的角度、判断的标准不同而已。 [2].进位标志 C 一般用于无符号数运算的进、借位判断。 [3]. N, S 的组 合用于有符号数溢出的判断。 [4].有符号数的范围为 32768~32767,无符号数的范围为 0~65535。 若为有符号数,运算前数值的正负应利用负标志 N 来判断;运算后结果的正负应利用符号标志 S来判断。 下面我们举几个例子来分析说明标志位 [例 ]: R1=32767, R2=32767,求二者之和。 运算后 R1 中的内容为 0xFFFE。 R1=32767 //设值后的标志位为 N=0, Z=0, S=0, C=1; R1=0x7FFF R2=32767 //设值后的标志位为 N=0, Z=0, S=0, C=1; R2=0x7FFF。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。