日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]avr單片機(jī) 串口實(shí)現(xiàn)printf(使用變參函數(shù))

 #include

#include

#include

typedef unsigned char uint8;

static void usart_init(void)

{

UCSRA = 0x02;

UCSRB = 0x18;

UCSRC = 0x06;

UBRRH = 0x00;

UBRRL = 103;

}

static void put_char(uint8 data)

{

if (data == '/r')

put_char(0x09);

while ( !(UCSRA & (1<

;

UDR = data;

}

static void myprintf(const char* fmt,...)

{

const char* s;

int d;

char buf[16];

va_list ap;

va_start(ap,fmt); // 將ap指向fmt(即可變參數(shù)的第一個(gè)?下一個(gè)?)

while (*fmt)

{

if (*fmt != '%')

{

put_char(*fmt++); // 正常發(fā)送

continue;

}

switch (*++fmt) // next %

{

case 's':

s = va_arg(ap,const char*); // 將ap指向者轉(zhuǎn)成char*型,并返回之

for (; *s; s++)

put_char(*s);

break;

case 'x':

d = va_arg(ap,int); // 將ap指向者轉(zhuǎn)成int型,并返回之

itoa(d,buf,16); // 將整型d以16進(jìn)制轉(zhuǎn)到buf中

for (s = buf; *s; s++)

put_char(*s);

break;

case 'd':

d = va_arg(ap,int);

itoa(d,buf,10); // 將整型d以10進(jìn)制轉(zhuǎn)到buf中

for (s = buf; *s; s++)

put_char(*s);

break;

default:

put_char(*fmt);

break;

}

fmt++;

}

va_end(ap);

}

int main(void)

{

usart_init(); // 初始化串口

uint8 i = 100;

uint8* s = "Word!";

while(1)

{

myprintf("/n/rHello %s/n/r0x%x = %d/n",s,i,i);

}

return 0;

}

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉