51單片機具有收發串口,可以可PC進行串口通信。但是如果要實現類似printf(“data = %d\naddr data = %x\n”,a,&a),就需要寫一個printf函數,里面封裝串口發送功能。//printf打印函數
int Printf(const char*fmt, ...)
{
int ulLen;
va_list ap;
char *pBuf = (char*)malloc(200); // 開辟緩沖區
va_start(ap, fmt);
ulLen = vsprintf(pBuf, fmt, ap); // 用虛擬打印函數實現
va_end(ap);
Uart_write((uint8*)pBuf, ulLen); // 從串口0輸出
free(pBuf); // 釋放內存空間
PBuf = NULL;
return ulLen;
};
//串口發送ullen個字節的數據函數
void Uart_write((uint8*)pBuf, ulLen)
{
uint8 i;
for(i = 0; i < ullen ; i++)
{
SBUF=*pBuf; //數據加載到發送緩沖區
while(!TI); //等待發送完成
pBuf++; //指針指向下一組數據
TI=0;
}
}
|