📄 motor_main.lis
字号:
.module motor_main.c
.area code(ram, con, rel)
.area lit(rom, con, rel)
0000 _table::
0000 BD84 .byte 189,132
0002 D9CD .byte 217,205
0004 E46D .byte 228,'m
0006 7D85 .byte 125,133
0008 FDED .byte 253,237
000A .dbfile C:\icc\speedloop\motor_main.c
000A .dbsym e table _table A[10:10]kc
.area data(ram, con, rel)
0000 .dbfile C:\icc\speedloop\motor_main.c
0000 _ledbuff::
0000 .blkb 2
.area idata
0000 BDBD .byte 189,189
.area data(ram, con, rel)
0002 .dbfile C:\icc\speedloop\motor_main.c
0002 .blkb 2
.area idata
0002 BDBD .byte 189,189
.area data(ram, con, rel)
0004 .dbfile C:\icc\speedloop\motor_main.c
0004 .dbsym e ledbuff _ledbuff A[4:4]c
.area text(rom, con, rel)
0000 .dbfile C:\icc\speedloop\motor_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 : 2005-8-3
0000 ; // Target : M16
0000 ; // Crystal: 4.0000Mhz
0000 ; //closed speed loop controlling
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; #pragma data:code
0000 ; const unsigned char table[]={0xbd,0x84,0xd9,0xcd,0xe4,0x6d,0x7d,0x85,0xfd,0xed};//7segment
0000 ; #pragma data:data
0000 ; unsigned char ledbuff[]={0xbd,0xbd,0xbd,0xbd};
0000 ;
0000 ; unsigned char adc_res8,count;
0000 ; unsigned char ad_mux;
0000 ; unsigned int adc_res16,count16;
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 = 0xF0;//HIGH 4BIT AS OUTPUT
0004 80EF ldi R24,240
0006 8ABB out 0x1a,R24
0008 .dbline 22
0008 ; PORTB = 0x00;
0008 28BA out 0x18,R2
000A .dbline 23
000A ; DDRB = 0xfd;//t1 input other output
000A 8DEF ldi R24,253
000C 87BB out 0x17,R24
000E .dbline 24
000E ; PORTC = 0x00; //m103 output only
000E 25BA out 0x15,R2
0010 .dbline 25
0010 ; DDRC = 0x00;
0010 24BA out 0x14,R2
0012 .dbline 26
0012 ; PORTD = 0x00;
0012 22BA out 0x12,R2
0014 .dbline 27
0014 ; DDRD = 0xFF;//port d as a output
0014 8FEF ldi R24,255
0016 81BB out 0x11,R24
0018 .dbline -2
0018 L1:
0018 .dbline 0 ; func end
0018 0895 ret
001A .dbend
001A .dbfunc e timer0_init _timer0_init fV
.even
001A _timer0_init::
001A .dbline -1
001A .dbline 36
001A ; }
001A ;
001A ;
001A ; //TIMER0 initialize - prescale:64
001A ; // WGM: Normal
001A ; // desired value: 2mSec
001A ; // actual value: 2.000mSec (0.0%)
001A ; void timer0_init(void)
001A ; {
001A .dbline 37
001A ; TCCR0 = 0x00; //stop
001A 2224 clr R2
001C 23BE out 0x33,R2
001E .dbline 38
001E ; TCNT0 = 0x16; //set count
001E 86E1 ldi R24,22
0020 82BF out 0x32,R24
0022 .dbline 39
0022 ; OCR0 = 0x57; //set compare
0022 87E5 ldi R24,87
0024 8CBF out 0x3c,R24
0026 .dbline 40
0026 ; TCCR0 = 0x05; //start timer
0026 85E0 ldi R24,5
0028 83BF out 0x33,R24
002A .dbline -2
002A L2:
002A .dbline 0 ; func end
002A 0895 ret
002C .dbend
.area vector(rom, abs)
.org 36
0024 0C941600 jmp _timer0_ovf_isr
.area text(rom, con, rel)
002C .dbfile C:\icc\speedloop\motor_main.c
002C .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
002C ; temp -> R16
.even
002C _timer0_ovf_isr::
002C 2A92 st -y,R2
002E 3A92 st -y,R3
0030 0A93 st -y,R16
0032 8A93 st -y,R24
0034 9A93 st -y,R25
0036 2FB6 in R2,0x3f
0038 2A92 st -y,R2
003A .dbline -1
003A .dbline 45
003A ; }
003A ;
003A ; #pragma interrupt_handler timer0_ovf_isr:10
003A ; void timer0_ovf_isr(void)
003A ; {
003A .dbline 47
003A ; unsigned char temp;
003A ; temp=SREG;
003A 0FB7 in R16,0x3f
003C .dbline 49
003C ; //unsigned int temp16;
003C ; TCCR1B=0X00;//STOP T1
003C 2224 clr R2
003E 2EBC out 0x2e,R2
0040 .dbline 50
0040 ; TCCR0=0X00;//STOP T0
0040 23BE out 0x33,R2
0042 .dbline 51
0042 ; count++;
0042 80910500 lds R24,_count
0046 8F5F subi R24,255 ; addi 1
0048 80930500 sts _count,R24
004C .dbline 52
004C ; count16=TCNT1;
004C 2CB4 in R2,0x2c
004E 3DB4 in R3,0x2d
0050 30920100 sts _count16+1,R3
0054 20920000 sts _count16,R2
0058 .dbline 53
0058 ; TCNT1H = 0x00 /*INVALID SETTING*/; //setup
0058 2224 clr R2
005A 2DBC out 0x2d,R2
005C .dbline 54
005C ; TCNT1L = 0x00 /*INVALID SETTING*/;
005C 2CBC out 0x2c,R2
005E .dbline 56
005E ;
005E ; TCNT0 = 0x16; //reload counter value
005E 86E1 ldi R24,22
0060 82BF out 0x32,R24
0062 .dbline 57
0062 ; OCR0=0X57;
0062 87E5 ldi R24,87
0064 8CBF out 0x3c,R24
0066 .dbline 58
0066 ; TCCR0=0X05;//START TIMER0
0066 85E0 ldi R24,5
0068 83BF out 0x33,R24
006A .dbline 59
006A ; TCCR1B=0X07;//START T1
006A 87E0 ldi R24,7
006C 8EBD out 0x2e,R24
006E .dbline 60
006E ; if (count16==0)
006E 20900000 lds R2,_count16
0072 30900100 lds R3,_count16+1
0076 2220 tst R2
0078 21F4 brne L4
007A 3320 tst R3
007C 11F4 brne L4
007E X0:
007E .dbline 61
007E ; {
007E .dbline 62
007E ; TCCR0=0X00;
007E 2224 clr R2
0080 23BE out 0x33,R2
0082 .dbline 63
0082 ; }
0082 L4:
0082 .dbline 64
0082 ; SREG=temp;
0082 0FBF out 0x3f,R16
0084 .dbline -2
0084 L3:
0084 2990 ld R2,y+
0086 2FBE out 0x3f,R2
0088 9991 ld R25,y+
008A 8991 ld R24,y+
008C 0991 ld R16,y+
008E 3990 ld R3,y+
0090 2990 ld R2,y+
0092 .dbline 0 ; func end
0092 1895 reti
0094 .dbsym r temp 16 c
0094 .dbend
0094 .dbfunc e timer1_init _timer1_init fV
.even
0094 _timer1_init::
0094 .dbline -1
0094 .dbline 71
0094 ; }
0094 ; //TIMER1 initialize - prescale:Rising edge
0094 ; // WGM: 0) Normal, TOP=0xFFFF
0094 ; // desired value: 1Hz
0094 ; // actual value: Out of range
0094 ; void timer1_init(void)
0094 ; {
0094 .dbline 72
0094 ; TCCR1B = 0x00; //stop
0094 2224 clr R2
0096 2EBC out 0x2e,R2
0098 .dbline 73
0098 ; TCNT1H = 0x00 /*INVALID SETTING*/; //setup
0098 2DBC out 0x2d,R2
009A .dbline 74
009A ; TCNT1L = 0x00 /*INVALID SETTING*/;
009A 2CBC out 0x2c,R2
009C .dbline 75
009C ; OCR1AH = 0x00 /*INVALID SETTING*/;
009C 2BBC out 0x2b,R2
009E .dbline 76
009E ; OCR1AL = 0x00 /*INVALID SETTING*/;
009E 2ABC out 0x2a,R2
00A0 .dbline 77
00A0 ; OCR1BH = 0x00 /*INVALID SETTING*/;
00A0 29BC out 0x29,R2
00A2 .dbline 78
00A2 ; OCR1BL = 0x00 /*INVALID SETTING*/;
00A2 28BC out 0x28,R2
00A4 .dbline 81
00A4 ; //OCR1CH = $OCR1CH$;
00A4 ; //OCR1CL = $OCR1CL$;
00A4 ; ICR1H = 0x00 /*INVALID SETTING*/;
00A4 27BC out 0x27,R2
00A6 .dbline 82
00A6 ; ICR1L = 0x00 /*INVALID SETTING*/;
00A6 26BC out 0x26,R2
00A8 .dbline 83
00A8 ; TCCR1A = 0x00;
00A8 2FBC out 0x2f,R2
00AA .dbline 84
00AA ; TCCR1B = 0x07; //start Timer
00AA 87E0 ldi R24,7
00AC 8EBD out 0x2e,R24
00AE .dbline -2
00AE L6:
00AE .dbline 0 ; func end
00AE 0895 ret
00B0 .dbend
00B0 .dbfunc e timer2_init _timer2_init fV
.even
00B0 _timer2_init::
00B0 .dbline -1
00B0 .dbline 91
00B0 ; }
00B0 ;
00B0 ; //TIMER2 initialize - prescale:1
00B0 ; // WGM: PWM Phase correct
00B0 ; // actual value: 15.686KHz (93.6%)
00B0 ; void timer2_init(void)
00B0 ; {
00B0 .dbline 92
00B0 ; TCCR2 = 0x00; //stop
00B0 2224 clr R2
00B2 25BC out 0x25,R2
00B4 .dbline 93
00B4 ; ASSR = 0x00; //set async mode
00B4 22BC out 0x22,R2
00B6 .dbline 94
00B6 ; TCNT2 = 0x01; //setup
00B6 81E0 ldi R24,1
00B8 84BD out 0x24,R24
00BA .dbline 95
00BA ; OCR2 = 0xFF;
00BA 8FEF ldi R24,255
00BC 83BD out 0x23,R24
00BE .dbline 96
00BE ; TCCR2 = 0x61; //start
00BE 81E6 ldi R24,97
00C0 85BD out 0x25,R24
00C2 .dbline -2
00C2 L7:
00C2 .dbline 0 ; func end
00C2 0895 ret
00C4 .dbend
00C4 .dbfunc e adc_init _adc_init fV
.even
00C4 _adc_init::
00C4 .dbline -1
00C4 .dbline 111
00C4 ; }
00C4 ;
00C4 ; //#pragma interrupt_handler timer2_ovf_isr:5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -