📄 led.lst
字号:
__start:
__text_start:
13 E5CF LDI R28,0x5F
14 E0D4 LDI R29,4
15 BFCD OUT 0x3D,R28
16 BFDE OUT 0x3E,R29
17 51C0 SUBI R28,0x10
18 40D0 SBCI R29,0
19 EA0A LDI R16,0xAA
1A 8308 STD Y+0,R16
1B 2400 CLR R0
1C E6E0 LDI R30,0x60
1D E0F0 LDI R31,0
1E E010 LDI R17,0
1F 36E0 CPI R30,0x60
20 07F1 CPC R31,R17
21 F011 BEQ 0x0024
22 9201 ST R0,Z+
23 CFFB RJMP 0x001F
24 8300 STD Z+0,R16
25 E2E6 LDI R30,0x26
26 E0F0 LDI R31,0
27 E6A0 LDI R26,0x60
28 E0B0 LDI R27,0
29 E010 LDI R17,0
2A E000 LDI R16,0
2B BF0B OUT 0x3B,R16
2C 32E6 CPI R30,0x26
2D 07F1 CPC R31,R17
2E F021 BEQ 0x0033
2F 95C8 LPM
30 9631 ADIW R30,1
31 920D ST R0,X+
32 CFF9 RJMP 0x002C
33 D04E RCALL _main
_exit:
34 CFFF RJMP _exit
FILE: D:\AVR单片机学习资料\LED来回循环闪烁\led.c
(0001) #include <iom8v.h>
(0002) #include <macros.h>
(0003)
(0004) /* This seems to produce the right amount of delay for the LED to be seen */
(0005) void Delay()
(0006) {
(0007) unsigned int a, b;
(0008)
(0009) for (a = 1; a<25; a++)
_Delay:
a --> R16
b --> R18
35 E001 LDI R16,1
36 E010 LDI R17,0
37 C00B RJMP 0x0043
(0010) {
(0011) for (b = 1; b<2000; b++);
38 E021 LDI R18,1
39 E030 LDI R19,0
3A C002 RJMP 0x003D
3B 5F2F SUBI R18,0xFF
3C 4F3F SBCI R19,0xFF
3D 3D20 CPI R18,0xD0
3E E0E7 LDI R30,7
3F 073E CPC R19,R30
40 F3D0 BCS 0x003B
41 5F0F SUBI R16,0xFF
42 4F1F SBCI R17,0xFF
43 3109 CPI R16,0x19
44 E0E0 LDI R30,0
45 071E CPC R17,R30
46 F388 BCS 0x0038
47 9508 RET
_LED_PORTBOn:
i --> R10
48 92AA ST R10,-Y
49 92BA ST R11,-Y
4A 0158 MOVW R10,R16
(0012) }
(0013) }
(0014)
(0015) void LED_PORTBOn(int i)
(0016) {
(0017) PORTB = ~BIT(i); /* low output to turn BLED on */
4B E001 LDI R16,1
4C E010 LDI R17,0
4D 0195 MOVW R18,R10
4E D068 RCALL lsl16
4F 0118 MOVW R2,R16
50 9420 COM R2
51 9430 COM R3
52 BA28 OUT 0x18,R2
(0018) Delay();
53 DFE1 RCALL _Delay
54 90B9 LD R11,Y+
55 90A9 LD R10,Y+
56 9508 RET
_LED_PORTDOn:
j --> R10
57 92AA ST R10,-Y
58 92BA ST R11,-Y
59 0158 MOVW R10,R16
(0019) }
(0020) void LED_PORTDOn(int j)
(0021) {
(0022) PORTD = ~BIT(j);/* low output to turn DLED on */
5A E001 LDI R16,1
5B E010 LDI R17,0
5C 0195 MOVW R18,R10
5D D059 RCALL lsl16
5E 0118 MOVW R2,R16
5F 9420 COM R2
60 9430 COM R3
61 BA22 OUT 0x12,R2
(0023) Delay();
62 DFD2 RCALL _Delay
63 90B9 LD R11,Y+
64 90A9 LD R10,Y+
65 9508 RET
_LED_PORTBOff:
i --> R10
66 92AA ST R10,-Y
67 92BA ST R11,-Y
68 0158 MOVW R10,R16
(0024) }
(0025) void LED_PORTBOff(int i)
(0026) {
(0027) PORTB = ~BIT(i); /* hight output to turn BLED off */
69 E001 LDI R16,1
6A E010 LDI R17,0
6B 0195 MOVW R18,R10
6C D04A RCALL lsl16
6D 0118 MOVW R2,R16
6E 9420 COM R2
6F 9430 COM R3
70 BA28 OUT 0x18,R2
71 90B9 LD R11,Y+
72 90A9 LD R10,Y+
73 9508 RET
_LED_PORTDOff:
j --> R10
74 92AA ST R10,-Y
75 92BA ST R11,-Y
76 0158 MOVW R10,R16
(0028) }
(0029) void LED_PORTDOff(int j)
(0030) {
(0031) PORTD = ~BIT(j);/* hight output to turn DLED off */
77 E001 LDI R16,1
78 E010 LDI R17,0
79 0195 MOVW R18,R10
7A D03C RCALL lsl16
7B 0118 MOVW R2,R16
7C 9420 COM R2
7D 9430 COM R3
7E BA22 OUT 0x12,R2
7F 90B9 LD R11,Y+
80 90A9 LD R10,Y+
81 9508 RET
(0032) }
(0033) void main()
(0034) {
(0035) int i,j;
(0036) DDRB = 0xFF; /* output */
_main:
j --> R22
i --> R20
82 EF8F LDI R24,0xFF
83 BB87 OUT 0x17,R24
(0037) PORTB = 0xFF; /* all off */
84 BB88 OUT 0x18,R24
(0038) DDRD=0xFF;/*D output*/
85 BB81 OUT 0x11,R24
(0039) PORTD=0xFF;/*all off*/
86 BB82 OUT 0x12,R24
87 C02D RJMP 0x00B5
(0040)
(0041) while (1)
(0042) {
(0043) for (i = 0; i < 3; i++)
88 2744 CLR R20
89 2755 CLR R21
(0044) LED_PORTBOn(i);
8A 018A MOVW R16,R20
8B DFBC RCALL _LED_PORTBOn
8C 5F4F SUBI R20,0xFF
8D 4F5F SBCI R21,0xFF
8E 3043 CPI R20,3
8F E0E0 LDI R30,0
90 075E CPC R21,R30
91 F3C4 BLT 0x008A
(0045) LED_PORTBOff(i);
92 018A MOVW R16,R20
93 DFD2 RCALL _LED_PORTBOff
(0046) for (j = 5; j < 8; j++)
94 E065 LDI R22,5
95 E070 LDI R23,0
(0047) LED_PORTDOn(j);
96 018B MOVW R16,R22
97 DFBF RCALL _LED_PORTDOn
98 5F6F SUBI R22,0xFF
99 4F7F SBCI R23,0xFF
9A 3068 CPI R22,0x8
9B E0E0 LDI R30,0
9C 077E CPC R23,R30
9D F3C4 BLT 0x0096
(0048) for(j = 7;j >4; j--)
9E E067 LDI R22,7
9F E070 LDI R23,0
(0049) LED_PORTDOn(j);
A0 018B MOVW R16,R22
A1 DFB5 RCALL _LED_PORTDOn
A2 5061 SUBI R22,1
A3 4070 SBCI R23,0
A4 E084 LDI R24,4
A5 E090 LDI R25,0
A6 1786 CP R24,R22
A7 0797 CPC R25,R23
A8 F3BC BLT 0x00A0
(0050) LED_PORTDOff(j);
A9 018B MOVW R16,R22
AA DFC9 RCALL _LED_PORTDOff
(0051) for (i = 2; i >=0; i--)
AB E042 LDI R20,2
AC E050 LDI R21,0
(0052) LED_PORTBOn(i);
FILE: <library>
AD 018A MOVW R16,R20
AE DF99 RCALL _LED_PORTBOn
AF 5041 SUBI R20,1
B0 4050 SBCI R21,0
B1 3040 CPI R20,0
B2 E0E0 LDI R30,0
B3 075E CPC R21,R30
B4 F7C4 BGE 0x00AD
B5 CFD2 RJMP 0x0088
B6 9508 RET
lsl16:
B7 2322 TST R18
B8 F021 BEQ 0x00BD
B9 0F00 LSL R16
BA 1F11 ROL R17
BB 952A DEC R18
BC CFFA RJMP lsl16
BD 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -