MSP430X1XX系列硬件乘法器,比较器,flash讲解

本文详细介绍了MSP430单片机的硬件乘法器,包括无符号乘法、有符号乘法及乘加运算,并强调了中断使用时的注意事项。此外,还讲解了硬件比较器A的功能,如电压监控和模拟信号比较,以及其相关寄存器设置。最后,文章讨论了Flash存储器的结构、操作步骤及编程注意事项,如时钟频率选择和看门狗定时器的管理。
摘要由CSDN通过智能技术生成
  • 一,乘法器

硬件乘法器是一个通过内部总线与 CPU 相连的 16 位外围模块。MSP430 单片机可以在部改变 CPU 结构和指令的情况下增加功能,这种结构特别适用于对运算速度要求很严格的情况。硬件乘法器大大提高 了 MSP430 单片机的数据处理能力,其支持的运算如下:

  1. 硬件乘法器是外围设备,不是MSP430 CPU的一部分。这意味着,它的活动不会干扰CPU活动。乘法器寄存器是通过CPU指令加载和读取的外围寄存器。
  2. 如果一个中断发生在写入OP1之后,而在写入OP2之前,使用乘法器对该中断进行服务,原有的乘法器模式选择就会丢失,结果是不可预测的。为了避免这种情况,在使用硬件乘数之前禁用中断,或者在中断服务程序中不要使用乘数。
  • 无符号乘法(MPY)
  • 有符号乘法(MPYS) 
  • 无符号乘加(MAC)
  • 有符号乘加(MACS)
  • 16×16 位、8×16 位、16×8 位、8×8 位

 操作数寄存器:

OP1(第 1 操作数) OP2(第 2 操作数)

第一个操作数可源于 MPY、MPYS、MAC 和 MACS 四个寄存器,它们能确定乘法的类型。当第二个 操作数写入后,相应的乘法操作立即执行,一般需 4 个周期。

结果寄存器:

RESHI(结果高字节寄存器) RESLO(结果低字节寄存器) SUMEXT(结果扩展寄存器) 寄存器 RESHI 和 RESLO 的内容为两个 16 位相乘的 32 位乘积结果。而寄存器 SUMEXT 的内容由执行的乘法模式及乘积结果决定。 

  • MPY 操作数 1 指示操作数为无符号数相乘
  • MPYS 操作数 1 指示操作数为有符号数相乘
  • MAC 操作数 1 指示操作数为无符号数累加
  • MACS 操作数 1 指示操作数为有符号数累加
  • OP_2 操作数 2 [6] RESLO 结果低字节寄存器
  • RESHI 结果高字节寄存器
  • SUMEXT 结果扩展寄存器 以上寄存器均是 16 位的字寄存器,在使用时,用户可以以字节操作或字操作,这样就形成了不同位数乘 法的 4 种运算。
  • 无论进行何种运算,只要操作数类型为 8×8 型,操作过程就要使用寄存器的绝对地址,而不能使用 符号形式。寄存器 MPY、MPYS、MAC、MACS 和 OP2 的地址分别为:0130h , 0132h , 0134h , 0136h , 0138h。

倍增器不能自动检测溢流或溢流mac模式。累加器的范围为正数为0到7FFF FFFFh,为负数为0FFFF FFFFh到8000 0000h。当两个负数的和产生的结果在正数范围内时,就会发生下溢。当两个正数的和产生的结果在负数的范围内时,就会发生溢出。在这两种情况下,SUMEXT寄存器都包含结果的符号,0FFFFh表示溢出,0000h表示下溢。用户软件必须检测和处理。

 

示例代码 

/* 用硬件乘法器实现两无符号整型数组相乘,结果放在另一无符号长整型数组中。*/
#include "msp430x16x.h"
unsigned long int Result[7];
unsigned int Data1[7];
unsigned int Data2[7];
unsigned char i;
void main(void)
{
 WDTCTL = WDTPW + WDTHOLD;
 for(i=0; i<7; i++)
 {
 Data1[i] = 250 * i;
 Data2[i]= 130 * i;
 }
 for(i=0; i<7; i++)
 {
 MPY = Data1[i];
 OP2 = Data2[i];
 _NOP();
 _NOP();
 _NOP();
 Result[i] = RESHI;
 Result[i] <<=16;
 Result[i]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦灵-影

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值