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

📄 motor.lis

📁 步进电机驱动程序。ICCAVR开发。ATMEGA8
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module _251.c
                        .area data(ram, con, rel)
 0000           _MotorBlocked::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile D:\prog251\Motortest\251.c
 0001                   .dbsym e MotorBlocked _MotorBlocked c
 0001           _SpeedMotorCurrent::
 0001                   .blkb 2
                        .area idata
 0001 0000              .word 0
                        .area data(ram, con, rel)
 0003                   .dbfile D:\prog251\Motortest\251.c
 0003                   .dbsym e SpeedMotorCurrent _SpeedMotorCurrent I
 0003           _SpeedMotorSetting::
 0003                   .blkb 2
                        .area idata
 0003 400B              .word 2880
                        .area data(ram, con, rel)
 0005                   .dbfile D:\prog251\Motortest\251.c
 0005                   .dbsym e SpeedMotorSetting _SpeedMotorSetting I
                        .area text(rom, con, rel)
 0000                   .dbfile D:\prog251\Motortest\251.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 27
 0000           ; //ICC-AVR application builder : 2008-7-3 10:08:15
 0000           ; // Target : M8
 0000           ; // Crystal: 4.0000Mhz
 0000           ; 
 0000           ; #include <iom8v.h>
 0000           ; #include <macros.h>
 0000           ; 
 0000           ; #define uchar unsigned char
 0000           ; #define unint unsigned int
 0000           ; #define MaxAngle 2880
 0000           ; 
 0000           ; 
 0000           ; void motor(void);
 0000           ; 
 0000           ; //GLOBAL VARIABLES
 0000           ; //SIGNALS
 0000           ; uchar MotorBlocked = 0;
 0000           ; 
 0000           ; //MOTOR POSITION
 0000           ; SpeedMotorCurrent = 0;
 0000           ; SpeedMotorSetting = 2880; //test
 0000           ; 
 0000           ; 
 0000           ; 
 0000           ; 
 0000           ; void port_init(void)
 0000           ; {
 0000                   .dbline 28
 0000           ;  PORTB = 0x04;
 0000 84E0              ldi R24,4
 0002 88BB              out 0x18,R24
 0004                   .dbline 29
 0004           ;  DDRB  = 0xef;
 0004 8FEE              ldi R24,239
 0006 87BB              out 0x17,R24
 0008                   .dbline 30
 0008           ;  PORTC = 0x00; //m103 output only
 0008 2224              clr R2
 000A 25BA              out 0x15,R2
 000C                   .dbline 31
 000C           ;  DDRC  = 0x40;
 000C 80E4              ldi R24,64
 000E 84BB              out 0x14,R24
 0010                   .dbline 32
 0010           ;  PORTD = 0x00;
 0010 22BA              out 0x12,R2
 0012                   .dbline 33
 0012           ;  DDRD  = 0x80;
 0012 80E8              ldi R24,128
 0014 81BB              out 0x11,R24
 0016                   .dbline -2
 0016           L1:
 0016                   .dbline 0 ; func end
 0016 0895              ret
 0018                   .dbend
 0018                   .dbfunc e timer1_init _timer1_init fV
                        .even
 0018           _timer1_init::
 0018                   .dbline -1
 0018                   .dbline 41
 0018           ; }
 0018           ; 
 0018           ; //TIMER1 initialize - prescale:8
 0018           ; // WGM: 0) Normal, TOP=0xFFFF
 0018           ; // desired value: 0.1Sec
 0018           ; // actual value:  0.100Sec (0.0%)
 0018           ; void timer1_init(void)
 0018           ; {
 0018                   .dbline 42
 0018           ;  TCCR1B = 0x00; //stop
 0018 2224              clr R2
 001A 2EBC              out 0x2e,R2
 001C                   .dbline 43
 001C           ;  TCNT1H = 0xF0; //setup
 001C 80EF              ldi R24,240
 001E 8DBD              out 0x2d,R24
 0020                   .dbline 44
 0020           ;  TCNT1L = 0xBE;
 0020 8EEB              ldi R24,190
 0022 8CBD              out 0x2c,R24
 0024                   .dbline 47
 0024           ; // TCNT1H = 0x67; //setup
 0024           ; // TCNT1L = 0x6A;
 0024           ;  OCR1AH = 0xC3;
 0024 83EC              ldi R24,195
 0026 8BBD              out 0x2b,R24
 0028                   .dbline 48
 0028           ;  OCR1AL = 0x50;
 0028 80E5              ldi R24,80
 002A 8ABD              out 0x2a,R24
 002C                   .dbline 49
 002C           ;  OCR1BH = 0xC3;
 002C 83EC              ldi R24,195
 002E 89BD              out 0x29,R24
 0030                   .dbline 50
 0030           ;  OCR1BL = 0x50;
 0030 80E5              ldi R24,80
 0032 88BD              out 0x28,R24
 0034                   .dbline 51
 0034           ;  ICR1H  = 0xC3;
 0034 83EC              ldi R24,195
 0036 87BD              out 0x27,R24
 0038                   .dbline 52
 0038           ;  ICR1L  = 0x50;
 0038 80E5              ldi R24,80
 003A 86BD              out 0x26,R24
 003C                   .dbline 53
 003C           ;  TCCR1A = 0x00;
 003C 2FBC              out 0x2f,R2
 003E                   .dbline 54
 003E           ;  TCCR1B = 0x05; //start Timer
 003E 85E0              ldi R24,5
 0040 8EBD              out 0x2e,R24
 0042                   .dbline -2
 0042           L2:
 0042                   .dbline 0 ; func end
 0042 0895              ret
 0044                   .dbend
                        .area vector(rom, abs)
                        .org 16
 0010 22C0              rjmp _timer1_ovf_isr
                        .area text(rom, con, rel)
 0044                   .dbfile D:\prog251\Motortest\251.c
 0044                   .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
                        .even
 0044           _timer1_ovf_isr::
 0044 8A93              st -y,R24
 0046 8FB7              in R24,0x3f
 0048 8A93              st -y,R24
 004A                   .dbline -1
 004A                   .dbline 59
 004A           ; }
 004A           ; 
 004A           ; #pragma interrupt_handler timer1_ovf_isr:9
 004A           ; void timer1_ovf_isr(void)
 004A           ; {
 004A                   .dbline 61
 004A           ;  //TIMER1 has overflowed
 004A           ;  TCNT1H = 0xF0; //reload counter high value
 004A 80EF              ldi R24,240
 004C 8DBD              out 0x2d,R24
 004E                   .dbline 62
 004E           ;  TCNT1L = 0xBE; //reload counter low value
 004E 8EEB              ldi R24,190
 0050 8CBD              out 0x2c,R24
 0052                   .dbline -2
 0052           L3:
 0052 8991              ld R24,y+
 0054 8FBF              out 0x3f,R24
 0056 8991              ld R24,y+
 0058                   .dbline 0 ; func end
 0058 1895              reti
 005A                   .dbend
 005A                   .dbfunc e timer2_init _timer2_init fV
                        .even
 005A           _timer2_init::
 005A                   .dbline -1
 005A                   .dbline 74
 005A           ; // TCNT1H = 0x67; //setup
 005A           ; // TCNT1L = 0x6A;
 005A           ;  
 005A           ; 
 005A           ; }
 005A           ; 
 005A           ; //TIMER2 initialize - prescale:32
 005A           ; // WGM: Normal
 005A           ; // desired value: 1KHz
 005A           ; // actual value:  1.000KHz (0.0%)
 005A           ; void timer2_init(void)
 005A           ; {
 005A                   .dbline 75
 005A           ;  TCCR2 = 0x00; //stop
 005A 2224              clr R2
 005C 25BC              out 0x25,R2
 005E                   .dbline 76
 005E           ;  ASSR  = 0x00; //set async mode
 005E 22BC              out 0x22,R2
 0060                   .dbline 77
 0060           ;  TCNT2 = 0x83; //setup
 0060 83E8              ldi R24,131
 0062 84BD              out 0x24,R24
 0064                   .dbline 78
 0064           ;  OCR2  = 0x7D;
 0064 8DE7              ldi R24,125
 0066 83BD              out 0x23,R24
 0068                   .dbline 79
 0068           ;  TCCR2 = 0x03; //start
 0068 83E0              ldi R24,3
 006A 85BD              out 0x25,R24
 006C                   .dbline -2
 006C           L4:
 006C                   .dbline 0 ; func end
 006C 0895              ret
 006E                   .dbend
                        .area vector(rom, abs)
                        .org 8
 0008 37C0              rjmp _timer2_ovf_isr
                        .area text(rom, con, rel)
 006E                   .dbfile D:\prog251\Motortest\251.c
 006E                   .dbfunc e timer2_ovf_isr _timer2_ovf_isr fV
                        .even
 006E           _timer2_ovf_isr::
 006E 2A92              st -y,R2
 0070 8A93              st -y,R24
 0072 2FB6              in R2,0x3f
 0074 2A92              st -y,R2
 0076                   .dbline -1
 0076                   .dbline 84
 0076           ; }
 0076           ; 
 0076           ; #pragma interrupt_handler timer2_ovf_isr:5
 0076           ; void timer2_ovf_isr(void)
 0076           ; {
 0076                   .dbline 85
 0076           ;  TCNT2 = 0x83; //reload counter value
 0076 83E8              ldi R24,131
 0078 84BD              out 0x24,R24
 007A                   .dbline 88
 007A           ; // TCNT2 = 0x07; //reload counter value
 007A           ;  //unblock motor
 007A           ;   MotorBlocked = 0;
 007A 2224              clr R2
 007C 20920000          sts _MotorBlocked,R2
 0080                   .dbline 90
 0080           ;  //TEST
 0080           ;  PORTB ^= BIT(2);      
 0080 84E0              ldi R24,4
 0082 28B2              in R2,0x18
 0084 2826              eor R2,R24
 0086 28BA              out 0x18,R2
 0088                   .dbline -2
 0088           L5:
 0088 2990              ld R2,y+
 008A 2FBE              out 0x3f,R2
 008C 8991              ld R24,y+
 008E 2990              ld R2,y+
 0090                   .dbline 0 ; func end
 0090 1895              reti
 0092                   .dbend
 0092                   .dbfunc e spi_init _spi_init fV
                        .even
 0092           _spi_init::
 0092                   .dbline -1
 0092                   .dbline 97
 0092           ; 
 0092           ; }
 0092           ; 
 0092           ; //SPI initialize
 0092           ; // clock rate: 250000hz
 0092           ; void spi_init(void)
 0092           ; {
 0092                   .dbline 98
 0092           ;  SPCR = 0x51; //setup SPI
 0092 81E5              ldi R24,81
 0094 8DB9              out 0xd,R24
 0096                   .dbline 99
 0096           ;  SPSR = 0x00; //setup SPI
 0096 2224              clr R2
 0098 2EB8              out 0xe,R2
 009A                   .dbline -2
 009A           L6:
 009A                   .dbline 0 ; func end
 009A 0895              ret
 009C                   .dbend
 009C                   .dbfunc e adc_init _adc_init fV
                        .even
 009C           _adc_init::
 009C                   .dbline -1
 009C                   .dbline 105
 009C           ; }
 009C           ; 
 009C           ; //ADC initialize
 009C           ; // Conversion time: 104uS
 009C           ; void adc_init(void)
 009C           ; {
 009C                   .dbline 106
 009C           ;  ADCSR = 0x00; //disable adc
 009C 2224              clr R2
 009E 26B8              out 0x6,R2
 00A0                   .dbline 107
 00A0           ;  ADMUX = 0x00; //select adc input 0
 00A0 27B8              out 0x7,R2
 00A2                   .dbline 108
 00A2           ;  ACSR  = 0x80;
 00A2 80E8              ldi R24,128
 00A4 88B9              out 0x8,R24
 00A6                   .dbline 109
 00A6           ;  ADCSR = 0xED;
 00A6 8DEE              ldi R24,237
 00A8 86B9              out 0x6,R24
 00AA                   .dbline -2

⌨️ 快捷键说明

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