您的位置:首页 > 其它

单片机printf函数调用一些该注意的

2012-07-24 14:14 239 查看
STC12C5410AD单片机在串口通信中,如果需要用printf函数通过串口进行数据的传输,并用上位机进行接收时,只需要对putchar()函数进行一次重写,这样加上头文件stdio.h,就可以在程序中调用printf函数了。大牛勿喷~~~~

#include<STC12C5410AD.h>

#include<stdio.h>

#define uchar unsigned char

#define uint unsigned int
sbit LED = P1^0;
void Delay1ms(uint count)

{

uint i,j;

for(i=0;i<count;i++)

{

for(j=0;j<120;j++);

}
}

void RS_init()

{

PCON &= 0x7f; //波特率不倍速

SCON = 0x50; //8位数据,可变波特率

AUXR &= 0xbf; //定时器1时钟为Fosc/12,即12T

AUXR &= 0xfe; //串口1选择定时器1为波特率发生器

TMOD &= 0x0f; //清除定时器1模式位

TMOD |= 0x20; //设定定时器1为8位自动重装方式

TL1 = 0xF3; //设定定时初值

TH1 = 0xF3; //设定定时器重装值

ET1 = 0; //禁止定时器1中断

TR1 = 1; //启动定时器1

EA = 1;

ES = 1;
}
char putchar(uchar D_B)

{

ES = 0; //关串口中断

TI = 0; //清零串口发送完成的中断请求标志

SBUF = D_B;

while(TI==0); //等待发送完成

TI = 0; //清零串口发送完成中断请求标志

ES = 1; //允许串口中断

return SBUF;

}

void main(void)

{



uint h,m,s;

RS_init();

while(1)

{

LED = 0; //开启LED显示

Delay1ms(5000);

h=11;

m=15;

s=43;

printf("the time is:%d:%d:%d\r\n", h,m,s);

printf("STC12C5410AD\r\nLuna test OK\r\n");

LED = 1; // 关闭LED

Delay1ms(5000);

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: