⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led.lis

📁 mega8的控制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 + -