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

📄 mfrc50~1.lis

📁 该程序是医院用的CPCR记录仪的终端控制程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 05DE 2082              std z+0,R2
 05E0                   .dbline 252
 05E0           ;             memcpy(MLastSelectedSnr,snr,4);            
 05E0 84E0              ldi R24,4
 05E2 90E0              ldi R25,0
 05E4 9983              std y+1,R25
 05E6 8883              std y+0,R24
 05E8 9B01              movw R18,R22
 05EA 00E0              ldi R16,<_MLastSelectedSnr
 05EC 10E0              ldi R17,>_MLastSelectedSnr
 05EE 0E940000          xcall _memcpy
 05F2                   .dbline 253
 05F2           ;          }
 05F2           L102:
 05F2                   .dbline 254
 05F2           ;       }
 05F2           L99:
 05F2                   .dbline 255
 05F2           ;    }
 05F2           L89:
 05F2                   .dbline 256
 05F2           ;    return status;
 05F2 042F              mov R16,R20
 05F4                   .dbline -2
 05F4           L88:
 05F4 2496              adiw R28,4
 05F6 0E940000          xcall pop_gset3
 05FA                   .dbline 0 ; func end
 05FA 0895              ret
 05FC                   .dbsym r status 20 I
 05FC                   .dbsym l sak 10 pc
 05FC                   .dbsym r snr 22 pc
 05FC                   .dbsym r select_code 10 c
 05FC                   .dbend
 05FC                   .dbfunc e Mf500PcdSetDefaultAttrib _Mf500PcdSetDefaultAttrib fc
 05FC           ;         status -> R16,R17
                        .even
 05FC           _Mf500PcdSetDefaultAttrib::
 05FC                   .dbline -1
 05FC                   .dbline 259
 05FC           ; }
 05FC           ; char Mf500PcdSetDefaultAttrib(void)
 05FC           ; {
 05FC                   .dbline 260
 05FC           ;    int   status = MI_OK;
 05FC 0027              clr R16
 05FE 1127              clr R17
 0600                   .dbline 261
 0600           ;    return status;
 0600                   .dbline -2
 0600           L104:
 0600                   .dbline 0 ; func end
 0600 0895              ret
 0602                   .dbsym r status 16 I
 0602                   .dbend
 0602                   .dbfunc e Mf500PiccAuth _Mf500PiccAuth fc
 0602           ;         status -> R20,R21
 0602           ;          block -> y+9
 0602           ;       key_addr -> R10
 0602           ;       key_type -> R22
                        .even
 0602           _Mf500PiccAuth::
 0602 0E940000          xcall push_gset3
 0606 A22E              mov R10,R18
 0608 602F              mov R22,R16
 060A 2397              sbiw R28,3
 060C                   .dbline -1
 060C                   .dbline 267
 060C           ; }
 060C           ; char Mf500PiccAuth(unsigned char key_type,    // PICC_AUTHENT1A or PICC_AUTHENT1B
 060C           ;                    unsigned char key_addr,    // key address in reader storage
 060C           ;                    unsigned char block)       // block number which should be 
 060C           ;                                               // authenticated
 060C           ; {
 060C                   .dbline 268
 060C           ;    int            status = MI_OK;
 060C 4427              clr R20
 060E 5527              clr R21
 0610                   .dbline 269
 0610           ;    status = Mf500PiccAuthE2(  key_type,
 0610 0984              ldd R0,y+9
 0612 0A82              std y+2,R0
 0614 A882              std y+0,R10
 0616 20E0              ldi R18,<_MLastSelectedSnr
 0618 30E0              ldi R19,>_MLastSelectedSnr
 061A 062F              mov R16,R22
 061C 42D3              xcall _Mf500PiccAuthE2
 061E 402F              mov R20,R16
 0620 5527              clr R21
 0622                   .dbline 273
 0622           ;                               MLastSelectedSnr,
 0622           ;                               key_addr,
 0622           ;                               block);
 0622           ;    return status;
 0622                   .dbline -2
 0622           L105:
 0622 2396              adiw R28,3
 0624 0E940000          xcall pop_gset3
 0628                   .dbline 0 ; func end
 0628 0895              ret
 062A                   .dbsym r status 20 I
 062A                   .dbsym l block 9 c
 062A                   .dbsym r key_addr 10 c
 062A                   .dbsym r key_type 22 c
 062A                   .dbend
 062A                   .dbfunc e Mf500HostCodeKey _Mf500HostCodeKey fc
 062A           ;         status -> R20,R21
 062A           ;             hn -> R20
 062A           ;             ln -> R22
 062A           ;            cnt -> R10
 062A           ;          coded -> R18,R19
 062A           ;        uncoded -> R16,R17
                        .even
 062A           _Mf500HostCodeKey::
 062A 0E940000          xcall push_gset3
 062E                   .dbline -1
 062E                   .dbline 277
 062E           ; }
 062E           ; char Mf500HostCodeKey(  unsigned char *uncoded, // 6 bytes key value uncoded
 062E           ;                      unsigned char *coded)   // 12 bytes key value coded
 062E           ; {
 062E                   .dbline 278
 062E           ;    int status = MI_OK;
 062E 4427              clr R20
 0630 5527              clr R21
 0632                   .dbline 279
 0632           ;    unsigned char cnt = 0;
 0632 AA24              clr R10
 0634                   .dbline 280
 0634           ;    unsigned char ln  = 0;     // low nibble
 0634 6627              clr R22
 0636                   .dbline 281
 0636           ;    unsigned char hn  = 0;     // high nibble
 0636                   .dbline 282
 0636           ;     for (cnt = 0; cnt < 6; cnt++)
 0636 24C0              xjmp L110
 0638           L107:
 0638                   .dbline 283
 0638                   .dbline 284
 0638 EA2D              mov R30,R10
 063A FF27              clr R31
 063C E00F              add R30,R16
 063E F11F              adc R31,R17
 0640 6081              ldd R22,z+0
 0642 6F70              andi R22,15
 0644                   .dbline 285
 0644 EA2D              mov R30,R10
 0646 FF27              clr R31
 0648 E00F              add R30,R16
 064A F11F              adc R31,R17
 064C 4081              ldd R20,z+0
 064E 4295              swap R20
 0650 4F70              andi R20,#0x0F
 0652                   .dbline 286
 0652 82E0              ldi R24,2
 0654 8A9D              mul R24,R10
 0656 F001              movw R30,R0
 0658 E20F              add R30,R18
 065A F31F              adc R31,R19
 065C 862F              mov R24,R22
 065E 8095              com R24
 0660 8F70              andi R24,#0x0F
 0662 8295              swap R24
 0664 862B              or R24,R22
 0666 8183              std z+1,R24
 0668                   .dbline 287
 0668 82E0              ldi R24,2
 066A 8A9D              mul R24,R10
 066C F001              movw R30,R0
 066E E20F              add R30,R18
 0670 F31F              adc R31,R19
 0672 842F              mov R24,R20
 0674 8095              com R24
 0676 8F70              andi R24,#0x0F
 0678 8295              swap R24
 067A 842B              or R24,R20
 067C 8083              std z+0,R24
 067E                   .dbline 288
 067E           L108:
 067E                   .dbline 282
 067E A394              inc R10
 0680           L110:
 0680                   .dbline 282
 0680 8A2D              mov R24,R10
 0682 8630              cpi R24,6
 0684 C8F2              brlo L107
 0686                   .dbline 289
 0686           ;    {
 0686           ;       ln = uncoded[cnt] & 0x0F;
 0686           ;       hn = uncoded[cnt] >> 4;
 0686           ;       coded[cnt * 2 + 1]     =  (~ln << 4) | ln;
 0686           ;       coded[cnt * 2 ] =  (~hn << 4) | hn;
 0686           ;    }
 0686           ;    return MI_OK;
 0686 0027              clr R16
 0688                   .dbline -2
 0688           L106:
 0688 0E940000          xcall pop_gset3
 068C                   .dbline 0 ; func end
 068C 0895              ret
 068E                   .dbsym r status 20 I
 068E                   .dbsym r hn 20 c
 068E                   .dbsym r ln 22 c
 068E                   .dbsym r cnt 10 c
 068E                   .dbsym r coded 18 pc
 068E                   .dbsym r uncoded 16 pc
 068E                   .dbend
 068E                   .dbfunc e Mf500PiccAuthKey _Mf500PiccAuthKey fc
 068E           ;              i -> R12
 068E           ;         status -> R20,R21
 068E           ;          block -> y+14
 068E           ;           keys -> y+12
 068E           ;            snr -> R10,R11
 068E           ;      auth_mode -> R22
                        .even
 068E           _Mf500PiccAuthKey::
 068E 0E940000          xcall push_gset4
 0692 5901              movw R10,R18
 0694 602F              mov R22,R16
 0696 2497              sbiw R28,4
 0698                   .dbline -1
 0698                   .dbline 295
 0698           ; }
 0698           ; char Mf500PiccAuthKey(unsigned char auth_mode,
 0698           ;                      unsigned char *snr,       
 0698           ;                      unsigned char *keys,      
 0698           ;                      unsigned char block)      
 0698           ; {
 0698                   .dbline 296
 0698           ;    int status     = MI_OK;
 0698 4427              clr R20
 069A 5527              clr R21
 069C                   .dbline 297
 069C           ;    unsigned char i = 0;
 069C CC24              clr R12
 069E                   .dbline 298
 069E           ;    PcdSetTmo(106);
 069E 0AE6              ldi R16,106
 06A0 10E0              ldi R17,0
 06A2 78D3              xcall _PcdSetTmo
 06A4                   .dbline 299
 06A4           ;    FlushFIFO();    // empty FIFO
 06A4 D0D3              xcall _FlushFIFO
 06A6                   .dbline 300
 06A6           ;    ResetInfo(MInfo);
 06A6 2224              clr R2
 06A8 20920201          sts _MInfo,R2
 06AC                   .dbline 300
 06AC 3324              clr R3
 06AE 30920401          sts _MInfo+1+1,R3
 06B2 20920301          sts _MInfo+1,R2
 06B6                   .dbline 300
 06B6 20920501          sts _MInfo+3,R2
 06BA                   .dbline 300
 06BA 20920601          sts _MInfo+4,R2
 06BE                   .dbline 300
 06BE 20920701          sts _MInfo+5,R2
 06C2                   .dbline 300
 06C2 30920901          sts _MInfo+6+1,R3
 06C6 20920801          sts _MInfo+6,R2
 06CA                   .dbline 300
 06CA 20920A01          sts _MInfo+8,R2
 06CE                   .dbline 300
 06CE 20920B01          sts _MInfo+9,R2
 06D2                   .dbline 300
 06D2                   .dbline 301
 06D2           ;    memcpy(MSndBuffer,keys,12);                  // write 12 bytes of the key
 06D2 8CE0              ldi R24,12
 06D4 90E0              ldi R25,0
 06D6 9983              std y+1,R25
 06D8 8883              std y+0,R24
 06DA 2C85              ldd R18,y+12
 06DC 3D85              ldd R19,y+13
 06DE 00910E01          lds R16,_MSndBuffer
 06E2 10910F01          lds R17,_MSndBuffer+1
 06E6 0E940000          xcall _memcpy
 06EA                   .dbline 302
 06EA           ;    MInfo.nBytesToSend = 12;
 06EA 8CE0              ldi R24,12
 06EC 80930601          sts _MInfo+4,R24
 06F0                   .dbline 303
 06F0           ;    if ((status=PcdSingleResponseCmd(0x19,MSndBuffer,MRcvBuffer,&MInfo)) == MI_OK)
 06F0 80E0              ldi R24,<_MInfo
 06F2 90E0              ldi R25,>_MInfo
 06F4 9B83              std y+3,R25
 06F6 8A83              std y+2,R24
 06F8 20900C01          lds R2,_MRcvBuffer
 06FC 30900D01          lds R3,_MRcvBuffer+1
 0700 3982              std y+1,R3
 0702 2882              std y+0,R2
 0704 20910E01          lds R18,_MSndBuffer
 0708 30910F01          lds R19,_MSndBuffer+1
 070C 09E1              ldi R16,25
 070E B6D4              xcall _PcdSingleResponseCmd
 0710 202E              mov R2,R16
 0712 3324              clr R3
 0714 A101              movw R20,R2
 0716 0023              tst R16
 0718 39F4              brne L120
 071A                   .dbline 304
 071A           ;    {      
 071A                   .dbline 305
 071A           ;        status = Mf500PiccAuthState(auth_mode,snr,block); 
 071A 0E84              ldd R0,y+14
 071C 0882              std y+0,R0
 071E 9501              movw R18,R10
 0720 062F              mov R16,R22
 0722 07D0              xcall _Mf500PiccAuthState
 0724 402F              mov R20,R16
 0726 5527              clr R21
 0728                   .dbline 306
 0728           ;    }
 0728           L120:
 0728                   .dbline 307
 0728           ;    return status;
 0728 042F              mov R16,R20
 072A                   .dbline -2
 072A           L111:
 072A 2496             

⌨️ 快捷键说明

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