⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.lst

📁 单片机P89V51RD2在操纵系统RTX下的各个功能
💻 LST
📖 第 1 页 / 共 2 页
字号:
 146   4                              case CMD_DATA_FLAG:
 147   4                                      COMMInIndex++;
 148   4                                      COMMInBuff[COMMInIndex] = ch;
 149   4                                      if(COMMInIndex == CMD_DATA_NUM)
 150   4                                              COMMFlag = CMD_END_FLAG;
 151   4                                      //Uart_SendChar(COMMInIndex);
 152   4                                      break;
 153   4                              case CMD_RESET_FLAG:
 154   4                                      COMMInIndex++;
 155   4                                      COMMInBuff[COMMInIndex] = ch;
 156   4                                      if(COMMInIndex == CMD_RESET_NUM)
 157   4                                              COMMFlag = CMD_END_FLAG;
 158   4                                      //Uart_SendChar(COMMInIndex);
 159   4                                      break;
 160   4                              case CMD_END_FLAG:
 161   4                                      //Uart_SendChar(0xf);
 162   4                                      break;
 163   4                              default:
 164   4                                      COMMFlag = CMD_NO_FLAG;
 165   4                                      COMMInLenght = 0;
 166   4                                      COMMInIndex = 0;
 167   4                                      COMMInBuff[COMMInIndex] = 0x0;
 168   4                                      bFrameSt = 0;
 169   4                                      //Uart_SendChar(',');
 170   4                                      break;
 171   4                              }
 172   3                      }
 173   2              ES = 1;
 174   2          }//end of RI
 175   1      }
 176          
 177          //串口处理程序
 178          void Uart_Do(void)
C51 COMPILER V8.02   UART                                                                  10/01/2007 00:33:27 PAGE 4   

 179          {
 180   1              unsigned char i;
 181   1              
 182   1              unsigned char COMMOutLenght;    //
 183   1              unsigned char COMMOutBuff[5];   //返回buffer
 184   1              
 185   1              if(COMMFlag == CMD_END_FLAG)
 186   1              {
 187   2                      //sum
 188   2                      COMMInSum = 0;
 189   2                      for(i=0;i<(COMMInIndex-1);i++)
 190   2                              COMMInSum += COMMInBuff[i];
 191   2      
 192   2                      if(COMMInSum == COMMInBuff[(COMMInLenght-1)])
 193   2                      {
 194   3                              //addr
 195   3                              if(COMMInBuff[0] == MY485ADDR)//data
 196   3                          {
 197   4                                      if(COMMInBuff[1] == DATA_SEND_CMD)//send acq data 0x53
 198   4                                      {
 199   5                                              RUNflag = RUN_ACQ_FLAG;
 200   5                                              
 201   5                                              COMMOutLenght = 5;//5 data len
 202   5                                              COMMOutBuff[0] = Val_Mytime>>8;//time
 203   5                                              COMMOutBuff[1] = Val_Mytime;
 204   5                                              COMMOutBuff[2] = Val_ad>>8;//AD
 205   5                                              COMMOutBuff[3] = Val_ad;
 206   5                                              COMMOutBuff[4] = Val_Mystatus;//故障码
 207   5                                              Uart_SendFrame(MY485ADDR, COMMOutBuff, COMMOutLenght);
 208   5                                      }
 209   4                                      else if(COMMInBuff[1] == DATA_RECV_CMD)//接收后的回应  0x52
 210   4                                      {
 211   5                                              RUNflag = RUN_ACT_FLAG;
 212   5      
 213   5                                              Val_Actdata = COMMInBuff[2];//执行 data
 214   5                                              Val_Actdata = (Val_Actdata << 8) + COMMInBuff[3];
 215   5                                              Val_Actdir = COMMInBuff[4];//方向,R和L
 216   5      
 217   5      
 218   5                                              //执行程序(电机)
 219   5                                              if(Val_Actdata <= 0){
 220   6                                                      PWM_stop();
 221   6                                                      DAMP_R = 1;      //1 off //0 on
 222   6                                                      DAMP_L = 1;
 223   6                                              }
 224   5                                              else{
 225   6                                                      PWM_stop();
 226   6                                                      PWM_changfreq(Val_Actdata);
 227   6                                                      if(Val_Actdir == 'L'){//左转 0x4C
 228   7                                                              PWM_DIR = 1;
 229   7                                                              DAMP_R = 1;
 230   7                                                              DAMP_L = 0;
 231   7                                                      }
 232   6                                                      else{              //右转'R'和默认 0x52
 233   7                                                              PWM_DIR = 0;
 234   7                                                              DAMP_L = 1;
 235   7                                                              DAMP_R = 0;
 236   7                                                      }
 237   6                                                      PWM_run();
 238   6                                              }
 239   5                                                      
 240   5                                              COMMOutLenght = 5;//5 data len
C51 COMPILER V8.02   UART                                                                  10/01/2007 00:33:27 PAGE 5   

 241   5                                              COMMOutBuff[0] = Val_Mytime>>8;//time
 242   5                                              COMMOutBuff[1] = Val_Mytime;
 243   5                                              COMMOutBuff[2] = Val_Actdata>>8;//AD
 244   5                                              COMMOutBuff[3] = Val_Actdata;
 245   5                                              COMMOutBuff[4] = Val_Mystatus;//故障码
 246   5                                              Uart_SendFrame(MY485ADDR, COMMOutBuff, COMMOutLenght);
 247   5                                      }
 248   4                              }
 249   3                              else if(COMMInBuff[0] == BG485ADDR)//广播地址
 250   3                          {
 251   4                                      Val_Uptime = COMMInBuff[2];//time
 252   4                                      Val_Uptime = (Val_Uptime << 8) + COMMInBuff[3];
 253   4      
 254   4                                      Val_Mytime = Val_Uptime;
 255   4                              RUNflag = RUN_RESET_FLAG;
 256   4                                      //Uart_SendChar('1');
 257   4                          }
 258   3                              else{//addr不对,丢弃,重新来
 259   4      
 260   4                                      //if(RUNflag == RUN_NO_FLAG)
 261   4                                      //      RUNflag = RUN_NO_FLAG;
 262   4                                      //LED_ERR = 1;
 263   4                                      //Uart_SendChar(0xfc);
 264   4                              }
 265   3                      }
 266   2                      else{//sum不对,丢弃,重新来
 267   3                              
 268   3                              ///RUNflag = RUN_NO_FLAG;
 269   3                              LED_ERR = 1;
 270   3                              //Uart_SendChar(0xfe);
 271   3                      }
 272   2      
 273   2                      COMMFlag = CMD_NO_FLAG;
 274   2                      COMMInLenght = 0;
 275   2                      COMMInIndex = 0;
 276   2                      COMMInSum = 0;
 277   2                      COMMInBuff[COMMInIndex] = 0x0;
 278   2                      bFrameSt = 0;
 279   2      
 280   2              }//end of CMD_END_FLAG
 281   1          
 282   1              
 283   1      }
 284          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    566    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     11      12
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -