这个函数将近200行,#79是错误代码吧
int putchar(int c)
{ unsigned char xx,yy;
unsigned short qsdm;
if(Terminal==1)
{c=(c-0x20)&0x7f;
FM240128_D_PUT((char)c);
FM240128_C_PUT(0xc0);
xbak=0;
}
else if(Terminal==2)
{UART_TXD(0,(char)c);
xbak=0;
}
else
{if(Font==0)
{xx=10;
yy=8;
}
else if(Font==1)
{xx=12;
yy=12;
}
else if(Font==2)
{xx=16;
yy=16;
}
else if(Font==3)
{xx=24;
yy=24;
}
else if(Font==4)
{xx=32;
yy=33;
}
else if(Font==5)
{xx=35;
yy=37;
}
if(c<32)
{xbak=0;
if(c=='\n') Horizon=0;
else if(c=='\r')
{if(DisMode==0)
{Vertical+=yy;
if(Vertical>=FM_G_Y_MAX) Vertical=0;
}
else if(DisMode==1)
{Horizon+=xx;
if(Horizon>=FM_G_X_MAX) Horizon=0;
}
}
else if(c=='\t')
{if(DisMode==0)
{Horizon+=(xx+xx);
if(Horizon>=FM_G_X_MAX)
{Horizon=0;
Vertical+=yy;
if(Vertical>=FM_G_Y_MAX) Vertical=0;
}
}
else if(DisMode==1)
{Vertical+=(yy+yy);
if(Vertical>=FM_G_Y_MAX)
{Vertical=0;
Horizon+=xx;
if(Horizon>=FM_G_X_MAX) Horizon=0;
}
}
}
}
else if(c<0xa0)
{xbak=0;
if(Horizon+xx/2>FM_G_X_MAX)
{Horizon=0;
Vertical+=yy;
if(Vertical>=FM_G_Y_MAX) Vertical=0;
}
if(Font==0)
{if((c>=0x20)&&(c<='?'))
{c=c-0x20;
LCD_Put_Charactor(Horizon,Vertical,xx/2,yy,ASCII_M0[c]);
}
}
else if(Font==1)
{if((c>=0x20)&&(c<=0x80))
{c=c-0x20;
LCD_Put_Charactor(Horizon,Vertical,xx/2,yy,ASCII_M1[c]);
}
}
else if(Font==2)
{if((c>=0x20)&&(c<=0x80))
{c=c-0x20;
LCD_Put_Charactor(Horizon,Vertical,xx/2,yy,ASCII_M2[c]);
}
}
else if(Font==3)
{if(c==0x20)
{c=10;
LCD_Put_Charactor(Horizon,Vertical,xx/2,yy,ASCII_M3[c]);
}
else if(c=='.')
{c=11;
LCD_Put_Charactor(Horizon,Vertical,xx/2,yy,ASCII_M3[c]);
}
else if((c>='0')&&(c<='9'))
{c=c-'0';
LCD_Put_Charactor(Horizon,Vertical,xx/2,yy,ASCII_M3[c]);
}
}
if(DisMode==0)
{Horizon=Horizon+xx/2;
if(Horizon>=FM_G_X_MAX)
{Horizon=0;
Vertical+=yy;
if(Vertical>=FM_G_Y_MAX) Vertical=0;
}
}
else if(DisMode==1)
{Vertical+=yy;
if(Vertical>=FM_G_Y_MAX)
{Vertical=0;
Horizon=Horizon+xx;
if(Horizon>=FM_G_X_MAX) Horizon=0;
}
}
}
else if(xbak==0) xbak=(char)c;
else
{if(Horizon+xx>FM_G_X_MAX)
{Horizon=0;
Vertical+=yy;
if(Vertical>=FM_G_Y_MAX) Vertical=0;
}
if(Font==1)
{for(qsdm=0;qsdm<num1_max;qsdm++)
{if((xbak==code1[qsdm].num1[0])&&(c==code1[qsdm].num1[1])) break;
}
if(qsdm!=num1_max) LCD_Put_Charactor(Horizon,Vertical,xx,yy,code1[qsdm].HANZI1);
}
else if(Font==2)
{for(qsdm=0;qsdm<num2_max;qsdm++)
{if((xbak==code2[qsdm].num2[0])&&(c==code2[qsdm].num2[1])) break;
}
if(qsdm!=num2_max) LCD_Put_Charactor(Horizon,Vertical,xx,yy,code2[qsdm].HANZI2);
}
else if(Font==3)
{for(qsdm=0;qsdm<num3_max;qsdm++)
{if((xbak==code3[qsdm].num3[0])&&(c==code3[qsdm].num3[1])) break;
}
if(qsdm!=num3_max) LCD_Put_Charactor(Horizon,Vertical,xx,yy,code3[qsdm].HANZI3);
}
else if(Font==4)
{for(qsdm=0;qsdm<num4_max;qsdm++)
{if((xbak==code4[qsdm].num4[0])&&(c==code4[qsdm].num4[1])) break;
}
if(qsdm!=num4_max) LCD_Put_Charactor(Horizon,Vertical,xx,yy,code4[qsdm].HANZI4);
}
else if(Font==5)
{for(qsdm=0;qsdm<num5_max;qsdm++)
{if((xbak==code5[qsdm].num5[0])&&(c==code5[qsdm].num5[1])) break;
}
if(qsdm!=num5_max) LCD_Put_Charactor(Horizon,Vertical,xx,yy,code5[qsdm].HANZI5);
}
if(DisMode==0)
{Horizon=Horizon+xx;
if(Horizon>=FM_G_X_MAX)
{Horizon=0;
Vertical+=yy;
if(Vertical>=FM_G_Y_MAX) Vertical=0;
}
}
else if(DisMode==1)
{Vertical+=yy;
if(Vertical>=FM_G_Y_MAX)
{Vertical=0;
Horizon=Horizon+xx;
if(Horizon>=FM_G_X_MAX) Horizon=0;
}
}
xbak=0;
}
}
return(0);
}
这是这个函数的定义,应该是没有问题的 |