?? led.lis
字號:
.module led.c
.area text(rom, con, rel)
0000 .dbfile D:\ICC-AVR\examples.sl\LED\led.c
0000 .dbfunc s Delay _Delay fI
; a -> R16
; b -> R18
.even
0000 _Delay::
0000 .dbline 6{
; #include <io8515.h>
; /**********************************************************
; 為了可以看見LED的圖案變化,每次LED圖案變化需要保持一定時間
; *********************************************************/
; void Delay()
; {
0000 .dbline 9
; unsigned char a, b;
;
; for (a = 1; a; a++)
0000 01E0 ldi R16,1
0002 06C0 rjmp L5
0004 L2:
0004 .dbline 10
; for (b = 1; b; b++)
0004 21E0 ldi R18,1
0006 01C0 rjmp L9
0008 L6:
0008 .dbline 11
0008 L7:
0008 .dbline 10
0008 2395 inc R18
000A L9:
000A .dbline 10
000A 2223 tst R18
000C E9F7 brne L6
000E L3:
000E .dbline 9
000E 0395 inc R16
0010 L5:
0010 .dbline 9
0010 0023 tst R16
0012 C1F7 brne L2
0014 .dbline 12}
; ;
; }
0014 L1:
0014 0895 ret
0016 .dbsym r a 16 c
0016 .dbsym r b 18 c
0016 .dbfunc s LED_On _LED_On fI
; i -> R20,R21
.even
0016 _LED_On::
0016 00D0 rcall push_gset1
0018 402F mov R20,R16
001A 512F mov R21,R17
001C .dbline 15{
;
; void LED_On(int i)
; {
001C .dbline 16
; PORTB=~(1<<i); /* 輸出低電平,使LED發光 */
001C 01E0 ldi R16,1
001E 10E0 ldi R17,0
0020 242F mov R18,R20
0022 352F mov R19,R21
0024 00D0 rcall lsl16
0026 202E mov R2,R16
0028 312E mov R3,R17
002A 2094 com R2
002C 3094 com R3
002E 28BA out 0x18,R2
0030 .dbline 17
; Delay();
0030 E7DF rcall _Delay
0032 .dbline 18}
; }
0032 L10:
0032 00D0 rcall pop_gset1
0034 0895 ret
0036 .dbsym r i 20 I
0036 .dbfunc s main _main fI
; i -> R20,R21
.even
0036 _main::
0036 .dbline 21{
;
; void main()
; {
0036 .dbline 23
; int i;
; DDRB = 0xFF; /* 定義B口為輸出*/
0036 8FEF ldi R24,255
0038 87BB out 0x17,R24
003A .dbline 24
; PORTB = 0xFF; /* 關閉全部LED */
003A 88BB out 0x18,R24
003C 2EC0 rjmp L13
003E L12:
003E .dbline 27
;
; while (1)
; {
003E .dbline 29
; /* 往前步進 */
; for (i = 0; i < 8; i++)
003E 4427 clr R20
0040 5527 clr R21
0042 L15:
0042 .dbline 30
0042 042F mov R16,R20
0044 152F mov R17,R21
0046 E7DF rcall _LED_On
0048 L16:
0048 .dbline 29
0048 4F5F subi R20,255 ; offset = 1
004A 5F4F sbci R21,255
004C .dbline 29
004C 4830 cpi R20,8
004E E0E0 ldi R30,0
0050 5E07 cpc R21,R30
0052 BCF3 brlt L15
0054 .dbline 32
; LED_On(i);
; /* 往后步進 */
; for (i = 8; i > 0; i--)
0054 48E0 ldi R20,8
0056 50E0 ldi R21,0
0058 L19:
0058 .dbline 33
0058 042F mov R16,R20
005A 152F mov R17,R21
005C DCDF rcall _LED_On
005E L20:
005E .dbline 32
005E 4150 subi R20,1
0060 5040 sbci R21,0
0062 .dbline 32
0062 2224 clr R2
0064 3324 clr R3
0066 2416 cp R2,R20
0068 3506 cpc R3,R21
006A B4F3 brlt L19
006C .dbline 35
; LED_On(i);
; /* 跳 躍 */
; for (i = 0; i < 8; i += 2)
006C 4427 clr R20
006E 5527 clr R21
0070 L23:
0070 .dbline 36
0070 042F mov R16,R20
0072 152F mov R17,R21
0074 D0DF rcall _LED_On
0076 L24:
0076 .dbline 35
0076 4E5F subi R20,254 ; offset = 2
0078 5F4F sbci R21,255
007A .dbline 35
007A 4830 cpi R20,8
007C E0E0 ldi R30,0
007E 5E07 cpc R21,R30
0080 BCF3 brlt L23
0082 .dbline 37
; LED_On(i);
; for (i = 7; i > 0; i -= 2)
0082 47E0 ldi R20,7
0084 50E0 ldi R21,0
0086 L27:
0086 .dbline 38
0086 042F mov R16,R20
0088 152F mov R17,R21
008A C5DF rcall _LED_On
008C L28:
008C .dbline 37
008C 4250 subi R20,2
008E 5040 sbci R21,0
0090 .dbline 37
0090 2224 clr R2
0092 3324 clr R3
0094 2416 cp R2,R20
0096 3506 cpc R3,R21
0098 B4F3 brlt L27
009A .dbline 39
009A L13:
009A .dbline 26
009A D1CF rjmp L12
009C X0:
009C .dbline 40}
; LED_On(i);
; }
; }
009C L11:
009C 0895 ret
009E .dbsym r i 20 I
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -