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

📄 getpower_m8.lis

📁 感应取电的控制
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0192 20900000          lds R2,_adc_first
 0196 30900100          lds R3,_adc_first+1
 019A 2220              tst R2
 019C 11F4              brne X1
 019E 3320              tst R3
 01A0 51F0              breq L57
 01A2           X1:
 01A2                   .dbline 147
 01A2                   .dbline 147
 01A2 80910000          lds R24,_adc_first
 01A6 90910100          lds R25,_adc_first+1
 01AA 0197              sbiw R24,1
 01AC 90930100          sts _adc_first+1,R25
 01B0 80930000          sts _adc_first,R24
 01B4                   .dbline 148
 01B4 1CC0              rjmp L58
 01B6           L57:
 01B6                   .dbline 148
 01B6           ;               }else{adc_val = ADC & 0x3ff;    //取AD值
 01B6                   .dbline 148
 01B6 84B1              in R24,0x4
 01B8 95B1              in R25,0x5
 01BA 9370              andi R25,3
 01BC 90930500          sts _adc_val+1,R25
 01C0 80930400          sts _adc_val,R24
 01C4                   .dbline 149
 01C4           ;                       if(adc_val==0x3ff){
 01C4 80910400          lds R24,_adc_val
 01C8 90910500          lds R25,_adc_val+1
 01CC 8F3F              cpi R24,255
 01CE E3E0              ldi R30,3
 01D0 9E07              cpc R25,R30
 01D2 69F4              brne L59
 01D4                   .dbline 149
 01D4                   .dbline 150
 01D4           ;                                       Power_Low=0;
 01D4 2224              clr R2
 01D6 3324              clr R3
 01D8 30920300          sts _Power_Low+1,R3
 01DC 20920200          sts _Power_Low,R2
 01E0                   .dbline 151
 01E0           ;                                       DDRB|=(1<<PB1);
 01E0 B99A              sbi 0x17,1
 01E2                   .dbline 152
 01E2           ;                                       PORTB|=(1<<PB1);
 01E2 C19A              sbi 0x18,1
 01E4                   .dbline 153
 01E4           ;                                       ms(500);
 01E4 04EF              ldi R16,500
 01E6 11E0              ldi R17,1
 01E8 6CDF              rcall _ms
 01EA                   .dbline 154
 01EA           ;                                       PORTB&=(~(1<<PB1));
 01EA C198              cbi 0x18,1
 01EC                   .dbline 155
 01EC           ;                                       DDRB&=(~(1<<PB1));
 01EC B998              cbi 0x17,1
 01EE                   .dbline 156
 01EE           ;                       }
 01EE           L59:
 01EE                   .dbline 158
 01EE           L58:
 01EE                   .dbline -2
 01EE           L56:
 01EE 00D0              rcall pop_lset
 01F0                   .dbline 0 ; func end
 01F0 1895              reti
 01F2                   .dbend
 01F2                   .dbfunc e AC_init _AC_init fV
                        .even
 01F2           _AC_init::
 01F2                   .dbline -1
 01F2                   .dbline 163
 01F2           ; 
 01F2           ;               }
 01F2           ; }
 01F2           ; /////////////////////////////////////////////////////////////////////////////////
 01F2           ; //比较器    初始化
 01F2           ; void AC_init(void)
 01F2           ; {
 01F2                   .dbline 164
 01F2           ;       DDRD&=0x3F;//设PD6,PD7口为高阻输入
 01F2 81B3              in R24,0x11
 01F4 8F73              andi R24,63
 01F6 81BB              out 0x11,R24
 01F8                   .dbline 165
 01F8           ;       PORTD&=0X3F;
 01F8 82B3              in R24,0x12
 01FA 8F73              andi R24,63
 01FC 82BB              out 0x12,R24
 01FE                   .dbline 166
 01FE           ;       ACSR|=(1<<ACIE)|(1<<ACIS1)|(1<<ACIS0);//比较器中断允许,输出上升沿触发
 01FE 88B1              in R24,0x8
 0200 8B60              ori R24,11
 0202 88B9              out 0x8,R24
 0204                   .dbline -2
 0204           L61:
 0204                   .dbline 0 ; func end
 0204 0895              ret
 0206                   .dbend
                        .area vector(rom, abs)
                        .org 32
 0020 03C1              rjmp _ac_isr
                        .area text(rom, con, rel)
 0206                   .dbfile E:\GetPower_M8_source\GetPower_M8.c
 0206                   .dbfunc e ac_isr _ac_isr fV
                        .even
 0206           _ac_isr::
 0206 00D0              rcall push_lset
 0208                   .dbline -1
 0208                   .dbline 173
 0208           ; }
 0208           ; 
 0208           ; /////////////////////////////////////////////////////////////////////////////////
 0208           ; //比较器中断处理
 0208           ; #pragma interrupt_handler ac_isr:iv_ANA_COMP 
 0208           ; void ac_isr(void)
 0208           ; {
 0208                   .dbline 174
 0208           ;       Power_Low=1;
 0208 81E0              ldi R24,1
 020A 90E0              ldi R25,0
 020C 90930300          sts _Power_Low+1,R25
 0210 80930200          sts _Power_Low,R24
 0214                   .dbline 175
 0214           ;       DDRB|=(1<<PB2);
 0214 BA9A              sbi 0x17,2
 0216                   .dbline 176
 0216           ;       PORTB|=(1<<PB2);
 0216 C29A              sbi 0x18,2
 0218                   .dbline 177
 0218           ;       ms(500);
 0218 04EF              ldi R16,500
 021A 11E0              ldi R17,1
 021C 52DF              rcall _ms
 021E                   .dbline 178
 021E           ;       PORTB&=(~(1<<PB2));
 021E C298              cbi 0x18,2
 0220                   .dbline 179
 0220           ;       DDRB&=(~(1<<PB2));
 0220 BA98              cbi 0x17,2
 0222                   .dbline -2
 0222           L62:
 0222 00D0              rcall pop_lset
 0224                   .dbline 0 ; func end
 0224 1895              reti
 0226                   .dbend
 0226                   .dbfunc e wdt_init _wdt_init fV
                        .even
 0226           _wdt_init::
 0226                   .dbline -1
 0226                   .dbline 184
 0226           ;       
 0226           ; }
 0226           ; /////////////////////////////////////////////////////////////////////////////////
 0226           ; void wdt_init(void)
 0226           ; {
 0226                   .dbline 185
 0226           ;       WDR();//喂狗
 0226 A895              wdr
 0228                   .dbline 186
 0228           ;       WDTCR|=(BIT(WDCE)|BIT(WDE));
 0228 81B5              in R24,0x21
 022A 8861              ori R24,24
 022C 81BD              out 0x21,R24
 022E                   .dbline 187
 022E           ;       WDTCR=BIT(WDP2)|BIT(WDP1)|BIT(WDP0)|BIT(WDE);
 022E 8FE0              ldi R24,15
 0230 81BD              out 0x21,R24
 0232                   .dbline -2
 0232           L63:
 0232                   .dbline 0 ; func end
 0232 0895              ret
 0234                   .dbend
 0234                   .dbfunc e main _main fV
                        .even
 0234           _main::
 0234                   .dbline -1
 0234                   .dbline 194
 0234           ; }
 0234           ; 
 0234           ; 
 0234           ; /////////////////////////////////////////////////////////////
 0234           ; 
 0234           ; void main(void)
 0234           ; {
 0234                   .dbline 195
 0234           ;       CLI();
 0234 F894              cli
 0236                   .dbline 196
 0236           ;       wdt_init();
 0236 F7DF              rcall _wdt_init
 0238                   .dbline 197
 0238           ;       adc_init();
 0238 94DF              rcall _adc_init
 023A                   .dbline 198
 023A           ;       AC_init();
 023A DBDF              rcall _AC_init
 023C                   .dbline 199
 023C           ;       WDR();
 023C A895              wdr
 023E                   .dbline 200
 023E           ;       DDRD|=(1<<PD3);//Led指示
 023E 8B9A              sbi 0x11,3
 0240                   .dbline 201
 0240           ;       SEI();
 0240 7894              sei
 0242                   .dbline 202
 0242           ;       ac_isr();
 0242 E1DF              rcall _ac_isr
 0244                   .dbline 203
 0244           ;       Power_Low=1;
 0244 81E0              ldi R24,1
 0246 90E0              ldi R25,0
 0248 90930300          sts _Power_Low+1,R25
 024C 80930200          sts _Power_Low,R24
 0250 14C0              rjmp L66
 0252           L65:
 0252                   .dbline 204
 0252           ;       while(1){
 0252                   .dbline 205
 0252           ;       WDR();
 0252 A895              wdr
 0254                   .dbline 206
 0254           ;       LED_H;
 0254 939A              sbi 0x12,3
 0256                   .dbline 207
 0256           ;       ms(3000);
 0256 08EB              ldi R16,3000
 0258 1BE0              ldi R17,11
 025A 33DF              rcall _ms
 025C                   .dbline 208
 025C 20900200          lds R2,_Power_Low
 0260 30900300          lds R3,_Power_Low+1
 0264 2220              tst R2
 0266 21F4              brne L68
 0268 3320              tst R3
 026A 11F4              brne L68
 026C           X2:
 026C                   .dbline 208
 026C                   .dbline 208
 026C 0000              nop
 026E                   .dbline 208
 026E 01C0              rjmp L69
 0270           L68:
 0270                   .dbline 208
 0270           ;               if(!Power_Low){NOP();}else{ADCSRA|=(1<<ADSC);}
 0270                   .dbline 208
 0270 369A              sbi 0x6,6
 0272                   .dbline 208
 0272           L69:
 0272                   .dbline 209
 0272 9398              cbi 0x12,3
 0274                   .dbline 210
 0274 08EB              ldi R16,3000
 0276 1BE0              ldi R17,11
 0278 24DF              rcall _ms
 027A                   .dbline 211
 027A           L66:
 027A                   .dbline 204
 027A EBCF              rjmp L65
 027C           X3:
 027C                   .dbline -2
 027C           L64:
 027C                   .dbline 0 ; func end
 027C 0895              ret
 027E                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\GetPower_M8_source\GetPower_M8.c
 0000           _adc_first:
 0000                   .blkb 2
 0002                   .dbsym s adc_first _adc_first i
 0002           _Power_Low:
 0002                   .blkb 2
 0004                   .dbsym s Power_Low _Power_Low I
 0004           _adc_val:
 0004                   .blkb 2
 0006                   .dbsym s adc_val _adc_val i

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -