📄 motor.lis
字号:
.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 + -