📄 led流水灯.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 + -