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