📄 read_card.lis
字号:
009C 10E0 ldi R17,0
009E 00D0 rcall _delay_nus
00A0 .dbline 50
00A0 ; if ( (PINB&0x02)==0 ) //读取IC卡I/O口输出的是电平 (地址1~127上的数据)
00A0 B199 sbic 0x16,1
00A2 08C0 rjmp L13
00A4 .dbline 51
00A4 ; {
00A4 .dbline 52
00A4 ; IC_Codes_2[i] = 0 ;
00A4 CE01 movw R24,R28
00A6 E42F mov R30,R20
00A8 FF27 clr R31
00AA E80F add R30,R24
00AC F91F adc R31,R25
00AE 2224 clr R2
00B0 2082 std z+0,R2
00B2 .dbline 53
00B2 ; }
00B2 07C0 rjmp L14
00B4 L13:
00B4 .dbline 55
00B4 ; else
00B4 ; { //并把电平值记入数组IC_Card_2[128]中
00B4 .dbline 56
00B4 ; IC_Codes_2[i] = 1;
00B4 CE01 movw R24,R28
00B6 E42F mov R30,R20
00B8 FF27 clr R31
00BA E80F add R30,R24
00BC F91F adc R31,R25
00BE 81E0 ldi R24,1
00C0 8083 std z+0,R24
00C2 .dbline 57
00C2 ; }
00C2 L14:
00C2 .dbline 59
00C2 04E1 ldi R16,20
00C4 10E0 ldi R17,0
00C6 00D0 rcall _delay_nus
00C8 .dbline 60
00C8 L10:
00C8 .dbline 44
00C8 4395 inc R20
00CA L12:
00CA .dbline 44
00CA 4038 cpi R20,128
00CC F8F2 brlo L9
00CE .dbline 62
00CE ;
00CE ; delay_nus(20) ;
00CE ; }
00CE ;
00CE ; for(i=0;i<16;i++)
00CE 4427 clr R20
00D0 1BC0 rjmp L18
00D2 L15:
00D2 .dbline 63
00D2 ; {
00D2 .dbline 64
00D2 ; for(j=0;j<8;j++) // 把IC_Card_2[128]中的128位数据转换成
00D2 AA24 clr R10
00D4 15C0 rjmp L22
00D6 L19:
00D6 .dbline 65
00D6 .dbline 66
00D6 80E0 ldi R24,<_IC_Codes_8
00D8 90E0 ldi R25,>_IC_Codes_8
00DA 242E mov R2,R20
00DC 3324 clr R3
00DE 280E add R2,R24
00E0 391E adc R3,R25
00E2 18E0 ldi R17,8
00E4 1A19 sub R17,R10
00E6 CE01 movw R24,R28
00E8 E62F mov R30,R22
00EA FF27 clr R31
00EC E80F add R30,R24
00EE F91F adc R31,R25
00F0 0081 ldd R16,z+0
00F2 00D0 rcall lsl8
00F4 F101 movw R30,R2
00F6 4080 ldd R4,z+0
00F8 402A or R4,R16
00FA 4082 std z+0,R4
00FC .dbline 67
00FC 6395 inc R22
00FE .dbline 68
00FE L20:
00FE .dbline 64
00FE A394 inc R10
0100 L22:
0100 .dbline 64
0100 8A2D mov R24,R10
0102 8830 cpi R24,8
0104 40F3 brlo L19
0106 .dbline 69
0106 L16:
0106 .dbline 62
0106 4395 inc R20
0108 L18:
0108 .dbline 62
0108 4031 cpi R20,16
010A 18F3 brlo L15
010C .dbline 71
010C ; { // 16个字节并存放在IC_Card_8[16]
010C ; IC_Codes_8[i] |= (IC_Codes_2[k]<<(8-j));
010C ; k++;
010C ; }
010C ; }
010C ;
010C ; if ( IC_Codes_8[2] == 0 )
010C 20900200 lds R2,_IC_Codes_8+2
0110 2220 tst R2
0112 19F4 brne L23
0114 .dbline 72
0114 ; {
0114 .dbline 73
0114 ; IC_Codes_8[2] = 68 ;
0114 84E4 ldi R24,68
0116 80930200 sts _IC_Codes_8+2,R24
011A .dbline 74
011A ; }
011A L23:
011A .dbline 76
011A ;
011A ; if ( IC_Codes_8[2] == 0xfe )
011A 80910200 lds R24,_IC_Codes_8+2
011E 8E3F cpi R24,254
0120 C1F4 brne L27
0122 .dbline 77
0122 ; {
0122 .dbline 78
0122 ; if ( IC_Codes_8[3] == 0xfe )
0122 80910300 lds R24,_IC_Codes_8+3
0126 8E3F cpi R24,254
0128 A1F4 brne L30
012A .dbline 79
012A ; {
012A .dbline 80
012A ; if ( IC_Codes_8[4] == 0xfe )
012A 80910400 lds R24,_IC_Codes_8+4
012E 8E3F cpi R24,254
0130 81F4 brne L33
0132 .dbline 81
0132 ; {
0132 .dbline 82
0132 ; if ( IC_Codes_8[5] == 0xfe )
0132 80910500 lds R24,_IC_Codes_8+5
0136 8E3F cpi R24,254
0138 61F4 brne L36
013A .dbline 83
013A ; {
013A .dbline 84
013A ; if ( IC_Codes_8[6] == 0xfe )
013A 80910600 lds R24,_IC_Codes_8+6
013E 8E3F cpi R24,254
0140 41F4 brne L39
0142 .dbline 85
0142 ; {
0142 .dbline 86
0142 ; if ( IC_Codes_8[7] == 0xfe )
0142 80910700 lds R24,_IC_Codes_8+7
0146 8E3F cpi R24,254
0148 21F4 brne L42
014A .dbline 87
014A ; {
014A .dbline 88
014A ; Wrong_flag = 1 ;
014A 81E0 ldi R24,1
014C 80931000 sts _Wrong_flag,R24
0150 .dbline 90
0150 ;
0150 ; Wrong_Card();
0150 00D0 rcall _Wrong_Card
0152 .dbline 91
0152 ; }
0152 L42:
0152 .dbline 92
0152 ; }
0152 L39:
0152 .dbline 93
0152 ; }
0152 L36:
0152 .dbline 94
0152 ; }
0152 L33:
0152 .dbline 95
0152 ; }
0152 L30:
0152 .dbline 96
0152 L27:
0152 .dbline -2
0152 L1:
0152 EF96 adiw R28,63
0154 EF96 adiw R28,63
0156 2296 adiw R28,2 ; offset = 128
0158 00D0 rcall pop_gset3
015A .dbline 0 ; func end
015A 0895 ret
015C .dbsym l IC_Codes_2 0 A[128:128]c
015C .dbsym r i 20 c
015C .dbsym r k 22 c
015C .dbsym r j 10 c
015C .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -