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

📄 system.lst

📁 一体化锁主程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 243   2              else if (uart_start_flag)
 244   2              {
 245   3                  switch (uart_rcv_flag)
 246   3                  {
 247   4                      case 0:if (tmp == rec_buf[com_n])
 248   4                             {
 249   5                                com_n++;
 250   5                             }
 251   4                             else
 252   4                             {
 253   5                               uart_start_flag = 0;
 254   5                             }
 255   4                             if (com_n == 7)
 256   4                             {
 257   5                                 uart_rcv_flag = 1;
 258   5                             }
 259   4                             break;
 260   4                      case 1:CID2 = tmp;
 261   4                             if ((CID2 == '8') || (CID2 == 'A'))
 262   4                             {
 263   5                                uart_rcv_flag = 2;
 264   5                                com_n = 0;
 265   5                                LCHKSUM = 0;
 266   5                                Rxsum2 = Rxsum1 + tmp;
 267   5                             }
 268   4                             else if(purview_flag)
 269   4                             {
 270   5                                if(CID2 == '9')
 271   5                                {
 272   6                                   uart_rcv_flag = 2;
 273   6                                   com_n = 0;
 274   6                                   LCHKSUM = 0;
 275   6                                   Rxsum2 = Rxsum1 + tmp;
 276   6                                }
 277   5                                else
 278   5                                {
 279   6                                   uart_start_flag = 0;
 280   6                                }
 281   5                             }
 282   4                             else
 283   4                             {
 284   5                                uart_start_flag = 0;
 285   5                             }
 286   4                             break;
 287   4                      case 2:if(com_n < 3)
 288   4                             {
 289   5                                LTH[com_n] = asc_hex(tmp);
 290   5                                LCHKSUM += LTH[com_n];
 291   5                                Rxsum2 += tmp;
 292   5                                com_n++;
 293   5                             }
 294   4                             else
 295   4                             {
 296   5                                LTH[com_n] = asc_hex(tmp);
 297   5                                LCHKSUM += LTH[com_n];
 298   5                                Rxsum2 += tmp;
 299   5                                if((LCHKSUM & 0x0f) == 0)
 300   5                                {
 301   6                                   uart_rcv_flag = 3;
 302   6                                   uart_rcv_len = (LTH[2]<<4) + LTH[3];
 303   6                                   com_n = 0;
C51 COMPILER V7.50   SYSTEM                                                                02/16/2009 09:18:46 PAGE 6   

 304   6                                }
 305   5                                else uart_start_flag = 0;
 306   5                             }
 307   4                             break;
 308   4                      case 3:if (com_n < uart_rcv_len - 1)              //DATA
 309   4                             {
 310   5                                 DataBuf[com_n] = asc_hex(tmp);
 311   5                                 Rxsum2 += tmp;
 312   5                                 com_n++;
 313   5                             }
 314   4                             else
 315   4                             {
 316   5                                 uart_rcv_flag = 4;
 317   5                                 DataBuf[com_n] = asc_hex(tmp);
 318   5                                 com_n = 0;
 319   5                                 Rxsum2 += tmp;
 320   5                                 Rxsum2 = 0x10000 - Rxsum2;
 321   5                                 sum_buf[0] = hex_asc((Rxsum2 >> 12) & 0x000f);
 322   5                                 sum_buf[1] = hex_asc((Rxsum2 >> 8) & 0x000f);
 323   5                                 sum_buf[2] = hex_asc((Rxsum2 >> 4) & 0x000f);
 324   5                                 sum_buf[3] = hex_asc(Rxsum2 & 0x000f);
 325   5                             }
 326   4                             break;
 327   4                      case 4:if(com_n < 4)
 328   4                             {
 329   5                                if (tmp == sum_buf[com_n])                  //FCS
 330   5                                {
 331   6                                   com_n++;
 332   6                                }
 333   5                                else
 334   5                                {
 335   6                                   uart_start_flag = 0;
 336   6                                }
 337   5                             }
 338   4                             else
 339   4                             {
 340   5                                 if(tmp == 0x0D)
 341   5                                 {
 342   6                                    uart_rcv_finish = 1;
 343   6                                    ES = 0;
 344   6                                    uart_start_flag = 0;
 345   6                                    //control();
 346   6                                 }
 347   5                                 uart_start_flag = 0;
 348   5                             }
 349   4                             break;
 350   4                     default:uart_start_flag = 0;
 351   4                             break;
 352   4                  }
 353   3              }
 354   2      
 355   2          }
 356   1      }
 357          /*
 358          0123456 78 9012 34567890
 359          ~100180 00 0000 FDB6\r
 360          DataBuf[74] = "
 361          0123456789012
 362          ~100180000000FDB6\r"
 363          */
 364          void send_chk(UINT8 n)
 365          {
C51 COMPILER V7.50   SYSTEM                                                                02/16/2009 09:18:46 PAGE 7   

 366   1          UINT8 i,j;
 367   1          TR = 1;              //发送状态
 368   1          DataBuf[0] = '~';
 369   1          DataBuf[1] = '1';
 370   1          DataBuf[2] = '0';
 371   1          DataBuf[3] = rec_buf[2];
 372   1          DataBuf[4] = rec_buf[3];
 373   1          DataBuf[5] = '8';
 374   1          DataBuf[6] = '0';
 375   1          //DataBuf[7] = '0';
 376   1          //DataBuf[8] = '0';
 377   1          i = n;
 378   1          if(i > 17)
 379   1          {
 380   2             j = i - 18;
 381   2             LTH[3] = j&0x0f;
 382   2             LTH[2] = (j>>4)&0x0f;
 383   2             LTH[0] = (0x00 - LTH[2] - LTH[3])&0x0f;
 384   2             DataBuf[9] =  hex_asc(LTH[0]);
 385   2             DataBuf[10] = 0x30;
 386   2             DataBuf[11] = hex_asc(LTH[2]);
 387   2             DataBuf[12] = hex_asc(LTH[3]);
 388   2             Txsum = 0;
 389   2             while(--i > 5)
 390   2                Txsum += DataBuf[n - i];
 391   2             Txsum = 0x10000 - Txsum;
 392   2             DataBuf[n - 5] = hex_asc((Txsum >> 12) & 0x000f);
 393   2             DataBuf[n - 4] = hex_asc((Txsum >> 8) & 0x000f);
 394   2             DataBuf[n - 3] = hex_asc((Txsum >> 4) & 0x000f);
 395   2             DataBuf[n - 2] = hex_asc(Txsum & 0x000f);
 396   2             DataBuf[n - 1] = 0x0D;
 397   2             uart_send1(DataBuf,n);
 398   2          }
 399   1          TR = 0;              //接收状态
 400   1      }
 401          /***********************************************************************************
 402          函数名称:control()
 403          功能描述:控制子程序
 404          参    数:无
 405          ***********************************************************************************/
 406          void control(void)
 407          {
 408   1          UINT8 i,j,l,m;
 409   1          DataBuf[0] = (DataBuf[0]<<4) + DataBuf[1];
 410   1          DataBuf[2] = (DataBuf[2]<<4) + DataBuf[3];
 411   1          if(CID2 == '8')
 412   1          {
 413   2             if(DataBuf[0] == 0xF0)
 414   2             {
 415   3                if(DataBuf[2] == 0xE0)       //权限确认
 416   3                {
 417   4                    purview_timer = 0x4B0;
 418   4                    purview_flag = 1;
 419   4                    DataBuf[7] = 0x30;
 420   4                    DataBuf[8] = 0x30;
 421   4                    send_chk(18);
 422   4                }
 423   3                else if(DataBuf[2] == 0xE1)  //取消权限
 424   3                {
 425   4                    purview_flag = 0;
 426   4                    DataBuf[7] = 0x30;
 427   4                    DataBuf[8] = 0x30;
C51 COMPILER V7.50   SYSTEM                                                                02/16/2009 09:18:46 PAGE 8   

 428   4                    send_chk(18);
 429   4                }
 430   3                else if((purview_flag)&&(DataBuf[2] == 0xE2))//更改密码
 431   3                {
 432   4                    purview_timer = 0x4B0;
 433   4                    DataBuf[7] = 0x30;
 434   4                    DataBuf[8] = 0x30;
 435   4                    send_chk(18);
 436   4                }
 437   3             }
 438   2          }
 439   1          else if(CID2 == '9')
 440   1          {
 441   2             if(DataBuf[0] == 0xF1)
 442   2             {
 443   3                if(DataBuf[2] == 0xE3)         //增加一个用户
 444   3                {
 445   4                   if(user_n == 0)
 446   4                   {
 447   5                      for(i=0;i<16;i++)
 448   5                         user_buf[0].whole[i] =  (DataBuf[4 + i*2]<<4) + DataBuf[5 + i*2];
 449   5                      user_n++;
 450   5                      I2C_rcv[0] = user_n;
 451   5                      AT24C128_write(0x00,I2C_rcv,1);
 452   5                      AT24C128_write(0x10,user_buf[0].whole,16);
 453   5                      purview_timer = 0x4B0;
 454   5                      DataBuf[7] = 0x30;
 455   5                      DataBuf[8] = 0x30;
 456   5                      send_chk(18);
 457   5                   }
 458   4                   else if(user_n < 60)
 459   4                   {
 460   5                      for(i=0;i<16;i++)
 461   5                         user_tmp.whole[i] = (DataBuf[4 + i*2]<<4) + DataBuf[5 + i*2];
 462   5                      l = 0;
 463   5                      for(i=0;i<60;i++)
 464   5                      {
 465   6                         if(user_buf[i].class.purview != 0xFF)
 466   6                         {
 467   7                            l++;
 468   7                            m = 0;
 469   7                            for(j=0;j<5;j++)
 470   7                            {
 471   8                               if(user_buf[i].class.card[j] != user_tmp.class.card[j])
 472   8                               {
 473   9                                   break;
 474   9                               }
 475   8                               else m++;
 476   8                            }
 477   7                            if(m == 5)
 478   7                            {
 479   8                               purview_timer = 0x4B0;
 480   8                               DataBuf[7] = 0x45;
 481   8                               DataBuf[8] = 0x36;
 482   8                               send_chk(18);
 483   8                               TI = 0;
 484   8                               ES = 1;
 485   8                               return;
 486   8                            }
 487   7                            else
 488   7                            {
 489   8                               m = 0;
C51 COMPILER V7.50   SYSTEM                                                                02/16/2009 09:18:46 PAGE 9   

 490   8                               for(j=0;j<4;j++)
 491   8                               {
 492   9                                  if(user_buf[i].class.ID[j] != user_tmp.class.ID[j])
 493   9                                  {

⌨️ 快捷键说明

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