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

📄 main.lis

📁 一个6缸发动机的ECU控制程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 02EA 08EE              ldi R16,1000
 02EC 13E0              ldi R17,3
 02EE 00D0              rcall empy16s
 02F0 C801              movw R24,R16
 02F2 8257              subi R24,114
 02F4 9140              sbci R25,1
 02F6 90930F00          sts _CPump1Cyc+1,R25
 02FA 80930E00          sts _CPump1Cyc,R24
 02FE                   .dbline 194
 02FE           ;    CPump1CycH = (CPump1Cyc >> 8);
 02FE 1C01              movw R2,R24
 0300 232C              mov R2,R3
 0302 3324              clr R3
 0304 30921100          sts _CPump1CycH+1,R3
 0308 20921000          sts _CPump1CycH,R2
 030C                   .dbline 195
 030C           ;    CSpray1On = (unsigned int)(tSpray1On  * 100 );
 030C 84E6              ldi R24,100
 030E 0A80              ldd R0,y+2
 0310 809D              mul R24,R0
 0312 10920900          sts _CSpray1On+1,R1
 0316 00920800          sts _CSpray1On,R0
 031A                   .dbline 196
 031A           ;    CSpray1Cyc = (unsigned long )tSpray1Cyc * 1000 ;
 031A 2B80              ldd R2,y+3
 031C 3C80              ldd R3,y+4
 031E 4424              clr R4
 0320 5524              clr R5
 0322 48EE              ldi R20,232
 0324 53E0              ldi R21,3
 0326 60E0              ldi R22,0
 0328 70E0              ldi R23,0
 032A 5A92              st -y,R5
 032C 4A92              st -y,R4
 032E 3A92              st -y,R3
 0330 2A92              st -y,R2
 0332 8A01              movw R16,R20
 0334 9B01              movw R18,R22
 0336 00D0              rcall empy32u
 0338 10930500          sts _CSpray1Cyc+1,R17
 033C 00930400          sts _CSpray1Cyc,R16
 0340 30930700          sts _CSpray1Cyc+2+1,R19
 0344 20930600          sts _CSpray1Cyc+2,R18
 0348                   .dbline 197
 0348           ;    CPump1On = tPump1On * 1000;
 0348 2A2D              mov R18,R10
 034A 3327              clr R19
 034C 08EE              ldi R16,1000
 034E 13E0              ldi R17,3
 0350 00D0              rcall empy16s
 0352 10931300          sts _CPump1On+1,R17
 0356 00931200          sts _CPump1On,R16
 035A                   .dbline 198
 035A           ;    CPump1OnH = (CPump1On >> 8);
 035A 1801              movw R2,R16
 035C 232C              mov R2,R3
 035E 3324              clr R3
 0360 30921500          sts _CPump1OnH+1,R3
 0364 20921400          sts _CPump1OnH,R2
 0368                   .dbline 200
 0368           ;    
 0368           ;    Spray2Num = (int)spray2NumL + ((int)spray2NumH << 8);
 0368 2E2C              mov R2,R14
 036A 3324              clr R3
 036C 322C              mov R3,R2
 036E 2224              clr R2
 0370 4C2C              mov R4,R12
 0372 5524              clr R5
 0374 420C              add R4,R2
 0376 531C              adc R5,R3
 0378 1201              movw R2,R4
 037A 4424              clr R4
 037C 37FC              sbrc R3,7
 037E 4094              com R4
 0380 5524              clr R5
 0382 47FC              sbrc R4,7
 0384 5094              com R5
 0386 30922B00          sts _Spray2Num+1,R3
 038A 20922A00          sts _Spray2Num,R2
 038E 50922D00          sts _Spray2Num+2+1,R5
 0392 40922C00          sts _Spray2Num+2,R4
 0396                   .dbline 201
 0396           ;    Pump2Num = Spray2Num;
 0396 30923500          sts _Pump2Num+1,R3
 039A 20923400          sts _Pump2Num,R2
 039E 50923700          sts _Pump2Num+2+1,R5
 03A2 40923600          sts _Pump2Num+2,R4
 03A6                   .dbline 202
 03A6           ;    PPump2Num = Pump2Num;
 03A6 40903600          lds R4,_Pump2Num+2
 03AA 50903700          lds R5,_Pump2Num+2+1
 03AE 20903400          lds R2,_Pump2Num
 03B2 30903500          lds R3,_Pump2Num+1
 03B6 30924300          sts _PPump2Num+1,R3
 03BA 20924200          sts _PPump2Num,R2
 03BE 50924500          sts _PPump2Num+2+1,R5
 03C2 40924400          sts _PPump2Num+2,R4
 03C6                   .dbline 203
 03C6           ;    SSpray2Num = Spray2Num;
 03C6 40902C00          lds R4,_Spray2Num+2
 03CA 50902D00          lds R5,_Spray2Num+2+1
 03CE 20902A00          lds R2,_Spray2Num
 03D2 30902B00          lds R3,_Spray2Num+1
 03D6 30924700          sts _SSpray2Num+1,R3
 03DA 20924600          sts _SSpray2Num,R2
 03DE 50924900          sts _SSpray2Num+2+1,R5
 03E2 40924800          sts _SSpray2Num+2,R4
 03E6                   .dbline 215
 03E6           ;    //Pump2Num =  Pump1Num;
 03E6           ;    //CPump2Cyc = tPump2Cyc * 1000 -350;
 03E6           ;    //CPump2Cyc = CPump1Cyc;
 03E6           ;    //CPump2CycH = (CPump2Cyc >> 8);
 03E6           ;    //CPump2CycH =CPump1CycH ;
 03E6           ;    //CSpray2On = (unsigned int)(tSpray2On  * 100 );
 03E6           ;    //CSpray2Cyc = (unsigned long )tSpray2Cyc * 1000 ;
 03E6           ;    //CPump2On = tPump2On * 1000 -200;
 03E6           ;    //CPump2On = CPump1On;
 03E6           ;    //CPump2OnH = (CPump2On >> 8);
 03E6           ;    //CPump2OnH = CPump1OnH;
 03E6           ;        HighByte1 = (unsigned char )(CSpray1Cyc >> 16);
 03E6 40900600          lds R4,_CSpray1Cyc+2
 03EA 50900700          lds R5,_CSpray1Cyc+2+1
 03EE 20900400          lds R2,_CSpray1Cyc
 03F2 30900500          lds R3,_CSpray1Cyc+1
 03F6 1201              movw R2,R4
 03F8 4424              clr R4
 03FA 5524              clr R5
 03FC 20921600          sts _HighByte1,R2
 0400                   .dbline 216
 0400           ;        HighByte2 = (unsigned char )(CSpray2Cyc >> 16);
 0400 40903000          lds R4,_CSpray2Cyc+2
 0404 50903100          lds R5,_CSpray2Cyc+2+1
 0408 20902E00          lds R2,_CSpray2Cyc
 040C 30902F00          lds R3,_CSpray2Cyc+1
 0410 1201              movw R2,R4
 0412 4424              clr R4
 0414 5524              clr R5
 0416 20924000          sts _HighByte2,R2
 041A                   .dbline 219
 041A           ;  
 041A           ;   
 041A           ;    CLI();                //禁止中断,保证以下发送的两字节连续
 041A F894              cli
 041C                   .dbline 220
 041C           ;    putchar(REVSUCCEED);  //回传接收成功标志
 041C 0CEF              ldi R16,252
 041E CADE              rcall _putchar
 0420                   .dbline 221
 0420           ;    putchar(REVSUCCEED);  //回传接收成功标志
 0420 0CEF              ldi R16,252
 0422 C8DE              rcall _putchar
 0424                   .dbline 223
 0424           ; 
 0424           ;    if(IisOn)
 0424 0880              ldd R0,y+0
 0426 0020              tst R0
 0428 09F0              breq L50
 042A           X21:
 042A                   .dbline 224
 042A           ;      SEI();
 042A 7894              sei
 042C           L50:
 042C                   .dbline 225
 042C           ;  }
 042C           L47:
 042C                   .dbline 226
 042C           ;  FlashRxBuf(); 
 042C E9DD              rcall _FlashRxBuf
 042E                   .dbline -2
 042E           L43:
 042E                   .dbline 0 ; func end
 042E 2796              adiw R28,7
 0430 00C0              rjmp pop_xgsetF0FC
 0432                   .dbsym r spray2NumH 14 c
 0432                   .dbsym r spray2NumL 12 c
 0432                   .dbsym l spray1NumH 6 c
 0432                   .dbsym l spray1NumL 5 c
 0432                   .dbsym r tPump1On 10 c
 0432                   .dbsym l tSpray1Cyc 3 i
 0432                   .dbsym l tSpray1On 2 c
 0432                   .dbsym l tPump1Cyc 1 c
 0432                   .dbsym l IisOn 0 c
 0432                   .dbend
 0432                   .dbfile C:\DOCUME~1\Administrator\桌面\程序\油泵油嘴实验台\可用\油泵油~2\timer1.c
 0432                   .dbfunc e timer0_init _timer0_init fV
                        .even
 0432           _timer0_init::
 0432                   .dbline -1
 0432                   .dbline 12
 0432           ; #include <iom88v.h>
 0432           ; #include <macros.h>
 0432           ; #include <uart.h>
 0432           ; #include <timer1.h>
 0432           ; 
 0432           ; 
 0432           ; //TIMER0 initialize - prescale:8
 0432           ; // WGM:  Normal
 0432           ; // desired value: 1Hz
 0432           ; // actual value: 1953.125Hz (99.9%)
 0432           ; void timer0_init(void)
 0432           ; {
 0432                   .dbline 13
 0432           ;  TCCR0B = 0x00; //stop
 0432 2224              clr R2
 0434 25BC              out 0x25,R2
 0436                   .dbline 14
 0436           ;  TCNT0 = 0x00; //set count
 0436 26BC              out 0x26,R2
 0438                   .dbline 15
 0438           ;  TCCR0A = 0x00; 
 0438 24BC              out 0x24,R2
 043A                   .dbline 16
 043A           ;  TCCR0B = 0x02; //start timer
 043A 82E0              ldi R24,2
 043C 85BD              out 0x25,R24
 043E                   .dbline 17
 043E           ;  OCR0B = 0x60;
 043E 80E6              ldi R24,96
 0440 88BD              out 0x28,R24
 0442                   .dbline 18
 0442           ;  OCR0A = 0x03;
 0442 83E0              ldi R24,3
 0444 87BD              out 0x27,R24
 0446                   .dbline -2
 0446           L52:
 0446                   .dbline 0 ; func end
 0446 0895              ret
 0448                   .dbend
 0448                   .dbfunc e timer1_init _timer1_init fV
                        .even
 0448           _timer1_init::
 0448                   .dbline -1
 0448                   .dbline 26
 0448           ; }
 0448           ; 
 0448           ; //TIMER1 initialize - prescale:8
 0448           ; // WGM: 0) Normal, TOP=0xFFFF
 0448           ; // desired value: 1MHz
 0448           ; // actual value: Out of range
 0448           ; void timer1_init(void)
 0448           ; {
 0448                   .dbline 27
 0448           ;  TCCR1B = 0x00; //stop
 0448 2224              clr R2
 044A 20928100          sts 129,R2
 044E                   .dbline 28
 044E           ;  TCNT1H = 0x00 /*INVALID SETTING*/; //setup
 044E 20928500          sts 133,R2
 0452                   .dbline 29
 0452           ;  TCNT1L = 0x00 /*INVALID SETTING*/;
 0452 20928400          sts 132,R2
 0456                   .dbline 30
 0456           ;  OCR1AH = 0x00 /*INVALID SETTING*/;
 0456 20928900          sts 137,R2
 045A                   .dbline 31
 045A           ;  OCR1AL = 0x20 /*INVALID SETTING*/;
 045A 80E2              ldi R24,32
 045C 80938800          sts 136,R24
 0460                   .dbline 32
 0460           ;  OCR1BH = 0x02 /*INVALID SETTING*/;
 0460 82E0              ldi R24,2
 0462 80938B00          sts 139,R24
 0466                   .dbline 33
 0466           ;  OCR1BL = 0xFF /*INVALID SETTING*/;
 0466 8FEF              ldi R24,255
 0468 80938A00          sts 138,R24
 046C                   .dbline 34
 046C           ;  ICR1H  = 0x00 /*INVALID SETTING*/;
 046C 20928700          sts 135,R2
 0470                   .dbline 35
 0470           ;  ICR1L  = 0x00 /*INVALID SETTING*/;
 0470 20928600          sts 134,R2
 0474                   .dbline 36
 0474           ;  TCCR1A = 0x00;
 0474 20928000          sts 128,R2
 0478                   .dbline 37
 0478           ;  TCCR1B = 0x02; //start Timer
 0478 82E0              ldi R24,2
 047A 80938100          sts 129,R24
 047E                   .dbline -2
 047E           L53:
 047E                   .dbline 0 ; func end
 047E 0895              ret
 0480                   .dbend
                        .area vector(rom, abs)
                        .org 22
 0016 40C2              rjmp _timer1_compa_isr
                        .area text(rom, con, rel)
 0480                   .dbfile C:\DOCUME~1\Administrator\桌面\程序\油泵油嘴实验台\可用\油泵油~2\timer1.c
 0480                   .dbfunc e timer1_compa_isr _timer1_compa_isr fV
                        .even
 0480           _timer1_compa_isr::
 0480 0A92              st -y,R0
 0482 1A92              st -y,R1
 0484 2A92              st -y,R2
 0486 3A92              st -y,R3
 0488 4A92              st -y,R4
 048A 5A92              st -y,R5
 048C 8A92              st -y,R8
 048E 9A92              st -y,R9
 0490 0A93              st -y,R16
 0492 1A93              st -y,R17
 0494 2A93              st -y,R18
 0496 3A93              st -y,R19
 0498 8A93              st -y,R24
 049A 9A93              st -y,R25
 049C AA93              st -y,R26
 049E BA93              st -y,R27
 04A0 EA93              st -y,R30
 04A2 0FB6              in R0,0x3f
 04A4 0A92              st -y,R0
 04A6 AA92              st -y,R10
 04A8 BA92              st -y,R11
 04AA                   .dbline -1
 04AA                   .dbline 115
 04AA           ; }
 04AA           ; /*#pragma interrupt_handler timer0_compb_isr:iv_TIM0_COMPA
 04AA           ; void timer0_compb_isr(void) ///wy修改
 04AA           ; {

⌨️ 快捷键说明

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