我先在知道想要在51單片機使用printf有兩種辦法,一種是用庫自己的printf,一種是寫自己的printf,不過都很簡單,
自己寫printf。
-
- void sendstring(unsigned char *string)//這個是字符串發送函數
- {
- while(*string!='\0') //判斷是否到字符串的尾端
- {
- sendbyte(*string);
- string++;
- }
- }
- void uart_printf(char *fmt,...)//這個是我們的printf函數
- {
- va_list ap;//typedef char *va_list; va_list是char型的指針
- char xdata string[1024];//訪問外部RAM 兩字節對齊
- va_start(ap,fmt);//這個函數的功能是,找到第一個可變形參的地址,并把地址賦給ap
- vsprintf(string,fmt,ap);//其實這個函數才是核心函數,沒研究。。。
- sendstring(string);//這個函數就是發送字符串函數,通過上一個函數,就把該提取的東西都提取了
- va_end(ap);//結束函數
- }
復制代碼 |