Hello,
I am using cc430f5137 with CCS4.Can I know how to change the two 16bit number multiplication function to multiply a fractional number (negative or positive for example 0.00378304197175636 or -0.0123878480564485) with 16 bit integer.
The two 16bit number multiplication function used is
//***************************************************************************** // THIS PROGRAM IS PROVIDED "AS IS". TI MAKES NO WARRANTIES OR // REPRESENTATIONS, EITHER EXPRESS, IMPLIED OR STATUTORY, // INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS // FOR A PARTICULAR PURPOSE, LACK OF VIRUSES, ACCURACY OR // COMPLETENESS OF RESPONSES, RESULTS AND LACK OF NEGLIGENCE. // TI DISCLAIMS ANY WARRANTY OF TITLE, QUIET ENJOYMENT, QUIET // POSSESSION, AND NON-INFRINGEMENT OF ANY THIRD PARTY // INTELLECTUAL PROPERTY RIGHTS WITH REGARD TO THE PROGRAM OR // YOUR USE OF THE PROGRAM. // // IN NO EVENT SHALL TI BE LIABLE FOR ANY SPECIAL, INCIDENTAL, // CONSEQUENTIAL OR INDIRECT DAMAGES, HOWEVER CAUSED, ON ANY // THEORY OF LIABILITY AND WHETHER OR NOT TI HAS BEEN ADVISED // OF THE POSSIBILITY OF SUCH DAMAGES, ARISING IN ANY WAY OUT // OF THIS AGREEMENT, THE PROGRAM, OR YOUR USE OF THE PROGRAM. // EXCLUDED DAMAGES INCLUDE, BUT ARE NOT LIMITED TO, COST OF // REMOVAL OR REINSTALLATION, COMPUTER TIME, LABOR COSTS, LOSS // OF GOODWILL, LOSS OF PROFITS, LOSS OF SAVINGS, OR LOSS OF // USE OR INTERRUPTION OF BUSINESS. IN NO EVENT WILL TI'S // AGGREGATE LIABILITY UNDER THIS AGREEMENT OR ARISING OUT OF // YOUR USE OF THE PROGRAM EXCEED FIVE HUNDRED DOLLARS // (U.S.$500). // // Unless otherwise stated, the Program written and copyrighted // by Texas Instruments is distributed as "freeware". You may, // only under TI's copyright in the Program, use and modify the // Program without any charge or restriction. You may // distribute to third parties, provided that you transfer a // copy of this license to the third party and the third party // agrees to these terms by its first use of the Program. You // must reproduce the copyright notice and any other legend of // ownership on each copy or partial copy, of the Program. // // You acknowledge and agree that the Program contains // copyrighted material, trade secrets and other TI proprietary // information and is protected by copyright laws, // international copyright treaties, and trade secret laws, as // well as other intellectual property laws. To protect TI's // rights in the Program, you agree not to decompile, reverse // engineer, disassemble or otherwise translate any object code // versions of the Program to a human-readable form. You agree // that in no event will you alter, remove or destroy any // copyright notice included in the Program. TI reserves all // rights not specifically granted under this license. Except // as specifically provided herein, nothing in this agreement // shall be construed as conferring by implication, estoppel, // or otherwise, upon you, any license or other right under any // TI patents, copyrights or trade secrets. // // You may not use the Program in non-TI devices. //***************************************************************************** //16x16=>32 multiply //int32_t mul16(register int16_t x, register int16_t y) // Use with IAR versions >= 4.0 public mul16 RSEG CODE mul16 #define x1 r9 #define z0 r14 #define z1 r15 #define x r12 #define y r13 push r9 clr z0 mov z0,z1 mov z0,x1 tst x jge xbooth_2 mov #-1,x1 jmp xbooth_2 xbooth_6 add x,z1 addc x1,z0 xbooth_1 rla x rlc x1 xbooth_2 rra y jc xbooth_5 jne xbooth_1 jmp xbooth_4 xbooth_5 sub x,z1 subc x1,z0 xbooth_3 rla x rlc x1 rra y jnc xbooth_6 cmp #0FFFFh,y jne xbooth_3 xbooth_4 mov z1,r12 mov z0,r13 pop r9 ret end
#include <msp430.h> long mul16(register int x, register int y); long result; int main(void) { int x=1; int y=1; result=mul16(x,y); __bis_SR_register(LPM0_bits); // Enter LPM4 __no_operation(); }
Thanks.