深圳网站品牌建设,营销和运营的区别是什么,wordpress 菜单状态,可以制作试卷的app应广单片机例如pms150#xff0c;pms152这种是没有带乘法器的#xff0c;如果需要进行乘法运算#xff0c;可以用ide里面“程序产生器”菜单里面 产生乘法函数#xff0c;把数据填入对应的参数#xff0c;然后调用函数就可以实现乘法运算了。除此之外#xff0c;应广还有… 应广单片机例如pms150pms152这种是没有带乘法器的如果需要进行乘法运算可以用ide里面“程序产生器”菜单里面 产生乘法函数把数据填入对应的参数然后调用函数就可以实现乘法运算了。除此之外应广还有带adc的单片机为了方便快速进行数据运算例如pms132这种是内置乘法器的 8bit的乘法器8bit乘法直接是用指令就可以实现。如果要实现16bit的乘法运算那该怎么做呢是使用IDE生产代码16bit乘法函数还是把8bit乘法器利用起来实现16bit乘法运算呢根据仿真测试用8bit乘法器实现的16bit乘法运算所需的时间比调用ide生产的乘法函数更短。 不多说上代码。/****************系统时钟*********************/word usTmrCnt;/**************T16*************************/DWORD usDat;DWORD usDat1;/*用ide生产的16*16bit运算*/WORDmul_x2;WORDmul_y2;DWORDmul_t4;voidWord_Mul_Word (void){//mul_t4[D]mul_x2[W] * mul_y2[W]mul_t4$30;mul_t4$20;BYTEcnt;cnt16;do{mul_x21;if (CF){mul_t4(mul_y2 16);}mul_t41;} while (--cnt);}/*带乘法器比如132这种可以利用8*8乘法器通过乘累加方式实现16*16运算更加节省运算时间*///mul_x2[W] * mul_y2[W]mul_t4[D];void Word_Mul_Word1(void){ mov a,mul_x2$0; mov mulop,a; mov a,mul_y2$0; mul mov mul_t4$0 a; mov a,mulrh; mov mul_t4$1,a; mov a,mul_x2$0; mov mulop,a; mov a,mul_y2$1; mul add mul_t4$1 a; mov a,mulrh; mov mul_t4$2,a; mov a,0; addc mul_t4$2 a; mov a,mul_x2$1; mov mulop,a; mov a,mul_y2$0; mul add mul_t4$1 a; mov a,mulrh; addc mul_t4$2 a; clear mul_t4$3; mov a,0; addc mul_t4$3 a; mov a,mul_x2$1; mov mulop,a; mov a,mul_y2$1; mul add mul_t4$2 a; mov a,mulrh; addc mul_t4$3 a; ret;}void TIME16_Init(void){ /* 使用IHRC,1分频,最大计数值是32768*/ $ T16M IHRC,/1,BIT15; }/*启动定时器*/void ResetTmr16(void){ usTmrCnt0; /*设置初始值*/ STT16 usTmrCnt;}/*取得定时器值*/void GetTmr16Dat(void){ /*取得计数值*/ LDT16 usTmrCnt;}/*相应于main函数*/void FPPA0 (void){ /*系统时钟为 IHRC默认为16M,因此,IHRC/28M*/ .ADJUST_IC SYSCLKIHRC/2; word cnt;cnt0xffff; /*初始*/ TIME16_Init(); usTmrCnt0; while (1) { /*启动定时器*/ ResetTmr16(); /*标准测试*/ .delay 1000; GetTmr16Dat(); /*设置断点,查看周期数,标准应该是2000x IHRC时钟周期*/ .delay 1;while(cnt--){ /*启动定时器*/ ResetTmr16(); mul_x2cnt; mul_y20xffff-cnt;/*调用ide生产的16bit乘法函数*/ Word_Mul_Word(); /*查看结果*/ usDatmul_t4; GetTmr16Dat(); /*设置断点,查看周期数,大概527 IHRC时钟周期*/ .delay 1; /*启动定时器*/ ResetTmr16(); mul_x2cnt; mul_y20xffff-cnt; /*只适合pms132这类型的带乘法器的芯片*/ Word_Mul_Word1(); /*查看结果*/ usDat1mul_t4; GetTmr16Dat(); /*设置断点,查看周期数,大概119 IHRC时钟周期*/ .delay 1; /*用于测试运算结果是否有问题*/if(usDat!usDat1){break;}} }}