We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
just as titleï¼ now i'am use this method: a=value%1000/100; b=value%100/10; c=value%10; but it's slow,any faster methods? thanksï¼
i'am try you code,but it can't build success. Build target 'Target 1' compiling u32tobcd.c... U32TOBCD.C(23): warning C206: 'DIM': missing function-prototype U32TOBCD.C(23): error C267: 'DIM': requires ANSI-style prototype Target not created
my test code:
#include <reg52.h> #include <math.h> unsigned char bcdt[10]={0,0,0,0,0,0,0,0,0,0}; unsigned char *bcd; void bin2bcd(unsigned long bin, unsigned char *bcd) { static const unsigned long pow_ten_tbl[] = { 1000000000, 100000000, 10000000, 1000000, 100000, 10000, 1000, 100, 10, 1 }; unsigned long pow_ten; unsigned char digit; unsigned char i;
for (i = 0; i != DIM(pow_ten_tbl); i++) { digit = 0; pow_ten = pow_ten_tbl[i];
while (bin >= pow_ten) { bin -= pow_ten; digit++; } *bcd++ = digit; } }
void main(void) { while(1) { bin2bcd(1234567,*bcd); } }