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

📄 main.lst

📁 单片机与a7105组成无线收发程序2.4G多通道
💻 LST
📖 第 1 页 / 共 3 页
字号:
 209   4                                                        lcd_printf_string("Set Freq", ROW(0x00)|LEN(0x08)|COL(0x00));
 210   4                                                        display_rf_channel();
 211   4                                               break;
 212   4      
 213   4                                               case SEND_STATUS:
 214   4      
 215   4                                                        lcd_printf_string("Send....", ROW(0x00)|LEN(0x08)|COL(0x00));
 216   4                                                        lcd_printf_string("        ", ROW(0x01)|LEN(0x08)|COL(0x00));
 217   4      
 218   4                                                        System_Mode = TEST_MODE;
 219   4                                                        ini_rf();                                                                     // 重新初始化,使7105进入直接模式
 220   4                                                        //ini_rf();
 221   4                                                        //ini_rf();
 222   4                                                        IE1 = 0;
 223   4      
 224   4                                                        while(1)
 225   4                                                        {                                                                                               
 226   5                                                                key_scan();
 227   5                                                                if(Key_Msg)                                                   // 按下任意键退出
 228   5                                                                {
 229   6                                                                        Key_Msg = 0;
 230   6                                                                        lcd_printf_string("COOLWAVE", ROW(0x00)|LEN(0x08)|COL(0x00));
 231   6                                                                        lcd_printf_string(" A7105  ", ROW(0x01)|LEN(0x08)|COL(0x00));
 232   6                                                                        System_Mode = NORMAL_MODE;
 233   6                                                                        Rf_Mode_Cnt = REC_STATUS; 
 234   6                                                                        ini_rf();
 235   6                                                                        ini_rf();
 236   6                                                                        ini_rf();                                                             
 237   6                                                                        IE1 = 0;
 238   6                                                                        break;
 239   6                                                                }
 240   5                                                                
C51 COMPILER V7.06   MAIN                                                                  10/29/2008 11:22:40 PAGE 5   

 241   5                                                        }
 242   4                                               break;
 243   4      
 244   4                                               default:
 245   4      
 246   4                                               break;
 247   4                                       }
 248   3                                                                       
 249   3                  break;
 250   3      
 251   3                  case DEC_KEY:
 252   3                                       switch(Rf_Mode_Cnt)
 253   3                                       {
 254   4                                               case SET_RF_RATE:
 255   4                                                        if(Rf_Rate_Cnt)
 256   4                                                        {
 257   5                                                        Rf_Rate_Cnt--;
 258   5                                                        }
 259   4                                                        //A7105_setup_data_rate(Rf_Rate_Cnt);         // 设置 RF rate 
 260   4                                                        display_rf_rate();
 261   4                                                        ini_rf();
 262   4                                                                                                        
 263   4                                               break;                                                          
 264   4      
 265   4                                               case SET_RF_CHANNEL:
 266   4                                                        if(Rf_Channel_Cnt)
 267   4                                                        {
 268   5                                                                Rf_Channel_Cnt--;
 269   5                                                        }
 270   4                                                        Rf_Rec_Channel = Rf_Channel_Cnt << 3; 
 271   4                                                        //A7105_setup_channel(Rf_Rec_Channel);                                        // 设置channel
 272   4                                                        display_rf_channel(); 
 273   4                                                        ini_rf();
 274   4                                                                                                                                        
 275   4                                               break;
 276   4      
 277   4                                               default:
 278   4      
 279   4                                               break;
 280   4                                       }
 281   3                  break;
 282   3      
 283   3                  case ADD_KEY:
 284   3                                       switch(Rf_Mode_Cnt)
 285   3                                       {
 286   4                                               case SET_RF_RATE:
 287   4                                                        if(Rf_Rate_Cnt < 7)
 288   4                                                        {
 289   5                                                                Rf_Rate_Cnt++;
 290   5                                                        }
 291   4                                                        //A7105_setup_data_rate(Rf_Rate_Cnt);         // 设置 RF rate 
 292   4                                                        display_rf_rate();
 293   4                                                        ini_rf();
 294   4                                                        
 295   4                                               break;
 296   4      
 297   4                                               case SET_RF_CHANNEL:
 298   4                                                        if(Rf_Channel_Cnt < 20)
 299   4                                                        {
 300   5                                                                Rf_Channel_Cnt++;
 301   5                                                        }
 302   4                                                        Rf_Rec_Channel = Rf_Channel_Cnt << 3; 
C51 COMPILER V7.06   MAIN                                                                  10/29/2008 11:22:40 PAGE 6   

 303   4                                                        //A7105_setup_channel(Rf_Rec_Channel);                                        // 设置channel
 304   4                                                        display_rf_channel();
 305   4                                                        ini_rf();
 306   4                                                        
 307   4                                               break;
 308   4      
 309   4                                               default:
 310   4      
 311   4                                               break;
 312   4                                       }
 313   3                  break;
 314   3      
 315   3                  case SEND_KEY:              // 处理发送按键
 316   3                                       Rf_Send_Buf[0] = RF_DOWN_CMD;
 317   3                                       Rf_Send_Buf[1] = 0x08;
 318   3                                       for(i=2; i<RF_DATA_PACKET_SIZE-1; i++)
 319   3                                       {
 320   4                                               Rf_Send_Buf[i] = rand();
 321   4                                       }
 322   3                                       Rf_Send_Buf[i] = 0xaa;
 323   3                                       send_data_by_RF(RF_DATA_PACKET_SIZE);  // 发送测试数据
 324   3                                       lcd_printf_string("Wait Ack", ROW(0x00)|LEN(0x08)|COL(0x00));
 325   3                                       lcd_printf_string("        ", ROW(0x01)|LEN(0x08)|COL(0x00));
 326   3      
 327   3                                       TF0 = 0;
 328   3                                       TH0 = 0x94;
 329   3                                       TL0 = 0x00;            // (65536 - 37888(0x9400))*12/33.177 = 10ms
 330   3                                       Timer0_Cnt = 20;   // 定时200ms
 331   3                                       TR0 = 1;                       // enable timer0
 332   3                                       Wait_Ack = 1;          // 设置等待应答标志
 333   3                  break;
 334   3      
 335   3                  default:
 336   3                  break;
 337   3              }
 338   2          }
 339   1      }
 340          
 341          
 342          /**********************************************************
 343          name:           dispose_rf_data
 344          input:          none
 345          output:         none
 346          describe:       处理接收到的RF数据
 347          notice:
 348          creat date:     2008-7-24
 349          creator:        dengyihong
 350          **********************************************************/
 351          void dispose_rf_data(void)
 352          {
 353   1          bit return_ack = 1;
 354   1          U8 i = 0;
 355   1      
 356   1              if(Rf_Rec_Buf[0] == RF_DOWN_CMD)                        // 是否为主机发送的数据
 357   1              {
 358   2                      lcd_printf_string("Send Ack", ROW(0x00)|LEN(0x08)|COL(0x00));
 359   2                      lcd_printf_string("        ", ROW(0x01)|LEN(0x08)|COL(0x00));
 360   2                      Rf_Send_Buf[0] = RF_UP_CMD;
 361   2                      Rf_Send_Buf[1] = 0x08;
 362   2                      for(i=0; i<RF_DATA_PACKET_SIZE-3; i++)
 363   2                      {
 364   3                              Rf_Send_Buf[i+2] = Rf_Rec_Buf[i+2];     // 将接收到的数据返回作为应答
C51 COMPILER V7.06   MAIN                                                                  10/29/2008 11:22:40 PAGE 7   

 365   3                      }
 366   2                      Rf_Send_Buf[i+2] = 0xaa;                                // 最后一个为无效数据
 367   2                      send_data_by_RF(RF_DATA_PACKET_SIZE);   // 发送应答
 368   2      
 369   2                      
 370   2                      Clr_Screen = 1;                                                 // 设置更新屏幕标志位
 371   2                      TF0 = 0;
 372   2                      TH0 = 0x94;
 373   2                      TL0 = 0x00;                                                             // (65536 - 37888(0x9400))*12/33.177 = 10ms
 374   2                      Timer0_Cnt = 20;                                                // 准备延时200ms后返回到主屏显示
 375   2                      TR0 = 1;                                                                // enable timer0
 376   2              }
 377   1              else if(Rf_Rec_Buf[0] == RF_UP_CMD)                     // 是否为子机返回的数据
 378   1              {
 379   2                      if(Wait_Ack)                                                    // 是否在等待应答状态
 380   2                      {
 381   3                              for(i=2; i<RF_DATA_PACKET_SIZE-1; i++)
 382   3                              {
 383   4                                      if(Rf_Rec_Buf[i] != Rf_Send_Buf[i])     // 判断接收到的应答是否有错
 384   4                                      {
 385   5                                              return_ack = 0;
 386   5                                              break;
 387   5                                      }
 388   4                              }
 389   3                              if(return_ack)                                                  // 应答正确
 390   3                              {
 391   4                                      lcd_printf_string("Succeed ", ROW(0x00)|LEN(0x08)|COL(0x00));   // 显示通信成功
 392   4                                      lcd_printf_string("        ", ROW(0x01)|LEN(0x08)|COL(0x00));
 393   4                                      Wait_Ack = 0;
 394   4      
 395   4                                      Clr_Screen = 1;         // 设置更新屏幕标志位
 396   4                                      TF0 = 0;
 397   4                                      TH0 = 0x94;
 398   4                                      TL0 = 0x00;                     // (65536 - 37888(0x9400))*12/33.177 = 10ms
 399   4                                      Timer0_Cnt = 20;        // 准备延时200ms后返回到主屏显示
 400   4                                      TR0 = 1;                        // enable timer0                        
 401   4                              }
 402   3                      }
 403   2              }
 404   1      }
 405          
 406          /**********************************************************
 407          name:           display_rf_channel
 408          input:          none
 409          output:         none
 410          describe:       显示RF当前的channel
 411          notice:
 412          creat date:     2008-8-7
 413          creator:        dengyihong
 414          **********************************************************/
 415          void display_rf_channel(void)
 416          {
 417   1              switch(Rf_Channel_Cnt)
 418   1              {
 419   2                      case 0:
 420   2                               lcd_printf_string(" 2.400G ", ROW(0x01)|LEN(0x08)|COL(0x00));                                                   
 421   2                      break;
 422   2                                                               
 423   2                      case 1:
 424   2                               lcd_printf_string(" 2.404G ", ROW(0x01)|LEN(0x08)|COL(0x00));                                                          
 425   2                      break;
 426   2                                                               

⌨️ 快捷键说明

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