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

📄 ssle4442.lis

📁 avr单片机读写ic卡程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0180           ;  IO(0);
 0180 0027              clr R16
 0182 52DF              rcall _IO
 0184                   .dbline 150
 0184           ;  DelayUs(2);
 0184 02E0              ldi R16,2
 0186 60DF              rcall _DelayUs
 0188                   .dbline 151
 0188           ;  IO(1);
 0188 01E0              ldi R16,1
 018A 4EDF              rcall _IO
 018C                   .dbline 152
 018C           ;  DelayUs(2);
 018C 02E0              ldi R16,2
 018E 5CDF              rcall _DelayUs
 0190                   .dbline 153
 0190           ;  IO(0);
 0190 0027              clr R16
 0192                   .dbline -2
 0192                   .dbline 154
 0192           ; }
 0192           L54:
 0192                   .dbline 0 ; func end
 0192 4ACF              rjmp _IO
 0194                   .dbend
 0194                   .dbfunc e Process _Process fV
 0194           ;              j -> R20,R21
                        .even
 0194           _Process::
 0194 00D0              rcall push_gset1
 0196                   .dbline -1
 0196                   .dbline 158
 0196           ; 
 0196           ; //******************处理过程**************//
 0196           ; void Process(void)
 0196           ; {uint j;
 0196                   .dbline 159
 0196           ;  SetIO(1);//设置IO脚为输出脚
 0196 01E0              ldi R16,1
 0198 4DDF              rcall _SetIO
 019A                   .dbline 160
 019A           ;  CLK(0);
 019A 0027              clr R16
 019C 3FDF              rcall _CLK
 019E                   .dbline 161
 019E           ;  DelayUs(5);
 019E 05E0              ldi R16,5
 01A0 53DF              rcall _DelayUs
 01A2                   .dbline 162
 01A2           ;  IO(0);
 01A2 0027              clr R16
 01A4 41DF              rcall _IO
 01A6                   .dbline 163
 01A6           ;  for(j=255;j>0;j--)
 01A6 4FEF              ldi R20,255
 01A8 50E0              ldi R21,0
 01AA 0AC0              rjmp L59
 01AC           L56:
 01AC                   .dbline 164
 01AC                   .dbline 164
 01AC 01E0              ldi R16,1
 01AE 36DF              rcall _CLK
 01B0                   .dbline 165
 01B0 05E0              ldi R16,5
 01B2 4ADF              rcall _DelayUs
 01B4                   .dbline 166
 01B4 0027              clr R16
 01B6 32DF              rcall _CLK
 01B8                   .dbline 167
 01B8 05E0              ldi R16,5
 01BA 46DF              rcall _DelayUs
 01BC                   .dbline 168
 01BC           L57:
 01BC                   .dbline 163
 01BC 4150              subi R20,1
 01BE 5040              sbci R21,0
 01C0           L59:
 01C0                   .dbline 163
 01C0 4030              cpi R20,0
 01C2 4507              cpc R20,R21
 01C4 99F7              brne L56
 01C6           X1:
 01C6                   .dbline 169
 01C6           ;       {CLK(1);
 01C6           ;        DelayUs(5);
 01C6           ;        CLK(0);
 01C6           ;        DelayUs(5);
 01C6           ;       }
 01C6           ;  IO(1);
 01C6 01E0              ldi R16,1
 01C8 2FDF              rcall _IO
 01CA                   .dbline -2
 01CA                   .dbline 170
 01CA           ; }
 01CA           L55:
 01CA 00D0              rcall pop_gset1
 01CC                   .dbline 0 ; func end
 01CC 0895              ret
 01CE                   .dbsym r j 20 i
 01CE                   .dbend
 01CE                   .dbfunc e Command _Command fV
 01CE           ;          Byte3 -> y+4
 01CE           ;          Byte2 -> R20
 01CE           ;          Byte1 -> R22
                        .even
 01CE           _Command::
 01CE 00D0              rcall push_gset2
 01D0 422F              mov R20,R18
 01D2 602F              mov R22,R16
 01D4                   .dbline -1
 01D4                   .dbline 177
 01D4           ; 
 01D4           ; //****************说明*********************//
 01D4           ; //*********输出模式接口命令,包括读主存储器30H,读保护存储器34H,读安全代码的接口命令31H***********//
 01D4           ; //******处理模式数据接口命令,包括写主存储器38H,写保护存储器3CH,写安全代码39H,校验安全代码33H*******//
 01D4           ; 
 01D4           ; void Command(uchar Byte1,uchar Byte2,uchar Byte3)
 01D4           ; {Start();
 01D4                   .dbline 177
 01D4 BBDF              rcall _Start
 01D6                   .dbline 178
 01D6           ;  SendData(Byte1);
 01D6 062F              mov R16,R22
 01D8 72DF              rcall _SendData
 01DA                   .dbline 179
 01DA           ;  SendData(Byte2);
 01DA 042F              mov R16,R20
 01DC 70DF              rcall _SendData
 01DE                   .dbline 180
 01DE           ;  SendData(Byte3);
 01DE 0C81              ldd R16,y+4
 01E0 6EDF              rcall _SendData
 01E2                   .dbline 181
 01E2           ;  Stop();
 01E2 C6DF              rcall _Stop
 01E4                   .dbline -2
 01E4                   .dbline 182
 01E4           ; }
 01E4           L60:
 01E4 00D0              rcall pop_gset2
 01E6                   .dbline 0 ; func end
 01E6 0895              ret
 01E8                   .dbsym l Byte3 4 c
 01E8                   .dbsym r Byte2 20 c
 01E8                   .dbsym r Byte1 22 c
 01E8                   .dbend
 01E8                   .dbfunc e ReadMainMemory _ReadMainMemory fV
 01E8           ;              N -> R20
 01E8           ;              p -> R22,R23
 01E8           ;           addr -> R10
                        .even
 01E8           _ReadMainMemory::
 01E8 00D0              rcall push_gset3
 01EA 622F              mov R22,R18
 01EC 732F              mov R23,R19
 01EE A02E              mov R10,R16
 01F0 2197              sbiw R28,1
 01F2 4F81              ldd R20,y+7
 01F4                   .dbline -1
 01F4                   .dbline 187
 01F4           ; 
 01F4           ; 
 01F4           ; /**********读主存储器**************/
 01F4           ; void ReadMainMemory(uchar addr,uchar *p,uchar N)
 01F4           ; {Command(0x30,addr,0xff);
 01F4                   .dbline 187
 01F4 8FEF              ldi R24,255
 01F6 8883              std y+0,R24
 01F8 2A2D              mov R18,R10
 01FA 00E3              ldi R16,48
 01FC E8DF              rcall _Command
 01FE           L62:
 01FE                   .dbline 188
 01FE           ;  do{*p=ReceiveData();
 01FE                   .dbline 188
 01FE 3EDF              rcall _ReceiveData
 0200 E62F              mov R30,R22
 0202 F72F              mov R31,R23
 0204 0083              std z+0,R16
 0206                   .dbline 189
 0206 6F5F              subi R22,255  ; offset = 1
 0208 7F4F              sbci R23,255
 020A                   .dbline 189
 020A           L63:
 020A                   .dbline 189
 020A           ;     p++;}while(--N);
 020A 842F              mov R24,R20
 020C 8150              subi R24,1
 020E 482F              mov R20,R24
 0210 8823              tst R24
 0212 A9F7              brne L62
 0214                   .dbline -2
 0214                   .dbline 190
 0214           ; }
 0214           L61:
 0214 2196              adiw R28,1
 0216 00D0              rcall pop_gset3
 0218                   .dbline 0 ; func end
 0218 0895              ret
 021A                   .dbsym r N 20 c
 021A                   .dbsym r p 22 pc
 021A                   .dbsym r addr 10 c
 021A                   .dbend
 021A                   .dbfunc e ReadProtectMemory _ReadProtectMemory fV
 021A           ;              i -> R20
 021A           ;              p -> R22,R23
                        .even
 021A           _ReadProtectMemory::
 021A 00D0              rcall push_gset2
 021C 602F              mov R22,R16
 021E 712F              mov R23,R17
 0220 2197              sbiw R28,1
 0222                   .dbline -1
 0222                   .dbline 194
 0222           ; 
 0222           ; /**********读保护存储器***********/
 0222           ; void ReadProtectMemory(uchar *p)
 0222           ; {uchar i=4;
 0222                   .dbline 194
 0222 44E0              ldi R20,4
 0224                   .dbline 195
 0224           ;  Command(0x34,0xff,0xff);
 0224 8FEF              ldi R24,255
 0226 8883              std y+0,R24
 0228 2FEF              ldi R18,255
 022A 04E3              ldi R16,52
 022C D0DF              rcall _Command
 022E           L66:
 022E                   .dbline 196
 022E           ;  do{*p=ReceiveData();
 022E                   .dbline 196
 022E 26DF              rcall _ReceiveData
 0230 E62F              mov R30,R22
 0232 F72F              mov R31,R23
 0234 0083              std z+0,R16
 0236                   .dbline 197
 0236 6F5F              subi R22,255  ; offset = 1
 0238 7F4F              sbci R23,255
 023A                   .dbline 197
 023A           L67:
 023A                   .dbline 197
 023A           ;     p++;}while(i--);
 023A 242E              mov R2,R20
 023C 3324              clr R3
 023E 4150              subi R20,1
 0240 2220              tst R2
 0242 A9F7              brne L66
 0244                   .dbline -2
 0244                   .dbline 198
 0244           ; }
 0244           L65:
 0244 2196              adiw R28,1
 0246 00D0              rcall pop_gset2
 0248                   .dbline 0 ; func end
 0248 0895              ret
 024A                   .dbsym r i 20 c
 024A                   .dbsym r p 22 pc
 024A                   .dbend
 024A                   .dbfunc e WriteMainMemory _WriteMainMemory fV
 024A           ;           Data -> R22
 024A           ;        Address -> R20
                        .even
 024A           _WriteMainMemory::
 024A 00D0              rcall push_gset2
 024C 622F              mov R22,R18
 024E 402F              mov R20,R16
 0250 2197              sbiw R28,1
 0252                   .dbline -1
 0252                   .dbline 202
 0252           ; 
 0252           ; /************写主存储器************/
 0252           ; void WriteMainMemory(uchar Address,uchar Data)
 0252           ; {Command(0x38,Address,Data);
 0252                   .dbline 202
 0252 6883              std y+0,R22
 0254 242F              mov R18,R20
 0256 08E3              ldi R16,56
 0258 BADF              rcall _Command
 025A                   .dbline 203
 025A           ;  Process();
 025A 9CDF              rcall _Process
 025C                   .dbline -2
 025C                   .dbline 204
 025C           ; }
 025C           L69:
 025C 2196              adiw R28,1
 025E 00D0              rcall pop_gset2
 0260                   .dbline 0 ; func end
 0260 0895              ret
 0262                   .dbsym r Data 22 c
 0262                   .dbsym r Address 20 c
 0262                   .dbend
 0262                   .dbfunc e WriteProtectMemory _WriteProtectMemory fV
 0262           ;           Data -> R22
 0262           ;        Address -> R20
                        .even
 0262           _WriteProtectMemory::
 0262 00D0              rcall push_gset2
 0264 622F              mov R22,R18
 0266 402F              mov R20,R16
 0268 2197              sbiw R28,1
 026A                   .dbline -1
 026A                   .dbline 208
 026A           ; 
 026A           ; /**************写保护存储器**********/
 026A           ; void WriteProtectMemory(uchar Address,uchar Data)
 026A           ; {Command(0x3c,Address,Data);
 026A                   .dbline 208
 026A 6883              std y+0,R22
 026C 242F              mov R18,R20
 026E 0CE3              ldi R16,60
 0270 AEDF              rcall _Command
 0272                   .dbline 209
 0272           ;  Process();
 0272 90DF              rcall _Process
 0274                   .dbline -2
 0274                   .dbline 210
 0274           ; }
 0274           L70:
 0274 2196              adiw R28,1
 0276 00D0              rcall pop_gset2
 0278                   .dbline 0 ; func end
 0278 0895              ret
 027A                   .dbsym r Data 22 c
 027A                   .dbsym r Address 20 c
 027A                   .dbend
 027A                   .dbfunc e ReadSafeMemory _ReadSafeMemory fV
 027A           ;              i -> R20
 027A           ;              p -> R22,R23
                        .even
 027A           _ReadSafeMemory::
 027A 00D0              rcall push_gset2
 027C 602F              mov R22,R16
 027E 712F              mov R23,R17
 0280 2197              sbiw R28,1
 0282                   .dbline -1
 0282                   .dbline 214
 0282           ; 
 0282           ; /**************读安全存储器************/
 0282           ; void ReadSafeMemory(uchar *p)
 0282           ; {uchar i;
 0282                   .dbline 215
 0282           ;  Command(0x31,0xff,0xff);
 0282 8FEF              ldi R24,255
 0284 8883              std y+0,R24
 0286 2FEF              ldi R18,255

⌨️ 快捷键说明

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