📄 main.lis
字号:
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 + -