📄 led-16sm.lis
字号:
0014 ; void delay(int count)
0014 ; {
0014 .dbline 58
0014 ; int i, j;
0014 ; for(i=count; i>0; i--)
0014 A801 movw R20,R16
0016 0BC0 xjmp L6
0018 L3:
0018 .dbline 59
0018 ; for(j=10; j>0; j--)
0018 6AE0 ldi R22,10
001A 70E0 ldi R23,0
001C L7:
001C .dbline 60
001C ; ;
001C L8:
001C .dbline 59
001C 6150 subi R22,1
001E 7040 sbci R23,0
0020 .dbline 59
0020 2224 clr R2
0022 3324 clr R3
0024 2616 cp R2,R22
0026 3706 cpc R3,R23
0028 CCF3 brlt L7
002A X0:
002A L4:
002A .dbline 58
002A 4150 subi R20,1
002C 5040 sbci R21,0
002E L6:
002E .dbline 58
002E 2224 clr R2
0030 3324 clr R3
0032 2416 cp R2,R20
0034 3506 cpc R3,R21
0036 84F3 brlt L3
0038 X1:
0038 .dbline -2
0038 L2:
0038 .dbline 0 ; func end
0038 0C940000 xjmp pop_xgsetF000
003C .dbsym r i 20 I
003C .dbsym r j 22 I
003C .dbsym r count 16 I
003C .dbend
003C .dbfunc e main _main fV
003C ; outd -> R10
003C ; outc -> R10
003C ; outb -> R10
003C ; outa -> R10
003C ; j -> R22,R23
003C ; count -> R10,R11
003C ; swin2 -> R12,R13
003C ; led_index -> R20,R21
003C ; swin -> R14,R15
.even
003C _main::
003C .dbline -1
003C .dbline 66
003C ; }
003C ;
003C ; //*****************************************************************
003C ;
003C ; void main(void)
003C ; {
003C .dbline 67
003C ; unsigned char outa=0x00, outb=0x00, outc=0x00, outd=0x00;
003C AA24 clr R10
003E .dbline 67
003E .dbline 67
003E .dbline 67
003E .dbline 68
003E ; int swin, swin2, led_index=0;
003E 4427 clr R20
0040 5527 clr R21
0042 .dbline 69
0042 ; int j, count=0;
0042 BB24 clr R11
0044 .dbline 71
0044 ;
0044 ; port_init();
0044 DDDF xcall _port_init
0046 .dbline 72
0046 ; PORTA=0xff;
0046 8FEF ldi R24,255
0048 8BBB out 0x1b,R24
004A 71C0 xjmp L13
004C L12:
004C .dbline 74
004C ; while(1)
004C ; {
004C .dbline 75
004C ; WDR(); //Watchdog reset
004C A895 wdr
004E .dbline 76
004E ; if(++count>30)
004E C501 movw R24,R10
0050 0196 adiw R24,1
0052 5C01 movw R10,R24
0054 8EE1 ldi R24,30
0056 90E0 ldi R25,0
0058 8A15 cp R24,R10
005A 9B05 cpc R25,R11
005C B4F4 brge L15
005E X2:
005E .dbline 77
005E ; {
005E .dbline 78
005E ; count=0;
005E AA24 clr R10
0060 BB24 clr R11
0062 .dbline 79
0062 ; PORTA^=0x07;
0062 87E0 ldi R24,7
0064 2BB2 in R2,0x1b
0066 2826 eor R2,R24
0068 2BBA out 0x1b,R2
006A .dbline 80
006A ; PORTB=pattern5[j++];
006A 1B01 movw R2,R22
006C 6F5F subi R22,255 ; offset = 1
006E 7F4F sbci R23,255
0070 80E0 ldi R24,<_pattern5
0072 90E0 ldi R25,>_pattern5
0074 F101 movw R30,R2
0076 E80F add R30,R24
0078 F91F adc R31,R25
007A 2080 ldd R2,z+0
007C 28BA out 0x18,R2
007E .dbline 81
007E ; if(j>=8)
007E 6830 cpi R22,8
0080 E0E0 ldi R30,0
0082 7E07 cpc R23,R30
0084 14F0 brlt L17
0086 X3:
0086 .dbline 82
0086 ; j=0;
0086 6627 clr R22
0088 7727 clr R23
008A L17:
008A .dbline 83
008A ; }
008A L15:
008A .dbline 86
008A ;
008A ; //PORTA=swin;
008A ; swin=PINC&0x30;
008A 83B3 in R24,0x13
008C 9927 clr R25
008E 8073 andi R24,48
0090 9070 andi R25,0
0092 7C01 movw R14,R24
0094 .dbline 87
0094 ; swin=swin>>4;
0094 F594 asr R15
0096 E794 ror R14
0098 F594 asr R15
009A E794 ror R14
009C F594 asr R15
009E E794 ror R14
00A0 F594 asr R15
00A2 E794 ror R14
00A4 .dbline 88
00A4 ; swin2=~PINC&0x0f;
00A4 83B3 in R24,0x13
00A6 9927 clr R25
00A8 8095 com R24
00AA 9095 com R25
00AC 8F70 andi R24,15
00AE 9070 andi R25,0
00B0 6C01 movw R12,R24
00B2 .dbline 90
00B2 ;
00B2 ; if(swin==0)
00B2 EE20 tst R14
00B4 51F4 brne L19
00B6 FF20 tst R15
00B8 41F4 brne L19
00BA X4:
00BA .dbline 91
00BA ; {
00BA .dbline 92
00BA ; PORTD=pattern1[led_index];
00BA 80E0 ldi R24,<_pattern1
00BC 90E0 ldi R25,>_pattern1
00BE FA01 movw R30,R20
00C0 E80F add R30,R24
00C2 F91F adc R31,R25
00C4 2080 ldd R2,z+0
00C6 22BA out 0x12,R2
00C8 .dbline 93
00C8 ; }
00C8 21C0 xjmp L20
00CA L19:
00CA .dbline 94
00CA ; else if(swin==0x01)
00CA C701 movw R24,R14
00CC 8130 cpi R24,1
00CE E0E0 ldi R30,0
00D0 9E07 cpc R25,R30
00D2 41F4 brne L21
00D4 X5:
00D4 .dbline 95
00D4 ; {
00D4 .dbline 96
00D4 ; PORTD=pattern2[led_index];
00D4 80E0 ldi R24,<_pattern2
00D6 90E0 ldi R25,>_pattern2
00D8 FA01 movw R30,R20
00DA E80F add R30,R24
00DC F91F adc R31,R25
00DE 2080 ldd R2,z+0
00E0 22BA out 0x12,R2
00E2 .dbline 97
00E2 ; }
00E2 14C0 xjmp L22
00E4 L21:
00E4 .dbline 98
00E4 ; else if(swin==0x02)
00E4 C701 movw R24,R14
00E6 8230 cpi R24,2
00E8 E0E0 ldi R30,0
00EA 9E07 cpc R25,R30
00EC 41F4 brne L23
00EE X6:
00EE .dbline 99
00EE ; {
00EE .dbline 100
00EE ; PORTD=pattern3[led_index];
00EE 80E0 ldi R24,<_pattern3
00F0 90E0 ldi R25,>_pattern3
00F2 FA01 movw R30,R20
00F4 E80F add R30,R24
00F6 F91F adc R31,R25
00F8 2080 ldd R2,z+0
00FA 22BA out 0x12,R2
00FC .dbline 101
00FC ; }
00FC 07C0 xjmp L24
00FE L23:
00FE .dbline 103
00FE ; else
00FE ; {
00FE .dbline 104
00FE ; PORTD=pattern4[led_index];
00FE 80E0 ldi R24,<_pattern4
0100 90E0 ldi R25,>_pattern4
0102 FA01 movw R30,R20
0104 E80F add R30,R24
0106 F91F adc R31,R25
0108 2080 ldd R2,z+0
010A 22BA out 0x12,R2
010C .dbline 105
010C ; }
010C L24:
010C L22:
010C L20:
010C .dbline 107
010C ;
010C ; led_index++;
010C 4F5F subi R20,255 ; offset = 1
010E 5F4F sbci R21,255
0110 .dbline 108
0110 ; if(led_index>14)
0110 8EE0 ldi R24,14
0112 90E0 ldi R25,0
0114 8417 cp R24,R20
0116 9507 cpc R25,R21
0118 14F4 brge L25
011A X7:
011A .dbline 109
011A ; led_index=0;
011A 4427 clr R20
011C 5527 clr R21
011E L25:
011E .dbline 111
011E ;
011E ; delay(2000+800*swin2);
011E 00E2 ldi R16,800
0120 13E0 ldi R17,3
0122 9601 movw R18,R12
0124 0E940000 xcall empy16s
0128 0053 subi R16,48 ; offset = 2000
012A 184F sbci R17,248
012C 71DF xcall _delay
012E .dbline 112
012E ; }
012E L13:
012E .dbline 73
012E 8ECF xjmp L12
0130 X8:
0130 .dbline -2
0130 L11:
0130 .dbline 0 ; func end
0130 0895 ret
0132 .dbsym r outd 10 c
0132 .dbsym r outc 10 c
0132 .dbsym r outb 10 c
0132 .dbsym r outa 10 c
0132 .dbsym r j 22 I
0132 .dbsym r count 10 I
0132 .dbsym r swin2 12 I
0132 .dbsym r led_index 20 I
0132 .dbsym r swin 14 I
0132 .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\+samples-16small\LED-16sm\LED-16sm.c
0000 _count::
0000 .blkb 2
0002 .dbsym e count _count I
0002 _BCD3::
0002 .blkb 1
0003 .dbsym e BCD3 _BCD3 c
0003 _BCD2::
0003 .blkb 1
0004 .dbsym e BCD2 _BCD2 c
0004 _BCD1::
0004 .blkb 1
0005 .dbsym e BCD1 _BCD1 c
0005 _BCD0::
0005 .blkb 1
0006 .dbsym e BCD0 _BCD0 c
0006 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -