📄 ch5_miniprint.c
字号:
#include<avr/io.h>
#include<avr/delay.h>
#include<stdio.h>
#include<stdlib.h>
void DelayMs( unsigned int ms )
{
unsigned int i;
for(i = 0; i< ms; i++ )
{
_delay_loop_2(8*250);
}//end for
}//end DelayMs
void usart_putc(unsigned char c)
{
while(!(UCSR0A & ( 1 << UDRE0) ) ) //Wait for empty transmit buffer
;//empty body
UDR0 = c; //Put data into buffer,sends the data
}// end putc
void MiniPrintf(char *fmt, ...)
{
va_list ap;
char strval[6];
char *p;
int nval;
unsigned char i;
va_start(ap,fmt);
for( p = fmt; *p != '\0'; p++)
{
if(*p != '%')
{
usart_putc(*p);
continue;
}
p++;
switch(*p)
{
case 'd':
{nval = va_arg(ap, int);
itoa(nval,strval,10);
break;}
case 'x':
{nval = va_arg(ap,int); itoa(nval, strval,16);break;}
}//end switch
i=0;
for(i=0;strval[i]; i++)
{usart_putc(strval[i ]);}
va_end(ap);
}//end for
}//end MiniPrint
int main(void)
{
unsigned int i= -5;
UCSR0B = _BV(RXEN0) | _BV(TXEN0);
UBRR0L = 51;
while(1)
{
MiniPrintf("dec: %d < %d\n", i, i+1);
MiniPrintf("hex:0x%x\n",i );
i++;
DelayMs(500);
}//end while
}//end main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -