📄 common.lis
字号:
.module common.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\11111\桌面\13个费显MEGA64\重显MEGA64\common.c
0000 .dbfunc e waitms _waitms fV
0000 ; longloop -> y+0
0000 ; calc_adj -> R10,R11
0000 ; shortloop -> R12,R13
0000 ; milliseconds -> y+12
.even
0000 _waitms::
0000 0E940000 xcall push_arg4
0004 0E940000 xcall push_gset4
0008 2497 sbiw R28,4
000A .dbline -1
000A .dbline 13
000A ;
000A ; #include <include.h>
000A ;
000A ;
000A ;
000A ;
000A ; /***********************************************************************
000A ; Delay routine
000A ; NB! Remember to set CPU_CLOCK in MHz before using this delay function.
000A ; ***********************************************************************/
000A ;
000A ; void waitms(long milliseconds)
000A ; {
000A .dbline 16
000A ; long longloop;
000A ; int shortloop;
000A ; int calc_adj = F_CPU <<6;
000A 40E0 ldi R20,0
000C 50E0 ldi R21,0
000E 60E4 ldi R22,64
0010 78E3 ldi R23,56
0012 5A01 movw R10,R20
0014 .dbline 17
0014 ; for (longloop=0; longloop<milliseconds; longloop++)
0014 40E0 ldi R20,0
0016 50E0 ldi R21,0
0018 60E0 ldi R22,0
001A 70E0 ldi R23,0
001C FE01 movw R30,R28
001E 4083 std z+0,R20
0020 5183 std z+1,R21
0022 6283 std z+2,R22
0024 7383 std z+3,R23
0026 1CC0 xjmp L6
0028 L3:
0028 .dbline 18
0028 ; {
0028 .dbline 19
0028 CC24 clr R12
002A DD24 clr R13
002C 04C0 xjmp L10
002E L7:
002E .dbline 19
002E 0000 nop
0030 L8:
0030 .dbline 19
0030 C601 movw R24,R12
0032 0196 adiw R24,1
0034 6C01 movw R12,R24
0036 L10:
0036 .dbline 19
0036 CA14 cp R12,R10
0038 DB04 cpc R13,R11
003A CCF3 brlt L7
003C .dbline 20
003C L4:
003C .dbline 17
003C 41E0 ldi R20,1
003E 50E0 ldi R21,0
0040 60E0 ldi R22,0
0042 70E0 ldi R23,0
0044 FE01 movw R30,R28
0046 2080 ldd R2,z+0
0048 3180 ldd R3,z+1
004A 4280 ldd R4,z+2
004C 5380 ldd R5,z+3
004E 240E add R2,R20
0050 351E adc R3,R21
0052 461E adc R4,R22
0054 571E adc R5,R23
0056 FE01 movw R30,R28
0058 2082 std z+0,R2
005A 3182 std z+1,R3
005C 4282 std z+2,R4
005E 5382 std z+3,R5
0060 L6:
0060 .dbline 17
0060 FE01 movw R30,R28
0062 2484 ldd R2,z+12
0064 3584 ldd R3,z+13
0066 4684 ldd R4,z+14
0068 5784 ldd R5,z+15
006A FE01 movw R30,R28
006C 6080 ldd R6,z+0
006E 7180 ldd R7,z+1
0070 8280 ldd R8,z+2
0072 9380 ldd R9,z+3
0074 6214 cp R6,R2
0076 7304 cpc R7,R3
0078 8404 cpc R8,R4
007A 9504 cpc R9,R5
007C 0CF4 brge X0
007E D4CF xjmp L3
0080 X0:
0080 .dbline -2
0080 L2:
0080 2496 adiw R28,4
0082 0E940000 xcall pop_gset4
0086 2496 adiw R28,4
0088 .dbline 0 ; func end
0088 0895 ret
008A .dbsym l longloop 0 L
008A .dbsym r calc_adj 10 I
008A .dbsym r shortloop 12 I
008A .dbsym l milliseconds 12 L
008A .dbend
008A .dbfunc e waitus _waitus fV
008A ; longloop -> y+0
008A ; calc_adj -> R10,R11
008A ; shortloop -> R12,R13
008A ; microseconds -> y+12
.even
008A _waitus::
008A 0E940000 xcall push_arg4
008E 0E940000 xcall push_gset4
0092 2497 sbiw R28,4
0094 .dbline -1
0094 .dbline 24
0094 ; for (shortloop=0; shortloop<calc_adj; shortloop++) NOP();
0094 ; }
0094 ; }
0094 ;
0094 ; void waitus(long microseconds)
0094 ; {
0094 .dbline 27
0094 ; long longloop;
0094 ; int shortloop;
0094 ; int calc_adj = F_CPU >> 5;
0094 40E0 ldi R20,0
0096 58E0 ldi R21,8
0098 67E0 ldi R22,7
009A 70E0 ldi R23,0
009C 5A01 movw R10,R20
009E .dbline 28
009E ; for (longloop=0; longloop<microseconds; longloop++)
009E 40E0 ldi R20,0
00A0 50E0 ldi R21,0
00A2 60E0 ldi R22,0
00A4 70E0 ldi R23,0
00A6 FE01 movw R30,R28
00A8 4083 std z+0,R20
00AA 5183 std z+1,R21
00AC 6283 std z+2,R22
00AE 7383 std z+3,R23
00B0 1CC0 xjmp L15
00B2 L12:
00B2 .dbline 29
00B2 ; {
00B2 .dbline 30
00B2 CC24 clr R12
00B4 DD24 clr R13
00B6 04C0 xjmp L19
00B8 L16:
00B8 .dbline 30
00B8 0000 nop
00BA L17:
00BA .dbline 30
00BA C601 movw R24,R12
00BC 0196 adiw R24,1
00BE 6C01 movw R12,R24
00C0 L19:
00C0 .dbline 30
00C0 CA14 cp R12,R10
00C2 DB04 cpc R13,R11
00C4 CCF3 brlt L16
00C6 .dbline 31
00C6 L13:
00C6 .dbline 28
00C6 41E0 ldi R20,1
00C8 50E0 ldi R21,0
00CA 60E0 ldi R22,0
00CC 70E0 ldi R23,0
00CE FE01 movw R30,R28
00D0 2080 ldd R2,z+0
00D2 3180 ldd R3,z+1
00D4 4280 ldd R4,z+2
00D6 5380 ldd R5,z+3
00D8 240E add R2,R20
00DA 351E adc R3,R21
00DC 461E adc R4,R22
00DE 571E adc R5,R23
00E0 FE01 movw R30,R28
00E2 2082 std z+0,R2
00E4 3182 std z+1,R3
00E6 4282 std z+2,R4
00E8 5382 std z+3,R5
00EA L15:
00EA .dbline 28
00EA FE01 movw R30,R28
00EC 2484 ldd R2,z+12
00EE 3584 ldd R3,z+13
00F0 4684 ldd R4,z+14
00F2 5784 ldd R5,z+15
00F4 FE01 movw R30,R28
00F6 6080 ldd R6,z+0
00F8 7180 ldd R7,z+1
00FA 8280 ldd R8,z+2
00FC 9380 ldd R9,z+3
00FE 6214 cp R6,R2
0100 7304 cpc R7,R3
0102 8404 cpc R8,R4
0104 9504 cpc R9,R5
0106 0CF4 brge X1
0108 D4CF xjmp L12
010A X1:
010A .dbline -2
010A L11:
010A 2496 adiw R28,4
010C 0E940000 xcall pop_gset4
0110 2496 adiw R28,4
0112 .dbline 0 ; func end
0112 0895 ret
0114 .dbsym l longloop 0 L
0114 .dbsym r calc_adj 10 I
0114 .dbsym r shortloop 12 I
0114 .dbsym l microseconds 12 L
0114 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -