📄 led.lis
字号:
.module led.c
.area text(rom, con, rel)
0000 .dbfile D:\AVR单片机学习资料\LED来回循环闪烁\led.c
0000 .dbfunc e Delay _Delay fV
0000 ; a -> R16,R17
0000 ; b -> R18,R19
.even
0000 _Delay::
0000 .dbline -1
0000 .dbline 6
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; /* This seems to produce the right amount of delay for the LED to be seen */
0000 ; void Delay()
0000 ; {
0000 .dbline 9
0000 ; unsigned int a, b;
0000 ;
0000 ; for (a = 1; a<25; a++)
0000 01E0 ldi R16,1
0002 10E0 ldi R17,0
0004 0BC0 rjmp L5
0006 L2:
0006 .dbline 10
0006 ; {
0006 .dbline 11
0006 ; for (b = 1; b<2000; b++);
0006 21E0 ldi R18,1
0008 30E0 ldi R19,0
000A 02C0 rjmp L9
000C L6:
000C .dbline 11
000C L7:
000C .dbline 11
000C 2F5F subi R18,255 ; offset = 1
000E 3F4F sbci R19,255
0010 L9:
0010 .dbline 11
0010 203D cpi R18,208
0012 E7E0 ldi R30,7
0014 3E07 cpc R19,R30
0016 D0F3 brlo L6
0018 X0:
0018 .dbline 12
0018 ; }
0018 L3:
0018 .dbline 9
0018 0F5F subi R16,255 ; offset = 1
001A 1F4F sbci R17,255
001C L5:
001C .dbline 9
001C 0931 cpi R16,25
001E E0E0 ldi R30,0
0020 1E07 cpc R17,R30
0022 88F3 brlo L2
0024 X1:
0024 .dbline -2
0024 L1:
0024 .dbline 0 ; func end
0024 0895 ret
0026 .dbsym r a 16 i
0026 .dbsym r b 18 i
0026 .dbend
0026 .dbfunc e LED_PORTBOn _LED_PORTBOn fV
0026 ; i -> R10,R11
.even
0026 _LED_PORTBOn::
0026 AA92 st -y,R10
0028 BA92 st -y,R11
002A 5801 movw R10,R16
002C .dbline -1
002C .dbline 16
002C ; }
002C ;
002C ; void LED_PORTBOn(int i)
002C ; {
002C .dbline 17
002C ; PORTB = ~BIT(i); /* low output to turn BLED on */
002C 01E0 ldi R16,1
002E 10E0 ldi R17,0
0030 9501 movw R18,R10
0032 00D0 rcall lsl16
0034 1801 movw R2,R16
0036 2094 com R2
0038 3094 com R3
003A 28BA out 0x18,R2
003C .dbline 18
003C ; Delay();
003C E1DF rcall _Delay
003E .dbline -2
003E L10:
003E .dbline 0 ; func end
003E B990 ld R11,y+
0040 A990 ld R10,y+
0042 0895 ret
0044 .dbsym r i 10 I
0044 .dbend
0044 .dbfunc e LED_PORTDOn _LED_PORTDOn fV
0044 ; j -> R10,R11
.even
0044 _LED_PORTDOn::
0044 AA92 st -y,R10
0046 BA92 st -y,R11
0048 5801 movw R10,R16
004A .dbline -1
004A .dbline 21
004A ; }
004A ; void LED_PORTDOn(int j)
004A ; {
004A .dbline 22
004A ; PORTD = ~BIT(j);/* low output to turn DLED on */
004A 01E0 ldi R16,1
004C 10E0 ldi R17,0
004E 9501 movw R18,R10
0050 00D0 rcall lsl16
0052 1801 movw R2,R16
0054 2094 com R2
0056 3094 com R3
0058 22BA out 0x12,R2
005A .dbline 23
005A ; Delay();
005A D2DF rcall _Delay
005C .dbline -2
005C L11:
005C .dbline 0 ; func end
005C B990 ld R11,y+
005E A990 ld R10,y+
0060 0895 ret
0062 .dbsym r j 10 I
0062 .dbend
0062 .dbfunc e LED_PORTBOff _LED_PORTBOff fV
0062 ; i -> R10,R11
.even
0062 _LED_PORTBOff::
0062 AA92 st -y,R10
0064 BA92 st -y,R11
0066 5801 movw R10,R16
0068 .dbline -1
0068 .dbline 26
0068 ; }
0068 ; void LED_PORTBOff(int i)
0068 ; {
0068 .dbline 27
0068 ; PORTB = ~BIT(i); /* hight output to turn BLED off */
0068 01E0 ldi R16,1
006A 10E0 ldi R17,0
006C 9501 movw R18,R10
006E 00D0 rcall lsl16
0070 1801 movw R2,R16
0072 2094 com R2
0074 3094 com R3
0076 28BA out 0x18,R2
0078 .dbline -2
0078 L12:
0078 .dbline 0 ; func end
0078 B990 ld R11,y+
007A A990 ld R10,y+
007C 0895 ret
007E .dbsym r i 10 I
007E .dbend
007E .dbfunc e LED_PORTDOff _LED_PORTDOff fV
007E ; j -> R10,R11
.even
007E _LED_PORTDOff::
007E AA92 st -y,R10
0080 BA92 st -y,R11
0082 5801 movw R10,R16
0084 .dbline -1
0084 .dbline 30
0084 ; }
0084 ; void LED_PORTDOff(int j)
0084 ; {
0084 .dbline 31
0084 ; PORTD = ~BIT(j);/* hight output to turn DLED off */
0084 01E0 ldi R16,1
0086 10E0 ldi R17,0
0088 9501 movw R18,R10
008A 00D0 rcall lsl16
008C 1801 movw R2,R16
008E 2094 com R2
0090 3094 com R3
0092 22BA out 0x12,R2
0094 .dbline -2
0094 L13:
0094 .dbline 0 ; func end
0094 B990 ld R11,y+
0096 A990 ld R10,y+
0098 0895 ret
009A .dbsym r j 10 I
009A .dbend
009A .dbfunc e main _main fV
009A ; j -> R22,R23
009A ; i -> R20,R21
.even
009A _main::
009A .dbline -1
009A .dbline 34
009A ; }
009A ; void main()
009A ; {
009A .dbline 36
009A ; int i,j;
009A ; DDRB = 0xFF; /* output */
009A 8FEF ldi R24,255
009C 87BB out 0x17,R24
009E .dbline 37
009E ; PORTB = 0xFF; /* all off */
009E 88BB out 0x18,R24
00A0 .dbline 38
00A0 ; DDRD=0xFF;/*D output*/
00A0 81BB out 0x11,R24
00A2 .dbline 39
00A2 ; PORTD=0xFF;/*all off*/
00A2 82BB out 0x12,R24
00A4 2DC0 rjmp L16
00A6 L15:
00A6 .dbline 42
00A6 ;
00A6 ; while (1)
00A6 ; {
00A6 .dbline 43
00A6 ; for (i = 0; i < 3; i++)
00A6 4427 clr R20
00A8 5527 clr R21
00AA L18:
00AA .dbline 44
00AA ; LED_PORTBOn(i);
00AA 8A01 movw R16,R20
00AC BCDF rcall _LED_PORTBOn
00AE L19:
00AE .dbline 43
00AE 4F5F subi R20,255 ; offset = 1
00B0 5F4F sbci R21,255
00B2 .dbline 43
00B2 4330 cpi R20,3
00B4 E0E0 ldi R30,0
00B6 5E07 cpc R21,R30
00B8 C4F3 brlt L18
00BA X2:
00BA .dbline 45
00BA ; LED_PORTBOff(i);
00BA 8A01 movw R16,R20
00BC D2DF rcall _LED_PORTBOff
00BE .dbline 46
00BE ; for (j = 5; j < 8; j++)
00BE 65E0 ldi R22,5
00C0 70E0 ldi R23,0
00C2 L22:
00C2 .dbline 47
00C2 ; LED_PORTDOn(j);
00C2 8B01 movw R16,R22
00C4 BFDF rcall _LED_PORTDOn
00C6 L23:
00C6 .dbline 46
00C6 6F5F subi R22,255 ; offset = 1
00C8 7F4F sbci R23,255
00CA .dbline 46
00CA 6830 cpi R22,8
00CC E0E0 ldi R30,0
00CE 7E07 cpc R23,R30
00D0 C4F3 brlt L22
00D2 X3:
00D2 .dbline 48
00D2 ; for(j = 7;j >4; j--)
00D2 67E0 ldi R22,7
00D4 70E0 ldi R23,0
00D6 L26:
00D6 .dbline 49
00D6 ; LED_PORTDOn(j);
00D6 8B01 movw R16,R22
00D8 B5DF rcall _LED_PORTDOn
00DA L27:
00DA .dbline 48
00DA 6150 subi R22,1
00DC 7040 sbci R23,0
00DE .dbline 48
00DE 84E0 ldi R24,4
00E0 90E0 ldi R25,0
00E2 8617 cp R24,R22
00E4 9707 cpc R25,R23
00E6 BCF3 brlt L26
00E8 X4:
00E8 .dbline 50
00E8 ; LED_PORTDOff(j);
00E8 8B01 movw R16,R22
00EA C9DF rcall _LED_PORTDOff
00EC .dbline 51
00EC ; for (i = 2; i >=0; i--)
00EC 42E0 ldi R20,2
00EE 50E0 ldi R21,0
00F0 L30:
00F0 .dbline 52
00F0 ; LED_PORTBOn(i);
00F0 8A01 movw R16,R20
00F2 99DF rcall _LED_PORTBOn
00F4 L31:
00F4 .dbline 51
00F4 4150 subi R20,1
00F6 5040 sbci R21,0
00F8 .dbline 51
00F8 4030 cpi R20,0
00FA E0E0 ldi R30,0
00FC 5E07 cpc R21,R30
00FE C4F7 brge L30
0100 X5:
0100 .dbline 53
0100 ; }
0100 L16:
0100 .dbline 41
0100 D2CF rjmp L15
0102 X6:
0102 .dbline -2
0102 L14:
0102 .dbline 0 ; func end
0102 0895 ret
0104 .dbsym r j 22 I
0104 .dbsym r i 20 I
0104 .dbend
0104 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -