📄 motor_main.lis
字号:
00C4 ; //void timer2_ovf_isr(void)
00C4 ; //{
00C4 ; // unsigned char temp;
00C4 ; // temp=SREG;
00C4 ; // OCR2=adc_res8;
00C4 ; // SREG=temp;
00C4 ; //}
00C4 ;
00C4 ; //ADC initialize
00C4 ; // Conversion time: 3uS
00C4 ; void adc_init(void)
00C4 ; {ad_mux=0x01;
00C4 .dbline 111
00C4 81E0 ldi R24,1
00C6 80930400 sts _ad_mux,R24
00CA .dbline 112
00CA ; ADCSR = 0x00; //disable adc
00CA 2224 clr R2
00CC 26B8 out 0x6,R2
00CE .dbline 113
00CE ; ADMUX = (1<<REFS1)|(1<<REFS0)|(1<<ADLAR)|(ad_mux&0x0f); //select adc input 0
00CE 8F70 andi R24,15
00D0 806E ori R24,224
00D2 87B9 out 0x7,R24
00D4 .dbline 114
00D4 ; ACSR = 0x80;
00D4 80E8 ldi R24,128
00D6 88B9 out 0x8,R24
00D8 .dbline 115
00D8 ; ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1);
00D8 8EEC ldi R24,206
00DA 86B9 out 0x6,R24
00DC .dbline -2
00DC L8:
00DC .dbline 0 ; func end
00DC 0895 ret
00DE .dbend
00DE .dbfunc e init_devices _init_devices fV
.even
00DE _init_devices::
00DE .dbline -1
00DE .dbline 133
00DE ; }
00DE ;
00DE ; //#pragma interrupt_handler adc_isr:15
00DE ; //void adc_isr(void)
00DE ; //{
00DE ; // unsigned char temp;
00DE ; // temp=SREG;
00DE ; // adc_res8=ADCH;
00DE ; //hex2bcd(adc_res8);
00DE ; //ad_mux=0x01;
00DE ; //ADMUX=(1<<REFS1)|(1<<REFS0)|(1<<ADLAR)|(ad_mux&0x0f);
00DE ; // ADCSRA|=(1<<ADSC);//start adc again
00DE ; // SREG=temp;
00DE ; //}
00DE ;
00DE ; //call this routine to initialize all peripherals
00DE ; void init_devices(void)
00DE ; {
00DE .dbline 135
00DE ; //stop errant interrupts until set up
00DE ; CLI(); //disable all interrupts
00DE F894 cli
00E0 .dbline 136
00E0 ; port_init();
00E0 8FDF xcall _port_init
00E2 .dbline 137
00E2 ; timer0_init();
00E2 9BDF xcall _timer0_init
00E4 .dbline 138
00E4 ; timer1_init();
00E4 D7DF xcall _timer1_init
00E6 .dbline 139
00E6 ; timer2_init();
00E6 E4DF xcall _timer2_init
00E8 .dbline 142
00E8 ; //adc_init();
00E8 ;
00E8 ; MCUCR = 0x00;
00E8 2224 clr R2
00EA 25BE out 0x35,R2
00EC .dbline 143
00EC ; GICR = 0x00;
00EC 2BBE out 0x3b,R2
00EE .dbline 144
00EE ; TIMSK = 0x41; //enable timer0 timer2 interrupt sources
00EE 81E4 ldi R24,65
00F0 89BF out 0x39,R24
00F2 .dbline 145
00F2 ; SEI(); //re-enable interrupts
00F2 7894 sei
00F4 .dbline -2
00F4 L9:
00F4 .dbline 0 ; func end
00F4 0895 ret
00F6 .dbend
00F6 .dbfunc e delay_1ms _delay_1ms fV
00F6 ; i -> R16,R17
.even
00F6 _delay_1ms::
00F6 .dbline -1
00F6 .dbline 149
00F6 ; //all peripherals are now initialized
00F6 ; }
00F6 ; void delay_1ms(void)
00F6 ; {
00F6 .dbline 151
00F6 ; unsigned int i;
00F6 ; for (i=0;i<542;i++)
00F6 0027 clr R16
00F8 1127 clr R17
00FA 02C0 xjmp L14
00FC L11:
00FC .dbline 152
00FC L12:
00FC .dbline 151
00FC 0F5F subi R16,255 ; offset = 1
00FE 1F4F sbci R17,255
0100 L14:
0100 .dbline 151
0100 0E31 cpi R16,30
0102 E2E0 ldi R30,2
0104 1E07 cpc R17,R30
0106 D0F3 brlo L11
0108 .dbline -2
0108 L10:
0108 .dbline 0 ; func end
0108 0895 ret
010A .dbsym r i 16 i
010A .dbend
010A .dbfunc e hex2bcd _hex2bcd fV
010A ; temp -> R20
010A ; i -> R22
010A ; cnt -> R10,R11
.even
010A _hex2bcd::
010A 0E940000 xcall push_gset3
010E 5801 movw R10,R16
0110 .dbline -1
0110 .dbline 155
0110 ; ;
0110 ; }
0110 ; void hex2bcd(unsigned int cnt)
0110 ; {
0110 .dbline 157
0110 ; unsigned char i,temp;
0110 ; for (i=0;i<4;i++)
0110 6627 clr R22
0112 1BC0 xjmp L19
0114 L16:
0114 .dbline 158
0114 .dbline 159
0114 2AE0 ldi R18,10
0116 30E0 ldi R19,0
0118 8501 movw R16,R10
011A 0E940000 xcall mod16u
011E 402F mov R20,R16
0120 .dbline 160
0120 80E0 ldi R24,<_table
0122 90E0 ldi R25,>_table
0124 E42F mov R30,R20
0126 FF27 clr R31
0128 E80F add R30,R24
012A F91F adc R31,R25
012C E491 lpm R30,Z
012E 80E0 ldi R24,<_ledbuff
0130 90E0 ldi R25,>_ledbuff
0132 A62F mov R26,R22
0134 BB27 clr R27
0136 A80F add R26,R24
0138 B91F adc R27,R25
013A EC93 st x,R30
013C .dbline 161
013C 2AE0 ldi R18,10
013E 30E0 ldi R19,0
0140 8501 movw R16,R10
0142 0E940000 xcall div16u
0146 5801 movw R10,R16
0148 .dbline 162
0148 L17:
0148 .dbline 157
0148 6395 inc R22
014A L19:
014A .dbline 157
014A 6430 cpi R22,4
014C 18F3 brlo L16
014E .dbline -2
014E L15:
014E 0E940000 xcall pop_gset3
0152 .dbline 0 ; func end
0152 0895 ret
0154 .dbsym r temp 20 c
0154 .dbsym r i 22 c
0154 .dbsym r cnt 10 i
0154 .dbend
0154 .dbfunc e display _display fV
0154 ; i -> R20
.even
0154 _display::
0154 0E940000 xcall push_gset1
0158 .dbline -1
0158 .dbline 166
0158 ; {
0158 ; temp=cnt%10;
0158 ; ledbuff[i]=table[temp];
0158 ; cnt=cnt/10;
0158 ; }
0158 ; }
0158 ;
0158 ; void display(void)
0158 ; {
0158 .dbline 168
0158 ; unsigned char i;
0158 ; for (i=0;i<4;i++)
0158 4427 clr R20
015A 1AC0 xjmp L24
015C L21:
015C .dbline 169
015C .dbline 170
015C 80E0 ldi R24,<_ledbuff
015E 90E0 ldi R25,>_ledbuff
0160 E42F mov R30,R20
0162 FF27 clr R31
0164 E80F add R30,R24
0166 F91F adc R31,R25
0168 2080 ldd R2,z+0
016A 28BA out 0x18,R2
016C .dbline 171
016C 142F mov R17,R20
016E 1C5F subi R17,252 ; addi 4
0170 01E0 ldi R16,1
0172 0E940000 xcall lsl8
0176 202E mov R2,R16
0178 2094 com R2
017A 2BBA out 0x1b,R2
017C .dbline 172
017C BCDF xcall _delay_1ms
017E .dbline 173
017E 142F mov R17,R20
0180 1C5F subi R17,252 ; addi 4
0182 01E0 ldi R16,1
0184 0E940000 xcall lsl8
0188 2BB2 in R2,0x1b
018A 202A or R2,R16
018C 2BBA out 0x1b,R2
018E .dbline 174
018E L22:
018E .dbline 168
018E 4395 inc R20
0190 L24:
0190 .dbline 168
0190 4430 cpi R20,4
0192 20F3 brlo L21
0194 .dbline -2
0194 L20:
0194 0E940000 xcall pop_gset1
0198 .dbline 0 ; func end
0198 0895 ret
019A .dbsym r i 20 c
019A .dbend
019A .dbfunc e main _main fI
.even
019A _main::
019A .dbline -1
019A .dbline 179
019A ; {
019A ; PORTB=ledbuff[i];
019A ; PORTA=~(1<<(4+i));
019A ; delay_1ms();
019A ; PORTA|=(1<<(4+i));
019A ; }
019A ; }
019A ;
019A ;
019A ; main()
019A ; {
019A .dbline 180
019A ; init_devices();
019A A1DF xcall _init_devices
019C .dbline 181
019C ; count=0;
019C 2224 clr R2
019E 20920500 sts _count,R2
01A2 06C0 xjmp L27
01A4 L26:
01A4 .dbline 183
01A4 .dbline 185
01A4 00910000 lds R16,_count16
01A8 10910100 lds R17,_count16+1
01AC AEDF xcall _hex2bcd
01AE .dbline 186
01AE D2DF xcall _display
01B0 .dbline 187
01B0 L27:
01B0 .dbline 182
01B0 F9CF xjmp L26
01B2 X1:
01B2 .dbline -2
01B2 L25:
01B2 .dbline 0 ; func end
01B2 0895 ret
01B4 .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\icc\speedloop\motor_main.c
0000 _count16::
0000 .blkb 2
0002 .dbsym e count16 _count16 i
0002 _adc_res16::
0002 .blkb 2
0004 .dbsym e adc_res16 _adc_res16 i
0004 _ad_mux::
0004 .blkb 1
0005 .dbsym e ad_mux _ad_mux c
0005 _count::
0005 .blkb 1
0006 .dbsym e count _count c
0006 _adc_res8::
0006 .blkb 1
0007 .dbsym e adc_res8 _adc_res8 c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -