单片机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);
}
}
#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);
}
}
相关文章推荐
- .net调用C++代码需要注意的一些问题
- C#中调用delete方法删除datarow的一些注意
- 【web】PHP网页调用Matlab代码的实现以及一些需要注意的bug~
- jquery异步调用post的一些注意事项
- jQuery调用WCF需要注意的一些问题
- GSoap 调用webservice的一些注意事项
- 用 CALL TRANSACTION USING... 调用批输入时的一些注意事项
- 有关Flash中与Java调用时候注意的一些事项
- jQuery调用WCF需要注意的一些问题
- 跨进程使用startActivity来调用Activity的一些注意事项
- jQuery调用WCF需要注意的一些问题
- 关于PerSession下一些方法调用的注意事项
- Jquery中的一些细节(一)--------------->Jquery加载调用多个函数(方法)需要注意的细节
- 在C#里调用C++的dll时需要注意的一些问题<转>
- 在c#里调用C++的dll时,需要注意的一些问题
- Android 调用系统拍照的一些应该注意的问题
- 在c#里调用C++的dll时,需要注意的一些问题
- Command探究and jQuery调用WCF需要注意的一些问题
- jquery调用wcf需要注意的一些问题
- 使用AIDL,客户端调用和Service回调,以及一些需要注意的细节