📄 ad.lst
字号:
0288 940E02DF CALL div16u
028A E02A LDI R18,0xA
028B E030 LDI R19,0
028C 940E02DD CALL mod16u
028E 01B8 MOVW R22,R16
028F 2F26 MOV R18,R22
0290 E002 LDI R16,2
0291 DEE5 RCALL _Analog_display
(0096) x3=(result/100)%100%10; Analog_display(3,x3);
0292 E624 LDI R18,0x64
0293 E030 LDI R19,0
0294 018A MOVW R16,R20
0295 940E02DF CALL div16u
0297 E624 LDI R18,0x64
0298 E030 LDI R19,0
0299 940E02DD CALL mod16u
029B E02A LDI R18,0xA
029C E030 LDI R19,0
029D 940E02DD CALL mod16u
029F 01B8 MOVW R22,R16
02A0 2F26 MOV R18,R22
02A1 E003 LDI R16,3
02A2 DED4 RCALL _Analog_display
(0097) x4=(result/10)%1000%10; Analog_display(4,x4);
02A3 E02A LDI R18,0xA
02A4 E030 LDI R19,0
02A5 018A MOVW R16,R20
02A6 940E02DF CALL div16u
02A8 EE28 LDI R18,0xE8
02A9 E033 LDI R19,3
02AA 940E02DD CALL mod16u
02AC E02A LDI R18,0xA
02AD E030 LDI R19,0
02AE 940E02DD CALL mod16u
02B0 01B8 MOVW R22,R16
02B1 2F26 MOV R18,R22
02B2 E004 LDI R16,4
02B3 DEC3 RCALL _Analog_display
(0098) x5=(result%1000)%100%10; Analog_display(5,x5);
02B4 EE28 LDI R18,0xE8
02B5 E033 LDI R19,3
02B6 018A MOVW R16,R20
02B7 940E02DD CALL mod16u
02B9 E624 LDI R18,0x64
02BA E030 LDI R19,0
02BB 940E02DD CALL mod16u
02BD E02A LDI R18,0xA
02BE E030 LDI R19,0
02BF 940E02DD CALL mod16u
02C1 01A8 MOVW R20,R16
02C2 2F24 MOV R18,R20
02C3 E005 LDI R16,5
02C4 DEB2 RCALL _Analog_display
02C5 9625 ADIW R28,5
02C6 940E02F9 CALL pop_gset2
02C8 9508 RET
(0099) }
(0100)
(0101) void init_devices(void)
(0102) {
(0103)
(0104) CLI(); //禁止所有中断
_init_devices:
02C9 94F8 BCLR 7
(0105) adc_init();
02CA DE3A RCALL _adc_init
(0106) Bit_transfor(); //数字量显示
02CB DE7B RCALL _Bit_transfor
(0107) Analog_transfor(); //模拟量显示
02CC DF2B RCALL _Analog_transfor
(0108) MCUCR = 0x00;
02CD 2422 CLR R2
02CE BE25 OUT 0x35,R2
(0109) SREG = 0X80; //允许中断发生
02CF E880 LDI R24,0x80
02D0 BF8F OUT 0x3F,R24
(0110) GICR = 0x00;
02D1 BE2B OUT 0x3B,R2
(0111) TIMSK = 0x00;
02D2 BE29 OUT 0x39,R2
(0112) SEI(); //重新开启所有中断
02D3 9478 BSET 7
02D4 9508 RET
(0113)
(0114) }
(0115)
(0116)
(0117) void main(void)
(0118) {
(0119) init_devices();
_main:
02D5 DFF3 RCALL _init_devices
(0120) while(1); //循环等待转换开始
FILE: <library>
02D6 CFFF RJMP 0x02D6
02D7 9508 RET
push_arg4:
02D8 933A ST R19,-Y
02D9 932A ST R18,-Y
push_arg2:
02DA 931A ST R17,-Y
02DB 930A ST R16,-Y
02DC 9508 RET
mod16u:
02DD 9468 BSET 6
02DE C001 RJMP xdiv16u
div16u:
02DF 94E8 BCLR 6
xdiv16u:
02E0 92EA ST R14,-Y
02E1 92FA ST R15,-Y
02E2 938A ST R24,-Y
02E3 24EE CLR R14
02E4 24FF CLR R15
02E5 E180 LDI R24,0x10
02E6 0F00 LSL R16
02E7 1F11 ROL R17
02E8 1CEE ROL R14
02E9 1CFF ROL R15
02EA 16E2 CP R14,R18
02EB 06F3 CPC R15,R19
02EC F018 BCS 0x02F0
02ED 1AE2 SUB R14,R18
02EE 0AF3 SBC R15,R19
02EF 9503 INC R16
02F0 958A DEC R24
02F1 F7A1 BNE 0x02E6
02F2 F416 BRTC 0x02F5
02F3 2D0E MOV R16,R14
02F4 2D1F MOV R17,R15
02F5 9189 LD R24,Y+
02F6 90F9 LD R15,Y+
02F7 90E9 LD R14,Y+
02F8 9508 RET
pop_gset2:
02F9 E0E2 LDI R30,2
02FA 940C030E JMP pop
pop_gset3:
02FC E0E4 LDI R30,4
02FD 940C030E JMP pop
pop_gset4:
02FF E0E8 LDI R30,0x8
0300 940C030E JMP pop
push_gset5:
0302 92FA ST R15,-Y
0303 92EA ST R14,-Y
push_gset4:
0304 92DA ST R13,-Y
0305 92CA ST R12,-Y
push_gset3:
0306 92BA ST R11,-Y
0307 92AA ST R10,-Y
push_gset2:
0308 937A ST R23,-Y
0309 936A ST R22,-Y
push_gset1:
030A 935A ST R21,-Y
030B 934A ST R20,-Y
030C 9508 RET
pop_gset1:
030D E0E1 LDI R30,1
pop:
030E 9149 LD R20,Y+
030F 9159 LD R21,Y+
0310 FDE0 SBRC R30,0
0311 9508 RET
0312 9169 LD R22,Y+
0313 9179 LD R23,Y+
0314 FDE1 SBRC R30,1
0315 9508 RET
0316 90A9 LD R10,Y+
0317 90B9 LD R11,Y+
0318 FDE2 SBRC R30,2
0319 9508 RET
031A 90C9 LD R12,Y+
031B 90D9 LD R13,Y+
031C FDE3 SBRC R30,3
031D 9508 RET
031E 90E9 LD R14,Y+
031F 90F9 LD R15,Y+
0320 9508 RET
neg32:
0321 9500 COM R16
0322 9510 COM R17
0323 9520 COM R18
0324 9530 COM R19
0325 5F0F SUBI R16,0xFF
0326 4F1F SBCI R17,0xFF
0327 4F2F SBCI R18,0xFF
0328 4F3F SBCI R19,0xFF
0329 9508 RET
lpm32:
032A 93EA ST R30,-Y
032B 93FA ST R31,-Y
032C 920A ST R0,-Y
032D 2FE0 MOV R30,R16
032E 2FF1 MOV R31,R17
032F 95C8 LPM
0330 2D00 MOV R16,R0
0331 9631 ADIW R30,1
0332 95C8 LPM
0333 2D10 MOV R17,R0
0334 9631 ADIW R30,1
0335 95C8 LPM
0336 2D20 MOV R18,R0
0337 9631 ADIW R30,1
0338 95C8 LPM
0339 2D30 MOV R19,R0
033A 9009 LD R0,Y+
033B 91F9 LD R31,Y+
033C 91E9 LD R30,Y+
033D 9508 RET
lsr16:
033E 2322 TST R18
033F F021 BEQ 0x0344
0340 9516 LSR R17
0341 9507 ROR R16
0342 952A DEC R18
0343 CFFA RJMP lsr16
0344 9508 RET
fp2int:
0345 940E0523 CALL savfacc1
0347 D014 RCALL FTOI
0348 2F02 MOV R16,R18
0349 2F13 MOV R17,R19
034A FD87 SBRC R24,7
034B C002 RJMP nojump1
034C 940C0526 JMP restorefacc1
nojump1:
034E 9510 COM R17
034F 9501 NEG R16
0350 4F1F SBCI R17,0xFF
0351 940C0526 JMP restorefacc1
fp2long:
0353 940E0523 CALL savfacc1
0355 D008 RCALL FTOL
0356 FF87 SBRS R24,7
0357 C002 RJMP nojump2
0358 940E0321 CALL neg32
nojump2:
035A 940C0526 JMP restorefacc1
FTOI:
035C E0BE LDI R27,0xE
035D C001 RJMP 0x035F
FTOL:
035E E1BE LDI R27,0x1E
035F 940E0529 CALL unpackfacc1
0361 F069 BEQ 0x036F
0362 1BB3 SUB R27,R19
0363 F009 BEQ 0x0365
0364 F472 BPL 0x0373
0365 2388 TST R24
0366 F022 BMI 0x036B
0367 E010 LDI R17,0
0368 E608 LDI R16,0x68
0369 940C032A JMP lpm32
036B E010 LDI R17,0
036C E60E LDI R16,0x6E
036D 940C032A JMP lpm32
036F E010 LDI R17,0
0370 E60C LDI R16,0x6C
0371 940C032A JMP lpm32
0373 9533 INC R19
0374 F3D2 BMI 0x036F
0375 E030 LDI R19,0
0376 50B8 SUBI R27,0x8
0377 F452 BPL 0x0382
0378 5FB8 SUBI R27,0xF8
0379 2F32 MOV R19,R18
037A 2F21 MOV R18,R17
037B 2F10 MOV R17,R16
037C E800 LDI R16,0x80
037D C006 RJMP 0x0384
037E 2F01 MOV R16,R17
037F 2F12 MOV R17,R18
0380 E020 LDI R18,0
0381 50B8 SUBI R27,0x8
0382 30B8 CPI R27,0x8
0383 F7D0 BCC 0x037E
0384 23BB TST R27
0385 F031 BEQ 0x038C
0386 9536 LSR R19
0387 9527 ROR R18
0388 9517 ROR R17
0389 9507 ROR R16
038A 95BA DEC R27
038B F7D1 BNE 0x0386
038C 9508 RET
int2fp:
038D 2722 CLR R18
038E FD17 SBRC R17,7
038F 9520 COM R18
0390 2733 CLR R19
0391 FD27 SBRC R18,7
0392 9530 COM R19
long2fp:
0393 940E0523 CALL savfacc1
0395 D002 RCALL ITOF
0396 940C0526 JMP restorefacc1
ITOF:
0398 2788 CLR R24
0399 2333 TST R19
039A F41A BPL 0x039E
039B 940E0321 CALL neg32
039D 9580 COM R24
039E 2FB0 MOV R27,R16
039F 2BB1 OR R27,R17
03A0 2BB2 OR R27,R18
03A1 2BB3 OR R27,R19
03A2 F411 BNE 0x03A5
03A3 940C053F JMP minres
03A5 E1B6 LDI R27,0x16
03A6 C005 RJMP itof2
03A7 95B3 INC R27
03A8 9536 LSR R19
03A9 9527 ROR R18
03AA 9517 ROR R17
03AB 9507 ROR R16
itof2:
03AC 2333 TST R19
03AD F7C9 BNE 0x03A7
itof3:
03AE 2322 TST R18
03AF F449 BNE 0x03B9
03B0 50B8 SUBI R27,0x8
03B1 2F21 MOV R18,R17
03B2 2F10 MOV R17,R16
03B3 E000 LDI R16,0
03B4 CFF9 RJMP itof3
03B5 95BA DEC R27
03B6 0F00 LSL R16
03B7 1F11 ROL R17
03B8 1F22 ROL R18
03B9 F7DA BPL 0x03B5
03BA 2F3B MOV R19,R27
03BB 940C0569 JMP repack
save_floatregs:
03BD 92DA ST R13,-Y
03BE 92EA ST R14,-Y
03BF 92FA ST R15,-Y
03C0 938A ST R24,-Y
03C1 922A ST R2,-Y
03C2 923A ST R3,-Y
03C3 924A ST R4,-Y
03C4 939A ST R25,-Y
03C5 93AA ST R26,-Y
03C6 93BA ST R27,-Y
03C7 9508 RET
restore_floatregs:
03C8 91B9 LD R27,Y+
03C9 91A9 LD R26,Y+
03CA 9199 LD R25,Y+
03CB 9049 LD R4,Y+
03CC 9039 LD R3,Y+
03CD 9029 LD R2,Y+
03CE 9189 LD R24,Y+
03CF 90F9 LD R15,Y+
03D0 90E9 LD R14,Y+
03D1 90D9 LD R13,Y+
03D2 9508 RET
stk2arg1:
03D3 842A LDD R2,Y+10
03D4 843B LDD R3,Y+11
03D5 844C LDD R4,Y+12
03D6 859D LDD R25,Y+13
03D7 9508 RET
stk2arg0:
03D8 850E LDD R16,Y+14
03D9 851F LDD R17,Y+15
03DA 8928 LDD R18,Y+16
03DB 8939 LDD R19,Y+17
03DC 9508 RET
float_epilog:
03DD DFEA RCALL restore_floatregs
03DE 920F PUSH R0
03DF B60F IN R0,0x3F
03E0 9628 ADIW R28,0x8
03E1 BE0F OUT 0x3F,R0
03E2 900F POP R0
03E3 9508 RET
float_prolog:
03E4 DFD8 RCALL save_floatregs
03E5 DFF2 RCALL stk2arg0
03E6 CFEC RJMP stk2arg1
add32fs:
03E7 D002 RCALL add32f
03E8 940C02D8 JMP push_arg4
add32f:
03EA 940E03E4 CALL float_prolog
03EC D012 RCALL FADD
03ED 940C03DD JMP float_epilog
sub32fs:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -