单片机c语言求解解决方案

单片机c语言求解
下面这个程序是一个不完整的程序,我是想知道问什么我触发了swith里面的b,结果我12864上显示的不是二进制而是一个0这是怎么回事?sumsz是一个uchar型的全局变量
char *itoa(int num,char *str,int radix)
{
/* 索引表 */
char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
uint unum; /* 中间变量 */
// unum=(unsigned)num;
int i=0,j,k=0;
do
{
str[i++]=index[unum%(unsigned)radix];
unum/=radix;
}
while(unum);
str[i]='\0';
/* 将原来的“/2”改为“/2.0”,保证当num在16~255之间,radix等于16时,也能得到正确结果 */
for(j=k;j<=(i-1)/2+k;j++)
{
num=str[j];
str[j]=str[i-j-1+k];
str[i-j-1+k]=num;
}
strcpy(sumsz,str);
return str;
 
}
/**********************运算程序******************************/
void yuans() //运算函数
{
  uchar i,j,temp1;
uchar xdata ch[30];
// uint m;
  switch(sym)  
  {  
  case 'h':sprintf(sumsz,"%x",(int)number1);break; //两数相加
  case 'o':sprintf(sumsz,"%o",(int)number1);break; //两数相减
  case 'b':itoa((int)number1,ch,2);break; //两数相乘
  case '/':number1/=number2;break; //两数相除
  }

  // 
  j=strlen(sumsz);
write_com(0x88);

  for(i=0;i<j;i++) //显示结果
  {  
/* if(sumsz[i]=='.')
{
flag1=1;
}
if(flag==1)
{*/
//temp1=sumsz[i];
  //write_data(temp1);
  //delay(10); 
//}
//else
temp1=sumsz[i];
  write_data(temp1);
  delay(10);  
  }
  //number2=0;
}

------解决方案--------------------
这种问题可以单步找的,不知道你用的下载器支不支持单步调试的。
不行的话,用串口调试,把变量的值,发到串口助手上看。