1868|3

3219

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

乘法错误的问题 [复制链接]


#include "MSP430FR5739.h"
int main( void )
{
  unsigned char value1,value2;
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  //载入第一个操作数


  MPY=0X1234;
  //载入第二个操作数
  OP2=0X5678;
  //有符号乘加运算的两个操作数
  value1=0x12;
  value2=0x96;
  //判断符号扩展位
  if(value1>=0x80)
    MACS=0xff00|value1;
  else
    MACS=value1;
  if(value2>=0x80)
    OP2=0XFF00|value2;
  else
    OP2=value2;
  //OP2载入操作数后,MACS与OP2相乘后的结果再与之前的RESLO和RESHI中的值相加
  __bis_SR_register(LPM4_bits);
  //return 0;
}
我参考《MCU工程师炼成记》写了个乘法程序,如上,发现问题。
0x1234*0x5678=0x6260060.

最新回复

0x625f8ec=0x6260060-0x12*(0xffff-0xff96+1) 我猜测 0xff96是个16位有符号数,是个负数.  详情 回复 发表于 2014-5-12 09:45
 
点赞 关注
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。

回复
举报

3219

帖子

0

TA的资源

纯净的硅(高级)

沙发
 
后面0x12*0xff96=0x11f88c
0x11f88c+0x6260060=0x637f8ec
可是单片机计算结果是0x625f8ec.

请高手指教,哪里出了问题?谢谢!
 
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 

回复

165

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
0x625f8ec=0x6260060-0x12*(0xffff-0xff96+1)
我猜测 0xff96是个16位有符号数,是个负数.
 
 
 

回复

3219

帖子

0

TA的资源

纯净的硅(高级)

4
 
谢谢!茅塞顿开!
 
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表