📄 ssle4442.lis
字号:
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 + -