📄 mfrc50~1.lis
字号:
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 + -