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

📄 main.lis

📁 一个6缸发动机的ECU控制程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 04AA           ;   if(Pump1Flag == 1)
 04AA           ;   {
 04AA           ;     if(Cyc1H== 0)
 04AA           ;       { 
 04AA           ;         if((PPump1Num>0)||(Pump1Num==0))
 04AA           ;         { 
 04AA           ;           PORTB |= (1 << PB4); //开启油泵1
 04AA           ;               if (Pump1Num>0)
 04AA           ;               PPump1Num--;
 04AA           ;           OCR0B = TCNT0 + CPump1On;//定时油泵关闭
 04AA           ;           Pump1Flag = 0;
 04AA           ;           On1H = CPump1OnH;
 04AA           ;         }
 04AA           ;         
 04AA           ;       }
 04AA           ;       else                        //动作应该为关闭油泵1
 04AA           ;         Cyc1H--;
 04AA           ;    }
 04AA           ;         
 04AA           ;  else
 04AA           ;    {
 04AA           ;         if(On1H == 0)
 04AA           ;      {
 04AA           ;         PORTB &= ~(1 << PB4); //关闭油泵1
 04AA           ;         OCR0B = TCNT0 + CPump1Cyc - CPump1On;
 04AA           ;         Pump1Flag = 1;
 04AA           ;         Cyc1H = CPump1CycH - CPump1OnH;
 04AA           ;        }
 04AA           ;        else                        //动作应该为关闭油泵1
 04AA           ;         On1H--;
 04AA           ;     }
 04AA           ;  }
 04AA           ; */
 04AA           ; /*#pragma interrupt_handler timer0_compa_isr:iv_TIM0_COMPB
 04AA           ; void timer0_compa_isr(void)
 04AA           ; {
 04AA           ;  //compare TCNT0=OCR0B
 04AA           ;     if(Pump2Flag == 1)           //动作应该为开启油泵2
 04AA           ;       {
 04AA           ;        if(Cyc2H== 0)
 04AA           ;       { 
 04AA           ;       if((PPump2Num>0)||(Pump2Num==0))
 04AA           ;         { 
 04AA           ;         PORTD |= (1 << PD4);   //开启油泵2      
 04AA           ;        if(Pump2Num>0)        
 04AA           ;        PPump2Num--;
 04AA           ;         //定时油泵关闭
 04AA           ;         OCR0A = TCNT0 + CPump2On;
 04AA           ;         Pump2Flag = 0;
 04AA           ;          On2H = CPump2OnH;
 04AA           ;         }
 04AA           ;       }
 04AA           ;        else                        
 04AA           ;         Cyc2H--;
 04AA           ;     }
 04AA           ; 
 04AA           ;       else                        //动作应该为关闭油泵
 04AA           ;       {
 04AA           ;         if(On2H == 0)
 04AA           ;      {
 04AA           ;         PORTD &= ~(1 << PD4);//关闭油泵
 04AA           ;       //OCR0A = TCNT0 + 100; 
 04AA           ;         OCR0A = TCNT0 + CPump2Cyc - CPump2On; 
 04AA           ;         Pump2Flag = 1;
 04AA           ;         Cyc2H = CPump2CycH - CPump2OnH; 
 04AA           ;        }
 04AA           ;        else                      
 04AA           ;         On2H--;
 04AA           ;     }
 04AA           ;  }*/
 04AA           ; 
 04AA           ; #pragma interrupt_handler timer1_compa_isr:iv_TIM1_COMPA
 04AA           ; void timer1_compa_isr(void)
 04AA           ; {
 04AA                   .dbline 117
 04AA           ;  //compare occured TCNT1=OCR1A
 04AA           ;  switch(ActFlag1)
 04AA 00912800          lds R16,_ActFlag1
 04AE 1127              clr R17
 04B0 0030              cpi R16,0
 04B2 0107              cpc R16,R17
 04B4 31F0              breq L58
 04B6           X23:
 04B6 0130              cpi R16,1
 04B8 E0E0              ldi R30,0
 04BA 1E07              cpc R17,R30
 04BC 09F4              brne X30
 04BE 90C0              rjmp L68
 04C0           X30:
 04C0           X24:
 04C0 ACC0              rjmp L56
 04C2           L58:
 04C2                   .dbline 120
 04C2           ;  {
 04C2           ;    case 0:
 04C2           ;      {
 04C2                   .dbline 121
 04C2           ;        if(HighByte1 == 0)     
 04C2 20901600          lds R2,_HighByte1
 04C6 2220              tst R2
 04C8 09F0              breq X31
 04CA 81C0              rjmp L59
 04CC           X31:
 04CC           X25:
 04CC                   .dbline 122
 04CC           ;         {
 04CC                   .dbline 123
 04CC           ;          if((SSpray1Num>0)||(Spray1Num==0))
 04CC 80E0              ldi R24,0
 04CE 90E0              ldi R25,0
 04D0 A0E0              ldi R26,0
 04D2 B0E0              ldi R27,0
 04D4 40901E00          lds R4,_SSpray1Num+2
 04D8 50901F00          lds R5,_SSpray1Num+2+1
 04DC 20901C00          lds R2,_SSpray1Num
 04E0 30901D00          lds R3,_SSpray1Num+1
 04E4 2816              cp R2,R24
 04E6 3906              cpc R3,R25
 04E8 4A06              cpc R4,R26
 04EA 5B06              cpc R5,R27
 04EC 91F4              brne L63
 04EE           X26:
 04EE 80E0              ldi R24,0
 04F0 90E0              ldi R25,0
 04F2 A0E0              ldi R26,0
 04F4 B0E0              ldi R27,0
 04F6 40900200          lds R4,_Spray1Num+2
 04FA 50900300          lds R5,_Spray1Num+2+1
 04FE 20900000          lds R2,_Spray1Num
 0502 30900100          lds R3,_Spray1Num+1
 0506 2816              cp R2,R24
 0508 3906              cpc R3,R25
 050A 4A06              cpc R4,R26
 050C 5B06              cpc R5,R27
 050E 09F0              breq X32
 0510 84C0              rjmp L56
 0512           X32:
 0512           X27:
 0512           L63:
 0512                   .dbline 126
 0512           ;            //喷油器控制引脚置高
 0512           ;                //Spray1Num--;
 0512           ;               { 
 0512                   .dbline 127
 0512           ;                 PORTB = PORTB |(1<<PB2);
 0512 2A9A              sbi 0x5,2
 0514                   .dbline 128
 0514           ;                 PORTB = PORTB |(1<<PB3);
 0514 2B9A              sbi 0x5,3
 0516                   .dbline 129
 0516           ;                 PORTB = PORTB |(1<<PB4);
 0516 2C9A              sbi 0x5,4
 0518                   .dbline 130
 0518           ;                 PORTB = PORTB |(1<<PB1);
 0518 299A              sbi 0x5,1
 051A                   .dbline 131
 051A           ;                 PORTD = PORTD |(1<<PD4);
 051A 5C9A              sbi 0xb,4
 051C                   .dbline 132
 051C           ;                 PORTD = PORTD |(1<<PD5);
 051C 5D9A              sbi 0xb,5
 051E                   .dbline 134
 051E           ;       
 051E           ;                OCR1A = TCNT1 + CSpray1On;    //喷油器关定时
 051E 20900800          lds R2,_CSpray1On
 0522 30900900          lds R3,_CSpray1On+1
 0526 40908400          lds R4,132
 052A 50908500          lds R5,132+1
 052E 420C              add R4,R2
 0530 531C              adc R5,R3
 0532 50928900          sts 136+1,R5
 0536 40928800          sts 136,R4
 053A                   .dbline 135
 053A           ;                if (Spray1Num>0)
 053A 80E0              ldi R24,0
 053C 90E0              ldi R25,0
 053E A0E0              ldi R26,0
 0540 B0E0              ldi R27,0
 0542 40900200          lds R4,_Spray1Num+2
 0546 50900300          lds R5,_Spray1Num+2+1
 054A 20900000          lds R2,_Spray1Num
 054E 30900100          lds R3,_Spray1Num+1
 0552 2816              cp R2,R24
 0554 3906              cpc R3,R25
 0556 4A06              cpc R4,R26
 0558 5B06              cpc R5,R27
 055A C1F0              breq L64
 055C           X28:
 055C                   .dbline 136
 055C           ;                SSpray1Num--;
 055C 81E0              ldi R24,1
 055E 90E0              ldi R25,0
 0560 A0E0              ldi R26,0
 0562 B0E0              ldi R27,0
 0564 40901E00          lds R4,_SSpray1Num+2
 0568 50901F00          lds R5,_SSpray1Num+2+1
 056C 20901C00          lds R2,_SSpray1Num
 0570 30901D00          lds R3,_SSpray1Num+1
 0574 281A              sub R2,R24
 0576 390A              sbc R3,R25
 0578 4A0A              sbc R4,R26
 057A 5B0A              sbc R5,R27
 057C 30921D00          sts _SSpray1Num+1,R3
 0580 20921C00          sts _SSpray1Num,R2
 0584 50921F00          sts _SSpray1Num+2+1,R5
 0588 40921E00          sts _SSpray1Num+2,R4
 058C           L64:
 058C                   .dbline 137
 058C           ;                if(Spray1Num <= 0)
 058C 80E0              ldi R24,0
 058E 90E0              ldi R25,0
 0590 A0E0              ldi R26,0
 0592 B0E0              ldi R27,0
 0594 40900200          lds R4,_Spray1Num+2
 0598 50900300          lds R5,_Spray1Num+2+1
 059C 20900000          lds R2,_Spray1Num
 05A0 30900100          lds R3,_Spray1Num+1
 05A4 2816              cp R2,R24
 05A6 3906              cpc R3,R25
 05A8 4A06              cpc R4,R26
 05AA 5B06              cpc R5,R27
 05AC 61F4              brne L66
 05AE           X29:
 05AE                   .dbline 138
 05AE           ;              Spray1Num = 0;
 05AE 80E0              ldi R24,0
 05B0 90E0              ldi R25,0
 05B2 A0E0              ldi R26,0
 05B4 B0E0              ldi R27,0
 05B6 90930100          sts _Spray1Num+1,R25
 05BA 80930000          sts _Spray1Num,R24
 05BE B0930300          sts _Spray1Num+2+1,R27
 05C2 A0930200          sts _Spray1Num+2,R26
 05C6           L66:
 05C6                   .dbline 140
 05C6           ;          //T1COMPA = OCR1A;
 05C6           ;            ActFlag1 = 1;   //转换到下一动作
 05C6 81E0              ldi R24,1
 05C8 80932800          sts _ActFlag1,R24
 05CC                   .dbline 141
 05CC           ;               }
 05CC                   .dbline 142
 05CC           ;         }
 05CC 26C0              rjmp L56
 05CE           L59:
 05CE                   .dbline 144
 05CE           ;        else
 05CE           ;          {
 05CE                   .dbline 145
 05CE           ;            HighByte1 --;
 05CE 80911600          lds R24,_HighByte1
 05D2 8150              subi R24,1
 05D4 80931600          sts _HighByte1,R24
 05D8                   .dbline 146
 05D8           ;            ActFlag1= 0;   //转换到下一动作
 05D8 2224              clr R2
 05DA 20922800          sts _ActFlag1,R2
 05DE                   .dbline 147
 05DE           ;          }
 05DE                   .dbline 148
 05DE           ;        break;
 05DE 1DC0              rjmp L56
 05E0           L68:
 05E0                   .dbline 151
 05E0           ;        }
 05E0           ;    case 1:
 05E0           ;      {
 05E0                   .dbline 153
 05E0           ;             
 05E0           ;                 PORTB = PORTB &~(1<<PB2);
 05E0 2A98              cbi 0x5,2
 05E2                   .dbline 154
 05E2           ;                 PORTB = PORTB &~(1<<PB3);
 05E2 2B98              cbi 0x5,3
 05E4                   .dbline 155
 05E4           ;                 PORTB = PORTB &~(1<<PB4);
 05E4 2C98              cbi 0x5,4
 05E6                   .dbline 156
 05E6           ;                 PORTB = PORTB &~(1<<PB1);
 05E6 2998              cbi 0x5,1
 05E8                   .dbline 157
 05E8           ;                 PORTD = PORTD &~(1<<PD4);
 05E8 5C98              cbi 0xb,4
 05EA                   .dbline 158
 05EA           ;                 PORTD = PORTD &~(1<<PD5);
 05EA 5D98              cbi 0xb,5
 05EC                   .dbline 160
 05EC           ;           //if(HighByte1 == 0)        
 05EC           ;          { 
 05EC                   .dbline 161
 05EC           ;            OCR1A = TCNT1 + ( unsigned int )CSpray1Cyc - CSpray1On ;
 05EC 20900400          lds R2,_CSpray1Cyc
 05F0 30900500          lds R3,_CSpray1Cyc+1
 05F4 40908400          lds R4,132
 05F8 50908500          lds R5,132+1
 05FC 420C              add R4,R2
 05FE 531C              adc R5,R3
 0600 20900800          lds R2,_CSpray1On
 0604 30900900          lds R3,_CSpray1On+1
 0608 4218              sub R4,R2
 060A 5308              sbc R5,R3
 060C 50928900          sts 136+1,R5
 0610 40928800          sts 136,R4
 0614                   .dbline 162
 0614           ;            ActFlag1= 0;   //转换到下一动作
 0614 2224              clr R2
 0616 20922800          sts _ActFlag1,R2
 061A                   .dbline 163
 061A           ;          }
 061A                   .dbline 169
 061A           ;         // else
 061A           ;         // {
 061A           ;         //   HighByte1 --;
 061A           ;         //  ActFlag1= 1;   //转换到下一动作
 061A           ;         // }
 061A  

⌨️ 快捷键说明

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