谁看下我写的程序,为啥上位机发送命令,单片机没有反应??

[复制链接]
1872|2
 楼主| 我是胖子 发表于 2013-8-2 23:23 | 显示全部楼层 |阅读模式
  1. # include<reg52.h>
  2. # include<HL_1.h>

  3. unsigned char a[10];
  4. unsigned char flag = 0, count = 0;
  5. unsigned char code TABLE[30] = "hello, what do you want to do?";


  6. void Init(void)
  7. {
  8.         TMOD = 0x20;
  9.         TH1 = 0xfd;
  10.         TL1 = 0xfd;
  11.         TR1 = 1;
  12.         REN = 1;
  13.         SM0 = 0;
  14.         SM1 = 1;
  15. //        EA = 1;
  16. //        ES = 1;
  17. }

  18. void Switch_K1(void)
  19. {
  20.         char c;//控制数组字符位置

  21.         if(!K1)
  22.         {
  23.                 delay(50);
  24.                 if(!K1)
  25.                 {
  26.                         for(c=0;c<30;++c)
  27.                         {
  28.                                 SBUF = TABLE[c];
  29.                                 while(!TI);
  30.                                 TI = 0;
  31.                         }       
  32.                 }
  33.         }
  34. }

  35. void Control(void)
  36. {
  37.         if(a[0]=='m')
  38.         {
  39.                 if(a[1]=='1')
  40.                 {
  41.                         WE = 1;
  42.                         P0 = 0xfe;
  43.                         WE = 0;
  44.                        
  45.                         DU = 1;
  46.                         P0 = 0xff;
  47.                         DU = 0;
  48.                        
  49.                         count = 0;       
  50.                 }
  51.                          
  52.                 if(a[1]=='2')
  53.                 {
  54.                         WE = 1;
  55.                         P0 = 0xfd;
  56.                         WE = 0;
  57.                        
  58.                         DU = 1;
  59.                         P0 = 0xff;
  60.                         DU = 0;
  61.                        
  62.                         count = 0;       
  63.                 }

  64.                 if(a[1]=='3')
  65.                 {
  66.                         WE = 1;
  67.                         P0 = 0xfb;
  68.                         WE = 0;
  69.                        
  70.                         DU = 1;
  71.                         P0 = 0xff;
  72.                         DU = 0;
  73.                        
  74.                         count = 0;
  75.                 }

  76.                 if(a[1]=='4')
  77.                 {
  78.                         WE = 1;
  79.                         P0 = 0xf7;
  80.                         WE = 0;
  81.                        
  82.                         DU = 1;
  83.                         P0 = 0xff;
  84.                         DU = 0;
  85.                        
  86.                         count = 0;       
  87.                 }
  88.         }
  89.         if(a[0]=='L')
  90.         {
  91.                 if(a[1]=='1')
  92.                 {
  93.                         P1 = 0xff;
  94.                         LED0 = 0;
  95.                        
  96.                         count = 0;       
  97.                 }
  98.        
  99.                 if(a[1]=='2')
  100.                 {
  101.                         P1 = 0xff;
  102.                         LED1 = 0;
  103.                        
  104.                         count = 0;       
  105.                 }
  106.        
  107.                 if(a[1]=='3')
  108.                 {
  109.                         P1 = 0xff;
  110.                         LED2 = 0;
  111.                        
  112.                         count = 0;       
  113.                 }
  114.        
  115.                 if(a[1]=='4')
  116.                 {
  117.                         P1 = 0xff;
  118.                         LED3 = 0;
  119.                        
  120.                         count = 0;
  121.                 }
  122.         }
  123.         if(a[0]=='b'&&a[1]=='e'&&a[2]=='e'&&a[3]=='r')
  124.         {
  125.                 P1 = 0xff;
  126.                 FM = 0;
  127.                 delay(1000);
  128.                 FM = 1;
  129.                
  130.                 count = 0;
  131.         }
  132.                
  133. }

  134. void main()
  135. {
  136.         unsigned int j;
  137.         Init();
  138.         while(1)
  139.         {       
  140.                 RI = 0;
  141.                 Switch_K1();
  142.                 Control();
  143.                 for(j=0;j<5000;j++)
  144.                 {
  145.                         if(RI&&(SBUF>47&&SBUF<123))
  146.                         {       
  147.                                 a[count] = SBUF;
  148.                                 count++;
  149.                         }
  150.                 }
  151.         }
  152. }
这是题目
程序3.按下k1,向上位机发送“hello, what do you want to do?”。
      用上位机软件输入m1,则m1数码管全亮,其他位灭。m2-m4与此相同
      用上位机软件输入L1,则L1全亮,其他位灭。L2-L4与此相同
      用上位机软件输入beer,蜂鸣器响1s
      输入其它不起作用。     

注:上位机软件就是串口调试小助手
hua-2012 发表于 2013-8-3 10:10 | 显示全部楼层
RI==0,if循环进不去
dirtwillfly 发表于 2013-8-3 12:22 | 显示全部楼层
这是老师布置的作业题吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

12

帖子

0

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