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

📄 read_card.lis

📁 环保型IC卡门禁系统的C程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 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 + -