485例程中存在的不理解

2019-07-21 06:07发布

while(1)
{
  key=KEY_Scan(0);
  if(key==KEY0_PRES)//KEY0按下,发送一次数据
  {
   for(i=0;i<5;i++)
   {
    rs485buf=cnt+i;//填充发送缓冲区
    LCD_ShowxNum(30+i*32,190,rs485buf,3,16,0X80); //显示数据
    }
   RS485_Send_Data(rs485buf,5);//发送5个字节            
  }   
  RS485_Receive_Data(rs485buf,&key);
  if(key)//接收到有数据
  {
   if(key>5)key=5;//最大是5个数据.
    for(i=0;i<key;i++)LCD_ShowxNum(30+i*32,230,rs485buf,3,16,0X80); //显示数据
   }
  t++;
  delay_ms(10);
  if(t==20)
  {
   LED0=!LED0;//提示系统正在运行
   t=0;
   cnt++;
   LCD_ShowxNum(30+48,150,cnt,3,16,0X80); //显示数据
  }     
}
}
1.KEY_Scan(0)只能返回1或0,为什么要把它赋给key
key==KEY0_PRES赋给key应该是判断是否按下吧
2.rs485buf=cnt+i;
LCD_ShowxNum(30+i*32,190,rs485buf,3,16,0X80);
因为cnt为0,那显示的数据不就是0,1,2,3,4了吗
3.  RS485_Receive_Data(rs485buf,&key);为啥取的是key的地址,不是存有数据的rs485buf
4.  t++;这个t是干啥的
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。