📄 getpower_m8.lis
字号:
00A8 2416 cp R2,R20
00AA 3506 cpc R3,R21
00AC 4606 cpc R4,R22
00AE 5706 cpc R5,R23
00B0 8CF3 brlt L28
00B2 L25:
00B2 .dbline 95
00B2 C501 movw R24,R10
00B4 0196 adiw R24,1
00B6 5C01 movw R10,R24
00B8 L27:
00B8 .dbline 95
00B8 A016 cp R10,R16
00BA B106 cpc R11,R17
00BC 40F3 brlo L24
00BE .dbline -2
00BE L23:
00BE 00D0 rcall pop_gset4
00C0 .dbline 0 ; func end
00C0 0895 ret
00C2 .dbsym r i 10 i
00C2 .dbsym r j 12 i
00C2 .dbsym r n 16 i
00C2 .dbend
00C2 .dbfunc e ms _ms fV
00C2 ; i -> R10,R11
00C2 ; j -> R12,R13
00C2 ; n -> R16,R17
.even
00C2 _ms::
00C2 00D0 rcall push_gset4
00C4 .dbline -1
00C4 .dbline 100
00C4 ; for(j=0; j<MS_COUNT/2;j++);
00C4 ; }
00C4 ;
00C4 ; void ms(WORD n)
00C4 ; { //延时n毫秒
00C4 .dbline 103
00C4 AA24 clr R10
00C6 BB24 clr R11
00C8 16C0 rjmp L36
00CA L33:
00CA .dbline 103
00CA ; WORD i,j;
00CA ;
00CA ; for(i=0; i<n; i++){WDR();
00CA .dbline 103
00CA A895 wdr
00CC .dbline 104
00CC CC24 clr R12
00CE DD24 clr R13
00D0 03C0 rjmp L40
00D2 L37:
00D2 .dbline 104
00D2 L38:
00D2 .dbline 104
00D2 C601 movw R24,R12
00D4 0196 adiw R24,1
00D6 6C01 movw R12,R24
00D8 L40:
00D8 .dbline 104
00D8 41EB ldi R20,177
00DA 51E0 ldi R21,1
00DC 60E0 ldi R22,0
00DE 70E0 ldi R23,0
00E0 1601 movw R2,R12
00E2 4424 clr R4
00E4 5524 clr R5
00E6 2416 cp R2,R20
00E8 3506 cpc R3,R21
00EA 4606 cpc R4,R22
00EC 5706 cpc R5,R23
00EE 8CF3 brlt L37
00F0 .dbline 104
00F0 L34:
00F0 .dbline 103
00F0 C501 movw R24,R10
00F2 0196 adiw R24,1
00F4 5C01 movw R10,R24
00F6 L36:
00F6 .dbline 103
00F6 A016 cp R10,R16
00F8 B106 cpc R11,R17
00FA 38F3 brlo L33
00FC .dbline -2
00FC L32:
00FC 00D0 rcall pop_gset4
00FE .dbline 0 ; func end
00FE 0895 ret
0100 .dbsym r i 10 i
0100 .dbsym r j 12 i
0100 .dbsym r n 16 i
0100 .dbend
0100 .dbfunc e us _us fV
0100 ; i -> R10,R11
0100 ; j -> R12,R13
0100 ; n -> R16,R17
.even
0100 _us::
0100 00D0 rcall push_gset4
0102 .dbline -1
0102 .dbline 108
0102 ; for(j=0; j<MS_COUNT;j++);}
0102 ; }
0102 ;
0102 ; void us(WORD n)
0102 ; { //延时n毫秒
0102 .dbline 111
0102 ; WORD i,j;
0102 ;
0102 ; for(i=0; i<n; i++)
0102 AA24 clr R10
0104 BB24 clr R11
0106 15C0 rjmp L45
0108 L42:
0108 .dbline 112
0108 CC24 clr R12
010A DD24 clr R13
010C 03C0 rjmp L49
010E L46:
010E .dbline 112
010E L47:
010E .dbline 112
010E C601 movw R24,R12
0110 0196 adiw R24,1
0112 6C01 movw R12,R24
0114 L49:
0114 .dbline 112
0114 40E0 ldi R20,0
0116 50E0 ldi R21,0
0118 60E0 ldi R22,0
011A 70E0 ldi R23,0
011C 1601 movw R2,R12
011E 4424 clr R4
0120 5524 clr R5
0122 2416 cp R2,R20
0124 3506 cpc R3,R21
0126 4606 cpc R4,R22
0128 5706 cpc R5,R23
012A 8CF3 brlt L46
012C L43:
012C .dbline 111
012C C501 movw R24,R10
012E 0196 adiw R24,1
0130 5C01 movw R10,R24
0132 L45:
0132 .dbline 111
0132 A016 cp R10,R16
0134 B106 cpc R11,R17
0136 40F3 brlo L42
0138 .dbline -2
0138 L41:
0138 00D0 rcall pop_gset4
013A .dbline 0 ; func end
013A 0895 ret
013C .dbsym r i 10 i
013C .dbsym r j 12 i
013C .dbsym r n 16 i
013C .dbend
013C .dbfunc e delay_s _delay_s fV
013C ; i -> R20,R21
013C ; n -> R22,R23
.even
013C _delay_s::
013C 00D0 rcall push_gset2
013E B801 movw R22,R16
0140 .dbline -1
0140 .dbline 117
0140 ; for(j=0; j<MS_COUNT/1000;j++);
0140 ; }
0140 ;
0140 ; /////////////////////////////////////////////////////////////
0140 ; void delay_s(WORD n)
0140 ; {
0140 .dbline 119
0140 4427 clr R20
0142 5527 clr R21
0144 05C0 rjmp L54
0146 L51:
0146 .dbline 119
0146 04E6 ldi R16,100
0148 10E0 ldi R17,0
014A BBDF rcall _ms
014C L52:
014C .dbline 119
014C 4F5F subi R20,255 ; offset = 1
014E 5F4F sbci R21,255
0150 L54:
0150 .dbline 119
0150 ; WORD i;
0150 ; for ( i=0; i<10*n; i++ ) ms(100);
0150 0AE0 ldi R16,10
0152 10E0 ldi R17,0
0154 9B01 movw R18,R22
0156 00D0 rcall empy16s
0158 4017 cp R20,R16
015A 5107 cpc R21,R17
015C A0F3 brlo L51
015E .dbline -2
015E L50:
015E 00D0 rcall pop_gset2
0160 .dbline 0 ; func end
0160 0895 ret
0162 .dbsym r i 20 i
0162 .dbsym r n 22 i
0162 .dbend
0162 .dbfunc e adc_init _adc_init fV
.even
0162 _adc_init::
0162 .dbline -1
0162 .dbline 126
0162 ; }
0162 ;
0162 ;
0162 ; /////////////////////////////////////////////////////////////////////////////////
0162 ; // ADC 初始化
0162 ; void adc_init(void)
0162 ; {
0162 .dbline 127
0162 ; adc_first =1;
0162 81E0 ldi R24,1
0164 90E0 ldi R25,0
0166 90930100 sts _adc_first+1,R25
016A 80930000 sts _adc_first,R24
016E .dbline 128
016E ; adc_val = 0;
016E 2224 clr R2
0170 3324 clr R3
0172 30920500 sts _adc_val+1,R3
0176 20920400 sts _adc_val,R2
017A .dbline 130
017A ;
017A ; DDRC&=0xFE;//设PC0口为高阻输入
017A 84B3 in R24,0x14
017C 8E7F andi R24,254
017E 84BB out 0x14,R24
0180 .dbline 131
0180 ; PORTC&=0xFE;
0180 85B3 in R24,0x15
0182 8E7F andi R24,254
0184 85BB out 0x15,R24
0186 .dbline 136
0186 ; // ADMUX=0x00;//选择外部2.47V为基准,ADC0通道
0186 ; // ACSR =(1<<ACD);//关闭模拟比较器
0186 ; // SFIOR&=(~(1<<ADHSM)); //低速AD模式
0186 ; //64分频单次转换模式并开始第一次转换
0186 ; ADCSRA|=(1<<ADEN)|(1<<ADIE)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1);
0186 86B1 in R24,0x6
0188 8E68 ori R24,142
018A 86B9 out 0x6,R24
018C .dbline -2
018C L55:
018C .dbline 0 ; func end
018C 0895 ret
018E .dbend
.area vector(rom, abs)
.org 28
001C C7C0 rjmp _adc_isr
.area text(rom, con, rel)
018E .dbfile E:\GetPower_M8_source\GetPower_M8.c
018E .dbfunc e adc_isr _adc_isr fV
.even
018E _adc_isr::
018E 00D0 rcall push_lset
0190 .dbline -1
0190 .dbline 144
0190 ;
0190 ; }
0190 ;
0190 ; /////////////////////////////////////////////////////////////////////////////////
0190 ; //ADC完成中断
0190 ; #pragma interrupt_handler adc_isr:iv_ADC
0190 ; void adc_isr(void)
0190 ; {
0190 .dbline 145
0190 ; WDR();
0190 A895 wdr
0192 .dbline 147
0192 ;
0192 ; if ( adc_first ){adc_first--;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -