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

📄 coder.lis

📁 m8改造4VF遥控器
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 01DE 2224              clr R2
 01E0 22BE              out 0x32,R2
 01E2                   .dbline 200
 01E2           ;  input=1;
 01E2 81E0              ldi R24,1
 01E4 80931300          sts _input,R24
 01E8                   .dbline 201
 01E8           ;  if(train)//先不忙发送
 01E8 20901400          lds R2,_train
 01EC 2220              tst R2
 01EE 99F0              breq L35
 01F0                   .dbline 202
 01F0           ;   switch(IN1)
 01F0 00B3              in R16,0x10
 01F2 1127              clr R17
 01F4 0870              andi R16,8
 01F6 1070              andi R17,0
 01F8 0030              cpi R16,0
 01FA 0107              cpc R16,R17
 01FC 49F0              breq L40
 01FE           X5:
 01FE 0030              cpi R16,0
 0200 E0E0              ldi R30,0
 0202 1E07              cpc R17,R30
 0204 44F0              brlt L37
 0206           L42:
 0206 0830              cpi R16,8
 0208 E0E0              ldi R30,0
 020A 1E07              cpc R17,R30
 020C 19F0              breq L41
 020E 03C0              rjmp L37
 0210           X6:
 0210                   .dbline 203
 0210           ;  {
 0210           L40:
 0210                   .dbline 205
 0210           ;  case 0:
 0210           ;  OUTH;
 0210 979A              sbi 0x12,7
 0212                   .dbline 206
 0212           ;  break;
 0212 01C0              rjmp L38
 0214           L41:
 0214                   .dbline 208
 0214           ;  case 0x08:
 0214           ;  OUTL;
 0214 9798              cbi 0x12,7
 0216                   .dbline 209
 0216           ;  }
 0216           L37:
 0216           L38:
 0216           L35:
 0216                   .dbline -2
 0216           L34:
 0216 2990              ld R2,y+
 0218 2FBE              out 0x3f,R2
 021A E991              ld R30,y+
 021C 8991              ld R24,y+
 021E 1991              ld R17,y+
 0220 0991              ld R16,y+
 0222 2990              ld R2,y+
 0224                   .dbline 0 ; func end
 0224 1895              reti
 0226                   .dbend
 0226                   .dbfunc e Putchar _Putchar fV
 0226           ;              c -> R16
                        .even
 0226           _Putchar::
 0226                   .dbline -1
 0226                   .dbline 216
 0226           ;  
 0226           ; }
 0226           ; 
 0226           ; 
 0226           ; 
 0226           ; void Putchar (Uchar c)
 0226           ; {
 0226           L44:
 0226                   .dbline 217
 0226           L45:
 0226                   .dbline 217
 0226           ; while(!(UCSRA&(1<<UDRE)));
 0226 5D9B              sbis 0xb,5
 0228 FECF              rjmp L44
 022A                   .dbline 218
 022A           ; UDR=c;
 022A 0CB9              out 0xc,R16
 022C                   .dbline -2
 022C           L43:
 022C                   .dbline 0 ; func end
 022C 0895              ret
 022E                   .dbsym r c 16 c
 022E                   .dbend
 022E                   .dbfunc e ReadADC _ReadADC fi
 022E           ;           int2 -> R20,R21
 022E           ;           int1 -> R22,R23
 022E           ;        channel -> R16
                        .even
 022E           _ReadADC::
 022E 00D0              rcall push_gset2
 0230                   .dbline -1
 0230                   .dbline 223
 0230           ; }
 0230           ; 
 0230           ; 
 0230           ; Uint ReadADC (Uchar channel)
 0230           ; {
 0230                   .dbline 225
 0230           ; Uint int1,int2;
 0230           ; ADMUX&=~0x1F;
 0230 87B1              in R24,0x7
 0232 807E              andi R24,224
 0234 87B9              out 0x7,R24
 0236                   .dbline 226
 0236           ; ADMUX|=channel;
 0236 27B0              in R2,0x7
 0238 202A              or R2,R16
 023A 27B8              out 0x7,R2
 023C                   .dbline 227
 023C           ; ADCSRA|=0x40;
 023C 369A              sbi 0x6,6
 023E           L48:
 023E                   .dbline 228
 023E                   .dbline 228
 023E           L49:
 023E                   .dbline 228
 023E           ; while(~ADCSRA&0x10){}
 023E 26B0              in R2,0x6
 0240 3324              clr R3
 0242 2094              com R2
 0244 3094              com R3
 0246 24FC              sbrc R2,4
 0248 FACF              rjmp L48
 024A                   .dbline 229
 024A           ; ADCSRA|=0x10;
 024A 349A              sbi 0x6,4
 024C                   .dbline 230
 024C           ; int2=ADCL;
 024C 44B1              in R20,0x4
 024E 5527              clr R21
 0250                   .dbline 231
 0250           ; int1=ADCH;
 0250 65B1              in R22,0x5
 0252 7727              clr R23
 0254                   .dbline 232
 0254           ; int1<<=8;
 0254 762F              mov R23,R22
 0256 6627              clr R22
 0258                   .dbline 233
 0258           ; return (int1+int2);
 0258 8B01              movw R16,R22
 025A 040F              add R16,R20
 025C 151F              adc R17,R21
 025E                   .dbline -2
 025E           L47:
 025E 00D0              rcall pop_gset2
 0260                   .dbline 0 ; func end
 0260 0895              ret
 0262                   .dbsym r int2 20 i
 0262                   .dbsym r int1 22 i
 0262                   .dbsym r channel 16 c
 0262                   .dbend
 0262                   .dbfunc e main _main fI
 0262           ; warning_frequency -> R10
 0262           ;        ledonof -> y+13
 0262           ; warning_counter -> y+12
 0262           ;      battcheck -> y+11
 0262           ;         youmen -> R14,R15
 0262           ;      safedelay -> y+10
 0262           ;           safe -> y+9
 0262           ;           batt -> R22,R23
 0262           ;        checken -> y+8
 0262           ;           temp -> y+0
 0262           ;        counter -> R20
                        .even
 0262           _main::
 0262 2E97              sbiw R28,14
 0264                   .dbline -1
 0264                   .dbline 238
 0264           ; }
 0264           ; 
 0264           ; 
 0264           ; main()
 0264           ; {
 0264                   .dbline 244
 0264           ; 
 0264           ; Uint batt;//电量
 0264           ; Uint temp[4];//滤波用
 0264           ; Uint youmen ;//油门缓存
 0264           ; Uchar counter ;//采集计数
 0264           ; Uchar safe=1,safedelay=0;//油门保护
 0264 0024              clr R0
 0266 0394              inc R0
 0268 0986              std y+9,R0
 026A                   .dbline 244
 026A 0024              clr R0
 026C 0A86              std y+10,R0
 026E                   .dbline 246
 026E           ; Uchar warning_frequency;//警告频率
 026E           ; Uchar warning_counter=0;
 026E 0C86              std y+12,R0
 0270                   .dbline 247
 0270           ; Uchar ledonof=0;
 0270 0D86              std y+13,R0
 0272                   .dbline 248
 0272           ; Uchar battcheck=1;//检测电量许可
 0272 0024              clr R0
 0274 0394              inc R0
 0276 0B86              std y+11,R0
 0278                   .dbline 249
 0278           ; Uchar checken=200;//等待电压稳定
 0278 88EC              ldi R24,200
 027A 8887              std y+8,R24
 027C                   .dbline 251
 027C           ; 
 027C           ; init_devices();
 027C 6EDF              rcall _init_devices
 027E 25C1              rjmp L53
 0280           L52:
 0280                   .dbline 255
 0280           ; 
 0280           ; 
 0280           ; while(1)
 0280           ; {
 0280                   .dbline 258
 0280           ; 
 0280           ; 
 0280           ; for(counter=0;counter<=3;counter++)
 0280 4427              clr R20
 0282 33C0              rjmp L58
 0284           L55:
 0284                   .dbline 259
 0284           ; {
 0284                   .dbline 260
 0284           ; temp[counter]=ReadADC (counter);
 0284 042F              mov R16,R20
 0286 D3DF              rcall _ReadADC
 0288 82E0              ldi R24,2
 028A 849F              mul R24,R20
 028C F001              movw R30,R0
 028E CE01              movw R24,R28
 0290 E80F              add R30,R24
 0292 F91F              adc R31,R25
 0294 1183              std z+1,R17
 0296 0083              std z+0,R16
 0298                   .dbline 261
 0298 82E0              ldi R24,2
 029A 849F              mul R24,R20
 029C CE01              movw R24,R28
 029E F001              movw R30,R0
 02A0 E80F              add R30,R24
 02A2 F91F              adc R31,R25
 02A4 2080              ldd R2,z+0
 02A6 3180              ldd R3,z+1
 02A8 80E0              ldi R24,<_time
 02AA 90E0              ldi R25,>_time
 02AC F001              movw R30,R0
 02AE E80F              add R30,R24
 02B0 F91F              adc R31,R25
 02B2 4080              ldd R4,z+0
 02B4 5180              ldd R5,z+1
 02B6 C201              movw R24,R4
 02B8 0196              adiw R24,1
 02BA 8215              cp R24,R2
 02BC 9305              cpc R25,R3
 02BE 28F0              brlo L61
 02C0 C201              movw R24,R4
 02C2 0197              sbiw R24,1
 02C4 2816              cp R2,R24
 02C6 3906              cpc R3,R25
 02C8 78F4              brsh L59
 02CA           L61:
 02CA                   .dbline 261
 02CA           ; if((temp[counter]>time[counter]+1)||(temp[counter]<time[counter]-1))time[counter]=temp[counter];
 02CA 82E0              ldi R24,2
 02CC 849F              mul R24,R20
 02CE CE01              movw R24,R28
 02D0 F001              movw R30,R0
 02D2 E80F              add R30,R24
 02D4 F91F              adc R31,R25
 02D6 2080              ldd R2,z+0
 02D8 3180              ldd R3,z+1
 02DA 80E0              ldi R24,<_time
 02DC 90E0              ldi R25,>_time
 02DE F001              movw R30,R0
 02E0 E80F              add R30,R24
 02E2 F91F              adc R31,R25
 02E4 3182              std z+1,R3
 02E6 2082              std z+0,R2
 02E8           L59:
 02E8                   .dbline 263
 02E8           L56:
 02E8                   .dbline 258
 02E8 4395              inc R20
 02EA           L58:
 02EA                   .dbline 258
 02EA 83E0              ldi R24,3
 02EC 8417              cp R24,R20
 02EE 08F0              brlo X8
 02F0 C9CF              rjmp L55
 02F2           X8:
 02F2                   .dbline 265
 02F2           ; 
 02F2           ; }
 02F2           ; 
 02F2           ; batt=ReadADC (4);
 02F2 04E0              ldi R16,4
 02F4 9CDF              rcall _ReadADC
 02F6 B801              movw R22,R16
 02F8                   .dbline 267
 02F8 B19B              sbis 0x16,1
 02FA 07C0              rjmp L62
 02FC                   .dbline 267
 02FC 84E6              ldi R24,100
 02FE 90E0              ldi R25,0
 0300 90930900          sts _time+8+1,R25
 0304 80930800          sts _time+8,R24
 0308 06C0              rjmp L63
 030A           L62:
 030A                   .dbline 267
 030A           ; 
 030A           ; if(BUTTON1)time[4]=SWL_time;else time[4]=SWH_time;
 030A 84E8              ldi R24,900
 030C 93E0              ldi R25,3
 030E 90930900          sts _time+8+1,R25
 0312 80930800          sts _time+8,R24
 0316           L63:
 0316                   .dbline 268
 0316 B29B              sbis 0x16,2
 0318 07C0              rjmp L66
 031A                   .dbline 268
 031A 84E6              ldi R24,100
 031C 90E0              ldi R25,0
 031E 90930B00          sts _time+10+1,R25
 0322 80930A00          sts _time+10,R24
 0326 06C0              rjmp L67
 0328           L66:
 0328                   .dbline 268
 0328           ; if(BUTTON2)time[5]=SWL_time;else time[5]=SWH_time;
 0328 84E8              ldi R24,900
 032A 93E0              ldi R25,3
 032C 90930B00          sts _time+10+1,R25
 0330 80930A00          sts _time+10,R24
 0334           L67:
 0334                   .dbline 269
 0334 B39B              sbis 0x16,3
 0336 07C0              rjmp L70
 0338                   .dbline 269
 0338 84E6              ldi R24,100
 033A 90E0              ldi R25,0
 033C 90930D00          sts _time+12+1,R25

⌨️ 快捷键说明

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