📄 interrupt.lis
字号:
.module interrupt.c
.area vector(rom, abs)
.org 36
0024 00C0 rjmp _uart0_rx_isr
.area text(rom, con, rel)
0000 .dbfile E:\RXTest\interrupt.c
0000 .dbfunc e uart0_rx_isr _uart0_rx_isr fV
0000 ; Temp_UDR0 -> R16
0000 ; Temp_UCSR0A -> R18
.even
0000 _uart0_rx_isr::
0000 2A92 st -y,R2
0002 3A92 st -y,R3
0004 0A93 st -y,R16
0006 2A93 st -y,R18
0008 8A93 st -y,R24
000A 9A93 st -y,R25
000C EA93 st -y,R30
000E FA93 st -y,R31
0010 2FB6 in R2,0x3f
0012 2A92 st -y,R2
0014 .dbline -1
0014 .dbline 7
0014 ; #define INT_C
0014 ;
0014 ; #include "allheads.h"
0014 ;
0014 ; #pragma interrupt_handler uart0_rx_isr:19
0014 ; void uart0_rx_isr(void)
0014 ; {
0014 .dbline 10
0014 ; char Temp_UDR0;
0014 ; uchar Temp_UCSR0A;
0014 ; Temp_UCSR0A=UCSR0A;
0014 2091C000 lds R18,192
0018 .dbline 11
0018 ; Temp_UDR0=UDR0;
0018 0091C600 lds R16,198
001C .dbline 12
001C ; if(!(Temp_UCSR0A&((1<<FE0)|(1<<UPE0)))){
001C 822F mov R24,R18
001E 8471 andi R24,20
0020 F1F4 brne L10
0022 .dbline 12
0022 .dbline 13
0022 ; GPS_Rx[write_Count ]=Temp_UDR0;
0022 80E0 ldi R24,<_GPS_Rx
0024 90E0 ldi R25,>_GPS_Rx
0026 E0910000 lds R30,_write_Count
002A F0910100 lds R31,_write_Count+1
002E E80F add R30,R24
0030 F91F adc R31,R25
0032 0083 std z+0,R16
0034 .dbline 15
0034 ; // writeCount++;
0034 ; if(++write_Count>199){write_Count=0;}//ptr=GPS_Rx;
0034 80910000 lds R24,_write_Count
0038 90910100 lds R25,_write_Count+1
003C 0196 adiw R24,1
003E 1C01 movw R2,R24
0040 30920100 sts _write_Count+1,R3
0044 20920000 sts _write_Count,R2
0048 87EC ldi R24,199
004A 90E0 ldi R25,0
004C 8215 cp R24,R2
004E 9305 cpc R25,R3
0050 34F4 brge L12
0052 .dbline 15
0052 .dbline 15
0052 2224 clr R2
0054 3324 clr R3
0056 30920100 sts _write_Count+1,R3
005A 20920000 sts _write_Count,R2
005E .dbline 15
005E L12:
005E .dbline 16
005E L10:
005E .dbline -2
005E L9:
005E 2990 ld R2,y+
0060 2FBE out 0x3f,R2
0062 F991 ld R31,y+
0064 E991 ld R30,y+
0066 9991 ld R25,y+
0068 8991 ld R24,y+
006A 2991 ld R18,y+
006C 0991 ld R16,y+
006E 3990 ld R3,y+
0070 2990 ld R2,y+
0072 .dbline 0 ; func end
0072 1895 reti
0074 .dbsym r Temp_UDR0 16 c
0074 .dbsym r Temp_UCSR0A 18 c
0074 .dbend
.area vector(rom, abs)
.org 18
0012 3AC0 rjmp _timer2_ovf_isr
.area text(rom, con, rel)
0074 .dbfile E:\RXTest\interrupt.c
0074 .dbfunc e timer2_ovf_isr _timer2_ovf_isr fV
.even
0074 _timer2_ovf_isr::
0074 00D0 rcall push_lset
0076 .dbline -1
0076 .dbline 22
0076 ; }
0076 ; }
0076 ;
0076 ; //时间基准:1MS 8MHZ晶振64分频..
0076 ; #pragma interrupt_handler timer2_ovf_isr:10
0076 ; void timer2_ovf_isr(void)
0076 ; {
0076 .dbline 23
0076 ; TCNT2 = 0x83;
0076 83E8 ldi R24,131
0078 8093B200 sts 178,R24
007C .dbline 24
007C ; if(++Count_ms>=100){// 0.1s
007C 80916600 lds R24,_Count_ms
0080 8F5F subi R24,255 ; addi 1
0082 282E mov R2,R24
0084 20926600 sts _Count_ms,R2
0088 8436 cpi R24,100
008A 58F0 brlo L15
008C .dbline 24
008C .dbline 25
008C ; Count_ms=0;
008C 2224 clr R2
008E 20926600 sts _Count_ms,R2
0092 .dbline 26
0092 ; Fbit.Time_ms=TRUE;
0092 80916E00 lds R24,_Fbit
0096 8260 ori R24,2
0098 80936E00 sts _Fbit,R24
009C .dbline 27
009C ; Fbit.key_count=TRUE;}
009C 8460 ori R24,4
009E 80936E00 sts _Fbit,R24
00A2 .dbline 27
00A2 L15:
00A2 .dbline 29
00A2 ; //Fbit.Scan_IRQ=TRUE;}
00A2 ; Count_2ms++;
00A2 80910000 lds R24,_Count_2ms
00A6 90910100 lds R25,_Count_2ms+1
00AA 0196 adiw R24,1
00AC 90930100 sts _Count_2ms+1,R25
00B0 80930000 sts _Count_2ms,R24
00B4 .dbline 31
00B4 ;
00B4 ; if(!IRQ) {
00B4 4D99 sbic 0x9,5
00B6 42C0 rjmp L17
00B8 .dbline 31
00B8 .dbline 32
00B8 ; Pulse_Data=(uchar)(60000/Count_2ms);
00B8 9C01 movw R18,R24
00BA 00E6 ldi R16,60000
00BC 1AEE ldi R17,234
00BE 00D0 rcall div16u
00C0 00930000 sts _Pulse_Data,R16
00C4 .dbline 33
00C4 ; if(++Idx_Plus>=10)Idx_Plus=0;
00C4 80915A00 lds R24,_Idx_Plus
00C8 8F5F subi R24,255 ; addi 1
00CA 282E mov R2,R24
00CC 20925A00 sts _Idx_Plus,R2
00D0 8A30 cpi R24,10
00D2 18F0 brlo L19
00D4 .dbline 33
00D4 2224 clr R2
00D6 20925A00 sts _Idx_Plus,R2
00DA L19:
00DA .dbline 34
00DA ; Buf_plus[Idx_Plus]=Pulse_Data;
00DA 80E0 ldi R24,<_Buf_plus
00DC 90E0 ldi R25,>_Buf_plus
00DE E0915A00 lds R30,_Idx_Plus
00E2 FF27 clr R31
00E4 E80F add R30,R24
00E6 F91F adc R31,R25
00E8 20900000 lds R2,_Pulse_Data
00EC 2082 std z+0,R2
00EE .dbline 35
00EE ; Pulse_Data=0;
00EE 2224 clr R2
00F0 20920000 sts _Pulse_Data,R2
00F4 .dbline 36
00F4 ; if(++Count_Plus>=10){Fbit.Timer_Start=TRUE;
00F4 80915500 lds R24,_Count_Plus
00F8 8F5F subi R24,255 ; addi 1
00FA 282E mov R2,R24
00FC 20925500 sts _Count_Plus,R2
0100 8A30 cpi R24,10
0102 60F0 brlo L21
0104 .dbline 36
0104 .dbline 36
0104 80916E00 lds R24,_Fbit
0108 90916F00 lds R25,_Fbit+1
010C 9062 ori R25,32
010E 90936F00 sts _Fbit+1,R25
0112 80936E00 sts _Fbit,R24
0116 .dbline 37
0116 ; Count_Plus=0;}
0116 2224 clr R2
0118 20925500 sts _Count_Plus,R2
011C .dbline 37
011C L21:
011C .dbline 38
011C 00D0 rcall _Read_FIFO
011E .dbline 39
011E 80916E00 lds R24,_Fbit
0122 90916F00 lds R25,_Fbit+1
0126 9061 ori R25,16
0128 90936F00 sts _Fbit+1,R25
012C 80936E00 sts _Fbit,R24
0130 .dbline 40
0130 2224 clr R2
0132 3324 clr R3
0134 30920100 sts _Count_2ms+1,R3
0138 20920000 sts _Count_2ms,R2
013C .dbline 41
013C L17:
013C .dbline -2
013C L14:
013C 00D0 rcall pop_lset
013E .dbline 0 ; func end
013E 1895 reti
0140 .dbend
0140 .dbfunc e Read_byte _Read_byte fc
0140 ; temp -> R20
.even
0140 _Read_byte::
0140 00D0 rcall push_gset1
0142 .dbline -1
0142 .dbline 70
0142 ; Read_FIFO();
0142 ; Fbit.Rx_f=TRUE;
0142 ; Count_2ms=0;
0142 ; }
0142 ; }
0142 ;
0142 ; /*
0142 ; // Timer 0 overflow interrupt service routine
0142 ; #pragma interrupt_handler timer0_ovf_isr:17
0142 ; void timer0_ovf_isr(void){//2 //2ms
0142 ; TCNT0=0x83;//B2;
0142 ; if(++Count_ms>=100){// 0.1s
0142 ; Count_ms=0;
0142 ; Fbit.Time_ms=TRUE;
0142 ; Fbit.key_count=TRUE;}
0142 ;
0142 ; Count_2ms++;
0142 ;
0142 ; if(!IRQ) {
0142 ; Pulse_Data=(uchar)(60000/Count_2ms);
0142 ; if(++Idx_Plus>=10)Idx_Plus=0;
0142 ; //Buf_plus[Idx_Plus]=T_Num[Idx_Plus];
0142 ; Buf_plus[Idx_Plus]=Pulse_Data;
0142 ; Pulse_Data=0;
0142 ; if(++Count_Plus>=10){Fbit.Timer_Start=TRUE;
0142 ; Count_Plus=0;}
0142 ; Read_FIFO();
0142 ; Fbit.Rx_f=TRUE;
0142 ; Count_2ms=0;
0142 ; }
0142 ; }*/
0142 ; uchar Read_byte(void)
0142 ; { uchar temp;
0142 .dbline 71
0142 ; if(read_Count == write_Count){delay_ms(5);}
0142 20900000 lds R2,_write_Count
0146 30900100 lds R3,_write_Count+1
014A 40900200 lds R4,_read_Count
014E 50900300 lds R5,_read_Count+1
0152 4214 cp R4,R2
0154 5304 cpc R5,R3
0156 19F4 brne L24
0158 .dbline 71
0158 .dbline 71
0158 05E0 ldi R16,5
015A 10E0 ldi R17,0
015C 00D0 rcall _delay_ms
015E .dbline 71
015E L24:
015E .dbline 72
015E ; temp = GPS_Rx[read_Count];
015E 80E0 ldi R24,<_GPS_Rx
0160 90E0 ldi R25,>_GPS_Rx
0162 E0910200 lds R30,_read_Count
0166 F0910300 lds R31,_read_Count+1
016A E80F add R30,R24
016C F91F adc R31,R25
016E 4081 ldd R20,z+0
0170 .dbline 73
0170 ; ++read_Count;
0170 80910200 lds R24,_read_Count
0174 90910300 lds R25,_read_Count+1
0178 0196 adiw R24,1
017A 90930300 sts _read_Count+1,R25
017E 80930200 sts _read_Count,R24
0182 .dbline 74
0182 ; if(read_Count >199){read_Count = 0;}
0182 87EC ldi R24,199
0184 90E0 ldi R25,0
0186 20900200 lds R2,_read_Count
018A 30900300 lds R3,_read_Count+1
018E 8215 cp R24,R2
0190 9305 cpc R25,R3
0192 34F4 brge L26
0194 .dbline 74
0194 .dbline 74
0194 2224 clr R2
0196 3324 clr R3
0198 30920300 sts _read_Count+1,R3
019C 20920200 sts _read_Count,R2
01A0 .dbline 74
01A0 L26:
01A0 .dbline 75
01A0 ; return temp;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -