📄 timer1.lis
字号:
.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 + -