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

📄 mfrc50~1.lis

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

⌨️ 快捷键说明

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