打印

请帮忙看个51单片机的测试程序啊

[复制链接]
1802|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xuezonggang|  楼主 | 2012-6-4 19:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人新手呵呵,编译通过了,目标实现不了啊,请高手指教下错误啊
#include<reg52.h>
  char receive;
  void main()
  {
     TMOD=0x20;
  SCON=0x50;
  PCON=0X80;      //12hz,19200baud
  TH1=0XF3;
  TL1=0XF3;
  TR1=1;
  ES=1;
  EA=1;
  if(RI)
  {
     receive=SBUF;  //串口助手中发送16进制0x02.回显0x01
                      //发送0x00则回显示3;其他显示0X10;
  switch(receive)
  {
     case 0x02:
         SBUF=0X01;
      while(!TI);
      TI=0;
     break;
     case 0x00:
         SBUF=0X03;
      while(!TI);
      TI=0;
     break;
     default:
         SBUF=0X10;
      while(!TI);
      TI=0;
      break;
   }
   RI=0;
  }
  while(1);
  }
沙发
芯片代理| | 2012-6-5 16:52 | 只看该作者
循环上有问题吧,你想要做什么测试?

使用特权

评论回复
板凳
xuezonggang|  楼主 | 2012-6-7 10:31 | 只看该作者
发送2,串口助手显示1,发送0显示3阿

使用特权

评论回复
地板
efen| | 2012-6-7 10:51 | 只看该作者
串口波特率设置没?

使用特权

评论回复
5
mcuatmel| | 2012-6-8 11:54 | 只看该作者
楼主程序是个错误的程序,你那无法实现你的要求,逻辑不对。
你把if (RI)语句移到while(1){}中,试试。

使用特权

评论回复
6
weiweiyixiao| | 2012-6-12 16:19 | 只看该作者
while(1);
这个是死循环,5楼说的,你先试试。

使用特权

评论回复
7
xuezonggang|  楼主 | 2012-6-18 15:32 | 只看该作者
5楼说的对,明白了谢谢大家了

使用特权

评论回复
8
figo20042005| | 2012-6-18 16:17 | 只看该作者
主程序里,死循环里解析接收过来的数据,并发出去。或者在接收中断里接收数据,接收到数据置标志位,然后死循环里查看如果置标志位了进行解析否则不解析,这样效率高点

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

10

帖子

0

粉丝