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

📄 interrupt.lis

📁 与GPS模块连接
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .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 + -