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

📄 coder.lis

📁 m8改造4VF遥控器
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0340 80930C00          sts _time+12,R24
 0344 06C0              rjmp L71
 0346           L70:
 0346                   .dbline 269
 0346           ; if(BUTTON3)time[6]=SWL_time;else time[6]=SWH_time;
 0346 84E8              ldi R24,900
 0348 93E0              ldi R25,3
 034A 90930D00          sts _time+12+1,R25
 034E 80930C00          sts _time+12,R24
 0352           L71:
 0352                   .dbline 270
 0352 B49B              sbis 0x16,4
 0354 07C0              rjmp L74
 0356                   .dbline 270
 0356 84E6              ldi R24,100
 0358 90E0              ldi R25,0
 035A 90930F00          sts _time+14+1,R25
 035E 80930E00          sts _time+14,R24
 0362 06C0              rjmp L75
 0364           L74:
 0364                   .dbline 270
 0364           ; if(BUTTON4)time[7]=SWL_time;else time[7]=SWH_time;
 0364 84E8              ldi R24,900
 0366 93E0              ldi R25,3
 0368 90930F00          sts _time+14+1,R25
 036C 80930E00          sts _time+14,R24
 0370           L75:
 0370                   .dbline 272
 0370           ; 
 0370           ; time[8]=12000-time[0]-time[1]-time[2]-time[3]-time[4]-time[5]-time[6]-time[7];
 0370 20900000          lds R2,_time
 0374 30900100          lds R3,_time+1
 0378 80EE              ldi R24,12000
 037A 9EE2              ldi R25,46
 037C 8219              sub R24,R2
 037E 9309              sbc R25,R3
 0380 20900200          lds R2,_time+2
 0384 30900300          lds R3,_time+2+1
 0388 8219              sub R24,R2
 038A 9309              sbc R25,R3
 038C 20900400          lds R2,_time+4
 0390 30900500          lds R3,_time+4+1
 0394 8219              sub R24,R2
 0396 9309              sbc R25,R3
 0398 20900600          lds R2,_time+6
 039C 30900700          lds R3,_time+6+1
 03A0 8219              sub R24,R2
 03A2 9309              sbc R25,R3
 03A4 20900800          lds R2,_time+8
 03A8 30900900          lds R3,_time+8+1
 03AC 8219              sub R24,R2
 03AE 9309              sbc R25,R3
 03B0 20900A00          lds R2,_time+10
 03B4 30900B00          lds R3,_time+10+1
 03B8 8219              sub R24,R2
 03BA 9309              sbc R25,R3
 03BC 20900C00          lds R2,_time+12
 03C0 30900D00          lds R3,_time+12+1
 03C4 8219              sub R24,R2
 03C6 9309              sbc R25,R3
 03C8 20900E00          lds R2,_time+14
 03CC 30900F00          lds R3,_time+14+1
 03D0 8219              sub R24,R2
 03D2 9309              sbc R25,R3
 03D4 90931100          sts _time+16+1,R25
 03D8 80931000          sts _time+16,R24
 03DC                   .dbline 274
 03DC           ; 
 03DC           ; WDR();
 03DC A895              wdr
 03DE                   .dbline 276
 03DE           ; 
 03DE           ; if(safe)
 03DE 0984              ldd R0,y+9
 03E0 0020              tst R0
 03E2 C9F0              breq L86
 03E4                   .dbline 277
 03E4           ; {
 03E4                   .dbline 278
 03E4           ; youmen=time[2];
 03E4 E0900400          lds R14,_time+4
 03E8 F0900500          lds R15,_time+4+1
 03EC                   .dbline 279
 03EC           ; time[2]=0;
 03EC 2224              clr R2
 03EE 3324              clr R3
 03F0 30920500          sts _time+4+1,R3
 03F4 20920400          sts _time+4,R2
 03F8                   .dbline 280
 03F8           ; if(safedelay>3)
 03F8 83E0              ldi R24,3
 03FA 0A84              ldd R0,y+10
 03FC 8015              cp R24,R0
 03FE 40F4              brsh L90
 0400                   .dbline 281
 0400           ;  {
 0400                   .dbline 282
 0400           ;   if(youmen<50)safe=0;
 0400 C701              movw R24,R14
 0402 8233              cpi R24,50
 0404 E0E0              ldi R30,0
 0406 9E07              cpc R25,R30
 0408 30F4              brsh L91
 040A                   .dbline 282
 040A 0024              clr R0
 040C 0986              std y+9,R0
 040E                   .dbline 283
 040E           ;  }
 040E 03C0              rjmp L91
 0410           L90:
 0410                   .dbline 284
 0410           ; else safedelay++;
 0410 0A84              ldd R0,y+10
 0412 0394              inc R0
 0414 0A86              std y+10,R0
 0416           L91:
 0416                   .dbline 285
 0416           ; }
 0416           L86:
 0416                   .dbline 288
 0416           ; 
 0416           ; 
 0416           ; if(!(BUTTON5))
 0416 B599              sbic 0x16,5
 0418 16C0              rjmp L94
 041A                   .dbline 289
 041A           ; {
 041A                   .dbline 290
 041A           ; TCCR0 = 0x05; //start timer//开始判断有无信号
 041A 85E0              ldi R24,5
 041C 83BF              out 0x33,R24
 041E                   .dbline 291
 041E           ; GICR  = 0xC0;//外中断开
 041E 80EC              ldi R24,192
 0420 8BBF              out 0x3b,R24
 0422                   .dbline 292
 0422           ;   if (input)
 0422 20901300          lds R2,_input
 0426 2220              tst R2
 0428 41F0              breq L96
 042A                   .dbline 293
 042A           ;   {
 042A                   .dbline 294
 042A           ;   TCCR1B = 0x00;//原来的信号发送关闭
 042A 2224              clr R2
 042C 2EBC              out 0x2e,R2
 042E                   .dbline 295
 042E           ;   train=1;//开始训练
 042E 81E0              ldi R24,1
 0430 80931400          sts _train,R24
 0434                   .dbline 296
 0434           ;   ch_counter=0;//等待放行
 0434 20921200          sts _ch_counter,R2
 0438                   .dbline 297
 0438           ;   }
 0438 10C0              rjmp L95
 043A           L96:
 043A                   .dbline 299
 043A           ;   else
 043A           ;   {
 043A                   .dbline 300
 043A           ;   TCCR1B = 0x02;
 043A 82E0              ldi R24,2
 043C 8EBD              out 0x2e,R24
 043E                   .dbline 301
 043E           ;   train=0;//退出时关闭训练
 043E 2224              clr R2
 0440 20921400          sts _train,R2
 0444                   .dbline 303
 0444           ;    ////原来的信号发送打开
 0444           ;   }
 0444                   .dbline 304
 0444           ; }//if(!(BUTTON5))
 0444 0AC0              rjmp L95
 0446           L94:
 0446                   .dbline 306
 0446           ; else
 0446           ; {
 0446                   .dbline 307
 0446           ; GICR  = 0x00;//外中断关
 0446 2224              clr R2
 0448 2BBE              out 0x3b,R2
 044A                   .dbline 308
 044A           ; TCCR0 = 0x00;
 044A 23BE              out 0x33,R2
 044C                   .dbline 309
 044C           ; TCNT0 = 0x00;
 044C 22BE              out 0x32,R2
 044E                   .dbline 310
 044E           ; train=0;
 044E 20921400          sts _train,R2
 0452                   .dbline 311
 0452           ; input=0;
 0452 20921300          sts _input,R2
 0456                   .dbline 312
 0456           ; TCCR1B = 0x02;
 0456 82E0              ldi R24,2
 0458 8EBD              out 0x2e,R24
 045A                   .dbline 313
 045A           ; }
 045A           L95:
 045A                   .dbline 317
 045A           ; 
 045A           ; ////////////////////////////
 045A           ; 
 045A           ; if(checken==0)
 045A 0884              ldd R0,y+8
 045C 0020              tst R0
 045E 71F5              brne L98
 0460                   .dbline 318
 0460           ; {
 0460                   .dbline 319
 0460           ; if(battcheck)
 0460 0B84              ldd R0,y+11
 0462 0020              tst R0
 0464 71F1              breq L113
 0466                   .dbline 320
 0466           ; {
 0466                   .dbline 321
 0466           ; if(batt<450) //进入报警状态
 0466 623C              cpi R22,194
 0468 E1E0              ldi R30,1
 046A 7E07              cpc R23,R30
 046C 28F5              brsh L102
 046E                   .dbline 322
 046E           ; {
 046E                   .dbline 323
 046E           ;   if(batt>393) //进入频闪状态
 046E 89E8              ldi R24,393
 0470 91E0              ldi R25,1
 0472 8617              cp R24,R22
 0474 9707              cpc R25,R23
 0476 E0F4              brsh L104
 0478                   .dbline 324
 0478           ; {
 0478                   .dbline 325
 0478           ; warning_frequency=batt-390;
 0478 CB01              movw R24,R22
 047A 8658              subi R24,134
 047C 9140              sbci R25,1
 047E A82E              mov R10,R24
 0480                   .dbline 326
 0480           ; warning_counter++;
 0480 0C84              ldd R0,y+12
 0482 0394              inc R0
 0484 0C86              std y+12,R0
 0486                   .dbline 327
 0486           ; if(warning_counter>=warning_frequency)
 0486 0816              cp R0,R24
 0488 E0F0              brlo L113
 048A                   .dbline 328
 048A           ; {
 048A                   .dbline 329
 048A           ; warning_counter=0;
 048A 0024              clr R0
 048C 0C86              std y+12,R0
 048E                   .dbline 330
 048E           ; ledonof=!ledonof;
 048E 0D84              ldd R0,y+13
 0490 0020              tst R0
 0492 21F4              brne L108
 0494 81E0              ldi R24,1
 0496 90E0              ldi R25,0
 0498 6C01              movw R12,R24
 049A 02C0              rjmp L109
 049C           L108:
 049C CC24              clr R12
 049E DD24              clr R13
 04A0           L109:
 04A0 CD86              std y+13,R12
 04A2                   .dbline 331
 04A2           ; if(ledonof)LEDH;
 04A2 0C2C              mov R0,R12
 04A4 CC20              tst R12
 04A6 11F0              breq L110
 04A8                   .dbline 331
 04A8 C09A              sbi 0x18,0
 04AA 0BC0              rjmp L113
 04AC           L110:
 04AC                   .dbline 332
 04AC           ; else LEDL;
 04AC C098              cbi 0x18,0
 04AE                   .dbline 333
 04AE           ; }
 04AE                   .dbline 334
 04AE           ; }
 04AE 09C0              rjmp L113
 04B0           L104:
 04B0                   .dbline 335
 04B0           ;  else {LEDH;battcheck=0; }//进入长亮状态,不允许电压回升
 04B0                   .dbline 335
 04B0 C09A              sbi 0x18,0
 04B2                   .dbline 335
 04B2 0024              clr R0
 04B4 0B86              std y+11,R0
 04B6                   .dbline 335
 04B6                   .dbline 337
 04B6           ; 
 04B6           ; }
 04B6 05C0              rjmp L113
 04B8           L102:
 04B8                   .dbline 339
 04B8           ; 
 04B8           ; else LEDL;  //关闭
 04B8 C098              cbi 0x18,0
 04BA                   .dbline 340
 04BA           ; }
 04BA                   .dbline 341
 04BA           ; }//if(checken==0)
 04BA 03C0              rjmp L113
 04BC           L98:
 04BC                   .dbline 342
 04BC           ; else checken--;
 04BC 0884              ldd R0,y+8
 04BE 0A94              dec R0
 04C0 0886              std y+8,R0
 04C2           L112:
 04C2                   .dbline 347
 04C2           L113:
 04C2                   .dbline 347
 04C2 20901200          lds R2,_ch_counter
 04C6 2220              tst R2
 04C8 E1F7              brne L112
 04CA                   .dbline 349
 04CA           L53:
 04CA                   .dbline 254
 04CA DACE              rjmp L52
 04CC           X7:
 04CC                   .dbline -2
 04CC           L51:
 04CC 2E96              adiw R28,14
 04CE                   .dbline 0 ; func end
 04CE 0895              ret
 04D0                   .dbsym r warning_frequency 10 c
 04D0                   .dbsym l ledonof 13 c
 04D0                   .dbsym l warning_counter 12 c
 04D0                   .dbsym l battcheck 11 c
 04D0                   .dbsym r youmen 14 i
 04D0                   .dbsym l safedelay 10 c
 04D0                   .dbsym l safe 9 c
 04D0                   .dbsym r batt 22 i
 04D0                   .dbsym l checken 8 c
 04D0                   .dbsym l temp 0 A[8:4]i
 04D0                   .dbsym r counter 20 c
 04D0                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\AVR程序\简易编码系统\coder.c
 0000           _time::
 0000                   .blkb 18
 0012                   .dbsym e time _time A[18:9]i

⌨️ 快捷键说明

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