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

📄 timer1.lis

📁 一个6缸发动机的ECU控制程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module timer1.c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\程序\avr\timer1.c
                        .area data(ram, con, rel)
 0000                   .dbfile F:\程序\avr\timer1.c
 0000           _SprayNum::
 0000                   .blkb 2
                        .area idata
 0000 7017              .word 6000
                        .area data(ram, con, rel)
 0002                   .dbfile F:\程序\avr\timer1.c
 0002                   .dbfile F:\程序\avr\timer1.h
 0002                   .dbsym e SprayNum _SprayNum I
 0002           _CSprayCyc::
 0002                   .blkb 2
                        .area idata
 0002 6A18              .word 6250
                        .area data(ram, con, rel)
 0004                   .dbfile F:\程序\avr\timer1.h
 0004                   .dbsym e CSprayCyc _CSprayCyc i
 0004           _CSprayOn::
 0004                   .blkb 2
                        .area idata
 0004 FA00              .word 250
                        .area data(ram, con, rel)
 0006                   .dbfile F:\程序\avr\timer1.h
 0006                   .dbsym e CSprayOn _CSprayOn i
 0006           _CPivDelay::
 0006                   .blkb 2
                        .area idata
 0006 7D00              .word 125
                        .area data(ram, con, rel)
 0008                   .dbfile F:\程序\avr\timer1.h
 0008                   .dbsym e CPivDelay _CPivDelay i
 0008           _T1OveForPump::
 0008                   .blkb 1
                        .area idata
 0008 1C                .byte 28
                        .area data(ram, con, rel)
 0009                   .dbfile F:\程序\avr\timer1.h
 0009                   .dbsym e T1OveForPump _T1OveForPump c
 0009           _T1OveCnt::
 0009                   .blkb 1
                        .area idata
 0009 00                .byte 0
                        .area data(ram, con, rel)
 000A                   .dbfile F:\程序\avr\timer1.h
 000A                   .dbsym e T1OveCnt _T1OveCnt c
 000A           _ActFlag::
 000A                   .blkb 1
                        .area idata
 000A 00                .byte 0
                        .area data(ram, con, rel)
 000B                   .dbfile F:\程序\avr\timer1.h
 000B                   .dbsym e ActFlag _ActFlag c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\程序\avr\timer1.h
 0000                   .dbfile F:\程序\avr\timer1.c
 0000                   .dbfunc e timer1_init _timer1_init fV
                        .even
 0000           _timer1_init::
 0000                   .dbline -1
 0000                   .dbline 12
 0000           ; #include <iom88v.h>
 0000           ; #include <macros.h>
 0000           ; #include <uart.h>
 0000           ; #include <timer1.h>
 0000           ; 
 0000           ; 
 0000           ; //TIMER1 initialize - prescale:64
 0000           ; // WGM: 0) Normal, TOP=0xFFFF
 0000           ; // desired value: 1Hz
 0000           ; // actual value: Out of range
 0000           ; void timer1_init(void)
 0000           ; {
 0000                   .dbline 13
 0000           ;  TCCR1B = 0x00; //stop
 0000 2224              clr R2
 0002 20928100          sts 129,R2
 0006                   .dbline 14
 0006           ;  TCNT1H = 0x00 /*INVALID SETTING*/; //setup
 0006 20928500          sts 133,R2
 000A                   .dbline 15
 000A           ;  TCNT1L = 0x00 /*INVALID SETTING*/;
 000A 20928400          sts 132,R2
 000E                   .dbline 16
 000E           ;  OCR1AH = 0x00 /*INVALID SETTING*/;
 000E 20928900          sts 137,R2
 0012                   .dbline 17
 0012           ;  OCR1AL = 0x30 /*INVALID SETTING*/;
 0012 80E3              ldi R24,48
 0014 80938800          sts 136,R24
 0018                   .dbline 18
 0018           ;  OCR1BH = 0x02 /*INVALID SETTING*/;
 0018 82E0              ldi R24,2
 001A 80938B00          sts 139,R24
 001E                   .dbline 19
 001E           ;  OCR1BL = 0xFF /*INVALID SETTING*/;
 001E 8FEF              ldi R24,255
 0020 80938A00          sts 138,R24
 0024                   .dbline 20
 0024           ;  ICR1H  = 0x00 /*INVALID SETTING*/;
 0024 20928700          sts 135,R2
 0028                   .dbline 21
 0028           ;  ICR1L  = 0x00 /*INVALID SETTING*/;
 0028 20928600          sts 134,R2
 002C                   .dbline 22
 002C           ;  TCCR1A = 0x00;
 002C 20928000          sts 128,R2
 0030                   .dbline 23
 0030           ;  TCCR1B = 0x03; //start Timer
 0030 83E0              ldi R24,3
 0032 80938100          sts 129,R24
 0036                   .dbline -2
 0036           L1:
 0036                   .dbline 0 ; func end
 0036 0895              ret
 0038                   .dbend
                        .area vector(rom, abs)
                        .org 22
 0016 1CC0              rjmp _timer1_compa_isr
                        .area text(rom, con, rel)
 0038                   .dbfile F:\程序\avr\timer1.c
 0038                   .dbfunc e timer1_compa_isr _timer1_compa_isr fV
                        .even
 0038           _timer1_compa_isr::
 0038 0A92              st -y,R0
 003A 1A92              st -y,R1
 003C 2A92              st -y,R2
 003E 3A92              st -y,R3
 0040 4A92              st -y,R4
 0042 5A92              st -y,R5
 0044 6A92              st -y,R6
 0046 7A92              st -y,R7
 0048 8A92              st -y,R8
 004A 9A92              st -y,R9
 004C 0A93              st -y,R16
 004E 1A93              st -y,R17
 0050 2A93              st -y,R18
 0052 3A93              st -y,R19
 0054 4A93              st -y,R20
 0056 5A93              st -y,R21
 0058 8A93              st -y,R24
 005A 9A93              st -y,R25
 005C AA93              st -y,R26
 005E BA93              st -y,R27
 0060 EA93              st -y,R30
 0062 FA93              st -y,R31
 0064 0FB6              in R0,0x3f
 0066 0A92              st -y,R0
 0068 4A93              st -y,R20
 006A 5A93              st -y,R21
 006C                   .dbline -1
 006C                   .dbline 29
 006C           ; }
 006C           ; 
 006C           ; 
 006C           ; #pragma interrupt_handler timer1_compa_isr:iv_TIM1_COMPA
 006C           ; void timer1_compa_isr(void)
 006C           ; {
 006C                   .dbline 31
 006C           ;  //compare occured TCNT1=OCR1A
 006C           ;  switch(ActFlag)
 006C 40910A00          lds R20,_ActFlag
 0070 5527              clr R21
 0072 4030              cpi R20,0
 0074 4507              cpc R20,R21
 0076 51F0              breq L6
 0078           X0:
 0078 4130              cpi R20,1
 007A E0E0              ldi R30,0
 007C 5E07              cpc R21,R30
 007E C1F1              breq L9
 0080           X1:
 0080 4230              cpi R20,2
 0082 E0E0              ldi R30,0
 0084 5E07              cpc R21,R30
 0086 09F4              brne X9
 0088 52C0              rjmp L12
 008A           X9:
 008A           X2:
 008A 98C0              rjmp L4
 008C           L6:
 008C                   .dbline 34
 008C           ;  {
 008C           ;    case 0:
 008C           ;      {
 008C                   .dbline 35
 008C           ;          if(SprayNum > 0)
 008C 2224              clr R2
 008E 3324              clr R3
 0090 40900000          lds R4,_SprayNum
 0094 50900100          lds R5,_SprayNum+1
 0098 2414              cp R2,R4
 009A 3504              cpc R3,R5
 009C 0CF4              brge L7
 009E           X3:
 009E                   .dbline 37
 009E           ;            //喷油器控制引脚置高
 009E           ;                PORTB = PORTB |(1<<PB2);
 009E 2A9A              sbi 0x5,2
 00A0           L7:
 00A0                   .dbline 39
 00A0           ;                
 00A0           ;          OCR1B = (OCR1A + CSprayOn);    //喷油器关定时
 00A0 20900400          lds R2,_CSprayOn
 00A4 30900500          lds R3,_CSprayOn+1
 00A8 40908800          lds R4,136
 00AC 50908900          lds R5,136+1
 00B0 420C              add R4,R2
 00B2 531C              adc R5,R3
 00B4 50928B00          sts 138+1,R5
 00B8 40928A00          sts 138,R4
 00BC                   .dbline 40
 00BC           ;          OCR1A = (OCR1A + CPivDelay);          //piv开启定时
 00BC 20900600          lds R2,_CPivDelay
 00C0 30900700          lds R3,_CPivDelay+1
 00C4 40908800          lds R4,136
 00C8 50908900          lds R5,136+1
 00CC 420C              add R4,R2
 00CE 531C              adc R5,R3
 00D0 50928900          sts 136+1,R5
 00D4 40928800          sts 136,R4
 00D8                   .dbline 43
 00D8           ; //       OCR1B &= 0xFFFF;           
 00D8           ; //       OCR1B &= 0xFFFF;
 00D8           ;        ActFlag = (++ActFlag) % 3;   //转换到下一动作
 00D8 80910A00          lds R24,_ActFlag
 00DC 8F5F              subi R24,255    ; addi 1
 00DE 282E              mov R2,R24
 00E0 20920A00          sts _ActFlag,R2
 00E4 13E0              ldi R17,3
 00E6 082F              mov R16,R24
 00E8 00D0              rcall mod8u
 00EA 00930A00          sts _ActFlag,R16
 00EE                   .dbline 44
 00EE           ;        break;
 00EE 66C0              rjmp L4
 00F0           L9:
 00F0                   .dbline 47
 00F0           ;        }
 00F0           ;    case 1:
 00F0           ;      {
 00F0                   .dbline 48
 00F0           ;          if(SprayNum >0)
 00F0 2224              clr R2
 00F2 3324              clr R3
 00F4 40900000          lds R4,_SprayNum
 00F8 50900100          lds R5,_SprayNum+1
 00FC 2414              cp R2,R4
 00FE 3504              cpc R3,R5
 0100 0CF4              brge L10
 0102           X4:
 0102                   .dbline 50
 0102           ;            //piv开
 0102           ;                PORTB |=(1<<PB5);
 0102 2D9A              sbi 0x5,5
 0104           L10:
 0104                   .dbline 52
 0104           ;                
 0104           ;          OCR1A = OCR1A + CPIVON;             //piv关定时
 0104 80918800          lds R24,136
 0108 90918900          lds R25,136+1
 010C CE96              adiw R24,62
 010E 90938900          sts 136+1,R25
 0112 80938800          sts 136,R24
 0116                   .dbline 53
 0116           ;          ActFlag = (++ActFlag) % 3;   //转换到下一动作

⌨️ 快捷键说明

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