📄 h4001.lst
字号:
02B6 8020 LDD R2,Z+0
02B7 E688 LDI R24,0x68
02B8 940E0402 CALL <created procedures>
02BA 8220 STD Z+0,R2
02BB 8008 LDD R0,Y+0
02BC 9403 INC R0
02BD 8208 STD Y+0,R0
02BE 8188 LDD R24,Y+0
02BF 3386 CPI R24,0x36
02C0 F360 BCS 0x02AD
(0233) }
(0234) if (error==0) { //H4001卡采用的二维行列偶校验码
02C1 90200060 LDS R2,error
02C3 2022 TST R2
02C4 F009 BEQ 0x02C6
02C5 C0CD RJMP 0x0393
(0235) for (i=0;i<10;i++) { //先对10行数据进行校验
02C6 2400 CLR R0
02C7 8208 STD Y+0,R0
02C8 C033 RJMP 0x02FC
(0236) if (!(rfiddata[i*5]^rfiddata[i*5+1]^rfiddata[i*5+2]^rfiddata[i*5+3]==rfiddata[i*5+4])) error++;
02C9 E085 LDI R24,5
02CA 8008 LDD R0,Y+0
02CB 9D80 MUL R24,R0
02CC 0110 MOVW R2,R0
02CD E68C LDI R24,0x6C
02CE 940E0420 CALL 0x420
02D0 8040 LDD R4,Z+0
02D1 E68B LDI R24,0x6B
02D2 940E0420 CALL 0x420
02D4 8050 LDD R5,Z+0
02D5 1454 CP R5,R4
02D6 F419 BNE 0x02DA
02D7 E061 LDI R22,1
02D8 E070 LDI R23,0
02D9 C002 RJMP 0x02DC
02DA 2766 CLR R22
02DB 2777 CLR R23
02DC E689 LDI R24,0x69
02DD E090 LDI R25,0
02DE 01F1 MOVW R30,R2
02DF 0FE8 ADD R30,R24
02E0 1FF9 ADC R31,R25
02E1 8040 LDD R4,Z+0
02E2 2455 CLR R5
02E3 E688 LDI R24,0x68
02E4 940E0420 CALL 0x420
02E6 940E0441 CALL 0x441
02E8 E68A LDI R24,0x6A
02E9 E090 LDI R25,0
02EA 01F1 MOVW R30,R2
02EB 0FE8 ADD R30,R24
02EC 1FF9 ADC R31,R25
02ED 8040 LDD R4,Z+0
02EE 2455 CLR R5
02EF 2464 EOR R6,R4
02F0 2475 EOR R7,R5
02F1 2666 EOR R6,R22
02F2 2677 EOR R7,R23
02F3 2066 TST R6
02F4 F421 BNE 0x02F9
02F5 2077 TST R7
02F6 F411 BNE 0x02F9
02F7 940E0431 CALL 0x431
02F9 8008 LDD R0,Y+0
02FA 9403 INC R0
02FB 8208 STD Y+0,R0
02FC 8188 LDD R24,Y+0
02FD 308A CPI R24,0xA
02FE F408 BCC 0x0300
02FF CFC9 RJMP 0x02C9
(0237) }
(0238) for (i=0;i<4;i++) { //再对4列数据进行校验
0300 2400 CLR R0
0301 8208 STD Y+0,R0
0302 C047 RJMP 0x034A
(0239) if (!(rfiddata[i]^rfiddata[i+5]^rfiddata[i+10]^rfiddata[i+15]^rfiddata[i+20]^rfiddata[i+25]^rfiddata[i+30]^rfiddata[i+35]^rfiddata[i+40]^rfiddata[i+45]==rfiddata[i+50])) error++;
0303 E98A LDI R24,0x9A
0304 940E0402 CALL <created procedures>
0306 8040 LDD R4,Z+0
0307 E985 LDI R24,0x95
0308 940E0402 CALL <created procedures>
030A 8050 LDD R5,Z+0
030B 1454 CP R5,R4
030C F419 BNE 0x0310
030D E061 LDI R22,1
030E E070 LDI R23,0
030F C002 RJMP 0x0312
0310 2766 CLR R22
0311 2777 CLR R23
0312 E68D LDI R24,0x6D
0313 940E0402 CALL <created procedures>
0315 8040 LDD R4,Z+0
0316 2455 CLR R5
0317 E688 LDI R24,0x68
0318 940E0402 CALL <created procedures>
031A 940E0441 CALL 0x441
031C E782 LDI R24,0x72
031D 940E0402 CALL <created procedures>
031F 940E0408 CALL 0x408
0321 E787 LDI R24,0x77
0322 940E0402 CALL <created procedures>
0324 940E0408 CALL 0x408
0326 E78C LDI R24,0x7C
0327 940E0402 CALL <created procedures>
0329 940E0408 CALL 0x408
032B E881 LDI R24,0x81
032C 940E0402 CALL <created procedures>
032E 940E0408 CALL 0x408
0330 E886 LDI R24,0x86
0331 940E0402 CALL <created procedures>
0333 940E0408 CALL 0x408
0335 E88B LDI R24,0x8B
0336 940E0402 CALL <created procedures>
0338 940E0408 CALL 0x408
033A E980 LDI R24,0x90
033B 940E0402 CALL <created procedures>
033D 940E0408 CALL 0x408
033F 2666 EOR R6,R22
0340 2677 EOR R7,R23
0341 2066 TST R6
0342 F421 BNE 0x0347
0343 2077 TST R7
0344 F411 BNE 0x0347
0345 940E0431 CALL 0x431
0347 8008 LDD R0,Y+0
0348 9403 INC R0
0349 8208 STD Y+0,R0
034A 8188 LDD R24,Y+0
034B 3084 CPI R24,4
034C F408 BCC 0x034E
034D CFB5 RJMP 0x0303
(0240) }
(0241) if (error==0) {
034E 90400060 LDS R4,error
0350 2044 TST R4
0351 F009 BEQ 0x0353
0352 C040 RJMP 0x0393
(0242) beeps(1);
0353 E001 LDI R16,1
0354 DD6D RCALL _beeps
(0243) UDR=10;
0355 E08A LDI R24,0xA
0356 B98C OUT 0x0C,R24
(0244) wait_tx();
0357 DD88 RCALL _wait_tx
(0245) UDR=13;
0358 E08D LDI R24,0xD
0359 B98C OUT 0x0C,R24
(0246) wait_tx();
035A DD85 RCALL _wait_tx
(0247) for (i=0;i<10;i++) { //对10行数据进行校验
035B 2400 CLR R0
035C 8208 STD Y+0,R0
035D C031 RJMP 0x038F
(0248) data1=(rfiddata[i*5]*8)+(rfiddata[i*5+1]*4)+(rfiddata[i*5+2]*2)+rfiddata[i*5+3];
035E E085 LDI R24,5
035F 8008 LDD R0,Y+0
0360 9D80 MUL R24,R0
0361 0120 MOVW R4,R0
0362 E689 LDI R24,0x69
0363 940E042C CALL 0x42C
0365 8060 LDD R6,Z+0
0366 E084 LDI R24,4
0367 9D86 MUL R24,R6
0368 0130 MOVW R6,R0
0369 E688 LDI R24,0x68
036A 940E042C CALL 0x42C
036C 8080 LDD R8,Z+0
036D E088 LDI R24,0x8
036E 9D88 MUL R24,R8
036F 2C80 MOV R8,R0
0370 0C86 ADD R8,R6
0371 E68A LDI R24,0x6A
0372 940E042C CALL 0x42C
0374 8060 LDD R6,Z+0
0375 E082 LDI R24,2
0376 9D86 MUL R24,R6
0377 0C80 ADD R8,R0
0378 E68B LDI R24,0x6B
0379 940E042C CALL 0x42C
037B 8040 LDD R4,Z+0
037C 0C84 ADD R8,R4
037D 9280015F STS data1,R8
(0249) UDR=ascii[data1%16];
037F E120 LDI R18,0x10
0380 E030 LDI R19,0
0381 2D08 MOV R16,R8
0382 2711 CLR R17
0383 D028 RCALL mod16s
0384 01F8 MOVW R30,R16
0385 E584 LDI R24,0x54
0386 E090 LDI R25,0
0387 0FE8 ADD R30,R24
0388 1FF9 ADC R31,R25
0389 91E4 LPM R30,0(Z)
038A B9EC OUT 0x0C,R30
(0250) wait_tx();
038B DD54 RCALL _wait_tx
038C 8008 LDD R0,Y+0
038D 9403 INC R0
038E 8208 STD Y+0,R0
038F 8188 LDD R24,Y+0
0390 308A CPI R24,0xA
0391 F408 BCC 0x0393
0392 CFCB RJMP 0x035E
(0251) }
(0252) }
(0253) }
(0254) }
0393 962C ADIW R28,0xC
0394 D04C RCALL pop_gset5
0395 9508 RET
(0255) }
(0256)
(0257)
(0258) void int0_isr(void)
(0259) {
_int0_isr:
0396 9508 RET
(0260) //external interupt on INT0
(0261) }
(0262)
(0263)
(0264) void main(void)
(0265) {
(0266) unsigned char i,j,t_i;
(0267) init_devices();
_main:
t_i --> Y+1
j --> Y+1
i --> Y+1
0397 DD15 RCALL _init_devices
(0268) RFW_1();
0398 9AAE SBI 0x15,6
(0269) okled0();
0399 98A8 CBI 0x15,0
039A C00F RJMP 0x03AA
(0270) while (1) {
(0271) if (run==1) {
039B 91800062 LDS R24,run
039D 3081 CPI R24,1
039E F459 BNE 0x03AA
(0272) R_H4001();
039F DD44 RCALL _R_H4001
(0273) led();
03A0 E880 LDI R24,0x80
03A1 E090 LDI R25,0
03A2 B222 IN R2,0x12
03A3 2433 CLR R3
03A4 2628 EOR R2,R24
03A5 2639 EOR R3,R25
03A6 BA22 OUT 0x12,R2
(0274) run=0;
FILE: <library>
03A7 2422 CLR R2
03A8 92200062 STS run,R2
03AA CFF0 RJMP 0x039B
03AB 9508 RET
mod16s:
03AC 9468 BSET 6
03AD 92DA ST R13,-Y
03AE 2ED1 MOV R13,R17
03AF C004 RJMP 0x03B4
div16s:
03B0 94E8 BCLR 6
03B1 92DA ST R13,-Y
03B2 2ED1 MOV R13,R17
03B3 26D3 EOR R13,R19
03B4 FF17 SBRS R17,7
03B5 C002 RJMP 0x03B8
03B6 940E043C CALL 0x43C
03B8 FF37 SBRS R19,7
03B9 C004 RJMP 0x03BE
03BA 9530 COM R19
03BB 9520 COM R18
03BC 5F2F SUBI R18,0xFF
03BD 4F3F SBCI R19,0xFF
03BE D009 RCALL xdiv16u
03BF FED7 SBRS R13,7
03C0 C002 RJMP 0x03C3
03C1 940E043C CALL 0x43C
03C3 90D9 LD R13,Y+
03C4 9508 RET
mod16u:
03C5 9468 BSET 6
03C6 C001 RJMP xdiv16u
div16u:
03C7 94E8 BCLR 6
xdiv16u:
03C8 92EA ST R14,-Y
03C9 92FA ST R15,-Y
03CA 938A ST R24,-Y
03CB 24EE CLR R14
03CC 24FF CLR R15
03CD E180 LDI R24,0x10
03CE 0F00 LSL R16
03CF 1F11 ROL R17
03D0 1CEE ROL R14
03D1 1CFF ROL R15
03D2 16E2 CP R14,R18
03D3 06F3 CPC R15,R19
03D4 F018 BCS 0x03D8
03D5 1AE2 SUB R14,R18
03D6 0AF3 SBC R15,R19
03D7 9503 INC R16
03D8 958A DEC R24
03D9 F7A1 BNE 0x03CE
03DA F416 BRTC 0x03DD
03DB 2D0E MOV R16,R14
03DC 2D1F MOV R17,R15
03DD 9189 LD R24,Y+
03DE 90F9 LD R15,Y+
03DF 90E9 LD R14,Y+
03E0 9508 RET
pop_gset5:
03E1 27EE CLR R30
03E2 C00C RJMP pop
push_gset5:
03E3 92FA ST R15,-Y
03E4 92EA ST R14,-Y
push_gset4:
03E5 92DA ST R13,-Y
03E6 92CA ST R12,-Y
push_gset3:
03E7 92BA ST R11,-Y
03E8 92AA ST R10,-Y
push_gset2:
03E9 937A ST R23,-Y
03EA 936A ST R22,-Y
push_gset1:
03EB 935A ST R21,-Y
03EC 934A ST R20,-Y
03ED 9508 RET
pop_gset1:
03EE E0E1 LDI R30,1
pop:
03EF 9149 LD R20,Y+
03F0 9159 LD R21,Y+
03F1 FDE0 SBRC R30,0
03F2 9508 RET
03F3 9169 LD R22,Y+
03F4 9179 LD R23,Y+
03F5 FDE1 SBRC R30,1
03F6 9508 RET
03F7 90A9 LD R10,Y+
03F8 90B9 LD R11,Y+
03F9 FDE2 SBRC R30,2
03FA 9508 RET
03FB 90C9 LD R12,Y+
03FC 90D9 LD R13,Y+
03FD FDE3 SBRC R30,3
03FE 9508 RET
03FF 90E9 LD R14,Y+
0400 90F9 LD R15,Y+
0401 9508 RET
<created procedures>:
0402 E090 LDI R25,0
0403 81E8 LDD R30,Y+0
0404 27FF CLR R31
0405 0FE8 ADD R30,R24
0406 1FF9 ADC R31,R25
0407 9508 RET
0408 8040 LDD R4,Z+0
0409 2455 CLR R5
040A 2464 EOR R6,R4
040B 2475 EOR R7,R5
040C 9508 RET
040D E98E LDI R24,0x9E
040E E090 LDI R25,0
040F 81E9 LDD R30,Y+1
0410 27FF CLR R31
0411 0FE8 ADD R30,R24
0412 1FF9 ADC R31,R25
0413 9508 RET
0414 8028 LDD R2,Y+0
0415 2433 CLR R3
0416 91E00061 LDS R30,post
0418 27FF CLR R31
0419 0DE2 ADD R30,R2
041A 1DF3 ADC R31,R3
041B E98E LDI R24,0x9E
041C E090 LDI R25,0
041D 0FE8 ADD R30,R24
041E 1FF9 ADC R31,R25
041F 9508 RET
0420 E090 LDI R25,0
0421 01F1 MOVW R30,R2
0422 0FE8 ADD R30,R24
0423 1FF9 ADC R31,R25
0424 9508 RET
0425 90200064 LDS R2,tcomp
0427 90300065 LDS R3,tcomp+1
0429 1582 CP R24,R2
042A 0593 CPC R25,R3
042B 9508 RET
042C E090 LDI R25,0
042D 01F2 MOVW R30,R4
042E 0FE8 ADD R30,R24
042F 1FF9 ADC R31,R25
0430 9508 RET
0431 91800060 LDS R24,error
0433 5F8F SUBI R24,0xFF
0434 93800060 STS error,R24
0436 9508 RET
0437 91800064 LDS R24,tcomp
0439 91900065 LDS R25,tcomp+1
043B 9508 RET
043C 9510 COM R17
043D 9500 COM R16
043E 5F0F SUBI R16,0xFF
043F 4F1F SBCI R17,0xFF
0440 9508 RET
0441 8060 LDD R6,Z+0
0442 2477 CLR R7
0443 2464 EOR R6,R4
0444 2475 EOR R7,R5
0445 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -