找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3992|回复: 4
打印 上一主题 下一主题
收起左侧

51单片机串口接收数据后用printf函数发送的问题

[复制链接]
跳转到指定楼层
楼主
ID:58778 发表于 2014-1-14 09:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序是我参考其他资料自己试着编的,如果去掉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;
   
  
  }
   
   

}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:58778 发表于 2014-1-14 22:13 | 只看该作者
自个儿琢磨清楚了
回复

使用道具 举报

板凳
ID:58832 发表于 2014-1-16 21:44 | 只看该作者
杰尼龟 发表于 2014-1-14 22:13
自个儿琢磨清楚了

为什么呀,什么原因~~嘿嘿嘿,没找到
回复

使用道具 举报

地板
ID:58832 发表于 2014-1-16 21:45 | 只看该作者
什么原因呀?没找到,嘿嘿嘿
回复

使用道具 举报

5#
ID:59028 发表于 2014-2-7 22:49 | 只看该作者
什么东东呀?想看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表