51单片机通过控制独立按键向串口发送数字,代码一直有问题,数字发送不出去,各位大神帮忙看看,在线等

2019-07-15 11:16发布

ng "), ShowString(0,Test1);break;         
       case 2: sprintf(Test1," 2 dang "), ShowString(0,Test1);break;           
       case 3: sprintf(Test1," 3 dang "), ShowString(0,Test1);break;      
       case 4: sprintf(Test1," 4 dang "), ShowString(0,Test1);break;      
       case 5: sprintf(Test1," 5 dang "), ShowString(0,Test1);break;            
       case 6: sprintf(Test1," 6 dang "), ShowString(0,Test1);break;            
       case 7: sprintf(Test1," 7 dang "), ShowString(0,Test1);break;         
       case 8: sprintf(Test1," 8 dang "), ShowString(0,Test1);break;        
       case 9: sprintf(Test1," 9 dang "), ShowString(0,Test1);break;   
   }

   while(!jiansu);

  }
}


   if(tingzhi==0)      //   停止      
   {  
     delay(10);            
     if(tingzhi==0)         
    {              
     IN1=1;   
     IN2=1;         
     sprintf(Test1," tingzhi ");
     ShowString(0,Test1);
     sprintf(Test2,"      ");
      ShowString(1,Test2);        
    while(!tingzhi);            
    }         
   }                              
}




void UARTinit(void)
{

    SCON  = 0x50;                        /* SCON: 模式 1, 8-bit UART, 使能接收         */
    TMOD |= 0x20;               /* TMOD: timer 1, mode 2, 8-bit reload        */
    TH1   = 0xFD;               /* TH1:  reload value for 9600 baud @ 11.0592MHz   */
    TL1   =TH1;
    TR1   = 1;                  /* TR1:  timer 1 run                          */
   // EA    = 1;                  /*打开总中断*/
   // ES    = 1;                  //打开串口中断
        //TI    = 1;                  //发送标志位
}


/******************************************************************/
/*                  串口中断程序                                  */
/******************************************************************/
/*
void UART_SER (void) interrupt 4 //串行中断服务程序
{
     unsigned char temp;
    // n= temp-80;        

   if(RI)                        //判断是接收中断产生
     {
          RI=0;                      //标志位清零
          temp=SBUF;                 //读入缓冲区的值
         // P1=Temp;                   //把值输出到P1口,用于观察
      SBUF=temp;                 //把接收到的值再发回电脑端

         }
   if(TI)                        //如果是发送标志位,清零
     TI=0;
} */


void UART_send_byte(unsigned  char dat)
{
    dat= SBUF ;
    SBUF = dat;
    while(!TI);     
    TI=0;            // 此句可以不要,不影响后面数据的发送,只供代码查询数据是否发送完成
}

void scan()
{

if(zhengzhuan==0&&fanzhuan==0)      //   正转      
   {   
     delay(10);            
     if(zhengzhuan==0&&fanzhuan==0)      
    {            
            n=5;
          UART_send_byte(n);
     }
    }  


   if(jiasu==0)      //   加速      
   {  
     delay(10);            
     if(jiasu==0)           
    {  
      n++;
      UART_send_byte(n);
    }        
   }  

    if(jiansu==0)  //减速         
   {   
     delay(10);                 
    if(jiansu==0)        
    {      
      n--;
      UART_send_byte(n);

    }
   }
}
void main()
{

InitLcd();         //初始化LCD
time_init();
UARTinit();


while(1)   
{

   keyscan();
   scan();
   tiaosu();  
   djkz(highv,lowv);
}

}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
人中狼
1楼-- · 2019-07-15 19:29
 精彩回答 2  元偷偷看……
如果我和你
2楼-- · 2019-07-16 00:07
可不可以不通过中断,通过中断可以发送,但是我想通过按键发送
人中狼
3楼-- · 2019-07-16 00:08
你现在的程序也没有通过中断发送,至于通过按键发送,那也只是检测到按键后,启动发送而已。
如果我和你
4楼-- · 2019-07-16 00:45
人中狼 发表于 2017-4-19 14:49
你现在的程序也没有通过中断发送,至于通过按键发送,那也只是检测到按键后,启动发送而已。

我就是检测到按键后需要发送,但是为什么接收不到发送的数字
人中狼
5楼-- · 2019-07-16 06:09
EA和ES置1了吗,看你的程序可以把电脑发的数据返回,这个功能,能实现吗
人中狼
6楼-- · 2019-07-16 06:51
 精彩回答 2  元偷偷看……

一周热门 更多>