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

📄 main.lst

📁 学校水POS读卡程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 284   4            
 285   4            }  
 286   3      
 287   3          }
 288   2          if(ErrNum)
 289   2          {
 290   3            SerBuffer[3] = ErrNum   ;
 291   3            TransHexAsi(&SerBuffer[3],SendBuffer,1);
 292   3            SendDataToPc(SendBuffer,2);
 293   3          }  
 294   2        }
 295   1      
 296   1      }
 297          
 298          /****************************************************************************
 299          *                                                                           *
 300          * Function:     init                                                        *
 301          *                                                                           *
 302          * Input:        -                                                           *
 303          * Output:       -                                                           *
C51 COMPILER V7.06   MAIN                                                                  02/25/2005 08:31:59 PAGE 6   

 304          *                                                                           *
 305          * Description:                                                              *
 306          *                                                                           *
 307          *                                                                           *
 308          ****************************************************************************/
 309          
 310          void    init (void)
 311          {
 312   1        
 313   1        AuthOk      = 0xff;
 314   1      
 315   1        AccOk       = FALSE;
 316   1        //EnOnChipSram();       // Enable w77e58 on chip 1k sram
 317   1       
 318   1      
 319   1        #ifdef w77e58
                DME0        = TRUE;
                PMR         = 0x41;
                #endif
 323   1        
 324   1        #ifdef sst89e554
 325   1        AUXR        = 0;
 326   1        WDTD        = 0x0a0;    // 3s 
 327   1        WDTC        = 0x1a;//00011010b;
 328   1        #endif
 329   1      
 330   1        LED         = ON;
 331   1        BEEP        = BeepOn;
 332   1        BEEP        = BeepOff;
 333   1        RC500RST    = FALSE;
 334   1        RC500_CS    = TRUE;   // Enable the CS for RC500
 335   1      
 336   1        CmdReceived = FALSE;
 337   1        CmdValid    = FALSE;
 338   1        Quit        = FALSE;
 339   1        LLfReady    = TRUE;
 340   1        SendReady   = TRUE;
 341   1        Idle        = TRUE;
 342   1      
 343   1        RepCnt      = 0;
 344   1      
 345   1        P1_6 = 0;
 346   1       
 347   1        RecvState   = RECV_STX;
 348   1      
 349   1        EnableTransferCmd = FALSE;
 350   1      
 351   1        CheckByteCnt = BCC_CHECKBYTECNT;
 352   1      
 353   1      #ifdef AUTODELAY
 354   1        DelayRate = 0;
 355   1        DelayRateLocked = TRUE;
 356   1      #endif
 357   1      
 358   1        FrameEnd    = 0;
 359   1        FrameHead   = 0;
 360   1        FrameOk     = 0;
 361   1        DataNum     = 0;
 362   1        ChkSum      = 0;
 363   1      
 364   1        PCON = 0x00;                  // SMOD = 1;
 365   1        SCON = 0x50;                  // Mode 1, 8-bit UART, enable receiption
C51 COMPILER V7.06   MAIN                                                                  02/25/2005 08:31:59 PAGE 7   

 366   1      
 367   1      //  EIE  = 0x0 ;
 368   1      //  AutoBaud = TRUE;
 369   1        TMOD     = 0x20;              // Timer 1, mode 2, 8-bit auto reload,
 370   1                                      // Timer 0, mode 0, 13-bit counter
 371   1        Capt_L   = 0;
 372   1        Capt_H   = 0;
 373   1        
 374   1        //PCON = 0X80;
 375   1        TH1 = 0xfd ;
 376   1        TL1 = 0xfd ;
 377   1        
 378   1        //TH1 = 0xf4 ;
 379   1        //TL1 = 0xf4 ;
 380   1        PS = 1;
 381   1        ES = 1 ;
 382   1      
 383   1        TR1 = 1;
 384   1      
 385   1       
 386   1       // LED = OFF;  
 387   1      
 388   1        //PX1 = 1;
 389   1        
 390   1        IT1 = 1;                      // Config ext1 as edge trigger for RC500
 391   1        EX1 = 1;                      // Enable ext1 interrupt for RC500
 392   1        RC500RST = TRUE;
 393   1        EIE      = 0x0;
 394   1        EA = TRUE;                    // Enable all interrupts
 395   1        OpenIO();
 396   1      }
 397          
 398          
 399          /****************************************************************************
 400          *                                                                           *
 401          * Function:     cmd_execution                                               *
 402          *                                                                           *
 403          * Input:        SerBuffer[]                                                 *
 404          * Output:       SerBuffer[]                                                 *
 405          *                                                                           *
 406          * Description:                                                              *
 407          *                                                                           *
 408          *                                                                           *
 409          ****************************************************************************/
 410          
 411          void    cmd_execution (void)
 412          {
 413   1        uchar xdata Status;
 414   1        uchar xdata len;
 415   1        uchar xdata cmd;
 416   1        uchar xdata adr;
 417   1        uchar xdata tmp[16];
 418   1        //uchar xdata snr[4];
 419   1        uchar xdata size;
 420   1        uchar xdata tt[2];
 421   1        static uchar xdata mode,value[4],addr;
 422   1        Temp = SerBuffer;  
 423   1      
 424   1        cmd = SerBuffer[COMMAND];  //COMMAND == 1
 425   1      
 426   1        switch (cmd)
 427   1        {
C51 COMPILER V7.06   MAIN                                                                  02/25/2005 08:31:59 PAGE 8   

 428   2              case 0x40:                                      //PICC_REQALL 
 429   2      
 430   2                Status = M500PiccRequest(PICC_REQALL, tt);    //Get Picc tt[]: Tagtype 2 Byte
 431   2                ErrNum = Status;
 432   2            if (Status != MI_OK)
 433   2                {
 434   3              AccOk = 0;       
 435   3              
 436   3                }
 437   2            else
 438   2            {
 439   3               // RingOn();
 440   3              AccOk = 1;
 441   3            }
 442   2            ErrNum = Status; 
 443   2            break;
 444   2      
 445   2              
 446   2      
 447   2              case 0x41:                                      // Request
 448   2      
 449   2                if(SerBuffer[MODE]&0X01) SerBuffer[MODE]=PICC_REQALL; // ALL
 450   2                else SerBuffer[MODE]=PICC_REQSTD; // IDLE
 451   2      
 452   2                Status = M500PiccRequest(SerBuffer[MODE], &SerBuffer[TAGTYPE]);
 453   2            
 454   2                if (Status == MI_OK)
 455   2                {
 456   3                      SerBuffer[LENGTH] = 2;
 457   3                }
 458   2            ErrNum = Status;
 459   2                break;
 460   2      
 461   2      
 462   2              case 0x42:                                      // Anticoll 
 463   2      
 464   2                Status = M500PiccAnticoll(SerBuffer[BCNT], &SerBuffer[SERNR]);
 465   2           
 466   2                if (Status == MI_OK)
 467   2                {
 468   3                      SerBuffer[LENGTH] = 4;
 469   3             // RingOn();
 470   3                  AccOk = 1;
 471   3                }
 472   2            ErrNum = Status;
 473   2                break;
 474   2      
 475   2      
 476   2              case 0x43:                                      // Select
 477   2      
 478   2                memcpy(card_snr,&SerBuffer[SERNR],4); // store serial number in globle var
 479   2      
 480   2      //输入: 卡片序列号 输出:卡片容量 SIZE = 0X88H      
 481   2                Status = M500PiccSelect(&SerBuffer[SERNR], &SerBuffer[SIZE]);
 482   2                if (Status == MI_OK)
 483   2                {
 484   3                      SerBuffer[LENGTH] = 1;
 485   3                }
 486   2      
 487   2           //     RingOn();
 488   2      
 489   2            AccOk = 1;
C51 COMPILER V7.06   MAIN                                                                  02/25/2005 08:31:59 PAGE 9   

 490   2            ErrNum = Status;
 491   2      
 492   2                break;
 493   2      
 494   2      
 495   2              case 0x44:                                      // Authentication
 496   2      
 497   2                if(SerBuffer[MODE]&0X04) SerBuffer[MODE]=PICC_AUTHENT1B; // keyB
 498   2                else SerBuffer[MODE]=PICC_AUTHENT1A; // keyA =0x60  MODE =3  key_sector = SerBuffer[4] block = 9 SerBuf
             -fer[SECNR]+1)*4-1 SECNR= 4
 499   2      
 500   2                Status = M500PiccAuth(SerBuffer[MODE], card_snr, SerBuffer[SECNR], (SerBuffer[SECNR]+1)*4-1);
 501   2      
 502   2            //Status = M500PiccAuthE2(SerBuffer[MODE], card_snr, SerBuffer[SECNR], (SerBuffer[SECNR]+1)*4-1);
 503   2      
 504   2            AuthOk = Status;
 505   2            ErrNum = Status;
 506   2                
 507   2                break;
 508   2      
 509   2      
 510   2              case 0x45:                                      // Halt
 511   2      
 512   2                Status = M500PiccHalt();
 513   2                break;
 514   2      
 515   2      
 516   2              case 0x46:                                      // Read
 517   2      
 518   2            Status = M500PiccRead(SerBuffer[ADR], &SerBuffer[ADR]);//ADR = 3
 519   2                if (Status == MI_OK)
 520   2                {
 521   3                      SerBuffer[LENGTH] = 16;
 522   3                }
 523   2            ErrNum = Status;
 524   2                break;
 525   2      
 526   2      
 527   2              case 0x47:                                      // Write
 528   2      
 529   2                Status = M500PiccWrite(SerBuffer[ADR], &SerBuffer[DATABYTES]);
 530   2            ErrNum = Status;
 531   2                break;
 532   2      
 533   2      
 534   2              case 0x48:                                      // Increment
 535   2      
 536   2                mode = PICC_INCREMENT;
 537   2                addr = SerBuffer[ADR];
 538   2                memcpy(value,&SerBuffer[VALUE],4);
 539   2                Status = MI_OK;
 540   2                break;
 541   2      
 542   2      
 543   2              case 0x49:                                      // Decrement
 544   2      
 545   2                mode = PICC_DECREMENT;
 546   2                addr = SerBuffer[ADR];
 547   2                memcpy(value,&SerBuffer[VALUE],4);
 548   2                Status = MI_OK;
 549   2                break;
 550   2      
C51 COMPILER V7.06   MAIN                                                                  02/25/2005 08:31:59 PAGE 10  

 551   2      
 552   2              case 0x4A:                                      // Restore
 553   2      
 554   2                mode = PICC_RESTORE;
 555   2                addr = SerBuffer[ADR];
 556   2                memset(value,0,4);
 557   2                Status = MI_OK;
 558   2                break;
 559   2      
 560   2      
 561   2              case 0x4B:                                      // Transfer
 562   2      
 563   2                if (EnableTransferCmd)
 564   2                {
 565   3                      Status = M500PiccValue(mode, addr, value, SerBuffer[ADR]);
 566   3                }
 567   2                else
 568   2                {
 569   3                      Status = MI_CODEERR;
 570   3                }
 571   2                break;
 572   2      

⌨️ 快捷键说明

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