标题:
51单片机串口接收数据后用printf函数发送的问题
[打印本页]
作者:
杰尼龟
时间:
2014-1-14 09:38
标题:
51单片机串口接收数据后用printf函数发送的问题
程序是我参考其他资料自己试着编的,如果去掉switch语句以及printf函数后串口可以正常接收,但是加上printf函数之后,在上位机上用串口助手输入1时,显示的是
error
I GET 12544
小弟初次接触单片机,特来向高手请教,谢谢各位大神了!
这是程序,很短的。
#include<reg52.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
uchar a,flag,flag_on;
void init()
{
TMOD=0x20; //定时器1选择方式2
TH1=0xfd;
TL1=0xfd;
TR1=1; //开定时器1开始计数
SM0=0; //选择串口方式1
SM1=1;
REN=1; //打开串口
EA=1; //开中断
ES=1; //开串口中断
}
void main()
{
init(); //调用初始化函数
while(1)
{
if(flag==1)
{
flag=0;
ES=0;//关中断避免误入中断程序
TI=1;//调用puts函数前使TI为1
switch(flag_on)
{
case 0:puts("yes\n");
break;
case 1:puts("no\n");
break;
case 2:puts("error\n");
break;
}
while(!TI);
TI=1;
printf("I GET %f\n",a);
while(!TI);
TI=0;
ES=1;
}
}
}
void ser()interrupt 4
{
if(RI)
{
RI=0; //串行口接收位清零,准备下次接收
a=SBUF; //将接收到的数据放入a中
flag=1;
if(a==1)
flag_on=0;
else if(a==2)
flag_on=1;
else flag_on=2;
}
}
作者:
杰尼龟
时间:
2014-1-14 22:13
自个儿琢磨清楚了
作者:
xiaodidpj
时间:
2014-1-16 21:44
杰尼龟 发表于 2014-1-14 22:13
自个儿琢磨清楚了
为什么呀,什么原因~~嘿嘿嘿,没找到
作者:
xiaodidpj
时间:
2014-1-16 21:45
什么原因呀?没找到,嘿嘿嘿
作者:
1784014325
时间:
2014-2-7 22:49
什么东东呀?想看看
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1