반응형
출처 : 이전에 짰던 소스
기초적인 캐릭터 단위 함수구현
- winavr 기준 / ATmega128
void putchar_(u08 device,u08 data)
{
if(data != '\n')
{
if(device == 0)
{
uart0_send(data);
}
else
{
uart1_send(data);
}
}
else if(data == '\n')
{
if(device == 0)
{
uart0_send(0x0d);
uart0_send(0x0a);
}
else
{
uart1_send(0x0d);
uart1_send(0x0a);
}
// if new line
}
}
기초적인 캐릭터 스트링 함수구현
- winavr 기준 / ATmega128
void puts_(u08 device,u08* str)
{
while(*str)
{
if(*str == '\n')
{
if(device == 0)
{
putchar_(0,0x0d);
putchar_(0,0x0a);
}
else
{
putchar_(1,0x0d);
putchar_(1,0x0a);
}
str++;
}
else
{
if(device == 0)
{
putchar_(0,*str);
}
else
{
putchar_(1,*str);
}
str++;
}
}
}
기타 Printf 함수구현
- cwinavr 기준 / ATmega128
void puthex_(u08 device,u32 value)
{
u08 i;
u08 c;
u08 buffer[9];
u08* buf;
buf=buffer;
*buf++='\0';
c=0;
do
{
i=value%16;
if(i<10)
{
*buf++ = i + '0';
}else if(i>=10)
{
*buf++ = (i-10) + 'A';
}
c++;
}while((value/=16)>0);
if(c==1)
{
*buf++ = '0';
}
*buf--;
while(*buf != '\0')
{
if(device == 0)
{
putchar_(0,*buf--);
}
else
{
putchar_(1,*buf--);
}
}
}
void putdec_(u08 device,u32 value)
{
PRIVATE u08 i;
PRIVATE u08 c;
PRIVATE u08 buffer[9];
PRIVATE u08* buf;
buf=buffer;
*buf++='\0';
c=0;
do
{
i=value%10;
*buf++ = i + '0';
c++;
}while((value/=10)>0);
*buf--;
while(*buf != '\0')
{
if(device == 0)
{
putchar_(0,*buf--);
}
else
{
putchar_(1,*buf--);
}
}
}
끗
반응형