?? ls.lis
字號:
.module ls.c
.area text(rom, con, rel)
0000 .dbfile D:\試驗\ls.c
0000 .dbfunc e Delay _Delay fV
0000 ; a -> R16
0000 ; b -> R18
0000 ; c -> R20
.even
0000 _Delay::
0000 4A93 st -y,R20
0002 .dbline -1
0002 .dbline 7
0002 ; #include <iom16v.h>
0002 ; #include <macros.h>
0002 ; #define uchar unsigned char
0002 ; #define uint unsigned int
0002 ;
0002 ; void Delay() //延時函數
0002 ; {
0002 .dbline 9
0002 ; uchar a, b, c;
0002 ; for (a = 1; a; a++)
0002 01E0 ldi R16,1
0004 0BC0 xjmp L5
0006 L2:
0006 .dbline 10
0006 ; for (b = 1; b; b++)
0006 21E0 ldi R18,1
0008 06C0 xjmp L9
000A L6:
000A .dbline 11
000A ; for (c = 0; c<10; c++) //循環次數=255*255*10
000A 4427 clr R20
000C 01C0 xjmp L13
000E L10:
000E .dbline 12
000E ; ;
000E L11:
000E .dbline 11
000E 4395 inc R20
0010 L13:
0010 .dbline 11
0010 4A30 cpi R20,10
0012 E8F3 brlo L10
0014 X0:
0014 L7:
0014 .dbline 10
0014 2395 inc R18
0016 L9:
0016 .dbline 10
0016 2223 tst R18
0018 C1F7 brne L6
001A X1:
001A L3:
001A .dbline 9
001A 0395 inc R16
001C L5:
001C .dbline 9
001C 0023 tst R16
001E 99F7 brne L2
0020 X2:
0020 .dbline -2
0020 L1:
0020 .dbline 0 ; func end
0020 4991 ld R20,y+
0022 0895 ret
0024 .dbsym r a 16 c
0024 .dbsym r b 18 c
0024 .dbsym r c 20 c
0024 .dbend
0024 .dbfunc e DelayMs _DelayMs fV
0024 ; j -> R20,R21
0024 ; i -> R16,R17
.even
0024 _DelayMs::
0024 4A93 st -y,R20
0026 5A93 st -y,R21
0028 .dbline -1
0028 .dbline 16
0028 ; }
0028 ;
0028 ; void DelayMs(uint i) //1ms延時,準確性較Delay();高
0028 ; {
0028 0AC0 xjmp L16
002A L15:
002A .dbline 18
002A ; while(i--)
002A ; {
002A .dbline 20
002A ; uint j;
002A ; for(j=1;j<=613;j++)
002A 41E0 ldi R20,1
002C 50E0 ldi R21,0
002E 02C0 xjmp L21
0030 L18:
0030 .dbline 21
0030 ; ;
0030 L19:
0030 .dbline 20
0030 4F5F subi R20,255 ; offset = 1
0032 5F4F sbci R21,255
0034 L21:
0034 .dbline 20
0034 85E6 ldi R24,613
0036 92E0 ldi R25,2
0038 8417 cp R24,R20
003A 9507 cpc R25,R21
003C C8F7 brsh L18
003E X3:
003E .dbline 22
003E ; }
003E L16:
003E .dbline 17
003E 1801 movw R2,R16
0040 0150 subi R16,1
0042 1040 sbci R17,0
0044 2220 tst R2
0046 89F7 brne L15
0048 3320 tst R3
004A 79F7 brne L15
004C X4:
004C .dbline -2
004C L14:
004C .dbline 0 ; func end
004C 5991 ld R21,y+
004E 4991 ld R20,y+
0050 0895 ret
0052 .dbsym r j 20 i
0052 .dbsym r i 16 i
0052 .dbend
0052 .dbfunc e LED_on _LED_on fV
.even
0052 _LED_on::
0052 .dbline -1
0052 .dbline 26
0052 ; }
0052 ;
0052 ; void LED_on() //打開所有LED
0052 ; {
0052 .dbline 27
0052 ; PORTC =0X00;
0052 2224 clr R2
0054 25BA out 0x15,R2
0056 .dbline 28
0056 ; Delay();
0056 D4DF xcall _Delay
0058 .dbline -2
0058 L22:
0058 .dbline 0 ; func end
0058 0895 ret
005A .dbend
005A .dbfunc e LED_off _LED_off fV
.even
005A _LED_off::
005A .dbline -1
005A .dbline 32
005A ; }
005A ;
005A ; void LED_off() //關閉所有LED
005A ; {
005A .dbline 33
005A ; PORTC = 0xFF;
005A 8FEF ldi R24,255
005C 85BB out 0x15,R24
005E .dbline 34
005E ; Delay();
005E D0DF xcall _Delay
0060 .dbline -2
0060 L23:
0060 .dbline 0 ; func end
0060 0895 ret
0062 .dbend
0062 .dbfunc e LED_01 _LED_01 fV
0062 ; i -> R10,R11
.even
0062 _LED_01::
0062 AA92 st -y,R10
0064 BA92 st -y,R11
0066 5801 movw R10,R16
0068 .dbline -1
0068 .dbline 38
0068 ; }
0068 ;
0068 ; void LED_01(int i) //LED亮滅控制
0068 ; {
0068 .dbline 39
0068 ; PORTC = ~BIT(i); //輸出低電平
0068 01E0 ldi R16,1
006A 10E0 ldi R17,0
006C 9501 movw R18,R10
006E 0E940000 xcall lsl16
0072 1801 movw R2,R16
0074 2094 com R2
0076 3094 com R3
0078 25BA out 0x15,R2
007A .dbline 40
007A ; DelayMs(100); //調用延時程序
007A 04E6 ldi R16,100
007C 10E0 ldi R17,0
007E D2DF xcall _DelayMs
0080 .dbline -2
0080 L24:
0080 .dbline 0 ; func end
0080 B990 ld R11,y+
0082 A990 ld R10,y+
0084 0895 ret
0086 .dbsym r i 10 I
0086 .dbend
0086 .dbfunc e LED_02 _LED_02 fV
0086 ; i -> R20,R21
.even
0086 _LED_02::
0086 4A93 st -y,R20
0088 5A93 st -y,R21
008A A801 movw R20,R16
008C .dbline -1
008C .dbline 44
008C ; }
008C ;
008C ; void LED_02(int i) //間隔點亮
008C ; {
008C .dbline 45
008C ; PORTC=~(BIT(i)|BIT(i-2));
008C 9A01 movw R18,R20
008E 2250 subi R18,2
0090 3040 sbci R19,0
0092 01E0 ldi R16,1
0094 10E0 ldi R17,0
0096 0E940000 xcall lsl16
009A 1801 movw R2,R16
009C 01E0 ldi R16,1
009E 10E0 ldi R17,0
00A0 9A01 movw R18,R20
00A2 0E940000 xcall lsl16
00A6 2801 movw R4,R16
00A8 4228 or R4,R2
00AA 5328 or R5,R3
00AC 4094 com R4
00AE 5094 com R5
00B0 45BA out 0x15,R4
00B2 .dbline 46
00B2 ; DelayMs(100);
00B2 04E6 ldi R16,100
00B4 10E0 ldi R17,0
00B6 B6DF xcall _DelayMs
00B8 .dbline -2
00B8 L25:
00B8 .dbline 0 ; func end
00B8 5991 ld R21,y+
00BA 4991 ld R20,y+
00BC 0895 ret
00BE .dbsym r i 20 I
00BE .dbend
00BE .dbfunc e LED_03 _LED_03 fV
00BE ; i -> R20,R21
.even
00BE _LED_03::
00BE 4A93 st -y,R20
00C0 5A93 st -y,R21
00C2 A801 movw R20,R16
00C4 .dbline -1
00C4 .dbline 50
00C4 ; }
00C4 ;
00C4 ; void LED_03(int i) //相臨點亮
00C4 ; {
00C4 .dbline 51
00C4 ; PORTC=~(BIT(i)|BIT(i-1)); //~后內容需用括號括起來
00C4 9A01 movw R18,R20
00C6 2150 subi R18,1
00C8 3040 sbci R19,0
00CA 01E0 ldi R16,1
00CC 10E0 ldi R17,0
00CE 0E940000 xcall lsl16
00D2 1801 movw R2,R16
00D4 01E0 ldi R16,1
00D6 10E0 ldi R17,0
00D8 9A01 movw R18,R20
00DA 0E940000 xcall lsl16
00DE 2801 movw R4,R16
00E0 4228 or R4,R2
00E2 5328 or R5,R3
00E4 4094 com R4
00E6 5094 com R5
00E8 45BA out 0x15,R4
00EA .dbline 52
00EA ; DelayMs(100);
00EA 04E6 ldi R16,100
00EC 10E0 ldi R17,0
00EE 9ADF xcall _DelayMs
00F0 .dbline -2
00F0 L26:
00F0 .dbline 0 ; func end
00F0 5991 ld R21,y+
00F2 4991 ld R20,y+
00F4 0895 ret
00F6 .dbsym r i 20 I
00F6 .dbend
00F6 .dbfunc e LED_04 _LED_04 fV
00F6 ; i -> R20,R21
.even
00F6 _LED_04::
00F6 4A93 st -y,R20
00F8 5A93 st -y,R21
00FA A801 movw R20,R16
00FC .dbline -1
00FC .dbline 56
00FC ; }
00FC ;
00FC ; void LED_04(int i) //發散聚集點亮
00FC ; {
00FC .dbline 57
00FC ; switch(i)
00FC 4030 cpi R20,0
00FE 4507 cpc R20,R21
0100 69F0 breq L30
0102 X5:
0102 4130 cpi R20,1
0104 E0E0 ldi R30,0
0106 5E07 cpc R21,R30
0108 79F0 breq L31
010A X6:
010A 4230 cpi R20,2
010C E0E0 ldi R30,0
010E 5E07 cpc R21,R30
0110 89F0 breq L32
0112 X7:
0112 4330 cpi R20,3
0114 E0E0 ldi R30,0
0116 5E07 cpc R21,R30
0118 99F0 breq L33
011A X8:
011A 17C0 xjmp L29
011C L30:
011C .dbline 59
011C ; {
011C ; case 0:PORTC=0xE7;DelayMs(100);break; //延時100ms
011C 87EE ldi R24,231
011E 85BB out 0x15,R24
0120 .dbline 59
0120 04E6 ldi R16,100
0122 10E0 ldi R17,0
0124 7FDF xcall _DelayMs
0126 .dbline 59
0126 11C0 xjmp L29
0128 L31:
0128 .dbline 60
0128 ; case 1:PORTC=0xDB;DelayMs(100);break;
0128 8BED ldi R24,219
012A 85BB out 0x15,R24
012C .dbline 60
012C 04E6 ldi R16,100
012E 10E0 ldi R17,0
0130 79DF xcall _DelayMs
0132 .dbline 60
0132 0BC0 xjmp L29
0134 L32:
0134 .dbline 61
0134 ; case 2:PORTC=0xBD;DelayMs(100);break;
0134 8DEB ldi R24,189
0136 85BB out 0x15,R24
0138 .dbline 61
0138 04E6 ldi R16,100
013A 10E0 ldi R17,0
013C 73DF xcall _DelayMs
013E .dbline 61
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -