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

📄 main.lis

📁 AVR单片机系统开发经典实例部分源程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0212 37C0              xjmp L62
 0214           L61:
 0214                   .dbline 213
 0214           ;               else                                                            //
 0214           ;               {                                                                       //
 0214                   .dbline 214
 0214           ;                       w = (u16)ADCL;                                  // read LS-Byte
 0214 64B1              in R22,0x4
 0216 7727              clr R23
 0218                   .dbline 215
 0218           ;                       w |= ((u16)ADCH) << 8;                  // read MS-Byte
 0218 25B0              in R2,0x5
 021A 3324              clr R3
 021C 322C              mov R3,R2
 021E 2224              clr R2
 0220 6229              or R22,R2
 0222 7329              or R23,R3
 0224                   .dbline 217
 0224           ;                                                                                       //
 0224           ;                       i = (u16)(ADMUX & 0x07);                // current ADC channel
 0224 47B1              in R20,0x7
 0226 5527              clr R21
 0228 4770              andi R20,7
 022A 5070              andi R21,0
 022C                   .dbline 219
 022C           ;                                                                                       //
 022C           ;                       w += ADC_Input[i];                              //
 022C 02E0              ldi R16,2
 022E 10E0              ldi R17,0
 0230 9A01              movw R18,R20
 0232 0E940000          xcall empy16s
 0236 F801              movw R30,R16
 0238 80E0              ldi R24,<_ADC_Input
 023A 90E0              ldi R25,>_ADC_Input
 023C E80F              add R30,R24
 023E F91F              adc R31,R25
 0240 2080              ldd R2,z+0
 0242 3180              ldd R3,z+1
 0244 620D              add R22,R2
 0246 731D              adc R23,R3
 0248                   .dbline 220
 0248           ;                       w >>= 1;                                                // average with previous value - helps with noise
 0248 7695              lsr R23
 024A 6795              ror R22
 024C                   .dbline 221
 024C           ;                       ADC_Input[i] = w;                               // save the new value
 024C 02E0              ldi R16,2
 024E 10E0              ldi R17,0
 0250 9A01              movw R18,R20
 0252 0E940000          xcall empy16s
 0256 F801              movw R30,R16
 0258 80E0              ldi R24,<_ADC_Input
 025A 90E0              ldi R25,>_ADC_Input
 025C E80F              add R30,R24
 025E F91F              adc R31,R25
 0260 7183              std z+1,R23
 0262 6083              std z+0,R22
 0264                   .dbline 223
 0264           ;                                                                                       //
 0264           ;                       i++;                                                    // next ADC channel
 0264 4F5F              subi R20,255  ; offset = 1
 0266 5F4F              sbci R21,255
 0268                   .dbline 224
 0268           ;                       if (i > 1) i = 0;                               // only interested in channels 0 and 1
 0268 81E0              ldi R24,1
 026A 90E0              ldi R25,0
 026C 8417              cp R24,R20
 026E 9507              cpc R25,R21
 0270 10F4              brsh L63
 0272                   .dbline 224
 0272 4427              clr R20
 0274 5527              clr R21
 0276           L63:
 0276                   .dbline 226
 0276           ; //                    if (i > 7) i = 0;                               // only interested in channels 0 to 7
 0276           ;                       ADMUX = (u8)i;                                  // select it
 0276 47B9              out 0x7,R20
 0278                   .dbline 228
 0278           ;                                                                                       //
 0278           ;                       Flags1 |= (1<<Flags1_ADC);              // set flag - this tells the next timer int to start the new conversion.
 0278 80910000          lds R24,_Flags1
 027C 8064              ori R24,64
 027E 80930000          sts _Flags1,R24
 0282                   .dbline 231
 0282           ;                                                                                       // we leave starting the next conversion to the next timer int so as to
 0282           ;                                                                                       // allow the ADC input to settle to the newly selected input pin
 0282           ;               }
 0282           L62:
 0282                   .dbline 232
 0282           ;       }
 0282           L59:
 0282                   .dbline 237
 0282           ;       #endif
 0282           ; 
 0282           ;       // *************************
 0282           ; 
 0282           ;       AT_10ms_Timer();
 0282 0E940000          xcall _AT_10ms_Timer
 0286                   .dbline 238
 0286           ;       PPP_10ms_Timer();
 0286 0E940000          xcall _PPP_10ms_Timer
 028A                   .dbline 243
 028A           ; 
 028A           ;       // *************************
 028A           ;       // Test button debounce
 028A           ; 
 028A           ;       if (!TestButton) button_push = 0;                                                                                       // button is pressed - reset the debounce detector
 028A 8099              sbic 0x10,0
 028C 04C0              rjmp L65
 028E                   .dbline 243
 028E 2224              clr R2
 0290 20920000          sts _button_push,R2
 0294 12C0              xjmp L66
 0296           L65:
 0296                   .dbline 245
 0296           ;       else
 0296           ;       {
 0296                   .dbline 246
 0296           ;               if (button_push < 255) button_push++;                                                                   // update the debounce counter
 0296 80910000          lds R24,_button_push
 029A 8F3F              cpi R24,255
 029C 28F4              brsh L67
 029E                   .dbline 246
 029E 80910000          lds R24,_button_push
 02A2 8F5F              subi R24,255    ; addi 1
 02A4 80930000          sts _button_push,R24
 02A8           L67:
 02A8                   .dbline 247
 02A8           ;               if (button_push == button_debounce) Flags1 |= (1<<Flags1_ButtonPress);  // button has just been released
 02A8 80910000          lds R24,_button_push
 02AC 8830              cpi R24,8
 02AE 29F4              brne L69
 02B0                   .dbline 247
 02B0 80910000          lds R24,_Flags1
 02B4 8460              ori R24,4
 02B6 80930000          sts _Flags1,R24
 02BA           L69:
 02BA                   .dbline 248
 02BA           ;       }
 02BA           L66:
 02BA                   .dbline 253
 02BA           ; 
 02BA           ;       //**********************************
 02BA           ;       // do stuff with the led's
 02BA           ; 
 02BA           ;       switch (AT.Stage)
 02BA 40910300          lds R20,_AT+3
 02BE 5527              clr R21
 02C0 4030              cpi R20,0
 02C2 4507              cpc R20,R21
 02C4 49F0              breq L75
 02C6           X2:
 02C6 4030              cpi R20,0
 02C8 E0E0              ldi R30,0
 02CA 5E07              cpc R21,R30
 02CC ACF0              brlt L71
 02CE           L83:
 02CE 4530              cpi R20,5
 02D0 E0E0              ldi R30,0
 02D2 5E07              cpc R21,R30
 02D4 49F0              breq L78
 02D6 10C0              xjmp L71
 02D8           X3:
 02D8                   .dbline 254
 02D8           ;       {
 02D8           L75:
 02D8                   .dbline 255
 02D8           ;               case AT_Idle    :       if (TimerIntCounter & 0x20)
 02D8 20900000          lds R2,_TimerIntCounter
 02DC 25FE              sbrs R2,5
 02DE 02C0              rjmp L76
 02E0                   .dbline 256
 02E0           ;                                                               RLed_On;
 02E0 C598              cbi 0x18,5
 02E2 11C0              xjmp L72
 02E4           L76:
 02E4                   .dbline 258
 02E4           ;                                                       else
 02E4           ;                                                               RLed_Off;
 02E4 C59A              sbi 0x18,5
 02E6                   .dbline 259
 02E6           ;                                                       break;
 02E6 0FC0              xjmp L72
 02E8           L78:
 02E8                   .dbline 260
 02E8           ;               case AT_PPP             :       if (TimerIntCounter & 0x50)
 02E8 80910000          lds R24,_TimerIntCounter
 02EC 8075              andi R24,80
 02EE 11F0              breq L79
 02F0                   .dbline 261
 02F0           ;                                                               RLed_On;
 02F0 C598              cbi 0x18,5
 02F2 09C0              xjmp L72
 02F4           L79:
 02F4                   .dbline 263
 02F4           ;                                                       else
 02F4           ;                                                               RLed_Off;
 02F4 C59A              sbi 0x18,5
 02F6                   .dbline 264
 02F6           ;                                                       break;
 02F6 07C0              xjmp L72
 02F8           L71:
 02F8                   .dbline 265
 02F8           ;               default                 :       if (TimerIntCounter & 0x10)
 02F8 20900000          lds R2,_TimerIntCounter
 02FC 24FE              sbrs R2,4
 02FE 02C0              rjmp L81
 0300                   .dbline 266
 0300           ;                                                               RLed_On;
 0300 C598              cbi 0x18,5
 0302 01C0              xjmp L72
 0304           L81:
 0304                   .dbline 268
 0304           ;                                                       else
 0304           ;                                                               RLed_Off;
 0304 C59A              sbi 0x18,5
 0306                   .dbline 269
 0306           ;                                                       break;
 0306           L72:
 0306                   .dbline 272
 0306           ;       }
 0306           ; 
 0306           ;       switch (PPP.Stage)
 0306 40910900          lds R20,_PPP+9
 030A 5527              clr R21
 030C 4030              cpi R20,0
 030E 4507              cpc R20,R21
 0310 49F0              breq L88
 0312           X4:
 0312 4030              cpi R20,0
 0314 E0E0              ldi R30,0
 0316 5E07              cpc R21,R30
 0318 7CF0              brlt L84
 031A           L94:
 031A 4530              cpi R20,5
 031C E0E0              ldi R30,0
 031E 5E07              cpc R21,R30
 0320 19F0              breq L89
 0322 0AC0              xjmp L84
 0324           X5:
 0324                   .dbline 273
 0324           ;       {
 0324           L88:
 0324                   .dbline 274
 0324           ;               case PPPS_None  :       YLed_Off;
 0324 C69A              sbi 0x18,6
 0326                   .dbline 275
 0326           ;                                                       break;
 0326 0FC0              xjmp L85
 0328           L89:
 0328                   .dbline 276
 0328           ;               case PPPS_IP    :       if (TimerIntCounter & 0x50)
 0328 80910000          lds R24,_TimerIntCounter
 032C 8075              andi R24,80
 032E 11F0              breq L90
 0330                   .dbline 277
 0330           ;                                                               YLed_On;
 0330 C698              cbi 0x18,6
 0332 09C0              xjmp L85
 0334           L90:
 0334                   .dbline 279
 0334           ;                                                       else
 0334           ;                                                               YLed_Off;
 0334 C69A              sbi 0x18,6
 0336                   .dbline 280
 0336           ;                                                       break;
 0336 07C0              xjmp L85
 0338           L84:
 0338                   .dbline 281
 0338           ;               default                 :       if (TimerIntCounter & 0x04)
 0338 20900000          lds R2,_TimerIntCounter
 033C 22FE              sbrs R2,2
 033E 02C0              rjmp L92
 0340                   .dbline 282
 0340           ;                                                               YLed_On;
 0340 C698              cbi 0x18,6
 0342 01C0              xjmp L85

⌨️ 快捷键说明

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