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

📄 main.lis

📁 一个关于AVR单片机的例程
💻 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 + -