版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、116位单片机及语音嵌入式系统2第1章 SPCE061A单片机简介3一、nSP家族的模块式结构 4体积小、集成度高、可靠性好且易于扩展具有较强的中断处理能力高性能价格比功能强、效率高的指令系统二、nSP家族的特点 5性能三、 SPCE061A简介16位nSP微处理器;工作电压:VDD为2.6-3.6V(cpu), VDDH为VDD- 5.5V(I/O)CPU时钟:0.32MHz-49.152MHz ;内置2K字SRAM;内置32K字FLASH;可编程音频处理;晶体振荡器;系统处于备用状态下(时钟处于停止状态),耗电小 于2A/3.6V;62个16位可编程定时器/计数器(可自动预置初始计数值);
2、2个10位DAC(数-模转换)输出通道;32位通用可编程输入/输出端口;14个中断源可来自定时器A / B,时基,2个外部时钟源输入,键唤醒; 具备触键唤醒的功能;使用凌阳音频编码SACM_S240方式(2.4K位/秒),能容纳210秒的语音数据;锁相环PLL振荡器提供系统时钟信号;性能732768Hz实时时钟;7通道10位电压模-数转换器(ADC)和单通道声音模-数转换器;声音模-数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能;具备串行设备接口;具有低电压复位(LVR)功能和低电压监测(LVD)功能;内置在线仿真电路ICE(In- Circuit Emulator)接口; 具有
3、保密能力;具有WatchDog功能(由具体型号决定)。性能8四、SPCE061A简介的结构9芯片引脚排列10SPCE061A实物图1.2 SPCE061A简介11SPCE061A最小系统的构成12五、SPCE061A开发方法通过在线调试器PROBE实现。它既是一个编程器(即程序烧写器),又是一个 实时在线调试器。PROBE工作于凌阳IDE集成开发环境软件包下,其5芯的仿真头直接连接到目标电路板上SPCE061A相应管脚,直接在目标电路板上的CPUSPCE061A调试、运行用户编制的程序。PROBE的另一头是标准25针打印机接口,直接连接到计算机打印口与上位机通讯,在计算机IDE集成开发环境软件
4、包下,完成在线调试功能。13计算机、PROBE、用户目标板连接图 14计算机、PROBE、用户目标板连接实物图 15本章内容结束16第2章 SPCE061A单片机硬件结构172.1 nSP的核心结构182.1.1 ALU算术逻辑运算单元16位算术逻辑运算 nSP提供了基本算术运算与逻辑操作指令,加法、减法、比较、补码、异或、或、与、测试、写入、读出等16位算术逻辑运算及数据传送操作。 192.1.1 ALU算术逻辑运算单元结合算术逻辑的16位移位运算 包括:算术右移ASR、逻辑左移LSL、逻辑右移LSR、旋转左移ROL及旋转右移ROR。 nSP的移位指令是复合式指令,一个指令会同时完成移位和算
5、术逻辑运算。程序设计者可利用这些复合式的指令,撰写更精简的程序代码,进而增加程序代码密集度 (Code Density)。202.1.1 ALU算术逻辑运算单元16位16位的乘法运算和内积(乘加)运算 高速的16位16位乘法运算指令MUL和16位内积运算指令MULS。可以用于有符号数相乘 (signedsigned) 或无符号数与有符号数相乘 (unsignedsigned)的运算。MUL指令只需花费12个时钟周期,MULS指令花费10n+6个时钟周期,其中n为乘加的项数。例如:“MR=R2*R1 ,4”表示求4项乘积的和,MULS指令只需花费46(104+6=46)个时钟周期。这两条指令大大
6、的提升了nSP的数字信号处理能力。 212.1.2 寄存器组共有8个16位寄存器分为通用寄存器和专用寄存器两大类通用寄存器包括:R1R4,作为算术逻辑运算的来源及目标寄存器专用寄存器包括: SP、BP、SR、PC,是与CPU特定用途相关的寄存器222.1.2 寄存器组通用寄存器R1R4 (General-purpose registers) 可用于数据运算或传送的来源及目标寄存器。寄存器R4、R3配对使用,还可组成一个32位的乘法结果寄存器MR;R4为MR的高字符组,R3为MR的低字符组,用于存放乘法运算或内积运算结果232.1.2 寄存器组堆栈指针寄存器SP (Stack Pointer)
7、SP用来记录堆栈地址,指向堆栈顶端。堆栈是一个先进后出的内存结构,nSP的堆栈结构由高地址往低地址方向储存。CPU执行push、子程序调用call及进入中断服务子程序(ISR,Interrupt Service Routine) 时,会在堆栈里储存寄存器内容,这时SP会递减以反映堆栈用量的增加。当CPU执行pop、子程序返回ret及从ISR返回reti时,SP会递增以反映堆栈用量的减少。nSP堆栈的大小限制在2K字的SRAM内,即地址为0 x0000000 x0007FF的内存范围中。242.1.2 寄存器组基址指针寄存器BP (Base Pointer) nSP提供了一种方便的寻址方式,即基
8、址寻址方式BP+IM6;程序设计者可通过BP来存取ROM与RAM中的数据,包括:局部变量(Local Variable)、函数参数(Function Parameter)、返回地址(Return Address)等。BP还可做为通用寄存器R5,用于数据运算传送的来源及目标寄存器。252.1.2 寄存器组程序计数器PC (Program Counter) 用来记录程序目前执行位置,以控制程序走向。CPU每执行完一个指令,就会改变PC的值,使其指向下一条指令的地址。在nSP里,16位的PC寄存器与SR寄存器的CS字段,共同组成一个22位的程序代码地址。 262.1.2 寄存器组状态寄存器SR (S
9、tatus Pointer) 状态寄存器SR内含许多字段,每个字段都有特别的用途。其中包含两个6位的区段选择字段: CS (Code Segment),DS (Data Segment),它们可与其它16位的寄存器结合在一起形成一个22位的地址,用来寻址 4M字容量的内存。 SPCE061A只有32K字的闪存,只占用一页的存储空间,所以CS和DS字段在SPCE061A中都是设为0。 算数逻辑运算的结果会影响CPU内的标志(flag),标志的内容可以作为条件判断的依据。 nSP有四个1位的标志: N、Z、S、C,即SR寄存器中间的4个位(B6B9)。 272.1.3 数据总线和地址总线nSP是1
10、6位单片机,它具有16位的数据线和22位地址线。所以其基本数据类型是16位的“字”型,内存都是按“字”操作,22位地址线最多可寻址到4M字的内存空间。地址线中的高6位A16A21来自SR寄存器中6位的CS字段或是6位的DS字段,低16位A0A15则来自内部寄存器。通常,地址线的高6位称为内存地址的Page Selector,简称为页码(Page);而低16位则称为内存地址的偏移量(Offset)。 nSP通过对区段(Segment)的编码来实现内存分页检索,通过Segment与Offset的配合产生22位地址,(注意: SPCE061A只有32K字闪存FLASH,仅占一页存储空间,所以CS字段
11、和DS字段在SPCE061A用不到,都设为0) 282.2 SPCE061A片内存储器结构SPCE061A片内有2K字的SRAM和32K闪存。292.2.1 RAMSPCE061A有2K字的SRAM(包括堆栈区),地址范围从0 x0000到0 x07FF。前64个字,即0 x00000 x003F地址范围内,可采用6位地址直接地址寻址方法,存取速度为2个CPU时钟周期;其余范围内(0 x00400 x07FF)内存的存取速度则为3个CPU时钟周期。 302.2.2 堆栈SPSP是用来记录堆栈地址的寄存器,SP会指向堆栈的顶端。堆栈是一个先进后出的内存结构,nSP的堆栈结构是由高地址往低地址的方
12、向来储存的。CPU执行push、子程序呼叫call及进入中断服务子程序(ISR,Interrupt Service Routine) 时,会储存寄存器内容在堆栈里,这时SP会递减以反映堆栈用量的增加。当CPU执行pop、子程序返回ret及从ISR返回reti时,SP会递增以反映堆栈用量的减少。 nSP堆栈大小限制在2K字的SRAM内,即地址为0 x0000000 x0007FF的内存范围中。SPCE061A系统复位后,SP初始化为0 x07FF,每执行push指令一次,SP指针减一。 312.2.3 闪存FlashSPCE061A是用闪存替代mask ROM的MTP(multi-time-pr
13、ogrammable)芯片,闪存可进行多次擦除与写入,可用来存储程序与数据。SPCE061A具有32K字(32K16位)闪存,32K字的内嵌闪存被划分为128页,每页存储容量为256字。它们在CPU正常运行状态下均可通过程序擦除或写入。全部32K字闪存均可在ICE工作方式下被写入或被擦除。不对用户开放整体擦除功能。 322.2.3 闪存Flash用户通过向P_Flash_Ctrl (写) ($7555H)单元写入0 xAAAA启用闪存的存取功能。然后,向P_Flash_Ctrl (写) ($7555H)单元写入0 x5511,来擦除页的内容。为保证数据的正确写入,用户必须在写入之前擦除页的内容
14、。页大小为0 x100。第一页地址范围:0 x80000 x80FF,最后一页的地址范围:0 xFF000 xFFFF。0 xFC000 xFFFF范围内的地址由系统保留,用户最好不要用本范围内的地址。 332.3 SPCE061A的输入/输出接口输入/输出接口(简称I/O端口)是单片机与外设交换信息的通道。输入端口负责从外界接收检测信号、键盘信号等各种开关量信号。输出端口负责向外界传送由内部电路产生的处理结果、显示信息、控制命令、驱动信号等。342.3 SPCE061A的输入/输出接口nSP内有并行和串行两种方式的I/O口。并行口线路成本较高,但是传输速率也较高;串行口的传输速率较低但可以节
15、省大量的线路成本。352.3 SPCE061A的输入/输出接口SPCE061A有两个16位的通用并行I/O口:A口和B口。这两个端口的每一位都可通过编程单独定义成输入或输出口。A口的IOA0-IOA7作为输入端口时,具有唤醒功能,即当输入电平发生变化时,会触发CPU中断。在电池供电、追求低耗电的应用场合,可以让CPU进入睡眠模式(利用软件控制)以降低功耗,需要时才以按键来唤醒CPU,使其进入工作状态。例如:手持遥控器、电子字典、PDA、计算器、无线电话等。362.3.1 I/O端口结构SPCE061A提供了位控制结构的I/O端口,每一位可单独用于数据输入或输出。每个独立的位可通过以下3种控制向
16、量来作设定:数据向量Data 属性向量Attribution 方向控制向量Direction 372.3.1 I/O端口结构每3个对应控制向量组合在一起,形成一个控制字,用来定义相对应I/O端口位的输入输出状态和方式。例如,需要IOA0是下拉输入引脚,则对应的Data、Attribution和Direction的值均被设为“0”。如需要IOA1是带唤醒功能的悬浮式输入引脚,则Data、Attribution和Direction的值被设为“010”。与其它的单片机相比,SPCE061A除了每个I/O口可以单独定义其状态外,每个对应状态下的I/O端口性质电路都是内置的,在实际的电路中不需要再外接。
17、 A口和B口的Data、Attribution和Direction的设定值均在不同的寄存器里,用户在进行I/O端口设置时要特别注意这一点382.3.2 并行I/O端口的控制向量组合方向向量_Dir、属性向量_Attrib和数据向量_Data 分别代表三个控制口。三个端口中每个对应的字节合在一起,形成一个控 制字,来定义相对应I/O端口位的输入/输出状态和 方式。392.3.2 并行I/O端口的控制向量组合_Dir位决定端口位的输入/输出方向:0为输入,1为输出。_Attrib位决定在端口位的输入状态下是为悬浮式输入还是非悬浮式输入:0为带上拉或下拉电阻式输入,1为悬浮式输入。在端口位输出状态下
18、决定其输出是反相还是同相:0为反相输出,1则为同相输出。 _Data位在端口位的输入状态下被写入时,与_Attrib字节合在一起形成输入方式的控制字00、01、10、11,以决定输入端口是带唤醒功能的上拉电阻式、下拉电阻式或悬浮式以及不带唤醒功能的悬浮式输入。_Data位在端口位的输出状态下被写入的是输出数据,不过,数据是经过反相器输出还是经过同相寄存器输出要由_Attrib位来决定。402.3.2 并行I/O端口的控制向量组合设置举例:1、把A口的B0定义成下拉电阻式的输入口,则A口_Dir、_Attrib和_Data三个向量对应的B0组合应设为000。2、把A口的B1定义成具有唤醒功能的悬
19、浮式输入口,只需将_Dir、_Attrib和_Data向量对应的B1组合设置为010即可。A口的IOA0IOA7作为唤醒来源,常用于键盘输入。要启用IOA0IOA7的唤醒功能,必先读取P_IOA_Latch单元,以此锁存IOA0IOA7引脚上的按键状态。随后系统才可通过指令进入低功耗的睡眠状态。当有按键按下时,IOA0IOA7的输入状态会与其在进入睡眠前被锁存时的状态不同,从而引起系统的唤醒。412.3.3 B端口的特殊功能422.4 时钟电路nSP的时钟电路采用晶体振荡器电路。外接晶振采用32768Hz。推荐使用外接32768Hz晶振,RC阻容振荡的电路时钟不如外接晶振准确。 432.4 时
20、钟电路实时时钟RTC(Real Time Clock) 32768Hz实时时钟常用于钟表、实时时钟延时及其它与时间相关类产品。SPCE061A通过对32768Hz实时时钟来源分频,提供了多种实时时钟中断。如,用作唤醒的中断来源IRQ5_2Hz,表示系统每隔0.5秒被唤醒一次,可作为精确的计时基准。 SPCE061A 还支持RTC振荡器强振模式/自动模式的转换。 442.5 PLL锁相环(Phase Lock Loop)PLL的作用:将系统提供的实时时钟基频(32768Hz)进行倍频,调整至49.152MHz、40.96MHz、32.768MHz、24.576MHz或20.480MHz。系统预设
21、的PLL振荡频率为24.576MHz。452.6 系统时钟32768Hz的实时时钟经PLL倍频电路后,产生系统时钟频率Fosc,Fosc再经分频得到CPU时钟频率(CPUCLK),可通过设定P_SystemClock(写)(7013H)单元来控制。预设的Fosc、CPUCLK分别为24.576MHz和Fosc/8。用户可以通过对P_SystemClock单元编程完成对系统时钟和CPU时钟频率的定义。 462.6 系统时钟 32768Hz RTC振荡器有两种工作方式:强振模式和自动弱振模式。强振模式时,RTC振荡器始终运行在高耗能的状态下。自动弱振模式时,系统在上电复位(power on res
22、et) 后的前7.5秒内处于强振模式,然后自动切换到弱振模式以降低功耗。CPU被唤醒后预设的时钟频率为Fosc/8,用户可以根据需要调整该值。472.6 系统时钟 在SPCE061A内,P_SystemClock(写 )(7013H)单元控制系统时钟和CPU时钟。第02位用来改变CPUCLK,若将第02位设为“111”可以使CPU时钟停止工作,系统切换至低功耗的睡眠状态;第57位可以改变系统时钟的频率。此外,在睡眠状态下,通过设置该单元的第4位可以开打或关闭32768Hz实时时钟。 482.7 时间基准信号简称时基信号,来自32768Hz实时时钟,通过频率选择组合而成。时基信号产生器的频率选择
23、TMB1,为TimerA的时钟来源B提供了各种频率选择信号,并为中断系统提供中断源(IRQ6)信号。时基信号产生器还可通过分频产生2Hz、4Hz、1024Hz、2048Hz以及4096Hz的时基信号,为中断系统提供各种实时中断源(IRQ4和IRQ5)信号。492.7 时间基准信号502.8 Timer定时器/计数器SPCE061A提供了两个16位的计时/计数器:TimerA和TimerB。TimerA为通用计数器, TimerA的时钟源由时钟源A和B进行“与”操作而形成。TimerB为多功能计数器,其时钟源仅为时钟源C。定时器发生溢出后,会产生一个溢出信号(TAOUT/TBOUT),它会传送到
24、CPU中断系统以产生定时器中断信号;此外,还可用于触发ADC输入的自动转换过程和DAC输出的数据锁存。 512.8 Timer定时器/计数器522.8 Timer定时器/计数器532.9 睡眠与唤醒2.9.1 睡眠 IC在上电复位后就开始工作,直到接收到睡眠信号,才关闭系统时钟(PLL振荡器),进入睡眠状态。 用户可通过P_SystemClock(读)(7013H)单元写入CPUClk STOP控制字(CPU睡眠信号)使系统从运行状态转入备用状态。 系统进入睡眠状态后,程序计数器(PC)会停在程序的下一条指令计数上,当有任一唤醒事件发生后,由此继续执行程序。 542.9.2 唤醒系统收到唤醒信
25、号后接通PLL振荡器,同时 CPU响应唤醒事件的处理并进行初始化。 IRQ3_KEY为触键唤醒来源(IOA70), 其它中断信号 (FIQ、IRQ1IRQ6 及 UART IRQ)都可作唤醒来源。唤醒操作完成后,由进入睡眠状态时的断点 处,继续执行程序。CPU需要200s的时 间才能完成唤醒的动作,所以睡眠/唤醒的 频率不能超过5KHz,否则CPU无法进入睡 眠模式。 552.10 模拟数字转换器ADC2.10.1 ADC的控制 SPCE061A有8个10位ADC通道,其中一个通道(MIC_In)用于语音输入,模拟信号经自动增益控制器和放大器放大后进行A/D转换。其余7个通道(Line_In)
26、和IOA06 引脚共享,可将输入的模拟信号 (如电压信号) 转换为数字信号。A/D转换范围是整个输入范围,即0VAVdd。无效的A/D模拟信号(超过VDD+0.3V或是低于VSS0.3V)将影响转换电路的工作范围,从而降低ADC的性能。由于Line_In通道和IOA06共享引脚,建议用户选择其它的IO引脚(非IOA06),以避免由于无效IO信号造成电压不稳(超过VDDIO+0.7V或低于VSSIO0.7V)而降低ADC的性能。 562.10.1 ADC的控制ADC最大输入电压由P_ADC_Ctrl(写)($7015H)的第7和第8位的值决定。第7位VEXTREF决定了ADC的参考电压为AVdd
27、或是外部参考电压。第8位V2VREFB决定了2V电压源是否起作用。A/D转换选择输入通道: 通过设置P_ADC_MUX_Ctrl(写)($702BH)的第02位,可以为A/D转换选择输入通道。通道包括MIC_In和Line_In两种。用户通过读取P_ADC(读)($7014H)单元,取得从MIC_In通道输入的模拟信号转换结果。用户可通过读取P_ADC_LINEIN_Data(读)($702CH)单元,取得从指定的Line_In通道输入的模拟信号转换结果。572.10.1 ADC的控制选择MIC_In通道后,可通过设置P_DAC_Ctrl(写) ($702AH)的第3和4位,选择A/D转换的触
28、发事件。睡眠状态,ADC被关闭(包括AGC和VMIC)。注意,供电复位后不论ADC是否被启用,VMIC信号都预设为ON。VMIC用于向外部的MIC提供电源,VMIC =AVDD。即,VMIC的状态和ADC的状态无关。所以,不使用VMIC时,用户必须把P_ADC_Ctrl(写)($7015H)单元的第1位MIC_ENB设为1,以关闭VMIC。 582.10.1 ADC的控制硬件ADC的最高速率限定为(Fosc/32/16)Hz,如果速率超过此值,当从P_ADC(读)($7014H)/ P_ADC_LINEIN_Data(读)($702CH)单元读出数据时会发生错误。 P_ADC_Ctrl(写)(
29、$7015H)单元的第5位DAC_OUT,可用来选择两通道音频DAC的最大输出。最大输出电流可为2mA或是默认值3mA。DAC_OUT的设置可改变DAC输出的功率。 592.10.1 ADC的控制P_ADC(读/写)(7014H) P_ADC储存MIC输入的A/D转换数据。逐次逼近式的ADC由一个10位DAC(DAC0) 、一个10位寄存器DAR0、一个逐次逼近寄存器SAR和一个比较器COMP组成。 P_ADC(读):读出本单元实际为A/D转换输出的10位数值。如果P_DAC_Ctrl (702AH)单元第3、4位被设为00,那么在转换过程里读出本单元(7014H)亦会触发A/D转换重新开始。
30、 602.10.1 ADC的控制P_ADC_Ctrl(读/写)(7015H) ADC的控制口。 P_ADC_MUX_Ctrl (读/写)( 702BH) ADC多通道控制通过控制P_ADC_MUX_Ctrl(702BH)单元来实现。 P_MUX_Data(读)(702CH) 用于读出LINE_IN7-10位ADC转换的数据。 612.10.2 MIC_IN通道方式ADCADC范围 MIC_In 通道方式的ADC,最大参考电压可达AVdd,即0V到AVdd。信号从MIC_In引脚输入,经寄存器后被放大。放大器的增益倍数可通过外部电路调整,然后AGC把MIC_In信号控制在指定的范围内。 622.
31、10.2 MIC_IN通道方式ADC设置 用户须先把P_ADC_Ctrl(写)($7015H)单元的第0位ADE设为1,第1位MIC_ENB设为0,从而启用A/D和MIC_In通道(供电复位之后,VMIC预设被打开)。然后,把第2位AGCE设为1,启用AGC。第3、4位用于设定MIC_In通道的ADC触发方式(Timer锁存或直接模式)。P_ADC_MUX_Ctrl(读/写)($702BH)的第02位为0时,模拟电压信号经MIC_In通道输入。 632.10.2 MIC_IN通道方式ADC操作 当触发MIC_In通道输入后,产生一个开始信号(b15(RDY) = 0)。逐次逼近式ADC首先设置
32、最高位,然后清除SAR 的其它位(10 0000 0000B)。这时,DAC0输出电压(1/2 AVdd) 与输入电压Vin进行比较。如果VinVDAC,保持原先设置为1的位(最高有效位)仍为1;否则,该位会被清为0。这个过程重复10次,直到这些位都被比较过。转换结果将会保存在SAR内。A/D转换完成之后,P_ADC_Ctrl (读) ($7015H)的第15位RDY被置为”1”。 642.10.2 MIC_IN通道方式ADC 1. 定时器锁存模式 当A/D转换完成时,用户通过读取P_ADC ($7014H) 或P_ADC_MUX_Data($702BH) 单元,以获得10位的A/D转换数据。
33、 定时器事件可由Timer A或Timer B触发。从P_ADC(R) ($7014H)读取数据后,不论处于直接状态还是定时器状态,P_ADC_Ctrl (读) ($7015H)的第15位RDY将被清除为”0”,并且重新进行A/D转换。若A/D转换结果没被读取,第15位RDY将继续保持为”1”,且不会继续执行A/D转换。 注意:P_ADC_Ctrl (读) ($7015H)第15位RDY与P_ADC_MUX_Ctrl (R) ($702BH) 第15位RDY的作用相同。 652.10.2 MIC_IN通道方式ADC 2. 直接模式 设置P_DAC_Ctrl(W)($702AH)的第3和4位,可
34、以指定MIC ADC的工作模式为直接模式。进行A/D转换之前,用户必须先读取P_ADC (读) ($7014H)单元的内容,以启用ADC,然后通过读取P_DAC_Ctrl ($702AH)单元的第15位,循环查询ADC的状态。完成A/D转换之后,程序再一次读取P_ADC (读) ($7014H)单元的内容来得到转换结果。 662.10.3 LINE_IN模式的ADC操作 SPCE061A提供7个Line_In通道, 与IOA6-0共享7个引脚672.11 DAC方式音频输出 SPCE061A为音频输出提供2个DAC通道: DAC1和DAC2, 由DAC1和DAC2引脚输出。 DAC输出范围:0
35、X0000到0XFFFF。682.11 DAC方式音频输出P_DAC2(读/写)(7016H) DAC2为10位的D/A转换单元。在DAC方式该单元带一个10位的缓冲寄存器DAR2。P_DAC2(写): 通过此单元直接写入10位数据到10位寄存器DAR2来锁存DAC2的输入数值(无符号数)。P_DAC2(读): 从DAR2内读出10位数据。692.11 DAC方式音频输出P_DAC1(读/写)(7017H) DAC1为10位的D/A转换单元。在DAC方式该单元带一个10位的缓冲寄存器DAR1。P_DAC1(写): 通过此单元直接写入10位数据到10位寄存器DAR1来锁存DAC1的输入数值(无符
36、号数)。P_DAC1(读): 从DAR1内读出10位数据。702.11 DAC方式音频输出P_DAC_Ctrl(写)(702AH) 第1位:0, 用于双DAC音频输出 第3、4位:控制A/D转换方式 第5-8位:选择DAC的数据锁存方式712.12 低电压监测/低电压复位(LVD/LVR)低电压监测LVD(Low Voltage Detect)提供系统内电源电压使用情况系统电压低于用户设定的低限电压VDD, P_LVD_Ctrl单元第15位(LVD监测标志位) 置1,否则为0SPCE061A有3级可编程低限电压:2.4V, 2.8V, 3.2V,通过对P_LVD_Ctrl编程控制722.12
37、低电压监测/低电压复位(LVD/LVR)低电压复位LVR(Low Voltage Reset)通过某种方式使单片机内各寄存器的值为初始的操作叫复位SPCE061A是在RESB端加一个低电平可令其复位732.13 串行设备输入输出端口(SIO)功能: SIO提供一个1位的串行接口,用于与其它设备进行数据通讯。在SPCE061A内通过IOB0和IOB1这2个口来实现与设备进行串行交换数据的功能。其中,IOB0为时钟口(SCK),IOB1为数据端口(SDA),用于串行数据的接收或发送。 串行输入输出口的启用: 设定P_SIO_Ctrl (701EH)(读/写)单元,通过P_IOB_Dir (7007
38、H),P_IOB_Attrib(7008H),P_IOB_Data(7005H) 三个IOB向量,将IOB0(SCK)设定为输出引脚。 742.13 串行设备输入输出端口(SIO)SIO传输速率最快可设为CPUCLK/4,默认值为CPUCLK/16。SPCE061A的SIO速率最快可达12288KHz。SIO可根据外设的差别来选择不同的寻址模式,有8/16/24位三种寻址模式可选择。用户通过写入P_SIO_Start (701FH)单元,来启动数据交换的过程。串行传输的起始地址是由P_SIO_Addr_Low、P_SIO_Addr_Mid 和 P_SIO_Addr_High 这3个单元所指定。
39、 752.13 串行设备输入输出端口(SIO)写入操作步骤向P_SIO_Start(写)单元写入任一数值,以启动数据传输;将要传送的八位数据写入P_SIO_Data (写) (701AH),这时SIO开始向串行外设传送起始地址,接着传送P_SIO_Data单元中的8位数据;连续检查P_SIO_Start(读)的内容,以得知目前的传送状态;再次对P_SIO_Data (写) 写入下一个八位数据;对P_SIO_Stop(写)(7020H)写入数据,结束本次传输。 762.13 串行设备输入输出端口(SIO)读取操作步骤向P_SIO_Start(写)单元写入任一数值,启动数据 传输;从P_SIO_D
40、ata (读) (701AH)单元读取传送过 来的数据,这时SIO会开始向串行外设传送起始地 址,接着接收串行外设传回的8位数据;连续检查P_SIO_Start(读)的内容,以得知目前传 送的状态;当传送完成时,再次对P_SIO_Data (读) 读取下 一个八位数据;对P_SIO_Stop(写)(7020H)写入数据,结束本 次传输。 772.13 串行设备输入输出端口(SIO) P_SIO_Ctrl(读/写)(701EH)用户必须设置P_SIO_Ctrl (701EH) (读/写)单元的第7位,将IOB0、IOB1分别设置为SCK引脚和SDA引脚。第6位用来决定串行接口是处于读取或是写入模
41、式。第3、4位的作用是让用户自行指定数据传输速度;而通过设置第0、1位,可以指定串行设备的寻址宽度。 782.13 串行设备输入输出端口(SIO) P_SIO_Data(读/写)(701AH)功能: 收发串行数据缓冲单元, 向此单元写入或读出数据, 可使串行端口发送或接收数据字节 P_SIO_Addr_Low(读/写)(701BH)功能: 串行设备起始地址低字节,默认值为00H792.13 串行设备输入输出端口(SIO) P_SIO_Addr_Mid(读/写)(701CH) P_SIO_Addr_High(读/写)(701DH)功能: 串行设备起始地址的中字节,默认值为00H功能: 串行设备起
42、始地址的高字节,默认值为00H802.13 串行设备输入输出端口(SIO) P_SIO_Start(读/写)(701FH) P_SIO_Stop(写)(7020H)功能: 启动数据传输,向此单元写入任意数值均可启动。读此单元数据可得到SIO的数据传输状态,第7位为busy标志位,如果为1则表示正在传输数据,传输完成,该位被清零,可传输新的字节。功能: 停止数据传输,向此单元写入任意数值停止数据传输。812.14 通用异步串行接口UART 功能:提供一全双工标准接口,用于SPCE061与外设之间的串行通信。借助于IOB端口和UART IRQ中断,可同时完成UART接口的接收和发送。UART还可通
43、过缓冲来接收数据,即可在寄存器数据被读出之前开始接收数据。822.15 保密设定系统正常运行时,每隔一定周期该定时器清零,如果在规定时间没有清零,CPU认为系统故障,进行系统复位(reset)。SPCE061A的看门狗定时器周期为0.75s。 功能:监视系统正常运行。832.16 看门狗计数器(WatchDog)将PAUSE接5V,PVIN接GND并维持1s以上,可将内部保险丝熔化,此后不能进行read、download和debug操作。注意:使用时一定要慎重。第3章 指令系统 3.1 指令系统的概述及符号约定nSP单片机指令按其功能可划分为: 1) 数据传送指令:包括立即数到寄存器、寄存器到
44、寄存 器、寄存器到存储器存储器到寄存器的数据传送操作; 2) 算术运算:包括加、减、乘运算; 3) 逻辑运算:包括与、或、异或、测试、移位等操作; 4) 转移指令:包括条件转移、无条件转移、中断返回、子程序调用等操作; 5) 控制指令:如开中断、关中断、FIR滤波器的数据的自由移动等操作。 寻址方式:1、立即数寻址: 这种寻址方式是操作数以立即数的形式出现,例如:R1 = 0 x1234,是把16进制数0 x1234赋给寄存器R1。 2、存储器绝对寻址: 这种寻址方式是通过存储器地址来访问存储器中的数据,例如:R1 = 0 x2222,访问0 x2222单元的数据。 3、寄存器寻址: 这种寻址
45、方式是操作数在寄存器中,例如:R1 = R2,是把寄存器R2 中的数据赋给寄存器R1。 4、寄存器间接寻址: 这种寻址方式是操作数的地址由寄存器给出,例如:R1 = BP,是把由BP指向的内存单元的数据送寄存器R1。 5、变址寻址: 这种寻址方式下,操作数的地址由基址和偏移量共同给出,例如:R1 = BP+0 x34。 表3-1 符号约定 3.2 数据传送指令一、立即数寻址: 【影响标志】 N,Z 【格式】 Rd = IM16 /16位的立即数送入目标寄存器Rd Rd = IM6 /6位的立即数扩展成16位后送入目标寄存器Rd 二、寄存器寻址: 【影响标志】 N,Z 【格式】 Rd = Rs
46、/将源寄存器Rs的数据送给目标寄存器Rd 三、直接地址寻址: 【影响标志】 N,Z 【格式】 A6 = Rs /将源寄存器Rs中的数据送给以A6为地址的存储单元 A16 = Rs /把Rs数据存储到A16指出的存储单元 Rd = A6 /把A6指定的存储单元数据读到Rd寄存器 Rd = A16 /把A16指定的存储单元数据读到Rd寄存器 四、变址寻址: 【影响标志】 N,Z 【格式】 BP + IM6 = Rs /把Rs的值存储到基址指针BP与6位的立即/数之和指出的存储单 元。 Rd = BP +IM6 /把基址指针BP与6位的立即数的和指定的存储单元数据读到Rd寄存器。 五、寄存器间接寻址
47、: 【影响标志】 N,Z 【格式】 Rd = Rs /把Rs的数据存储到Rd的值所指的存储单元Rd 中存放的是 操作数的地址。 例3.1:将R3的值保存于0 x25单元 R3 = 0 x5678 /把16位立即数0 x5678赋给R3 方法1: 0 x25 = R3 /将R3的值存储于0 x25存储单元,直接地址寻址 方法2: /0 x25单元的内容为0 x5678 R2 = 0 x25 /立即数0 x25送入R2中 R2 = R3 /将R3的值存储于0 x25存储单元,寄存器间接寻址 方法3: /0 x25单元的内容为0 x5678 BP = 0 x20 /立即数0 x20送入BP中; BP
48、 + 5 = R3 /将R3的值存储于0 x25存储单元,变址寻址0 x25、 /单元的内容为0 x5678 表3.2 数据传送指令一览表 堆栈操作【格式】 PUSH Rx,Ry TO SP POP Rx,Ry FROM SP 【说明】Rx,Ry 可以是R1R4,BP,SP,PC中的任意两个或一个,执行后将RxRy的序列寄存器压栈,或将堆栈中的数据弹入RxRy序列寄存器中,压栈操作不影响标志位,出栈操作影响N,Z标志,当Rx,Ry中含有SR时,所有标志位都会改变。压栈、出栈操作的执行周期为2n + 4,若出栈操作的目的寄存器中含有PC时,执行周期为3n+6。其中n是压栈数据的个数。压栈和出栈的
49、指令长度均为1字长 【举例】 PUSH R1,R5 to SP /将R5,R4,R3,R2,R1压 PUSH R2,R2 to SP /将R2压栈 PUSH R3 to SP /将R3压栈 POP R3 from SP /R3出栈 POP R2,R2 from SP /R2出栈 POP R1,R5 from SP /R1,R2,R3,R4,R5出栈 3.3 算术运算3.3.1 加法运算 加法运算影响标志位:N,Z,S,C。 立即数寻址(不带进位): 【格式1】 Rd += IM6 或 Rd = Rd + IM6 【操作】 Rd + IM6 Rd 【说明】 Rd的数据与6位(高位扩展成16位)立
50、即数相加,结果送Rd; 【格式2】 Rd = Rs + IM16 【操作】 Rs + IM16 Rd 【说明】 Rd的数据与16位的立即数相加,结果送Rd; 直接地址寻址 :【格式1】 Rd += A6 或 Rd = Rd + A6 【操作】 Rd + A6 Rd 【说明】 Rd的数据与6位地址指定的存储单元中的数据相加,结果送Rd。 【格式2】 Rd = Rs + A16 【操作】 Rs + A16 Rd 【说明】 Rs的数据与16位地址指定的存储单元中数据相加,结果送Rd。 变址寻址: 【格式】 Rd += Bp + IM6 或 Rd = Rd + BP + IM6 【操作】 Rd + B
51、p + IM6 Rd 【说明】 取基址指针BP与6位的立即数的和指定的存储单元中的数据与Rd相加,结果送Rd寄存器。 寄存器寻址: 【格式】 Rd += Rs 【操作】 Rd + Rs Rd 【说明】 Rd与Rs的数据相加,结果送Rd。 寄存器间接寻址: 【格式1】 Rd += Rs; 【操作】 Rd + Rs Rd 【说明】 Rd的数据与Rs所指定的存储单元中的数据相加,结果送Rd 【格式2】 Rd += Rs+ 【操作】 Rd + Rs Rd, Rs + 1 Rs 【说明】 Rd的数据与Rs所指定的存储单元中的数据相加,结果送Rd,修改Rs,Rs=Rs+1 【格式3】 Rd += Rs-;
52、 【操作】 Rd + Rs Rd, Rs - 1 Rs 【说明】 Rd的数据与Rs所指定的存储单元中数据相加,结果送Rd, Rs=Rs- 1 【格式4】 Rd += +Rs; 【操作】 Rs + 1 Rs, Rd + Rs Rd 【说明】 首先修改Rs=Rs+1,Rd的数据与Rs所指定的存储单元中的数据相加,结果送Rd, 注意:有符号数的溢出只判断N和S两位:N!=S时溢出,N=S时无溢出。 3.3.2 减法运算减法运算影响标志位:N,Z,S,C。 立即数寻址: 【格式1】 Rd - = IM6 或 Rd = Rd IM6 【操作】 Rd IM6 Rd 【说明】 Rd的数据减去6位(bit)立
53、即数,结果送Rd。 【格式2】 Rd = Rs IM16 【操作】 Rs IM16 Rd 【说明】 Rs的数据减去16位(bit)立即数,结果送Rd。直接地址寻址: 【格式1】 Rd - = A6 或 Rd = Rd A16 【操作】 Rd A6 Rd 【说明】 Rd的数据减去A6存储单元中的数据,结果送Rd。 【格式2】 Rd = Rs -A16 【操作】 Rs A16 Rd 【说明】 Rs的数据减去A16存储单元中的数据,结果送Rd。 变址寻址: 【格式】 Rd - = BP + IM6 或 Rd = Rd BP + IM6 【操作】 Rd BP + IM6 Rd 【说明】 Rd的值减去基
54、址加变址指定的存储单元的值,结果送Rd 寄存器寻址: 【格式】 Rd - = Rs 【操作】 Rd Rs Rd 【说明】 寄存器Rd的数据减去Rs的数据,结果送Rd寄存器 寄存器间接寻址: 【格式1】 Rd - = Rs 【操作】 Rd -Rs Rd 【说明】 Rd的数据与Rs所指定的存储单元中的数据相减,结果送Rd。 【格式2】 Rd - = Rs+ 【操作】 Rd - Rs Rd, Rs+1 Rs 【说明】 Rd的数据与Rs所指定的存储单元中的数据相减,结果送Rd, Rs的值加1 【格式3】 Rd - = Rs- 【操作】 Rd - Rs Rd, Rs 1 Rs 【说明】 Rd的数据与Rs
55、所指定的存储单元中的数据相减,结果送Rd, Rs的值减1 【格式4】 Rd - = +Rs 【操作】 Rs + 1 Rs,Rd - Rs Rd 【说明】 Rs 的值加1,Rd的数据与Rs所指定单元数据相减,结果送Rd 3.3.3 带进位的加减运算 带进位的加法格式 :Rd += IM6,Carry Rd = Rd + IM6,Carry Rd = Rs + IM16,Carry Rd += BP + IM6 ,Carry Rd = Rd + BP + IM6 ,Carry Rd += A6 ,Carry Rd = Rd + A6 ,Carry Rd = Rs + A16 ,Carry Rd +
56、= Rs,Carry Rd += Rs ,Carry Rd += +Rs ,Carry Rd += Rs-,Carry Rd += Rs+,Carry 带进位的减法格式 :Rd - = IM6,Carry Rd = Rd - IM6,Carry Rd = Rs - IM16,Carry Rd - = BP + IM6 ,Carry Rd = Rd - BP + IM6 ,Carry Rd - = A6 ,Carry Rd = Rd - A6 ,Carry Rd = Rs - A16 ,Carry Rd - = Rs,Carry Rd - = Rs ,Carry Rd - = +Rs ,Carr
57、y Rd - = Rs-,Carry Rd - = Rs+,Carry 3.3.4 取补运算 取一个数的补码,在计算机中表示为取其反码,再加1,SPCE061A也正是这样处理的。取补运算影响标志位N,Z。 【举例】计算数- 600与0 x0040单元数据的差。 R1 = - 600 R2=0 x0001 0 x0040=R2 BP = 0 x0040 /取该单元地址 R2 = -BP /取此数的补码,-1的补码为0 xFFFF R1 += R2 /相加,结果送R1 3.3.5 SPCE061A的乘法指令 注:Rd,Rs可用R1R4,BP;MR由R4、R3构成,R4是高位,R3为低位 【影响标志
58、】无 【格式1】 MR = Rd * Rs 或 MR = Rd * Rs,ss 【功能】 Rd * Rs MR 【说明】 表示两个有符号数相乘,结果送MR寄存器 【格式2】 MR = Rd * Rs,us 【功能】 Rd * Rs MR 【说明】 表示无符号数与有符号数相乘,结果送MR寄存器。 3.3.6 SPCE061A的n项内积运算指令 【影响标志】无 【格式】 MR = Rd * Rs ,ss ,n 【功能】 指针Rd与Rs所指寄存器地址内有符号数据之间或无符号与有符号字数据之间进行n项内积运算,结果存入MR。符号的缺省选择为ss,即有符号数据之间的运算。n的取值为116,缺省值为1。
59、内积运算操作如图3-2所示。 【执行周期】10n6 【说明】 当FIR_MOV ON时,允许FIR运算过程中数据自由移动。为新样本取代旧样本进行数据移动准备:Xn- 4=Xn- 3,Xn- 3=Xn- 2,Xn- 2=Xn- 1。如上图所示当完成一次内积运算后,X1、X2、X3自动右移,X4移出。这在数字信号处理中十分有用。比如你要计算连续4次采样值的平均值,你即可将采样值放到X1- - - -X4中,加权系数放到C中,然后完成Rd * Rs ,ss ,4运算,再求平均值。当FIR_MOV ON时,运算完后X1、X2、X3自动右移,X4移出,这样我们就可以把下一次的采样值X0放到原X1的位置,
60、下一次直接完成Rd * Rs ,ss ,4运算,即X0-X3的运算,不必手动移动Xn。 内积运算操作示意图示 注意: (1)Rs和 Rd其中任意一个都不能为R3或R4,否则会出错。 (2)Rs和Rd不能同为一个寄存器,否则会出错。 3.3.7 比较运算(影响标志位N,Z,S,C) 比较运算执行两数的减法操作,不存储运算结果,只影响标志位N、Z、S、C,下面按寻址方式分别介绍比较运算的各条指令。 立即数寻址: 【格式1】 CMP Rd,IM6 【说明】 将Rd与6位(bit)立即数相减。 【格式2】 CMP Rd,IM16 【说明】 将Rd与和16位立即数相减。 直接地址寻址: 【格式1】 CM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026天津市公安局辅警招聘笔试题库
- 2026年一级造价工程师职业资格考试(建设工程计价)测试题及答案一
- 材料学基础单元试题及答案
- 2025年一级建造师执业资格考试(建设工程经济)综合练习题及答案
- 2025 中医诊断学肾阳虚证查房课件
- 2025~2026学年广西壮族自治区玉林市北流市第二学期九年级期中适应性训练历史试卷
- 2025~2026学年山东菏泽市单县部编版九年级下学期历史中考一模试卷
- 2025~2026学年山东德州市平原县部编版九年级下学期学业水平第一次模拟检测历史试卷
- 网络经理专业试题与答案大全
- 编程省级大赛新颖试题及答案
- 1.1 从原始社会到奴隶社会 课件 2026-2027学年统编版九年级历史上册
- 销售目标任务责任书
- 护理实习中的心理调适
- 高校新校区建设项目水资源论证报告书
- 2026年二级建造师《市政实务》考试真题及答案解析
- “化危为安”线上讲堂第153期-用好重大隐患判定准则 准确排查整治风险隐患-程长进
- 2026年秋新教科版五年级上册科学全册教案+教学计划
- 回复供应商询价的回复函3篇范文
- 福建省2025年中国奥林匹克竞赛预赛化学试题 (无答案)
- 气切病人脱机训练
- 高空作业平台倾覆现场处置方案
评论
0/150
提交评论