📄 led.lis
字号:
.module led.c
.area text(rom, con, rel)
0000 .dbfile C:\icc\examples.avr\LED\led.c
0000 .dbfunc e Delay _Delay fV
0000 ; a -> R16
0000 ; b -> R18
.even
0000 _Delay::
0000 .dbline -1
0000 .dbline 8
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; /* This seems to produce the right amount of delay for the LED to be
0000 ; * seen
0000 ; */
0000 ; void Delay()
0000 ; {
0000 .dbline 11
0000 ; unsigned char a, b;
0000 ;
0000 ; for (a = 1; a; a++)
0000 01E0 ldi R16,1
0002 06C0 xjmp L5
0004 L2:
0004 .dbline 12
0004 ; for (b = 1; b; b++)
0004 21E0 ldi R18,1
0006 01C0 xjmp L9
0008 L6:
0008 .dbline 13
0008 L7:
0008 .dbline 12
0008 2395 inc R18
000A L9:
000A .dbline 12
000A 2223 tst R18
000C E9F7 brne L6
000E L3:
000E .dbline 11
000E 0395 inc R16
0010 L5:
0010 .dbline 11
0010 0023 tst R16
0012 C1F7 brne L2
0014 .dbline -2
0014 L1:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbsym r a 16 c
0016 .dbsym r b 18 c
0016 .dbend
0016 .dbfunc e LED_On _LED_On fV
0016 ; i -> R20,R21
.even
0016 _LED_On::
0016 0E940000 xcall push_gset1
001A A801 movw R20,R16
001C .dbline -1
001C .dbline 17
001C ; ;
001C ; }
001C ;
001C ; void LED_On(int i)
001C ; {
001C .dbline 18
001C ; PORTB = ~BIT(i); /* low output to turn LED on */
001C 01E0 ldi R16,1
001E 10E0 ldi R17,0
0020 9A01 movw R18,R20
0022 0E940000 xcall lsl16
0026 1801 movw R2,R16
0028 2094 com R2
002A 3094 com R3
002C 28BA out 0x18,R2
002E .dbline 19
002E ; Delay();
002E E8DF xcall _Delay
0030 .dbline -2
0030 L10:
0030 0E940000 xcall pop_gset1
0034 .dbline 0 ; func end
0034 0895 ret
0036 .dbsym r i 20 I
0036 .dbend
0036 .dbfunc e main _main fV
0036 ; i -> R20,R21
.even
0036 _main::
0036 .dbline -1
0036 .dbline 23
0036 ; }
0036 ;
0036 ; void main()
0036 ; {
0036 .dbline 25
0036 ; int i;
0036 ; DDRB = 0xFF; /* output */
0036 8FEF ldi R24,255
0038 87BB out 0x17,R24
003A .dbline 26
003A ; PORTB = 0xFF; /* all off */
003A 88BB out 0x18,R24
003C 2AC0 xjmp L13
003E L12:
003E .dbline 29
003E ;
003E ; while (1)
003E ; {
003E .dbline 31
003E ; /* forward march */
003E ; for (i = 0; i < 8; i++)
003E 4427 clr R20
0040 5527 clr R21
0042 L15:
0042 .dbline 32
0042 8A01 movw R16,R20
0044 E8DF xcall _LED_On
0046 L16:
0046 .dbline 31
0046 4F5F subi R20,255 ; offset = 1
0048 5F4F sbci R21,255
004A .dbline 31
004A 4830 cpi R20,8
004C E0E0 ldi R30,0
004E 5E07 cpc R21,R30
0050 C4F3 brlt L15
0052 .dbline 34
0052 ; LED_On(i);
0052 ; /* backward march */
0052 ; for (i = 8; i > 0; i--)
0052 48E0 ldi R20,8
0054 50E0 ldi R21,0
0056 L19:
0056 .dbline 35
0056 8A01 movw R16,R20
0058 DEDF xcall _LED_On
005A L20:
005A .dbline 34
005A 4150 subi R20,1
005C 5040 sbci R21,0
005E .dbline 34
005E 2224 clr R2
0060 3324 clr R3
0062 2416 cp R2,R20
0064 3506 cpc R3,R21
0066 BCF3 brlt L19
0068 .dbline 37
0068 ; LED_On(i);
0068 ; /* skip */
0068 ; for (i = 0; i < 8; i += 2)
0068 4427 clr R20
006A 5527 clr R21
006C L23:
006C .dbline 38
006C 8A01 movw R16,R20
006E D3DF xcall _LED_On
0070 L24:
0070 .dbline 37
0070 4E5F subi R20,254 ; offset = 2
0072 5F4F sbci R21,255
0074 .dbline 37
0074 4830 cpi R20,8
0076 E0E0 ldi R30,0
0078 5E07 cpc R21,R30
007A C4F3 brlt L23
007C .dbline 39
007C ; LED_On(i);
007C ; for (i = 7; i > 0; i -= 2)
007C 47E0 ldi R20,7
007E 50E0 ldi R21,0
0080 L27:
0080 .dbline 40
0080 8A01 movw R16,R20
0082 C9DF xcall _LED_On
0084 L28:
0084 .dbline 39
0084 4250 subi R20,2
0086 5040 sbci R21,0
0088 .dbline 39
0088 2224 clr R2
008A 3324 clr R3
008C 2416 cp R2,R20
008E 3506 cpc R3,R21
0090 BCF3 brlt L27
0092 .dbline 41
0092 L13:
0092 .dbline 28
0092 D5CF xjmp L12
0094 X0:
0094 .dbline -2
0094 L11:
0094 .dbline 0 ; func end
0094 0895 ret
0096 .dbsym r i 20 I
0096 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -