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

📄 mfrc500uc.lis

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

⌨️ 快捷键说明

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