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

📄 led-16sm.lis

📁 大量ATMEGA16实例, 都可以运行,包括驱动LCD1602, 上位机显示等多功能
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 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 + -