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

📄 time0.lis

📁 步进电机的控制程序
💻 LIS
字号:
                        .module time0.c
                        .area data(ram, con, rel)
 0000           _i::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile E:\ICCAVR编程学习\定时计数器学习\time0.c
 0001                   .dbsym e i _i c
 0001           _timecount::
 0001                   .blkb 2
                        .area idata
 0001 0000              .word 0
                        .area data(ram, con, rel)
 0003                   .dbfile E:\ICCAVR编程学习\定时计数器学习\time0.c
 0003                   .dbsym e timecount _timecount i
                        .area text(rom, con, rel)
 0000                   .dbfile E:\ICCAVR编程学习\定时计数器学习\time0.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 12
 0000           ; //ICC-AVR application builder : 2007-3-8 22:08:41
 0000           ; // Target : M8
 0000           ; // Crystal: 1.0000Mhz
 0000           ; 
 0000           ; #include <iom8v.h>
 0000           ; #include <macros.h>
 0000           ; #include <stdio.h>
 0000           ; 
 0000           ; char i=0;
 0000           ; unsigned int timecount=0;
 0000           ; void port_init(void)
 0000           ; {
 0000                   .dbline 13
 0000           ;  PORTB = 0xFF;
 0000 8FEF              ldi R24,255
 0002 88BB              out 0x18,R24
 0004                   .dbline 14
 0004           ;  DDRB  = 0xFF;
 0004 87BB              out 0x17,R24
 0006                   .dbline 15
 0006           ;  PORTC = 0x7F; //m103 output only
 0006 8FE7              ldi R24,127
 0008 85BB              out 0x15,R24
 000A                   .dbline 16
 000A           ;  DDRC  = 0x00;
 000A 2224              clr R2
 000C 24BA              out 0x14,R2
 000E                   .dbline 17
 000E           ;  PORTD = 0xFF;
 000E 8FEF              ldi R24,255
 0010 82BB              out 0x12,R24
 0012                   .dbline 18
 0012           ;  DDRD  = 0xFF;
 0012 81BB              out 0x11,R24
 0014                   .dbline -2
 0014           L1:
 0014                   .dbline 0 ; func end
 0014 0895              ret
 0016                   .dbend
 0016                   .dbfunc e timer0_init _timer0_init fV
                        .even
 0016           _timer0_init::
 0016                   .dbline -1
 0016                   .dbline 25
 0016           ; }
 0016           ; 
 0016           ; //TIMER0 initialize - prescale:8
 0016           ; // desired value: 1Hz
 0016           ; // actual value: Out of range
 0016           ; void timer0_init(void)
 0016           ; {
 0016                   .dbline 26
 0016           ;  TCCR0 = 0x00; //stop
 0016 2224              clr R2
 0018 23BE              out 0x33,R2
 001A                   .dbline 27
 001A           ;  TCNT0 = 6 /*INVALID SETTING*/; //set count
 001A 86E0              ldi R24,6
 001C 82BF              out 0x32,R24
 001E                   .dbline 28
 001E           ;  TCCR0 = 0x02; //start timer
 001E 82E0              ldi R24,2
 0020 83BF              out 0x33,R24
 0022                   .dbline -2
 0022           L2:
 0022                   .dbline 0 ; func end
 0022 0895              ret
 0024                   .dbend
                        .area vector(rom, abs)
                        .org 18
 0012 12C0              rjmp _timer0_ovf_isr
                        .area text(rom, con, rel)
 0024                   .dbfile E:\ICCAVR编程学习\定时计数器学习\time0.c
 0024                   .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
                        .even
 0024           _timer0_ovf_isr::
 0024 2A92              st -y,R2
 0026 3A92              st -y,R3
 0028 8A93              st -y,R24
 002A 9A93              st -y,R25
 002C EA93              st -y,R30
 002E 2FB6              in R2,0x3f
 0030 2A92              st -y,R2
 0032                   .dbline -1
 0032                   .dbline 34
 0032                   .dbline 44
 0032 80910100          lds R24,_timecount
 0036 90910200          lds R25,_timecount+1
 003A 0196              adiw R24,1
 003C 90930200          sts _timecount+1,R25
 0040 80930100          sts _timecount,R24
 0044 883E              cpi R24,232
 0046 E3E0              ldi R30,3
 0048 9E07              cpc R25,R30
 004A 69F4              brne L4
 004C                   .dbline 45
 004C                   .dbline 46
 004C 80E8              ldi R24,128
 004E 90E0              ldi R25,0
 0050 22B2              in R2,0x12
 0052 3324              clr R3
 0054 2826              eor R2,R24
 0056 3926              eor R3,R25
 0058 22BA              out 0x12,R2
 005A                   .dbline 47
 005A 2224              clr R2
 005C 3324              clr R3
 005E 30920200          sts _timecount+1,R3
 0062 20920100          sts _timecount,R2
 0066                   .dbline 48
 0066           L4:
 0066                   .dbline -2
 0066           L3:
 0066 2990              ld R2,y+
 0068 2FBE              out 0x3f,R2
 006A E991              ld R30,y+
 006C 9991              ld R25,y+
 006E 8991              ld R24,y+
 0070 3990              ld R3,y+
 0072 2990              ld R2,y+
 0074                   .dbline 0 ; func end
 0074 1895              reti
 0076                   .dbend
 0076                   .dbfunc e init_devices _init_devices fV
                        .even
 0076           _init_devices::
 0076                   .dbline -1
 0076                   .dbline 54
 0076           ;  
 0076           ; }
 0076           ; 
 0076           ; #pragma interrupt_handler timer0_ovf_isr:10
 0076           ; void timer0_ovf_isr(void)
 0076           ; {
 0076           ; //TCNT0 = 6 /*INVALID SETTING*/; //reload counter value
 0076           ; /* if(i<10)                    //i决定循环基准时间的次数 
 0076           ;   {TCNT0=0X3A;             //重设初始值  100ms 
 0076           ;    i++;                    //累加基准时间 
 0076           ;   } 
 0076           ;  else 
 0076           ;   {PORTD^=BIT(0);          //翻转PD口电平  
 0076           ;    i=0;                    //定时全局变量恢复初始值 
 0076           ;   }  */
 0076           ; if(++timecount==1000)
 0076           ;  {
 0076           ;  PORTD=PORTD^0x80;
 0076           ;  timecount=0;
 0076           ;   }
 0076           ; }
 0076           ; 
 0076           ; 
 0076           ; //call this routine to initialize all peripherals
 0076           ; void init_devices(void)
 0076           ; {
 0076                   .dbline 56
 0076           ;  //stop errant interrupts until set up
 0076           ;  CLI(); //disable all interrupts
 0076 F894              cli
 0078                   .dbline 57
 0078           ;  timer0_init();
 0078 CEDF              rcall _timer0_init
 007A                   .dbline 58
 007A           ;  port_init();
 007A C2DF              rcall _port_init
 007C                   .dbline 60
 007C           ; 
 007C           ;  MCUCR = 0x00;
 007C 2224              clr R2
 007E 25BE              out 0x35,R2
 0080                   .dbline 61
 0080           ;  GICR  = 0x00;
 0080 2BBE              out 0x3b,R2
 0082                   .dbline 62
 0082           ;  TIMSK = 0x01; //timer interrupt sources
 0082 81E0              ldi R24,1
 0084 89BF              out 0x39,R24
 0086                   .dbline 63
 0086           ;  SEI(); //re-enable interrupts
 0086 7894              sei
 0088                   .dbline -2
 0088           L6:
 0088                   .dbline 0 ; func end
 0088 0895              ret
 008A                   .dbend
 008A                   .dbfunc e main _main fV
                        .even
 008A           _main::
 008A                   .dbline -1
 008A                   .dbline 69
 008A           ;  //all peripherals are now initialized
 008A           ; }
 008A           ; 
 008A           ; //
 008A           ; void main(void)
 008A           ; {
 008A                   .dbline 79
 008A           ;  /*TCCR0=0X05;                 //时钟1024分频 
 008A           ;  TCNT0=0X3A;                 //定时器计数初始值 100ms 
 008A           ;  TIMSK=0X01;            //允许定时器0中断 
 008A           ;  SEI();                    //开全局中断 
 008A           ;  DDRB=0XFF; 
 008A           ;  DDRD=0XFF; 
 008A           ;  PORTB=0Xff; 
 008A           ;  PORTD=0XFF; */
 008A           ; 
 008A           ; init_devices();
 008A F5DF              rcall _init_devices
 008C           L8:
 008C                   .dbline 80
 008C           L9:
 008C                   .dbline 80
 008C FFCF              rjmp L8
 008E           X0:
 008E                   .dbline -2
 008E           L7:
 008E                   .dbline 0 ; func end
 008E 0895              ret
 0090                   .dbend

⌨️ 快捷键说明

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