一个串口通信的问题,求路人观看(帖子没结,按错了)

[复制链接]
1486|5
 楼主| 我是胖子 发表于 2013-7-29 16:23 | 显示全部楼层 |阅读模式
本帖最后由 我是胖子 于 2013-7-29 16:47 编辑
  1. /*
  2.         时间:2013年7月29日10:33:54
  3.         为什么我把数据从串口发送,灯不亮?
  4. */
  5. # include<reg52.h>
  6. # include<HL_1.h>

  7. unsigned char b[10];
  8. unsigned char flag, i, a, count = 0;
  9. unsigned char code table[][10] = {"ONLED0","OFFLED0"};
  10. unsigned char code message[] = "Succeed!";

  11. void Init(void)//初始化函数
  12. {
  13.         TMOD = 0x20;
  14.         TH1 = 0xfd;
  15.         TL1 = 0xfd;
  16.         TR1 = 1;
  17.         REN = 1;
  18.         SM0 = 0;
  19.         SM1 = 1;
  20.         EA = 1;
  21.         ES = 1;
  22. }

  23. void succeed_mes()//返回运行成功的消息
  24. {
  25.          if(flag==1)
  26.                 {
  27.                         ES = 0;
  28.                         for(i=0;i<8;i++)
  29.                         {
  30.                                 SBUF = message[i];
  31.                                 while(!TI);
  32.                                 TI = 0;
  33.                         }
  34.                         ES = 1;
  35.                         flag = 0;
  36.                 }        
  37. }


  38. void command(void)//接收的数据命令
  39. {
  40.         unsigned int i, j;
  41.         for(i=0;i<10;++i)
  42.         {        
  43.                 if(table[0][i]!=b[i])
  44.                 {
  45.                         j = 0;
  46.                         break;
  47.                 }
  48.         }
  49.         if(i==9)
  50.         {
  51.                 j =        1;
  52.         }
  53.         switch(j)
  54.         {
  55.                 case 0:
  56.                 {
  57.                         break ;
  58.                 }
  59.                 case 1:
  60.                 {
  61.                         LED0 = 0;
  62.                         succeed_mes();
  63.                         break ;
  64.                 }
  65.         }
  66. }

  67. void main()
  68. {
  69.         Init();
  70.         while(1)
  71.         {
  72.                 command();
  73.         }
  74. }

  75. void Ser() interrupt 4
  76. {
  77.         RI = 0;
  78.         a = SBUF;
  79.         flag = 1;
  80.                         
  81.         for(;count<10;count++)
  82.         {
  83.                 b[count] = a;
  84.         }
  85. }
我下载到板子上,用电脑往单片机发送ONLED0,灯不亮啊
dirtwillfly 发表于 2013-7-29 16:42 | 显示全部楼层
上位机软件的协议和单片机上的兼容吗?
dirtwillfly 发表于 2013-7-29 16:44 | 显示全部楼层
给0分帖子会自动结贴
 楼主| 我是胖子 发表于 2013-7-29 16:46 | 显示全部楼层
dirtwillfly 发表于 2013-7-29 16:42
上位机软件的协议和单片机上的兼容吗?

兼容,因为我只向单片机发送一个字符的时候,就好使
发送字符串,就没反应
我觉得是两个可能:1。我写的有问题,导致我发送的命令和下载到单片机里程序中的命令对不上
                  2.发送命令的时候,有些数据丢失了,导致和单片机里程序中的命令对不上
 楼主| 我是胖子 发表于 2013-7-29 16:47 | 显示全部楼层
dirtwillfly 发表于 2013-7-29 16:44
给0分帖子会自动结贴

新注册的  没分啊,先忍一轮
dirtwillfly 发表于 2013-7-29 16:51 | 显示全部楼层
我是胖子 发表于 2013-7-29 16:46
兼容,因为我只向单片机发送一个字符的时候,就好使
发送字符串,就没反应
我觉得是两个可能:1。我写的 ...

不错,你可以针对你的猜测,做下试验。
比如连续发送两个字符或者发送只含一个有效字符的字符串
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

12

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部