欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4881|回復: 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;
   
  
  }
   
   

}

回復

使用道具 舉報

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 | 顯示全部樓層
什么原因呀?沒找到,嘿嘿嘿
回復

使用道具 舉報

ID:59028 發表于 2014-2-7 22:49 | 顯示全部樓層
什么東東呀?想看看
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表