📄 interrupt.lis
字号:
00C0 A998 cbi 0x15,1
00C2 .dbline 64
00C2 ; SEI();
00C2 7894 sei
00C4 .dbline -2
00C4 L8:
00C4 00D0 rcall pop_lset
00C6 .dbline 0 ; func end
00C6 1895 reti
00C8 .dbend
.area data(ram, con, rel)
0002 .dbfile E:\任务\RASS\rass_soft\interrupt.c
0002 L12:
0002 .blkb 1
.area idata
0002 00 .byte 0
.area data(ram, con, rel)
0003 .dbfile E:\任务\RASS\rass_soft\interrupt.c
.area text(rom, con, rel)
00C8 .dbfile E:\任务\RASS\rass_soft\interrupt.c
00C8 .dbfunc e ana_comp_isr _ana_comp_isr fV
00C8 .dbsym s ana_num L12 c
00C8 ; dert_freq -> R20,R21
00C8 ; dert_time -> R20,R21
00C8 ; ana_com -> y+0
.even
00C8 _ana_comp_isr::
00C8 2A92 st -y,R2
00CA 3A92 st -y,R3
00CC 4A92 st -y,R4
00CE 5A92 st -y,R5
00D0 0A93 st -y,R16
00D2 1A93 st -y,R17
00D4 2A93 st -y,R18
00D6 3A93 st -y,R19
00D8 8A93 st -y,R24
00DA 9A93 st -y,R25
00DC EA93 st -y,R30
00DE FA93 st -y,R31
00E0 2FB6 in R2,0x3f
00E2 2A92 st -y,R2
00E4 00D0 rcall push_gset2
00E6 2497 sbiw R28,4
00E8 .dbline -1
00E8 .dbline 70
00E8 ; }
00E8 ;
00E8 ;
00E8 ; //#pragma interrupt_handler ana_comp_isr:13
00E8 ; void ana_comp_isr(void)
00E8 ; {
00E8 .dbline 72
00E8 ; //analog comparator compare event
00E8 ; rass2dp=0;
00E8 2224 clr R2
00EA 20920000 sts _rass2dp,R2
00EE .dbline 73
00EE ; PORTC ^=1<<pc2;
00EE 84E0 ldi R24,4
00F0 25B2 in R2,0x15
00F2 2826 eor R2,R24
00F4 25BA out 0x15,R2
00F6 .dbline 74
00F6 ; if(ana_freq)
00F6 5BC0 rjmp L10
00F8 X0:
00F8 .dbline 75
00F8 ; {
00F8 .dbline 82
00F8 ; //unsigned int test_freq;
00F8 ; unsigned int ana_com[2];
00F8 ; unsigned int dert_time;
00F8 ; static unsigned char ana_num=0;
00F8 ; unsigned int dert_freq;
00F8 ;
00F8 ; ana_com[ana_num++]=(TCNT1H<<8)+TCNT1L;
00F8 20900200 lds R2,L12
00FC 3324 clr R3
00FE 822D mov R24,R2
0100 8F5F subi R24,255 ; addi 1
0102 80930200 sts L12,R24
0106 02E0 ldi R16,2
0108 10E0 ldi R17,0
010A 9101 movw R18,R2
010C 00D0 rcall empy16s
010E F801 movw R30,R16
0110 CE01 movw R24,R28
0112 E80F add R30,R24
0114 F91F adc R31,R25
0116 2CB4 in R2,0x2c
0118 3DB4 in R3,0x2d
011A 3182 std z+1,R3
011C 2082 std z+0,R2
011E .dbline 83
011E ; if(ana_num>1)
011E 81E0 ldi R24,1
0120 20900200 lds R2,L12
0124 8215 cp R24,R2
0126 08F0 brlo X1
0128 42C0 rjmp L13
012A X1:
012A .dbline 84
012A ; {
012A .dbline 85
012A ; ana_num=0;
012A 2224 clr R2
012C 20920200 sts L12,R2
0130 .dbline 86
0130 ; if(ana_com[0]<ana_com[1])
0130 2A80 ldd R2,y+2
0132 3B80 ldd R3,y+3
0134 4880 ldd R4,y+0
0136 5980 ldd R5,y+1
0138 4214 cp R4,R2
013A 5304 cpc R5,R3
013C 20F4 brsh L15
013E .dbline 87
013E ; dert_time=ana_com[1]-ana_com[0];
013E A101 movw R20,R2
0140 4419 sub R20,R4
0142 5509 sbc R21,R5
0144 08C0 rjmp L16
0146 L15:
0146 .dbline 89
0146 ; else
0146 ; dert_time=ana_com[1]+0xffff-ana_com[0];
0146 2880 ldd R2,y+0
0148 3980 ldd R3,y+1
014A 4A81 ldd R20,y+2
014C 5B81 ldd R21,y+3
014E 4150 subi R20,1 ; offset = 65535
0150 5040 sbci R21,0
0152 4219 sub R20,R2
0154 5309 sbc R21,R3
0156 L16:
0156 .dbline 90
0156 ; test_freq =7200/(dert_time+1);
0156 9A01 movw R18,R20
0158 2F5F subi R18,255 ; offset = 1
015A 3F4F sbci R19,255
015C 00E2 ldi R16,7200
015E 1CE1 ldi R17,28
0160 00D0 rcall div16u
0162 10930100 sts _test_freq+1,R17
0166 00930000 sts _test_freq,R16
016A .dbline 91
016A ; dert_freq=(test_freq>seed)?(test_freq-seed):(seed-test_freq);
016A 20900000 lds R2,_seed
016E 30900100 lds R3,_seed+1
0172 2801 movw R4,R16
0174 2016 cp R2,R16
0176 3106 cpc R3,R17
0178 20F4 brsh L20
017A B201 movw R22,R4
017C 6219 sub R22,R2
017E 7309 sbc R23,R3
0180 0AC0 rjmp L21
0182 L20:
0182 20900000 lds R2,_test_freq
0186 30900100 lds R3,_test_freq+1
018A 60910000 lds R22,_seed
018E 70910100 lds R23,_seed+1
0192 6219 sub R22,R2
0194 7309 sbc R23,R3
0196 L21:
0196 AB01 movw R20,R22
0198 .dbline 92
0198 ; if(dert_freq<50)
0198 6233 cpi R22,50
019A E0E0 ldi R30,0
019C 7E07 cpc R23,R30
019E 20F4 brsh L22
01A0 .dbline 93
01A0 ; rass2dp=0;
01A0 2224 clr R2
01A2 20920000 sts _rass2dp,R2
01A6 03C0 rjmp L23
01A8 L22:
01A8 .dbline 95
01A8 ; else
01A8 ; rass2dp=1;
01A8 81E0 ldi R24,1
01AA 80930000 sts _rass2dp,R24
01AE L23:
01AE .dbline 96
01AE ; }
01AE L13:
01AE .dbline 97
01AE L10:
01AE .dbline -2
01AE L9:
01AE 2496 adiw R28,4
01B0 00D0 rcall pop_gset2
01B2 2990 ld R2,y+
01B4 2FBE out 0x3f,R2
01B6 F991 ld R31,y+
01B8 E991 ld R30,y+
01BA 9991 ld R25,y+
01BC 8991 ld R24,y+
01BE 3991 ld R19,y+
01C0 2991 ld R18,y+
01C2 1991 ld R17,y+
01C4 0991 ld R16,y+
01C6 5990 ld R5,y+
01C8 4990 ld R4,y+
01CA 3990 ld R3,y+
01CC 2990 ld R2,y+
01CE .dbline 0 ; func end
01CE 1895 reti
01D0 .dbsym r dert_freq 20 i
01D0 .dbsym r dert_time 20 i
01D0 .dbsym l ana_com 0 A[4:2]i
01D0 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -