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

📄 mfrc500uc.lis

📁 该程序是医院用的CPCR记录仪的终端控制程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 045A           ;                }
 045A 0BC0              xjmp L76
 045C           L75:
 045C                   .dbline 195
 045C           ;                else                   // collision occured
 045C           ;                {
 045C                   .dbline 196
 045C           ;                   bcnt = bcnt + MInfo.collPos - nbits;
 045C 20900B01          lds R2,_MInfo+9
 0460 388C              ldd R3,y+24
 0462 320C              add R3,R2
 0464 0984              ldd R0,y+9
 0466 3018              sub R3,R0
 0468 388E              std y+24,R3
 046A                   .dbline 197
 046A           ;                   status = MI_OK;
 046A 0024              clr R0
 046C 1124              clr R1
 046E 1B86              std y+11,R1
 0470 0A86              std y+10,R0
 0472                   .dbline 198
 0472           ;                }
 0472           L76:
 0472                   .dbline 199
 0472           ;             }
 0472           L65:
 0472                   .dbline 200
 0472           ;         }
 0472           L61:
 0472                   .dbline 201
 0472           L29:
 0472                   .dbline 121
 0472 AA20              tst R10
 0474 39F4              brne L84
 0476 0A84              ldd R0,y+10
 0478 1B84              ldd R1,y+11
 047A 0020              tst R0
 047C 19F4              brne X3
 047E 1120              tst R1
 0480 09F4              brne X8
 0482 ACCE              xjmp L28
 0484           X8:
 0484           X3:
 0484           L84:
 0484                   .dbline 202
 0484           ;       }
 0484           ;    }
 0484           L26:
 0484                   .dbline 203
 0484           ;    if (status == MI_OK)
 0484 0A84              ldd R0,y+10
 0486 1B84              ldd R1,y+11
 0488 0020              tst R0
 048A 69F4              brne L85
 048C 1120              tst R1
 048E 59F4              brne L85
 0490           X4:
 0490                   .dbline 204
 0490           ;    {
 0490                   .dbline 205
 0490           ;        memcpy(snr,snr_in,4);
 0490 84E0              ldi R24,4
 0492 90E0              ldi R25,0
 0494 9983              std y+1,R25
 0496 8883              std y+0,R24
 0498 9E01              movw R18,R28
 049A 2C5F              subi R18,252  ; offset = 4
 049C 3F4F              sbci R19,255
 049E 0A8D              ldd R16,y+26
 04A0 1B8D              ldd R17,y+27
 04A2 0E940000          xcall _memcpy
 04A6                   .dbline 206
 04A6           ;    }
 04A6           L85:
 04A6                   .dbline 208
 04A6           ;    else
 04A6           ;    {
 04A6                   .dbline 210
 04A6           ; //      memcpy(snr,"0000",4);
 04A6           ;               ;
 04A6                   .dbline 211
 04A6           ;    }
 04A6           L86:
 04A6                   .dbline 212
 04A6           ;     ClearBitMask(RegDecoderControl,0x20); // ZeroAfterColl disable
 04A6 20E2              ldi R18,32
 04A8 0AE1              ldi R16,26
 04AA E1D4              xcall _ClearBitMask
 04AC                   .dbline 213
 04AC           ;     return status;  
 04AC 0A85              ldd R16,y+10
 04AE 1B85              ldd R17,y+11
 04B0                   .dbline -2
 04B0           L25:
 04B0 2C96              adiw R28,12
 04B2 0E940000          xcall pop_gset5
 04B6 2496              adiw R28,4
 04B8                   .dbline 0 ; func end
 04B8 0895              ret
 04BA                   .dbsym r snr_check 14 c
 04BA                   .dbsym r snr_crc 20 c
 04BA                   .dbsym r complete 10 c
 04BA                   .dbsym r byteOffset 22 c
 04BA                   .dbsym l status 10 I
 04BA                   .dbsym l nbits 9 c
 04BA                   .dbsym r dummyShift2 14 c
 04BA                   .dbsym r dummyShift1 20 c
 04BA                   .dbsym l snr_in 4 A[4:4]c
 04BA                   .dbsym l nbytes 8 c
 04BA                   .dbsym r i 12 c
 04BA                   .dbsym l snr 26 pc
 04BA                   .dbsym l bcnt 24 c
 04BA                   .dbsym l select_code 22 c
 04BA                   .dbend
 04BA                   .dbfunc e Mf500PiccSelect _Mf500PiccSelect fc
 04BA           ;            sak -> R22,R23
 04BA           ;            snr -> R20,R21
                        .even
 04BA           _Mf500PiccSelect::
 04BA 0E940000          xcall push_gset2
 04BE B901              movw R22,R18
 04C0 A801              movw R20,R16
 04C2 2297              sbiw R28,2
 04C4                   .dbline -1
 04C4                   .dbline 216
 04C4           ; }
 04C4           ; char Mf500PiccSelect(unsigned char *snr,unsigned char *sak)
 04C4           ; {
 04C4                   .dbline 217
 04C4           ;    return Mf500PiccCascSelect(0x93,snr,sak); // first cascade level
 04C4 7983              std y+1,R23
 04C6 6883              std y+0,R22
 04C8 9A01              movw R18,R20
 04CA 03E9              ldi R16,147
 04CC 04D0              xcall _Mf500PiccCascSelect
 04CE                   .dbline -2
 04CE           L87:
 04CE 2296              adiw R28,2
 04D0 0E940000          xcall pop_gset2
 04D4                   .dbline 0 ; func end
 04D4 0895              ret
 04D6                   .dbsym r sak 22 pc
 04D6                   .dbsym r snr 20 pc
 04D6                   .dbend
 04D6                   .dbfunc e Mf500PiccCascSelect _Mf500PiccCascSelect fc
 04D6           ;         status -> R20,R21
 04D6           ;            sak -> y+10
 04D6           ;            snr -> R22,R23
 04D6           ;    select_code -> R10
                        .even
 04D6           _Mf500PiccCascSelect::
 04D6 0E940000          xcall push_gset3
 04DA B901              movw R22,R18
 04DC A02E              mov R10,R16
 04DE 2497              sbiw R28,4
 04E0                   .dbline -1
 04E0                   .dbline 221
 04E0           ; }
 04E0           ; 
 04E0           ; char Mf500PiccCascSelect(unsigned char select_code,unsigned char *snr,unsigned char *sak)
 04E0           ; {
 04E0                   .dbline 222
 04E0           ;    int   status = MI_OK; 
 04E0 4427              clr R20
 04E2 5527              clr R21
 04E4                   .dbline 223
 04E4           ;    if ((status = Mf500PcdSetDefaultAttrib()) == MI_OK)
 04E4 96D0              xcall _Mf500PcdSetDefaultAttrib
 04E6 202E              mov R2,R16
 04E8 3324              clr R3
 04EA A101              movw R20,R2
 04EC 0023              tst R16
 04EE 09F0              breq X10
 04F0 8BC0              xjmp L89
 04F2           X10:
 04F2                   .dbline 224
 04F2           ;    {
 04F2                   .dbline 225
 04F2           ;       PcdSetTmo(106);
 04F2 0AE6              ldi R16,106
 04F4 10E0              ldi R17,0
 04F6 73D4              xcall _PcdSetTmo
 04F8                   .dbline 226
 04F8           ;       WriteRC(RegChannelRedundancy,0x0F); // RxCRC,TxCRC, Parity enable
 04F8 2FE0              ldi R18,15
 04FA 02E2              ldi R16,34
 04FC 6CD7              xcall _WriteRC
 04FE                   .dbline 227
 04FE           ;       ClearBitMask(RegControl,0x08);    // disable crypto 1 unit
 04FE 28E0              ldi R18,8
 0500 09E0              ldi R16,9
 0502 B5D4              xcall _ClearBitMask
 0504                   .dbline 229
 0504           ;       //************* Cmd Sequence ********************************** 
 0504           ;       ResetInfo(MInfo);   
 0504 2224              clr R2
 0506 20920201          sts _MInfo,R2
 050A                   .dbline 229
 050A 3324              clr R3
 050C 30920401          sts _MInfo+1+1,R3
 0510 20920301          sts _MInfo+1,R2
 0514                   .dbline 229
 0514 20920501          sts _MInfo+3,R2
 0518                   .dbline 229
 0518 20920601          sts _MInfo+4,R2
 051C                   .dbline 229
 051C 20920701          sts _MInfo+5,R2
 0520                   .dbline 229
 0520 30920901          sts _MInfo+6+1,R3
 0524 20920801          sts _MInfo+6,R2
 0528                   .dbline 229
 0528 20920A01          sts _MInfo+8,R2
 052C                   .dbline 229
 052C 20920B01          sts _MInfo+9,R2
 0530                   .dbline 229
 0530                   .dbline 230
 0530           ;       MSndBuffer[0] = select_code;
 0530 E0910E01          lds R30,_MSndBuffer
 0534 F0910F01          lds R31,_MSndBuffer+1
 0538 A082              std z+0,R10
 053A                   .dbline 231
 053A           ;       MSndBuffer[1] = 0x70;         // number of bytes send
 053A 80E7              ldi R24,112
 053C E0910E01          lds R30,_MSndBuffer
 0540 F0910F01          lds R31,_MSndBuffer+1
 0544 8183              std z+1,R24
 0546                   .dbline 232
 0546           ;       memcpy(MSndBuffer + 2,snr,4);
 0546 84E0              ldi R24,4
 0548 90E0              ldi R25,0
 054A 9983              std y+1,R25
 054C 8883              std y+0,R24
 054E 9B01              movw R18,R22
 0550 00910E01          lds R16,_MSndBuffer
 0554 10910F01          lds R17,_MSndBuffer+1
 0558 0E5F              subi R16,254  ; offset = 2
 055A 1F4F              sbci R17,255
 055C 0E940000          xcall _memcpy
 0560                   .dbline 233
 0560           ;       MSndBuffer[6] = MSndBuffer[2] 
 0560 E0910E01          lds R30,_MSndBuffer
 0564 F0910F01          lds R31,_MSndBuffer+1
 0568 2380              ldd R2,z+3
 056A E0910E01          lds R30,_MSndBuffer
 056E F0910F01          lds R31,_MSndBuffer+1
 0572 3280              ldd R3,z+2
 0574 3224              eor R3,R2
 0576 E0910E01          lds R30,_MSndBuffer
 057A F0910F01          lds R31,_MSndBuffer+1
 057E 2480              ldd R2,z+4
 0580 3224              eor R3,R2
 0582 E0910E01          lds R30,_MSndBuffer
 0586 F0910F01          lds R31,_MSndBuffer+1
 058A 2580              ldd R2,z+5
 058C 3224              eor R3,R2
 058E E0910E01          lds R30,_MSndBuffer
 0592 F0910F01          lds R31,_MSndBuffer+1
 0596 3682              std z+6,R3
 0598                   .dbline 237
 0598           ;                       ^ MSndBuffer[3] 
 0598           ;                       ^ MSndBuffer[4] 
 0598           ;                       ^ MSndBuffer[5];
 0598           ;       MInfo.nBytesToSend   = 7;
 0598 87E0              ldi R24,7
 059A 80930601          sts _MInfo+4,R24
 059E                   .dbline 238
 059E           ;       status = PcdSingleResponseCmd(0x1e,
 059E 80E0              ldi R24,<_MInfo
 05A0 90E0              ldi R25,>_MInfo
 05A2 9B83              std y+3,R25
 05A4 8A83              std y+2,R24
 05A6 20900C01          lds R2,_MRcvBuffer
 05AA 30900D01          lds R3,_MRcvBuffer+1
 05AE 3982              std y+1,R3
 05B0 2882              std y+0,R2
 05B2 20910E01          lds R18,_MSndBuffer
 05B6 30910F01          lds R19,_MSndBuffer+1
 05BA 0EE1              ldi R16,30
 05BC 85D5              xcall _PcdSingleResponseCmd
 05BE 402F              mov R20,R16
 05C0 5527              clr R21
 05C2                   .dbline 242
 05C2           ;                           MSndBuffer,
 05C2           ;                           MRcvBuffer,
 05C2           ;                           &MInfo);
 05C2           ;        *sak = 0;   
 05C2 2224              clr R2
 05C4 EA85              ldd R30,y+10
 05C6 FB85              ldd R31,y+11
 05C8 2082              std z+0,R2
 05CA                   .dbline 243
 05CA           ;       if (status == MI_OK)    // no timeout occured
 05CA 4030              cpi R20,0
 05CC 4507              cpc R20,R21
 05CE E1F4              brne L99
 05D0           X9:
 05D0                   .dbline 244
 05D0           ;       {
 05D0                   .dbline 245
 05D0           ;          if (MInfo.nBitsReceived != 8)    // last byte is not complete
 05D0 80910801          lds R24,_MInfo+6
 05D4 90910901          lds R25,_MInfo+6+1
 05D8 8830              cpi R24,8
 05DA E0E0              ldi R30,0
 05DC 9E07              cpc R25,R30
 05DE 19F0              breq L101
 05E0                   .dbline 246
 05E0           ;          {
 05E0                   .dbline 247
 05E0           ;             status = MI_BITCOUNTERR;
 05E0 45EF              ldi R20,-11
 05E2 5FEF              ldi R21,-1
 05E4                   .dbline 248
 05E4           ;          }
 05E4 11C0              xjmp L102
 05E6           L101:
 05E6                   .dbline 250
 05E6           ;          else
 05E6           ;          {
 05E6                   .dbline 251
 05E6           ;             *sak = MRcvBuffer[0];

⌨️ 快捷键说明

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