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

📄 led流水灯.lis

📁 AVR之ATMega16
💻 LIS
字号:
                        .module led流水灯.c
                        .area text(rom, con, rel)
 0000                   .dbfile H:\AVRMega16\LED流水灯/delay.h
 0000                   .dbfunc e DelayUS _DelayUS fV
 0000           ;           time -> R16,R17
                        .even
 0000           _DelayUS::
 0000                   .dbline -1
 0000                   .dbline 9
 0000           ; //内部晶振 8M
 0000           ; //包含所需头文件
 0000           ; #include <ioM16v.h>
 0000           ; #include <macros.h>
 0000           ; #include "delay.h"
 0000           ; 
 0000           ; 
 0000           ; 
 0000           ; /*------宏定义------*/
 0000 02C0              xjmp L3
 0002           L2:
 0002                   .dbline 11
 0002 0150              subi R16,1
 0004 1040              sbci R17,0
 0006           L3:
 0006                   .dbline 10
 0006           ; #define uchar unsigned char
 0006 81E0              ldi R24,1
 0008 90E0              ldi R25,0
 000A 8017              cp R24,R16
 000C 9107              cpc R25,R17
 000E C8F3              brlo L2
 0010                   .dbline -2
 0010           L1:
 0010                   .dbline 0 ; func end
 0010 0895              ret
 0012                   .dbsym r time 16 i
 0012                   .dbend
 0012                   .dbfunc e DelayMS _DelayMS fV
 0012           ;              i -> R20,R21
 0012           ;           time -> R16,R17
                        .even
 0012           _DelayMS::
 0012 0E940000          xcall push_gset1
 0016                   .dbline -1
 0016                   .dbline 20
 0016           ; #define uint  unsigned int
 0016           ; 
 0016           ; 
 0016           ; 
 0016           ; //端口初始化
 0016           ; void port_init(void)
 0016           ; {
 0016           ;  PORTA = 0x00;//A口数据置0
 0016           ;  DDRA  = 0xFF;//A口设为输出
 0016           ;  PORTB = 0x00;//B口数据置1
 0016 09C0              xjmp L7
 0018           L6:
 0018                   .dbline 23
 0018           ;  DDRB  = 0x00;//B口设为输入
 0018           ;  PORTC = 0x00;
 0018           ;  DDRC  = 0xFF;
 0018                   .dbline 24
 0018           ;  PORTD = 0x00;
 0018 41E0              ldi R20,1
 001A 50E0              ldi R21,0
 001C 02C0              xjmp L12
 001E           L9:
 001E                   .dbline 25
 001E           L10:
 001E                   .dbline 24
 001E 4F5F              subi R20,255  ; offset = 1
 0020 5F4F              sbci R21,255
 0022           L12:
 0022                   .dbline 24
 0022 4637              cpi R20,118
 0024 E4E0              ldi R30,4
 0026 5E07              cpc R21,R30
 0028 D0F3              brlo L9
 002A                   .dbline 26
 002A           L7:
 002A                   .dbline 22
 002A 1801              movw R2,R16
 002C 0150              subi R16,1
 002E 1040              sbci R17,0
 0030 2220              tst R2
 0032 91F7              brne L6
 0034 3320              tst R3
 0036 81F7              brne L6
 0038           X0:
 0038                   .dbline -2
 0038           L5:
 0038 0E940000          xcall pop_gset1
 003C                   .dbline 0 ; func end
 003C 0895              ret
 003E                   .dbsym r i 20 i
 003E                   .dbsym r time 16 i
 003E                   .dbend
 003E                   .dbfile led流水灯.c
 003E                   .dbfunc e port_init _port_init fV
                        .even
 003E           _port_init::
 003E                   .dbline -1
 003E                   .dbline 17
 003E                   .dbline 18
 003E 2224              clr R2
 0040 2BBA              out 0x1b,R2
 0042                   .dbline 19
 0042 8FEF              ldi R24,255
 0044 8ABB              out 0x1a,R24
 0046                   .dbline 20
 0046 28BA              out 0x18,R2
 0048                   .dbline 21
 0048 27BA              out 0x17,R2
 004A                   .dbline 22
 004A 25BA              out 0x15,R2
 004C                   .dbline 23
 004C 84BB              out 0x14,R24
 004E                   .dbline 24
 004E 22BA              out 0x12,R2
 0050                   .dbline 25
 0050           ;  DDRD  = 0xFF;
 0050 81BB              out 0x11,R24
 0052                   .dbline -2
 0052           L13:
 0052                   .dbline 0 ; func end
 0052 0895              ret
 0054                   .dbend
 0054                   .dbfunc e init_devices _init_devices fV
                        .even
 0054           _init_devices::
 0054                   .dbline -1
 0054                   .dbline 30
 0054           ; }
 0054           ; 
 0054           ; 
 0054           ; void init_devices(void)
 0054           ; {
 0054                   .dbline 31
 0054           ;  CLI(); //禁止所有中断
 0054 F894              cli
 0056                   .dbline 32
 0056           ;  MCUCR  = 0x00;//INT0、INT1中断触发方式
 0056 2224              clr R2
 0058 25BE              out 0x35,R2
 005A                   .dbline 33
 005A           ;  MCUCSR = 0x80;//禁止JTAG
 005A 80E8              ldi R24,128
 005C 84BF              out 0x34,R24
 005E                   .dbline 34
 005E           ;  GICR   = 0x00;//外部中断使能
 005E 2BBE              out 0x3b,R2
 0060                   .dbline 35
 0060           ;  port_init();
 0060 EEDF              xcall _port_init
 0062                   .dbline -2
 0062           L14:
 0062                   .dbline 0 ; func end
 0062 0895              ret
 0064                   .dbend
 0064                   .dbfunc e main _main fV
 0064           ;              n -> R20,R21
 0064           ;              j -> R22
                        .even
 0064           _main::
 0064                   .dbline -1
 0064                   .dbline 40
 0064           ;  //SEI();//开全局中断
 0064           ; }
 0064           ; //主函数
 0064           ; void main(void)
 0064           ; {
 0064                   .dbline 41
 0064           ;    uint n=0;
 0064 4427              clr R20
 0066 5527              clr R21
 0068                   .dbline 42
 0068           ;   uchar j=0xfe;//定义变量初值
 0068 6EEF              ldi R22,254
 006A                   .dbline 43
 006A           ;   init_devices();//调用初始函数
 006A F4DF              xcall _init_devices
 006C 32C0              xjmp L17
 006E           L16:
 006E                   .dbline 47
 006E           ; 
 006E           ; 
 006E           ;  while(1)
 006E           ;  {
 006E                   .dbline 48
 006E           ;   for(n=0;n<7;n++)//设置循环
 006E 4427              clr R20
 0070 5527              clr R21
 0072 12C0              xjmp L22
 0074           L19:
 0074                   .dbline 49
 0074                   .dbline 50
 0074 6BBB              out 0x1b,R22
 0076                   .dbline 51
 0076 262E              mov R2,R22
 0078 2694              lsr R2
 007A 2694              lsr R2
 007C 2694              lsr R2
 007E 2694              lsr R2
 0080 2694              lsr R2
 0082 2694              lsr R2
 0084 2694              lsr R2
 0086 362E              mov R3,R22
 0088 330C              lsl R3
 008A 3228              or R3,R2
 008C 632D              mov R22,R3
 008E                   .dbline 52
 008E 04EF              ldi R16,500
 0090 11E0              ldi R17,1
 0092 BFDF              xcall _DelayMS
 0094                   .dbline 53
 0094           L20:
 0094                   .dbline 48
 0094 4F5F              subi R20,255  ; offset = 1
 0096 5F4F              sbci R21,255
 0098           L22:
 0098                   .dbline 48
 0098 4730              cpi R20,7
 009A E0E0              ldi R30,0
 009C 5E07              cpc R21,R30
 009E 50F3              brlo L19
 00A0                   .dbline 54
 00A0           ; {
 00A0           ; PORTA=j;
 00A0           ; j=(j<<1)|(j>>7);//LED左移
 00A0           ; DelayMS(500);//延时程序
 00A0           ; }
 00A0           ;   for(n=0;n<7;n++)
 00A0 4427              clr R20
 00A2 5527              clr R21
 00A4 12C0              xjmp L26
 00A6           L23:
 00A6                   .dbline 55
 00A6                   .dbline 56
 00A6 6BBB              out 0x1b,R22
 00A8                   .dbline 57
 00A8 262E              mov R2,R22
 00AA 220C              lsl R2
 00AC 220C              lsl R2
 00AE 220C              lsl R2
 00B0 220C              lsl R2
 00B2 220C              lsl R2
 00B4 220C              lsl R2
 00B6 220C              lsl R2
 00B8 362E              mov R3,R22
 00BA 3694              lsr R3
 00BC 3228              or R3,R2
 00BE 632D              mov R22,R3
 00C0                   .dbline 58
 00C0 04EF              ldi R16,500
 00C2 11E0              ldi R17,1
 00C4 A6DF              xcall _DelayMS
 00C6                   .dbline 59
 00C6           L24:
 00C6                   .dbline 54
 00C6 4F5F              subi R20,255  ; offset = 1
 00C8 5F4F              sbci R21,255
 00CA           L26:
 00CA                   .dbline 54
 00CA 4730              cpi R20,7
 00CC E0E0              ldi R30,0
 00CE 5E07              cpc R21,R30
 00D0 50F3              brlo L23
 00D2                   .dbline 60
 00D2           L17:
 00D2                   .dbline 46
 00D2 CDCF              xjmp L16
 00D4           X1:
 00D4                   .dbline -2
 00D4           L15:
 00D4                   .dbline 0 ; func end
 00D4 0895              ret
 00D6                   .dbsym r n 20 i
 00D6                   .dbsym r j 22 c
 00D6                   .dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -