📄 sle4442.ls1
字号:
0003 05 221 DB 005H
222
223 ; /****************************************
224 ; * sle4442.c *
225 ; * functions for sle4442 card *
226 ; * designed by liulixun *
227 ; * last update: 05-18-2007 *
228 ; ****************************************/
229 ;
230 ; #include "..\inc\includes.h"
231 ;
232 ; // read main memory
233 ; int Sle4442ReadMainMem(unsigned char address, unsigned char *buf)
234
---- 235 RSEG ?PR?_Sle4442ReadMainMem?SLE4442
0000 236 _Sle4442ReadMainMem:
237 USING 0
238 ; SOURCE LINE # 11
0000 900000 F 239 MOV DPTR,#buf?041
0003 EB 240 MOV A,R3
0004 F0 241 MOVX @DPTR,A
0005 A3 242 INC DPTR
0006 EA 243 MOV A,R2
0007 F0 244 MOVX @DPTR,A
0008 A3 245 INC DPTR
0009 E9 246 MOV A,R1
000A F0 247 MOVX @DPTR,A
000B 900000 F 248 MOV DPTR,#address?040
000E EF 249 MOV A,R7
000F F0 250 MOVX @DPTR,A
0010 FD 251 MOV R5,A
252 ; {
253 ; SOURCE LINE # 12
254 ; unsigned int i;
255 ;
A51 MACRO ASSEMBLER SLE4442 03/13/2009 15:44:59 PAGE 5
256 ; // send command and address
257 ; Sle4442Command(0x30, address, 0x00);
258 ; SOURCE LINE # 16
0011 E4 259 CLR A
0012 FB 260 MOV R3,A
0013 7F30 261 MOV R7,#030H
0015 120000 F 262 LCALL _Sle4442Command
263 ; // read data
264 ; for(i=0; i<256-address; i++)
265 ; SOURCE LINE # 18
0018 E4 266 CLR A
0019 900000 F 267 MOV DPTR,#i?042
001C F0 268 MOVX @DPTR,A
001D A3 269 INC DPTR
001E F0 270 MOVX @DPTR,A
001F 271 ?C0001:
001F 900000 F 272 MOV DPTR,#address?040
0022 E0 273 MOVX A,@DPTR
0023 FF 274 MOV R7,A
0024 C3 275 CLR C
0025 E4 276 CLR A
0026 9F 277 SUBB A,R7
0027 FF 278 MOV R7,A
0028 7401 279 MOV A,#01H
002A 9400 280 SUBB A,#00H
002C FE 281 MOV R6,A
002D C3 282 CLR C
002E 900000 F 283 MOV DPTR,#i?042+01H
0031 E0 284 MOVX A,@DPTR
0032 9F 285 SUBB A,R7
0033 900000 F 286 MOV DPTR,#i?042
0036 E0 287 MOVX A,@DPTR
0037 9E 288 SUBB A,R6
0038 502B 289 JNC ?C0002
290 ; {
291 ; SOURCE LINE # 19
292 ; buf[i] = IccSyncGetChar();
293 ; SOURCE LINE # 20
003A 120000 F 294 LCALL IccSyncGetChar
003D 900000 F 295 MOV DPTR,#buf?041
0040 E0 296 MOVX A,@DPTR
0041 FB 297 MOV R3,A
0042 A3 298 INC DPTR
0043 E0 299 MOVX A,@DPTR
0044 FA 300 MOV R2,A
0045 A3 301 INC DPTR
0046 E0 302 MOVX A,@DPTR
0047 F9 303 MOV R1,A
0048 A3 304 INC DPTR
0049 E0 305 MOVX A,@DPTR
004A FC 306 MOV R4,A
004B A3 307 INC DPTR
004C E0 308 MOVX A,@DPTR
004D F582 309 MOV DPL,A
004F 8C83 310 MOV DPH,R4
0051 EF 311 MOV A,R7
0052 120000 F 312 LCALL ?C?CSTOPTR
313 ; }
314 ; SOURCE LINE # 21
0055 900000 F 315 MOV DPTR,#i?042+01H
0058 E0 316 MOVX A,@DPTR
0059 04 317 INC A
005A F0 318 MOVX @DPTR,A
005B 70C2 319 JNZ ?C0001
005D 900000 F 320 MOV DPTR,#i?042
0060 E0 321 MOVX A,@DPTR
A51 MACRO ASSEMBLER SLE4442 03/13/2009 15:44:59 PAGE 6
0061 04 322 INC A
0062 F0 323 MOVX @DPTR,A
0063 324 ?C0018:
0063 80BA 325 SJMP ?C0001
0065 326 ?C0002:
327 ; // send another clock puls
328 ; IccSyncClock();
329 ; SOURCE LINE # 23
0065 120000 F 330 LCALL IccSyncClock
331 ;
332 ; return i;
333 ; SOURCE LINE # 25
0068 900000 F 334 MOV DPTR,#i?042
006B E0 335 MOVX A,@DPTR
006C FE 336 MOV R6,A
006D A3 337 INC DPTR
006E E0 338 MOVX A,@DPTR
006F FF 339 MOV R7,A
340 ; }
341 ; SOURCE LINE # 26
0070 342 ?C0004:
0070 22 343 RET
344 ; END OF _Sle4442ReadMainMem
345
346 ;
347 ; // update main memory
348 ; void Sle4442WriteMainMem(unsigned char address, unsigned char val)
349
---- 350 RSEG ?PR?_Sle4442WriteMainMem?SLE4442
0000 351 _Sle4442WriteMainMem:
352 USING 0
353 ; SOURCE LINE # 29
354 ;---- Variable 'val?144' assigned to Register 'R6' ----
0000 CE 355 XCH A,R6
0001 ED 356 MOV A,R5
0002 CE 357 XCH A,R6
358 ;---- Variable 'address?143' assigned to Register 'R7' ----
359 ; {
360 ; SOURCE LINE # 30
361 ; // send command
362 ; Sle4442Command(0x38, address, val);
363 ; SOURCE LINE # 32
0003 CD 364 XCH A,R5
0004 EF 365 MOV A,R7
0005 CD 366 XCH A,R5
0006 CF 367 XCH A,R7
0007 EE 368 MOV A,R6
0008 CF 369 XCH A,R7
0009 CB 370 XCH A,R3
000A EF 371 MOV A,R7
000B CB 372 XCH A,R3
000C 7F38 373 MOV R7,#038H
000E 120000 F 374 LCALL _Sle4442Command
375 ; // polling io
376 ; IccSyncPollingIO(50);
377 ; SOURCE LINE # 34
0011 7F32 378 MOV R7,#032H
0013 7E00 379 MOV R6,#00H
0015 020000 F 380 LJMP _IccSyncPollingIO
381 ; END OF _Sle4442WriteMainMem
382
383 ; }
384 ;
385 ; // read 4 bytes protect memory
386 ; void Sle4442ReadProtectMem(unsigned char *buf)
387
A51 MACRO ASSEMBLER SLE4442 03/13/2009 15:44:59 PAGE 7
---- 388 RSEG ?PR?_Sle4442ReadProtectMem?SLE4442
0000 389 _Sle4442ReadProtectMem:
390 USING 0
391 ; SOURCE LINE # 38
0000 900000 F 392 MOV DPTR,#buf?245
0003 EB 393 MOV A,R3
0004 F0 394 MOVX @DPTR,A
0005 A3 395 INC DPTR
0006 EA 396 MOV A,R2
0007 F0 397 MOVX @DPTR,A
0008 A3 398 INC DPTR
0009 E9 399 MOV A,R1
000A F0 400 MOVX @DPTR,A
401 ; {
402 ; SOURCE LINE # 39
403 ; unsigned char ci;
404 ;
405 ; // send command
406 ; Sle4442Command(0x34, 0x00, 0x00);
407 ; SOURCE LINE # 43
000B E4 408 CLR A
000C FB 409 MOV R3,A
000D FD 410 MOV R5,A
000E 7F34 411 MOV R7,#034H
0010 120000 F 412 LCALL _Sle4442Command
413 ; // read data
414 ; for(ci=0; ci<4; ci++)
415 ; SOURCE LINE # 45
0013 E4 416 CLR A
0014 900000 F 417 MOV DPTR,#ci?246
0017 F0 418 MOVX @DPTR,A
0018 419 ?C0006:
420 ; {
421 ; SOURCE LINE # 46
422 ; buf[ci] = IccSyncGetChar();
423 ; SOURCE LINE # 47
0018 120000 F 424 LCALL IccSyncGetChar
001B 900000 F 425 MOV DPTR,#buf?245
001E E0 426 MOVX A,@DPTR
001F FB 427 MOV R3,A
0020 A3 428 INC DPTR
0021 E0 429 MOVX A,@DPTR
0022 FA 430 MOV R2,A
0023 A3 431 INC DPTR
0024 E0 432 MOVX A,@DPTR
0025 F9 433 MOV R1,A
0026 A3 434 INC DPTR
0027 E0 435 MOVX A,@DPTR
0028 F582 436 MOV DPL,A
002A 758300 437 MOV DPH,#00H
002D EF 438 MOV A,R7
002E 120000 F 439 LCALL ?C?CSTOPTR
440 ; }
441 ; SOURCE LINE # 48
0031 900000 F 442 MOV DPTR,#ci?246
0034 E0 443 MOVX A,@DPTR
0035 04 444 INC A
0036 F0 445 MOVX @DPTR,A
0037 E0 446 MOVX A,@DPTR
0038 C3 447 CLR C
0039 9404 448 SUBB A,#04H
003B 40DB 449 JC ?C0006
003D 450 ?C0007:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -