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

📄 timer1.lis

📁 一个6缸发动机的ECU控制程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0116 80910A00          lds R24,_ActFlag
 011A 8F5F              subi R24,255    ; addi 1
 011C 282E              mov R2,R24
 011E 20920A00          sts _ActFlag,R2
 0122 13E0              ldi R17,3
 0124 082F              mov R16,R24
 0126 00D0              rcall mod8u
 0128 00930A00          sts _ActFlag,R16
 012C                   .dbline 54
 012C           ;          break;        
 012C 47C0              rjmp L4
 012E           L12:
 012E                   .dbline 57
 012E           ;        }
 012E           ;    case 2:
 012E           ;      {
 012E                   .dbline 58
 012E           ;          if(SprayNum > 0)
 012E 2224              clr R2
 0130 3324              clr R3
 0132 40900000          lds R4,_SprayNum
 0136 50900100          lds R5,_SprayNum+1
 013A 2414              cp R2,R4
 013C 3504              cpc R3,R5
 013E 0CF4              brge L13
 0140           X5:
 0140                   .dbline 60
 0140           ;            //piv关
 0140           ;                PORTB = PORTB & ~(1<<PB5);
 0140 2D98              cbi 0x5,5
 0142           L13:
 0142                   .dbline 62
 0142           ;                
 0142           ;          OCR1A = OCR1A + CSprayCyc - CPivDelay - CPIVON;
 0142 20900200          lds R2,_CSprayCyc
 0146 30900300          lds R3,_CSprayCyc+1
 014A 80918800          lds R24,136
 014E 90918900          lds R25,136+1
 0152 820D              add R24,R2
 0154 931D              adc R25,R3
 0156 20900600          lds R2,_CPivDelay
 015A 30900700          lds R3,_CPivDelay+1
 015E 8219              sub R24,R2
 0160 9309              sbc R25,R3
 0162 CE97              sbiw R24,62
 0164 90938900          sts 136+1,R25
 0168 80938800          sts 136,R24
 016C                   .dbline 63
 016C           ;          SprayNum--;
 016C 80910000          lds R24,_SprayNum
 0170 90910100          lds R25,_SprayNum+1
 0174 0197              sbiw R24,1
 0176 90930100          sts _SprayNum+1,R25
 017A 80930000          sts _SprayNum,R24
 017E                   .dbline 65
 017E           ;          
 017E           ;          if(SprayNum < 0)
 017E 8030              cpi R24,0
 0180 E0E0              ldi R30,0
 0182 9E07              cpc R25,R30
 0184 34F4              brge L15
 0186           X6:
 0186                   .dbline 66
 0186           ;            SprayNum = 0;
 0186 2224              clr R2
 0188 3324              clr R3
 018A 30920100          sts _SprayNum+1,R3
 018E 20920000          sts _SprayNum,R2
 0192           L15:
 0192                   .dbline 68
 0192           ;                
 0192           ;          ActFlag = (++ActFlag) % 3;   //转换到下一动作
 0192 40910A00          lds R20,_ActFlag
 0196 4F5F              subi R20,255    ; addi 1
 0198 40930A00          sts _ActFlag,R20
 019C 13E0              ldi R17,3
 019E 042F              mov R16,R20
 01A0 00D0              rcall mod8u
 01A2 00930A00          sts _ActFlag,R16
 01A6                   .dbline 69
 01A6           ;          if(FrameHead0 > 0 && rx_counter0 == 0)
 01A6 80E0              ldi R24,0
 01A8 20900B00          lds R2,_FrameHead0
 01AC 8215              cp R24,R2
 01AE 30F4              brsh L4
 01B0           X7:
 01B0 20900D00          lds R2,_rx_counter0
 01B4 2220              tst R2
 01B6 11F4              brne L4
 01B8           X8:
 01B8                   .dbline 70
 01B8           ;            putchar(IDLE);
 01B8 0DEF              ldi R16,253
 01BA 00D0              rcall _putchar
 01BC                   .dbline 71
 01BC           ;          break;          
 01BC                   .dbline 74
 01BC           ;      }        
 01BC           ;    default:
 01BC           ;          break;         
 01BC           L4:
 01BC                   .dbline -2
 01BC           L2:
 01BC                   .dbline 0 ; func end
 01BC 5991              ld R21,y+
 01BE 4991              ld R20,y+
 01C0 0990              ld R0,y+
 01C2 0FBE              out 0x3f,R0
 01C4 F991              ld R31,y+
 01C6 E991              ld R30,y+
 01C8 B991              ld R27,y+
 01CA A991              ld R26,y+
 01CC 9991              ld R25,y+
 01CE 8991              ld R24,y+
 01D0 5991              ld R21,y+
 01D2 4991              ld R20,y+
 01D4 3991              ld R19,y+
 01D6 2991              ld R18,y+
 01D8 1991              ld R17,y+
 01DA 0991              ld R16,y+
 01DC 9990              ld R9,y+
 01DE 8990              ld R8,y+
 01E0 7990              ld R7,y+
 01E2 6990              ld R6,y+
 01E4 5990              ld R5,y+
 01E6 4990              ld R4,y+
 01E8 3990              ld R3,y+
 01EA 2990              ld R2,y+
 01EC 1990              ld R1,y+
 01EE 0990              ld R0,y+
 01F0 1895              reti
 01F2                   .dbend
                        .area vector(rom, abs)
                        .org 24
 0018 F9C0              rjmp _timer1_compb_isr
                        .area text(rom, con, rel)
 01F2                   .dbfile F:\程序\avr\timer1.c
 01F2                   .dbfunc e timer1_compb_isr _timer1_compb_isr fV
                        .even
 01F2           _timer1_compb_isr::
 01F2 0A92              st -y,R0
 01F4 0FB6              in R0,0x3f
 01F6 0A92              st -y,R0
 01F8                   .dbline -1
 01F8                   .dbline 80
 01F8           ;  }
 01F8           ; }
 01F8           ; 
 01F8           ; #pragma interrupt_handler timer1_compb_isr:iv_TIM1_COMPB
 01F8           ; void timer1_compb_isr(void)
 01F8           ; {
 01F8                   .dbline 83
 01F8           ;  //compare occured TCNT1=OCR1B
 01F8           ;  //喷油器控制引脚复位
 01F8           ;  PORTB = PORTB &~(1<<PB2);
 01F8 2A98              cbi 0x5,2
 01FA                   .dbline -2
 01FA           L19:
 01FA                   .dbline 0 ; func end
 01FA 0990              ld R0,y+
 01FC 0FBE              out 0x3f,R0
 01FE 0990              ld R0,y+
 0200 1895              reti
 0202                   .dbend
                        .area vector(rom, abs)
                        .org 26
 001A 01C1              rjmp _timer1_ovf_isr
                        .area text(rom, con, rel)
 0202                   .dbfile F:\程序\avr\timer1.c
 0202                   .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
                        .even
 0202           _timer1_ovf_isr::
 0202 2A92              st -y,R2
 0204 3A92              st -y,R3
 0206 4A92              st -y,R4
 0208 5A92              st -y,R5
 020A 8A93              st -y,R24
 020C 9A93              st -y,R25
 020E 2FB6              in R2,0x3f
 0210 2A92              st -y,R2
 0212                   .dbline -1
 0212                   .dbline 88
 0212           ; }
 0212           ; 
 0212           ; #pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF
 0212           ; void timer1_ovf_isr(void)
 0212           ; {
 0212                   .dbline 90
 0212           ;  //TIMER1 has overflowed
 0212           ;  T1OveCnt++;
 0212 80910900          lds R24,_T1OveCnt
 0216 8F5F              subi R24,255    ; addi 1
 0218 80930900          sts _T1OveCnt,R24
 021C                   .dbline 91
 021C           ;  if(T1OveCnt > T1OveForPump)      //定时时间到
 021C 20900800          lds R2,_T1OveForPump
 0220 3324              clr R3
 0222 482E              mov R4,R24
 0224 5524              clr R5
 0226 2414              cp R2,R4
 0228 3504              cpc R3,R5
 022A 3CF4              brge L21
 022C           X10:
 022C                   .dbline 92
 022C           ;    {
 022C                   .dbline 94
 022C           ;      //换能器控制引脚取反
 022C           ;        PORTB = PORTB ^( 1<<PB3);
 022C 88E0              ldi R24,8
 022E 25B0              in R2,0x5
 0230 2826              eor R2,R24
 0232 25B8              out 0x5,R2
 0234                   .dbline 95
 0234           ;        T1OveCnt = 0;
 0234 2224              clr R2
 0236 20920900          sts _T1OveCnt,R2
 023A                   .dbline 96
 023A           ;    }
 023A           L21:
 023A                   .dbline -2
 023A           L20:
 023A                   .dbline 0 ; func end
 023A 2990              ld R2,y+
 023C 2FBE              out 0x3f,R2
 023E 9991              ld R25,y+
 0240 8991              ld R24,y+
 0242 5990              ld R5,y+
 0244 4990              ld R4,y+
 0246 3990              ld R3,y+
 0248 2990              ld R2,y+
 024A 1895              reti
 024C                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile F:\程序\avr\timer1.c
 0000           _tx_counter0::
 0000                   .blkb 1
 0001                   .dbfile F:\程序\avr\uart.h
 0001                   .dbsym e tx_counter0 _tx_counter0 c
 0001           _tx_rd_index0::
 0001                   .blkb 1
 0002                   .dbsym e tx_rd_index0 _tx_rd_index0 c
 0002           _tx_wr_index0::
 0002                   .blkb 1
 0003                   .dbsym e tx_wr_index0 _tx_wr_index0 c
 0003           _tx_buffer0::
 0003                   .blkb 8
 000B                   .dbsym e tx_buffer0 _tx_buffer0 A[8:8]c
 000B           _FrameHead0::
 000B                   .blkb 1
 000C                   .dbsym e FrameHead0 _FrameHead0 c
 000C           _rx_error0::
 000C                   .blkb 1
 000D                   .dbsym e rx_error0 _rx_error0 c
 000D           _rx_counter0::
 000D                   .blkb 1
 000E                   .dbsym e rx_counter0 _rx_counter0 c
 000E           _rx_rd_index0::
 000E                   .blkb 1
 000F                   .dbsym e rx_rd_index0 _rx_rd_index0 c
 000F           _rx_buffer0::
 000F                   .blkb 8
 0017                   .dbsym e rx_buffer0 _rx_buffer0 A[8:8]c
 0017           ; 
 0017           ; }
 0017           ; 
 0017           ; 
 0017           ; 

⌨️ 快捷键说明

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