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

📄 跑马灯.lis

📁 ICC mega8例子
💻 LIS
字号:
                        .module _跑马灯.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\xiaozhiyong2009\设计资料\项目设计\mega8_C语言常用程序\ICCAVR_mega8_跑马灯\跑马灯.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 9
 0000           ; //ICC-AVR application builder : 2009-3-10 13:53:36
 0000           ; // Target : M8
 0000           ; // Crystal: 8.0000Mhz
 0000           ; 
 0000           ; #include <iom8v.h>
 0000           ; #include <macros.h>
 0000           ; 
 0000           ; void port_init(void)
 0000           ; {
 0000                   .dbline 10
 0000           ;  PORTB = 0x00;
 0000 2224              clr R2
 0002 28BA              out 0x18,R2
 0004                   .dbline 11
 0004           ;  DDRB  = 0x00;
 0004 27BA              out 0x17,R2
 0006                   .dbline 12
 0006           ;  PORTC = 0x00; //m103 output only
 0006 25BA              out 0x15,R2
 0008                   .dbline 13
 0008           ;  DDRC  = 0x00;
 0008 24BA              out 0x14,R2
 000A                   .dbline 14
 000A           ;  PORTD = 0x00;
 000A 22BA              out 0x12,R2
 000C                   .dbline 15
 000C           ;  DDRD  = 0x00;
 000C 21BA              out 0x11,R2
 000E                   .dbline -2
 000E           L1:
 000E                   .dbline 0 ; func end
 000E 0895              ret
 0010                   .dbend
 0010                   .dbfunc e init_devices _init_devices fV
                        .even
 0010           _init_devices::
 0010                   .dbline -1
 0010                   .dbline 20
 0010           ; }
 0010           ; 
 0010           ; //call this routine to initialize all peripherals
 0010           ; void init_devices(void)
 0010           ; {
 0010                   .dbline 22
 0010           ;  //stop errant interrupts until set up
 0010           ;  CLI(); //disable all interrupts
 0010 F894              cli
 0012                   .dbline 23
 0012           ;  port_init();
 0012 F6DF              rcall _port_init
 0014                   .dbline 25
 0014           ; 
 0014           ;  MCUCR = 0x00;
 0014 2224              clr R2
 0016 25BE              out 0x35,R2
 0018                   .dbline 26
 0018           ;  GICR  = 0x00;
 0018 2BBE              out 0x3b,R2
 001A                   .dbline 27
 001A           ;  TIMSK = 0x00; //timer interrupt sources
 001A 29BE              out 0x39,R2
 001C                   .dbline 28
 001C           ;  SEI(); //re-enable interrupts
 001C 7894              sei
 001E                   .dbline -2
 001E           L2:
 001E                   .dbline 0 ; func end
 001E 0895              ret
 0020                   .dbend
 0020                   .dbfunc e delay _delay fV
 0020           ;              i -> R16,R17
                        .even
 0020           _delay::
 0020                   .dbline -1
 0020                   .dbline 38
 0020           ;  //all peripherals are now initialized
 0020           ; }
 0020           ; 
 0020           ; /************************************
 0020           ; Name         :小延时程序
 0020           ; Target       :atmega8
 0020           ; Crystal(晶振):8M
 0020           ; ************************************/
 0020           ; void delay()
 0020           ; {
 0020                   .dbline 40
 0020           ;  unsigned int i;//最大值65536
 0020           ;  for (i=0;i<40000;i++)
 0020 0027              clr R16
 0022 1127              clr R17
 0024 02C0              rjmp L7
 0026           L4:
 0026                   .dbline 41
 0026           ;  {;}
 0026                   .dbline 41
 0026                   .dbline 41
 0026           L5:
 0026                   .dbline 40
 0026 0F5F              subi R16,255  ; offset = 1
 0028 1F4F              sbci R17,255
 002A           L7:
 002A                   .dbline 40
 002A 80E4              ldi R24,64
 002C 9CE9              ldi R25,156
 002E A0E0              ldi R26,0
 0030 B0E0              ldi R27,0
 0032 1801              movw R2,R16
 0034 4424              clr R4
 0036 5524              clr R5
 0038 2816              cp R2,R24
 003A 3906              cpc R3,R25
 003C 4A06              cpc R4,R26
 003E 5B06              cpc R5,R27
 0040 94F3              brlt L4
 0042           X0:
 0042                   .dbline -2
 0042           L3:
 0042                   .dbline 0 ; func end
 0042 0895              ret
 0044                   .dbsym r i 16 i
 0044                   .dbend
 0044                   .dbfunc e show_LED _show_LED fV
 0044           ;              i -> R20
                        .even
 0044           _show_LED::
 0044 4A93              st -y,R20
 0046                   .dbline -1
 0046                   .dbline 50
 0046           ; }
 0046           ; 
 0046           ; /************************************
 0046           ; Name         :跑马灯
 0046           ; Target       :atmega8
 0046           ; Crystal(晶振):8M
 0046           ; **************************************/
 0046           ; void show_LED()
 0046           ; {
 0046                   .dbline 52
 0046           ;  unsigned char i;
 0046           ;  DDRB=0xff;//设为输出
 0046 8FEF              ldi R24,255
 0048 87BB              out 0x17,R24
 004A                   .dbline 53
 004A           ;  for (i=0;i<8;i++)
 004A 4427              clr R20
 004C 06C0              rjmp L12
 004E           L9:
 004E                   .dbline 54
 004E           ;  {
 004E                   .dbline 55
 004E           ;   PORTB=(1<<i);
 004E 01E0              ldi R16,1
 0050 142F              mov R17,R20
 0052 00D0              rcall lsl8
 0054 08BB              out 0x18,R16
 0056                   .dbline 56
 0056           ;   delay();
 0056 E4DF              rcall _delay
 0058                   .dbline 57
 0058           ;  }
 0058           L10:
 0058                   .dbline 53
 0058 4395              inc R20
 005A           L12:
 005A                   .dbline 53
 005A 4830              cpi R20,8
 005C C0F3              brlo L9
 005E           X1:
 005E                   .dbline -2
 005E           L8:
 005E                   .dbline 0 ; func end
 005E 4991              ld R20,y+
 0060 0895              ret
 0062                   .dbsym r i 20 c
 0062                   .dbend
 0062                   .dbfunc e main _main fV
                        .even
 0062           _main::
 0062                   .dbline -1
 0062                   .dbline 61
 0062           ; }
 0062           ; 
 0062           ; void main()
 0062           ; {
 0062                   .dbline 62
 0062           ;  port_init();
 0062 CEDF              rcall _port_init
 0064                   .dbline 63
 0064           ;  init_devices();
 0064 D5DF              rcall _init_devices
 0066 01C0              rjmp L15
 0068           L14:
 0068                   .dbline 65
 0068           ;  while(1)
 0068           ;  {
 0068                   .dbline 66
 0068           ;   show_LED();
 0068 EDDF              rcall _show_LED
 006A                   .dbline 67
 006A           ;  }
 006A           L15:
 006A                   .dbline 64
 006A FECF              rjmp L14
 006C           X2:
 006C                   .dbline -2
 006C           L13:
 006C                   .dbline 0 ; func end
 006C 0895              ret
 006E                   .dbend
 006E           ; }

⌨️ 快捷键说明

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