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

📄 getpower_m8.lis

📁 感应取电的控制
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 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 + -