📄 main.lis
字号:
.module main.c
.area lit(rom, con, rel)
0000 _led_table::
0000 FF00 .word 255
0002 0000 .word 0
0004 8800 .word 136
0006 4400 .word 68
0008 2200 .word 34
000A 1100 .word 17
000C 3300 .word 51
000E 7700 .word 119
0010 FF00 .word 255
0012 6600 .word 102
0014 1800 .word 24
0016 2400 .word 36
0018 4200 .word 66
001A 8100 .word 129
001C A500 .word 165
001E E700 .word 231
0020 FF00 .word 255
0022 7E00 .word 126
0024 3C00 .word 60
0026 1800 .word 24
0028 .dbfile C:\DOCUME~1\administrator\桌面\教程\LED应用\霓虹灯\main.c
0028 .dbsym e led_table _led_table A[40:20]kI
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\administrator\桌面\教程\LED应用\霓虹灯\main.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 25
0000 ; //ICC-AVR application builder : 2007-1-29 10:04:38
0000 ; // Target : M16
0000 ; // Crystal: 7.3728Mhz
0000 ; // 功能:霓虹灯程序
0000 ; // 作者:古欣
0000 ; // AVR与虚拟仪器 http://www.avrvi.com
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; #define led_port PORTA
0000 ; //定义输出端口
0000 ; #define led_ddr DDRA
0000 ; //定义输出控制寄存器
0000 ; //可以自行修改,必须保持 led_port和led_ddr一致,PORTA对应DDRA
0000 ;
0000 ; const led_table[20]={ //定义要输出的值
0000 ; 0xff,0x00,0x88,0x44,0x22,
0000 ; 0x11,0x33,0x77,0xff,0x66,
0000 ; 0x18,0x24,0x42,0x81,0xa5,
0000 ; 0xe7,0xff,0x7e,0x3c,0x18};
0000 ;
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 26
0000 ; PORTA = 0x00;
0000 2224 clr R2
0002 2BBA out 0x1b,R2
0004 .dbline 27
0004 ; DDRA = 0x00;
0004 2ABA out 0x1a,R2
0006 .dbline 28
0006 ; PORTB = 0x00;
0006 28BA out 0x18,R2
0008 .dbline 29
0008 ; DDRB = 0x00;
0008 27BA out 0x17,R2
000A .dbline 30
000A ; PORTC = 0x00; //m103 output only
000A 25BA out 0x15,R2
000C .dbline 31
000C ; DDRC = 0x00;
000C 24BA out 0x14,R2
000E .dbline 32
000E ; PORTD = 0x00;
000E 22BA out 0x12,R2
0010 .dbline 33
0010 ; DDRD = 0x00;
0010 21BA out 0x11,R2
0012 .dbline 34
0012 ; led_ddr=0xff; //设置LED的端口为输出
0012 8FEF ldi R24,255
0014 8ABB out 0x1a,R24
0016 .dbline -2
0016 L1:
0016 .dbline 0 ; func end
0016 0895 ret
0018 .dbend
0018 .dbfunc e init_devices _init_devices fV
.even
0018 _init_devices::
0018 .dbline -1
0018 .dbline 40
0018 ; }
0018 ;
0018 ; //call this routine to initialize all peripherals
0018 ; //此处为ICC系统生成,未做更改
0018 ; void init_devices(void)
0018 ; {
0018 .dbline 42
0018 ; //stop errant interrupts until set up
0018 ; CLI(); //disable all interrupts
0018 F894 cli
001A .dbline 43
001A ; port_init();
001A F2DF xcall _port_init
001C .dbline 45
001C ;
001C ; MCUCR = 0x00;
001C 2224 clr R2
001E 25BE out 0x35,R2
0020 .dbline 46
0020 ; GICR = 0x00;
0020 2BBE out 0x3b,R2
0022 .dbline 47
0022 ; TIMSK = 0x00; //timer interrupt sources
0022 29BE out 0x39,R2
0024 .dbline 48
0024 ; SEI(); //re-enable interrupts
0024 7894 sei
0026 .dbline -2
0026 L2:
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbend
0028 .dbfunc e Delay _Delay fV
0028 ; i -> R16
0028 ; j -> R18
.even
0028 _Delay::
0028 .dbline -1
0028 .dbline 53
0028 ; //all peripherals are now initialized
0028 ; }
0028 ;
0028 ; void Delay(void) //延时,没有详细计算
0028 ; {
0028 .dbline 55
0028 ; unsigned char i,j;
0028 ; for(i=150;i>0;i--)
0028 06E9 ldi R16,150
002A 07C0 xjmp L7
002C L4:
002C .dbline 56
002C ; {
002C .dbline 57
002C ; for(j=200;j>0;j--)
002C 28EC ldi R18,200
002E 01C0 xjmp L11
0030 L8:
0030 .dbline 58
0030 L9:
0030 .dbline 57
0030 2A95 dec R18
0032 L11:
0032 .dbline 57
0032 2224 clr R2
0034 2216 cp R2,R18
0036 E0F3 brlo L8
0038 .dbline 59
0038 L5:
0038 .dbline 55
0038 0A95 dec R16
003A L7:
003A .dbline 55
003A 2224 clr R2
003C 2016 cp R2,R16
003E B0F3 brlo L4
0040 .dbline -2
0040 L3:
0040 .dbline 0 ; func end
0040 0895 ret
0042 .dbsym r i 16 c
0042 .dbsym r j 18 c
0042 .dbend
0042 .dbfunc e main _main fV
0042 ; i -> R20,R21
.even
0042 _main::
0042 .dbline -1
0042 .dbline 63
0042 ; ;
0042 ; }
0042 ; }
0042 ;
0042 ; void main(void)
0042 ; {
0042 .dbline 65
0042 ; unsigned int i;
0042 ; init_devices();
0042 EADF xcall _init_devices
0044 1AC0 xjmp L14
0046 L13:
0046 .dbline 67
0046 ; while(1)
0046 ; {
0046 .dbline 68
0046 ; for(i=0;i<20;i++)
0046 4427 clr R20
0048 5527 clr R21
004A 13C0 xjmp L19
004C L16:
004C .dbline 69
004C .dbline 70
004C 02E0 ldi R16,2
004E 10E0 ldi R17,0
0050 9A01 movw R18,R20
0052 0E940000 xcall empy16s
0056 F801 movw R30,R16
0058 80E0 ldi R24,<_led_table
005A 90E0 ldi R25,>_led_table
005C E80F add R30,R24
005E F91F adc R31,R25
0060 0590 lpm R0,Z+
0062 1490 lpm R1,Z
0064 F001 movw R30,R0
0066 EBBB out 0x1b,R30
0068 .dbline 71
0068 DFDF xcall _Delay
006A .dbline 72
006A DEDF xcall _Delay
006C .dbline 73
006C DDDF xcall _Delay
006E .dbline 74
006E L17:
006E .dbline 68
006E 4F5F subi R20,255 ; offset = 1
0070 5F4F sbci R21,255
0072 L19:
0072 .dbline 68
0072 4431 cpi R20,20
0074 E0E0 ldi R30,0
0076 5E07 cpc R21,R30
0078 48F3 brlo L16
007A .dbline 75
007A L14:
007A .dbline 66
007A E5CF xjmp L13
007C X0:
007C .dbline -2
007C L12:
007C .dbline 0 ; func end
007C 0895 ret
007E .dbsym r i 20 i
007E .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -