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

📄 main.lis

📁 一个关于AVR单片机的例程
💻 LIS
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\avr\跑马灯\main.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 19
 0000           ; //ICC-AVR application builder : 2007-1-29 10:04:38
 0000           ; // Target : M16
 0000           ; // Crystal: 7.3728Mhz
 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           ; 
 0000           ; 
 0000           ; void port_init(void)
 0000           ; {
 0000                   .dbline 20
 0000           ;  PORTA = 0x00;
 0000 2224              clr R2
 0002 2BBA              out 0x1b,R2
 0004                   .dbline 21
 0004           ;  DDRA  = 0x00;
 0004 2ABA              out 0x1a,R2
 0006                   .dbline 22
 0006           ;  PORTB = 0x00;
 0006 28BA              out 0x18,R2
 0008                   .dbline 23
 0008           ;  DDRB  = 0x00;
 0008 27BA              out 0x17,R2
 000A                   .dbline 24
 000A           ;  PORTC = 0x00; //m103 output only
 000A 25BA              out 0x15,R2
 000C                   .dbline 25
 000C           ;  DDRC  = 0x00;
 000C 24BA              out 0x14,R2
 000E                   .dbline 26
 000E           ;  PORTD = 0x00;
 000E 22BA              out 0x12,R2
 0010                   .dbline 27
 0010           ;  DDRD  = 0x00;
 0010 21BA              out 0x11,R2
 0012                   .dbline 28
 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 34
 0018           ; }
 0018           ; 
 0018           ; //call this routine to initialize all peripherals
 0018           ; //此处为ICC系统生成,未做更改
 0018           ; void init_devices(void)
 0018           ; {
 0018                   .dbline 36
 0018           ;  //stop errant interrupts until set up
 0018           ;  CLI(); //disable all interrupts
 0018 F894              cli
 001A                   .dbline 37
 001A           ;  port_init();
 001A F2DF              xcall _port_init
 001C                   .dbline 39
 001C           ; 
 001C           ;  MCUCR = 0x00;
 001C 2224              clr R2
 001E 25BE              out 0x35,R2
 0020                   .dbline 40
 0020           ;  GICR  = 0x00;
 0020 2BBE              out 0x3b,R2
 0022                   .dbline 41
 0022           ;  TIMSK = 0x00; //timer interrupt sources
 0022 29BE              out 0x39,R2
 0024                   .dbline 42
 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 47
 0028           ;  //all peripherals are now initialized
 0028           ; }
 0028           ; 
 0028           ; void Delay(void)  //延时,没有详细计算
 0028           ; {
 0028                   .dbline 49
 0028           ; unsigned char i,j;
 0028           ; for(i=20;i>0;i--)
 0028 04E1              ldi R16,20
 002A 07C0              xjmp L7
 002C           L4:
 002C                   .dbline 50
 002C           ; {
 002C                   .dbline 51
 002C           ;   for(j=200;j>0;j--)
 002C 28EC              ldi R18,200
 002E 01C0              xjmp L11
 0030           L8:
 0030                   .dbline 52
 0030           L9:
 0030                   .dbline 51
 0030 2A95              dec R18
 0032           L11:
 0032                   .dbline 51
 0032 2224              clr R2
 0034 2216              cp R2,R18
 0036 E0F3              brlo L8
 0038                   .dbline 53
 0038           L5:
 0038                   .dbline 49
 0038 0A95              dec R16
 003A           L7:
 003A                   .dbline 49
 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           ;              j -> R20
 0042           ;              i -> R22
 0042           ;              k -> R10
                        .even
 0042           _main::
 0042                   .dbline -1
 0042                   .dbline 57
 0042           ; ;
 0042           ; }
 0042           ; }
 0042           ; 
 0042           ; void main()
 0042           ; {
 0042                   .dbline 59
 0042           ;  unsigned char i,j,k; //定义变量
 0042           ;  init_devices();      //初始化
 0042 EADF              xcall _init_devices
 0044 22C0              xjmp L14
 0046           L13:
 0046                   .dbline 61
 0046           ;  while(1)
 0046           ;  {
 0046                   .dbline 62
 0046           ;      i=0x80;
 0046 60E8              ldi R22,128
 0048                   .dbline 63
 0048           ;      for (j=0;j<8;j++) //循环8次,即PA0~~PA7轮流闪亮 
 0048 4427              clr R20
 004A 0CC0              xjmp L19
 004C           L16:
 004C                   .dbline 64
 004C           ;       {
 004C                   .dbline 65
 004C           ;         led_port=~i; //反相输出,低电平有效 位操作指令详解:http://bbs.avrvi.com/read.php?fid=30&tid=392&toread=1 
 004C 262E              mov R2,R22
 004E 2094              com R2
 0050 2BBA              out 0x1b,R2
 0052                   .dbline 66
 0052 AA24              clr R10
 0054 02C0              xjmp L23
 0056           L20:
 0056                   .dbline 66
 0056 E8DF              xcall _Delay
 0058           L21:
 0058                   .dbline 66
 0058 A394              inc R10
 005A           L23:
 005A                   .dbline 66
 005A 8A2D              mov R24,R10
 005C 8A30              cpi R24,10
 005E D8F3              brlo L20
 0060                   .dbline 67
 0060 6695              lsr R22
 0062                   .dbline 76
 0062           L17:
 0062                   .dbline 63
 0062 4395              inc R20
 0064           L19:
 0064                   .dbline 63
 0064 4830              cpi R20,8
 0066 90F3              brlo L16
 0068                   .dbline 77
 0068           ;         for (k=0;k<10;k++) Delay(); //延时 可自行调节
 0068           ;         i=i>>1; //左移一位 移位算法详解:http://bbs.avrvi.com/read.php?fid=5&tid=897&toread=1
 0068           ;         // 0b00000001 PA0
 0068           ;         // 0b00000010 PA1
 0068           ;         // 0b00000100 PA2
 0068           ;         // 0b00001000 PA3
 0068           ;         // 0b00010000 PA4
 0068           ;         // 0b00100000 PA5
 0068           ;         // 0b01000000 PA6
 0068           ;         // 0b10000000 PA7
 0068           ;       }
 0068           ;         i=1;
 0068 61E0              ldi R22,1
 006A                   .dbline 78
 006A           ;        for (j=0;j<8;j++) //循环8次,即PA0~~PA7轮流闪亮 
 006A 4427              clr R20
 006C 0CC0              xjmp L27
 006E           L24:
 006E                   .dbline 79
 006E           ;       {
 006E                   .dbline 80
 006E           ;         led_port=~i; //反相输出,低电平有效 位操作指令详解:http://bbs.avrvi.com/read.php?fid=30&tid=392&toread=1 
 006E 262E              mov R2,R22
 0070 2094              com R2
 0072 2BBA              out 0x1b,R2
 0074                   .dbline 81
 0074 AA24              clr R10
 0076 02C0              xjmp L31
 0078           L28:
 0078                   .dbline 81
 0078 D7DF              xcall _Delay
 007A           L29:
 007A                   .dbline 81
 007A A394              inc R10
 007C           L31:
 007C                   .dbline 81
 007C 8A2D              mov R24,R10
 007E 8A30              cpi R24,10
 0080 D8F3              brlo L28
 0082                   .dbline 82
 0082 660F              lsl R22
 0084                   .dbline 91
 0084           L25:
 0084                   .dbline 78
 0084 4395              inc R20
 0086           L27:
 0086                   .dbline 78
 0086 4830              cpi R20,8
 0088 90F3              brlo L24
 008A                   .dbline 92
 008A           L14:
 008A                   .dbline 60
 008A DDCF              xjmp L13
 008C           X0:
 008C                   .dbline -2
 008C           L12:
 008C                   .dbline 0 ; func end
 008C 0895              ret
 008E                   .dbsym r j 20 c
 008E                   .dbsym r i 22 c
 008E                   .dbsym r k 10 c
 008E                   .dbend

⌨️ 快捷键说明

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