注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
WALKER的个人空间 https://home.eeworld.com.cn/space-uid-146548.html [收藏] [复制] [分享] [RSS]
日志

串行口通讯提高篇

已有 787 次阅读2009-8-7 09:59 |

#include<reg52.h>  /*以2400bps从计算机发送任一字节数据,
当单片机收到该数据后,在此数据前加上一序号然后连同此数据一起发送至计算机,当序号超过255时归零*/
unsigned char flag,a; //这个程序在调试过程中出现了很问题,特别没想到的就是判断语句的位置问题,感谢坚哥的指点迷津
unsigned char i,b,j,k;           //耗时一个白天!
unsigned char code table[]="0123456789";
void main()

 TMOD=0X20;
 SCON=0X50;
 PCON=0X00;
 //TH0= (65536-46080)/256;
 //TL0= (65536-46080)%256;
 TH1=0XF4;
 TL1=0XF4;
 TR1=1;
 //ET0=1; 
 ES=1;
 EA=1; 
 while(1)
 {
  if(flag==1)
  {
   flag=0;P1=SBUF;
   ES=0;
   i++;
  while(i>=10)
  {
   i=0;
   ++j;
   if(j>=10)
   {
   j=0;++k;
   }   
     //如果把计数归零的条件放在这里,即if(k==2&&j==5&&i==6)
         //{k=0;j=0;i=0;} 则到出现程序跳过该判断语句。原因是
  }
   SBUF=table[k];
  while(!TI);
   TI=0;
  SBUF=table[j];
  while(!TI);
   TI=0;
   SBUF=table[i];
  while(!TI);
   TI=0;
   SBUF=':';
  while(!TI);
   TI=0;
   SBUF=a;  
  while(!TI); 
   TI=0;
   ES=1;     
 }
 if(k==2&&j==5&&i==6)
         {k=0;j=0;i=0;} 
   }
 }
void ser() interrupt 4
{
 RI=0;
 a=SBUF;
 P1=SBUF;
 flag=1;
}
评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章