《(14)--第9章 比较器与乘法器.pdf》由会员分享,可在线阅读,更多相关《(14)--第9章 比较器与乘法器.pdf(49页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第9章章 比较器与乘法器比较器与乘法器9.1 比较器比较器 B (Comp_B)比较器B(Comp_B)主要内容 Comp_B 概述 Comp_B 结构 Comp_B 功能使用模拟输入端模拟输入开关比较器参考电压发生器输出电路 Comp_B 中断 Comp_B 库函数 Comp_B 应用举例比较器B 概述(1/1)比较器B是为精确的比较测量而设计的,如电池电压监测、产生外部模拟信号、测量电流、电容和电阻,结合其他模块还可实现精确的 A/D模数转换功能。比较器B 是工业仪表、手持式仪表等产品设计中的理想选择。5系列之前的 MSP430单片机仅有比较器 A,5/6系列 430单片机升级为比较器
2、B。Comp_B是一个模拟电压比较器,涵盖了多达 16通道的通用比较器功能。比较器B 概述(2/2)Comp_B模块主要特性有:正向反向终端输入多路选择器通过软件选择比较器输出的 RC滤波可输出到 TA的捕获输入软件控制端口输入缓冲具有中断能力可选的参考电压发生器、电压磁滞发生器参考电压输入可选择共用参考电压超低功耗的比较模式低功耗模式支持中断驱动测量系统比较器B 结构(1/1)比较器 B 的结构,如下图所示:比较器B包括:两个模拟量输入端 CB0和 CB1一个模拟比较器参考电压发生器和输出滤波器还有一些控制单元比较器B 功能使用(1/5)比较器 B的主要功能:指出两个输入电压 CB0和 CB
3、1的大小关系,然后设置输出信号 CBOUT的值。如果 CB0CB1 则:CBOUT1,否则 CBOUT0。模拟输入端参与比较的两个模拟信号通过正、负两个输入电压端:CB0和CB1进入比较器B,输入电流极小。这两个输入端可由用户软件设置,最终能够选择 6种信号(CB0、CB1、0.5VCC、0.25VCC、三极管阀值电压和外部参考源),而且能够进行多种组合比较。硬件提供的比较组合如下:两个外部输入比较每个外部输入与 0.5VCC或0.25VCC比较每个外部输入与内部基准电压比较比较器B 功能使用(2/5)模拟输入开关通过 CBIPSELx及CBIMSELx位,用于选择两个比较器输入终端与相应端口
4、管脚之间连接还是断开。比较器的输入终端可以分别进行控制。通过配置 CBIPSELx/CBIMSELx位可以实现:将外部信号连接到比较器的正端或负端 内部参考电压到相应输出端口管脚选择一个路径 将外部电流源应用到比较器的正端或负端 内部多路选择器的两个端口到外部的映射CBEX位控制输入多路选择器,改变比较器正端或负端输入信号的顺序。另外,当比较器终端顺序发生改变时,比较器输出信号也发生反转,这使用户可以检测或补偿比较器输入端的偏置电压。比较器B 功能使用(3/5)比较器如比较器 B 的结构图所示,比较器位于模拟信号输入和滤波输出之间的部分。比较器对正和负输入终端的模拟信号进行比较。如果正端信号大
5、于负端,则比较器输出 CBOUT为高。其中与门负责将比较输出信号进行整形。可以通过CBON 位来关闭或打开比较器。控制位 CBEX选择正向或反向输出。比较器B 功能使用(4/5)参考电压发生器COMP_B参考电压的框图,如下图所示:参考电压发生器用于产生用于比较器任意输入端的 VREF。如果外部信号用于两个比较器输入端,应当关闭内部参考电压发生器,从而降低电流消耗。比较器B 功能使用(5/5)输出电路最终输出信号的上升沿或下降沿可以设置为具有中断能力。如果不使用中断,可将输出信号送给内部其他模块,作为其他模块的一个输入信号;还可以由外部引脚引出。另外,比较器 B 可以适合于低功耗应用,该模块可
6、通过软件打开/关闭,不用时关闭以便电流消耗最小。比较器B 中断(1/1)中断标志 CBIFG,在比较器输出的上升沿或下降沿时都会置位,上升沿或下降沿由 CBIES位选择。如果 CBIE及GIE位都置位,CBIFG标志将产生中断请求。比较器B 库函数(1/3)比较器 API分成3组函数:处理初始化和输出,处理中断,处理辅助功能。处理初始化和输出的相关 API:COMPB_init()COMPB_setReferenceVoltage()COMPB_enable()COMPB_disable()COMPB_outputValue()比较器B 库函数(2/3)处理中断的相关 APICOMPB_ena
7、bleInterrupt()COMPB_disableInterrupt()COMPB_clearInterrupt()COMPB_getInterruptStatus()COMPB_interruptSetEdgeDirection()COMPB_interruptToggleEdgeDirection()比较器B 库函数(3/3)处理辅助功能的相关 APICOMPB_enableShortOfInputs()COMPB_disableShortOfInputs()COMPB_disableInputBuffer()COMPB_enableInputBuffer()COMPB_IOSwap(
8、)比较器B 应用举例(1/9)例1、使用CompB,比较输入电压和内部参考电压大小,如果大于内部参考电压 2.0V,则CBOUT输出高电平,否则输出低电平,用 LED亮灭来标识比较结果。相关程序如下:#include void main(void)WDTCTL=WDTPW+WDTHOLD;/关闭看门狗定时器P3DIR|=BIT0;/P3.0输出方向P3SEL|=BIT0;/选择P3.0/CBOUT引脚为外设功能/配置 比较器BCBCTL0|=CBIPEN+CBIPSEL_0;/使能V+,输入通道CB0CBCTL1|=CBPWRMD_1;/正常电源模式CBCTL2|=CBRSEL;/VREF应用
9、到负端比较器B 应用举例(2/9)/R-ladder off;bandgap ref voltage(1.2V)CBCTL2|=CBRS_3+CBREFL_2;/supplied ref amplifier to get Vcref=2.0V(CBREFL_2)CBCTL3|=BIT0;/关闭输入缓冲P6.0/CB0CBCTL1|=CBON;/打开CompB_delay_cycles(75);/延时,用于comp判断电压大小/进入LPM4/空操作,用于调试_bis_SR_register(LPM4_bits);_no_operation();比较器B 应用举例(3/9)用库函数调用,实现例 1
10、相同功能相关程序如下:void main(void)/关闭看门狗定时器WDT_hold(_MSP430_BASEADDRESS_WDT_A_);/选择P3.0/CBOUT引脚为外设功能GPIO_setAsPeripheralModuleFunctionOutputPin(_MSP430_BASEADDRESS_PORT3_R_,GPIO_PORT_P3,GPIO_PIN0);/初始化比较器B/CB0连接到正端,/VREF应用到负端,/正常电源模式COMPB_init(_MSP430_BASEADDRESS_COMPB_,COMPB_INPUT0,COMPB_VREF,COMPB_POWERMO
11、DE_NORMALMODE,COMPB_FILTEROUTPUT_DLYLVL1,COMPB_NORMALOUTPUTPOLARITY);比较器B 应用举例(4/9)/VREF应用到负端,选择参考电压为2V/参考电压为 2.0 V,/上线 2.0*(32/32)=2.0V,/下线 2.0*(32/32)=2.0VCOMPB_setReferenceVoltage(_MSP430_BASEADDRESS_COMPB_,COMPB_VREFBASE2_0V,32,32);/使能COMP模块COMPB_enable(_MSP430_BASEADDRESS_COMPB_);/延时,用于comp判断电压
12、大小_delay_cycles(75);比较器B 应用举例(5/9)例2:利用COMPB中断处理能力:Vcompare与内部参考电压1.5V比较,如果超过 1.5V,就置位CBIFG,进入中断处理函数。相关程序如下:#include void main(void)WDTCTL=WDTPW+WDTHOLD;/关闭看门狗定时器P1DIR|=BIT0;/P1.0/LED设为输出方向/打开CompBCBCTL0|=CBIPEN+CBIPSEL_0;/使能V+,输入CB0通道CBCTL1|=CBPWRMD_1;/正常电源模式CBCTL2|=CBRSEL;/VREF应用到负端/R-ladder off;b
13、andgap ref voltage(1.2V)CBCTL2|=CBRS_3+CBREFL_1;/设置参考电压Vcref=1.5V(CBREFL_2)CBCTL3|=BIT0;/关闭输入缓存 P6.0/CB0_delay_cycles(75);/延时,用于comp判断电压大小比较器B 应用举例(6/9)CBINT&=(CBIFG+CBIIFG);/清除中断标志CBINT|=CBIE;/在CBIFG(CBIES=0)上升沿使能CompB中断CBCTL1|=CBON;/使能 比较器B_bis_SR_register(LPM4_bits+GIE);/打开全局中断,进入LMP4_no_operatio
14、n();/空操作,用于调试/Comp_B ISR 翻转LED#pragma vector=COMP_B_VECTOR_interrupt void Comp_B_ISR(void)CBCTL1=CBIES;/翻转中断跳变沿CBINT&=CBIFG;/清除中断标志P1OUT=0 x01;/翻转P1.0比较器B 应用举例(7/9)用库函数调用,实现例 2相同功能相关程序如下:void main(void)/关闭看门狗定时器WDT_hold(_MSP430_BASEADDRESS_WDT_A_);/P1.0/LED设为输出方向GPIO_setAsOutputPin(_MSP430_BASEADDRE
15、SS_PORT1_R_,GPIO_PORT_P1,GPIO_PIN0);/初始化比较器B模块/VREF应用到负端/普通电源模式COMPB_init (_MSP430_BASEADDRESS_COMPB_,COMPB_INPUT0,COMPB_VREF,COMPB_POWERMODE_NORMALMODE,COMPB_FILTEROUTPUT_DLYLVL1,COMPB_NORMALOUTPUTPOLARITY);比较器B 应用举例(8/9)/VREF应用到负端/参考电压为1.5V /上限1.5*(32/32)=1.5V,/下限1.5*(32/32)=1.5VCOMPB_setReference
16、Voltage(_MSP430_BASEADDRESS_COMPB_,COMPB_VREFBASE1_5V,32,32);/使能中断COMPB_enableInterrupt(_MSP430_BASEADDRESS_COMPB_,CBIE);/使能CompB模块COMPB_enable(_MSP430_BASEADDRESS_COMPB_);_bis_SR_register(LPM4_bits+GIE);/打开全局中断,进入LPM4_no_operation();/空操作,用于调试比较器B 应用举例(9/9)#pragma vector=COMP_B_VECTOR_interrupt void
17、 COMPB_B_ISR(void)/翻转中断跳变沿COMPB_interruptToggleEdgeDirection(_MSP430_BASEADDRESS_COMPB_);/清除中断标志COMPB_clearInterrupt(_MSP430_BASEADDRESS_COMPB_,CBIFG);/翻转P1.0GPIO_toggleOutputOnPin(_MSP430_BASEADDRESS_PORT1_R_,GPIO_PORT_P1,GPIO_PIN0);9.2 硬件乘法器硬件乘法器硬件乘法器(MPY32)主要内容 MPY32 概述 MPY32 结构 MPY32 操作 操作数寄存器 结
18、果寄存器 小数部分 MPY32 库函数 MPY32 应用举例硬件乘法器 概述(1/3)我们知道,使用 CPU进行复杂的乘法运算,会在很大程度上消耗CPU资源,硬件乘法器作为外设模块,不影响CPU工作,仅需要 CPU指令载入操作数,硬件乘法器就可以把运算结果存放到相应寄存器,再利用 CPU指令读取寄存器中存储的运算结果。硬件乘法器大大加强了 MSP430的功能并提供了软硬件相兼容的范围,提高了数据处理能力。硬件乘法器(MPY32)是一个通过内部总线与 CPU相连16位外围模块,如下图所示。硬件乘法器 概述(2/3)硬件乘法器 概述(3/3)硬件乘法器(MPY32)支持以下运算:无符号乘法(MPY
19、)有符号乘法(MPYS)无符号乘加(MAC)有符号乘加(MACS)8位、16位、24位、32位运算饱和模式浮点数模式1616位、816位、168位、88位与 16位硬件乘法器兼容的 8位和 16位操作8位和24位的乘法运算无需“标记扩展”指令硬件乘法器 结构(1/1)32位硬件乘法器的结构框图,如右图所示:硬件乘法器 操作(1/10)硬件乘法器支持 8位,16位,24位,32位的无符号数乘法、无符号数乘加、有符号数乘法、有符号数乘加操作。操作类型由第一个写入的操作数类型决定。硬件乘法器有 2个32位操作数寄存器,操作数 OP1 和操作数OP2,以及 1个64位结果寄存器,通过访问 RES0-R
20、ES3寄存器获取。为了兼容1616的硬件乘法器,可以通过 RESLO、RESHI和SUMEXT 三个寄存器访问8位或者 16位的运算结果。RESLO 存储1616结果的低字,RESHI 存储高字,而SUMEXT则存储结果的有关信息。硬件乘法器 操作(2/10)操作数寄存器操作数 0P1内置12个寄存器(如下表所示),将数据载入到乘法器并选择乘法器模式。对给定地址写入第一个操作数的低字时,就选择了乘法运算的类型,但并不开始任何操作。当向后缀为 32H的高字寄存器写入第二个字时,乘法器就认为 OP1是32位,否则就认为是16位。在写入OP2之前写入的最后一个地址定义了第一个操作数的长度。例如,先写
21、 MPY32L再写MPY32H,所有 32位数据都将参加运算,OP1被认为是32位的。如果先写的是 MPY32H后写MPY32L,那么乘法器就会忽略先写的 MPY32H,认为OP1是16位的,并且只有写入 MPY32L的数据参加运算。OP1寄存器名称操作MPY无符号数乘法 操作数位015MPYS有符号数乘法操作数位015MAC无符号数乘加 操作数位015MACS有符号数乘加 操作数位015PY32L无符号数乘法操作数位015PY32H无符号数乘法 操作数位1631PYS32H有符号数乘法 操作数位1631AC32L无符号数乘加操作数位015AC32H无符号数乘加 操作数位1631ACS32L有
22、符号数乘加 操作数位015ACS32H有符号数乘加 操作数位1631硬件乘法器 操作(3/10)如果操作数 OP1值用于连续操作时,可以无需重载 OP1而重复执行乘法操作。执行操作时没必要对 OP1重新写入。OP2寄存器名称操作OP2启动乘法操作和一个 16位长度的操作数 2(OP2)(操作数位015)OP2L启动乘法操作和一个 32位长度的操作数 2(OP2)(操作数位015)OP2H继续乘法操作和一个 32位长度的操作数 2(OP2)(操作数位1631)硬件乘法器 操作(4/10)写入第二个操作数到寄存器 OP2将会启动乘法操作。对 OP2的写操作将启动第二个 16位操作数与存储在 OP1
23、内值的乘法运算。对 OP2的写操作将启动第二个 32位操作数乘法运算,乘法器等待 OP2H写入一个高字。没有写 OP2L的情况下,将忽略对 OP2H的写操作。硬件乘法器 操作(5/10)乘法操作的结果总是 64位,可以通过寄存器 RES0RES3访问。MPYS或MACS用于有符号操作时,结果通常会有符号位的扩展。在MACS 操作之前,结果寄存器载入初始值,那么用户必须保证写入结果寄存器的值是可以符号扩展到 64位。除了 RES0RES3,为了与 1616硬件乘法器兼容,8位操作或16位操作的 32位结果可以通过RESLO、RESHI和SUMEXT访问。在这种情况下,RESLO寄存器保存计算结果
24、的低 16位,RESHI寄存器保存高 16位。在使用和访问计算结果方面,RES0、RES1分别与RESLO和 RESHI相同。结果扩展寄存器 SUMEXT的内容取决于乘法器的操作,如下表所列。如果操作数是 16位或更短时,32位结果决定符号和进位位。如果其中一个操作数大于 16位,则结果为 64位。结果寄存器模式SUMEXTMPYCMPYSUMEXT总是为 0000hMPYC总是0MPYSSUMEXT包含结果的符号扩展MPYC含有结果的符号0000h 结果为正或零0 结果为正或零0FFFFh 结果为负1 结果为负MACSUMEXT包含结果进位MPYC包含结果进位0000h 结果没有进位0 结果
25、没有进位0001h 结果有进位1 结果有进位MACSSUMEXT包含结果的符号扩展MPYC含有结果进位0000h 结果为正或零0 结果没有进位0FFFFh 结果为负1 结果有进位硬件乘法器 操作(6/10)MPYC位反映了乘法器的进位,如下表所列,如果没有选择小数模式或者饱和模式,则该位可以作为结果的第 33位或第65位。对于MAC或者MACS操作,MPYC位反映32位或 64位累积的进位,不作为 MAC和MACS连续操作的33位或第 65位。小数部分32位乘法器支持定点信号处理功能。在定点信号处理过程中,小数通常用一个固定的十进制小数来表示。使用 Q格式的表示方法来区分不同范围的小数。不同的
26、 Q格式表示不同的十进制小数点位置。下图表示有符号 Q15数据的16位数据格式。小数点后的每一位,精度为1/2,最高有效位是符号位。最大的负数为08000h,最大的正数是07FFFh。因此,16位有符号的 Q15格式可以表示从 1.0到0.9999694821.0的数。硬件乘法器 操作(7/10)可以通过如下图所示右移小数点来增大表示的范围。16位有符号的Q14格式可以表示从 2.0 到 1.9999389652.0的数。乘法器采用 16位有符号 Q15或32位Q31的好处是:两个在-1.0到1.0范围内的两个数的乘积总是在同一范围内。硬件乘法器 操作(8/10)硬件乘法器 操作(9/10)小
27、数模式MPYFRAC=0和 MPYSAT=0,采用默认乘法模式的两个小数相乘,其结果具有 2位符号位。例如:两个 16位 Q15格式的数相乘,将得到一个 32位Q30格式的结果。读取结果寄存器RES1,结果为16位Q15格式。两个 32位Q31格式的数相乘,其结果可以通过读取寄存器 RES2和RES3获得。当MPYFRAC=1时,结果寄存器的实际值并没有改变。当通过软件访问这个结果时,计算结果左移一位,形成最终的 Q格式结果。这样就允许用户通过软件选择读取移位的结果还是未移位的结果。小数模式只能在需要的时候使能,在使用完之后禁止。硬件乘法器 操作(10/10)当寄存器 MPY32CTL0的MP
28、YSAT=1时,则使能饱和模式。在饱和模式下,乘法器可以防止有符号数操作结果的上溢或者下溢。如果发生上溢,结果将被设置成正的最大有效值。如果发生下溢,结果将被设置成负的最大有效值。这可以减少控制系统在溢出条件下的数学结果。饱和模式只能在需要的时候使能,在使用完之后应禁止。饱和模式硬件乘法器 库函数(1/3)硬件乘法器 API分成 3组函数:模块配置函数,操作数设置函数,结果返回函数。模块配置相关 API:MPY32_setWriteDelay()MPY32_setSaturationMode()MPY32_resetSaturationMode()MPY32_setFractionMode()
29、MPY32_resetFractionMode()硬件乘法器 库函数(2/3)操作数设置相关 API:MPY32_setOperandOne8Bit()MPY32_setOperandOne16Bit()MPY32_setOperandOne24Bit()MPY32_setOperandOne32Bit()MPY32_setOperandTwo8Bit()MPY32_setOperandTwo16Bit()MPY32_setOperandTwo24Bit()MPY32_setOperandTwo32Bit()硬件乘法器 库函数(3/3)结果返回相关 API:MPY32_getResult8Bi
30、t()MPY32_getResult16Bit()MPY32_getResult24Bit()MPY32_getResult32Bit()MPY32_getResult64Bit()MPY32_getSumExtension()MPY32_getCarryBitValue()硬件乘法器 应用举例(1/6)例1、利用硬件乘法器计算两个 16位无符号整数的乘积,0 x12340 x5678第二个操作数写入完毕,乘法运算就开始。结果存放在 RESLO,RESHI中。ACLK=REFO=32.768kHz,MCLK=SMCLK=默认 DCO。相关程序如下:#include void main(void
31、)WDTCTL=WDTPW+WDTHOLD;/关闭看门狗定时器MPY=0 x1234;/载入第一个无符号整型操作数,表明是无符号乘法OP2=0 x5678;/载入第二个无符号整型操作数后,开始运算_bis_SR_register(LPM4_bits);/进入LPM4/调试用,验证结果是否正确,正确结果RESLO=0 x0060/RESHI=0 x0626_no_operation();用库函数调用,实现例 1相同功能相关程序如下:#include inc/hw_memmap.h#include driverlib/5xx_6xx/mpy32.h#include driverlib/5xx_6x
32、x/wdt.h#include driverlib/5xx_6xx/gpio.hvoid main(void)/关闭看门狗定时器WDT_hold(_MSP430_BASEADDRESS_WDT_A_);/载入第一个无符号整型操作数,表明是无符号乘法MPY32_setOperandOne16Bit(_MSP430_BASEADDRESS_MPY32_,MPY32_MULTIPLY_UNSIGNED,0 x1234);/载入第二个无符号整型操作数后,开始运算MPY32_setOperandTwo16Bit(_MSP430_BASEADDRESS_MPY32_,0 x5678);/进入LPM4_bi
33、s_SR_register(LPM4_bits);/调试用,验证结果是否正确_no_operation();硬件乘法器 应用举例(2/6)例2、利用硬件乘法器计算两个16位无符号整数的乘积,0 x12341234 0 x56785678,第二个操作数写入完毕,乘法运算就开始。结果存放在 RES0,RES1,RES2,RES3中。ACLK=REFO=32.768kHz,MCLK=SMCLK=默认 DCO相关程序如下:#include void main(void)/关闭看门狗定时器WDTCTL=WDTPW+WDTHOLD;/载入第一个32位无符号整型操作数的低16位,表明是无符号乘法MPYS32
34、L=0 x1234;MPYS32H=0 x1234;/载入第一个32位无符号整型操作数的高16位OP2L=0 x5678;/载入第二个32位无符号整型操作数的低16位OP2H=0 x5678;/载入第二个32位无符号整型操作数的高16位,开始运算_delay_cycles(10);/等待结果就绪_bis_SR_register(LPM4_bits);/进入LPM4/调试用,验证结果是否正确,正确结果RES0=0 x0060,/RES1=0 x06E6,RES2=0 x0CAC,RES3=0 x0626。_no_operation();硬件乘法器 应用举例(3/6)硬件乘法器 应用举例(4/6)
35、用库函数调用,实现例 2相同功能#include inc/hw_memmap.h#include driverlib/5xx_6xx/mpy32.h#include driverlib/5xx_6xx/wdt.h#include driverlib/5xx_6xx/gpio.huint64 Result;void main(void)/关闭看门狗定时器WDT_hold(_MSP430_BASEADDRESS_WDT_A_);/载入第一个无符号整型操作数,表明是无符号乘法MPY32_setOperandOne32Bit(_MSP430_BASEADDRESS_MPY32_,MPY32_MULTI
36、PLY_UNSIGNED,0 x12341234);/载入第二个无符号整型操作数,开始运算MPY32_setOperandTwo32Bit(_MSP430_BASEADDRESS_MPY32_,0 x56785678);_delay_cycles(10);/等待结果就绪MPY32_getResult64Bit(_MSP430_BASEADDRESS_MPY32_);_bis_SR_register(LPM4_bits);/进入LPM4/调试用,验证结果是否正确_no_operation();硬件乘法器 应用举例(5/6)例3、利用硬件乘法器计算一组32位无符号整数的乘积,第二个操作数写入完毕,
37、第一次乘法运算就自动开始。接下来执行第二次的乘加操作。结果存放在 RES0、RES1、RES2和RES3中。SUMEXT 包含结果的扩展标志。ACLK=REFO=32.768kHz,MCLK=SMCLK=默认 DCO。#include void main(void)WDTCTL=WDTPW+WDTHOLD;/关闭看门狗定时器/载入第一个32位无符号整型操作数的低16位,表明是无符号乘法MPY32L=0 x1234;MPY32H=0 x1234;/载入第一个32位无符号整型操作数的高16位OP2L=0 x5678;/载入第二个32位无符号整型操作数的低16位OP2H=0 x5678;/载入第二个
38、32位无符号整型操作数的高16位,开始运算MACS32L=0 x1234;/载入第三个32位无符号整型操作数的低16位MACS32H=0 x1234;/载入第三个32位无符号整型操作数的高16位OP2L=0 x5678;/载入第四个无符号整型操作数的低16位OP2H=0 x5678;/载入第四个无符号整型操作数的高16位_delay_cycles(10);/等待结果就绪_bis_SR_register(LPM4_bits);/进入LPM4_no_operation();/调试用,结果为0 xC4C19580DCC00C0硬件乘法器 应用举例(6/6)用库函数调用,实现例 3相同功能void m
39、ain(void)/关闭看门狗定时器WDT_hold(_MSP430_BASEADDRESS_WDT_A_);/载入第一个32位无符号整型操作数,表明是无符号乘法MPY32_setOperandOne32Bit(_MSP430_BASEADDRESS_MPY32_,MPY32_MULTIPLY_UNSIGNED,0 x12341234);/载入第二个32位无符号整型操作数,开始运算MPY32_setOperandTwo32Bit(_MSP430_BASEADDRESS_MPY32_,0 x56785678 );_delay_cycles(10);/等待结果就绪/载入第三个32位无符号整型操作数,表明无符号乘加运算MPY32_setOperandOne32Bit(_MSP430_BASEADDRESS_MPY32_,MPY32_MULTIPLYACCUMULATE_UNSIGNED,0 x12341234);/载入第四个32位无符号整型操作数的高16位,开始运算MPY32_setOperandTwo32Bit(_MSP430_BASEADDRESS_MPY32_,0 x56785678);_bis_SR_register(LPM4_bits);/进入LPM4_no_operation();/调试用,结果为0 xC4C19580DCC00C0
限制150内