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

📄 interrupt.lis

📁 国内某测温系统信号处理处理板的代码
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module interrupt.c
                        .area vector(rom, abs)
                        .org 12
 000C 00C0              rjmp _timer1_ovf_isr
                        .org 18
 0012 18C0              rjmp _uart0_rx_isr
                        .org 22
 0016 5CC0              rjmp _uart0_tx_isr
                        .org 24
 0018 64C0              rjmp _ana_comp_isr
                        .area text(rom, con, rel)
 0000                   .dbfile E:\任务\RASS\rass_soft\interrupt.c
 0000                   .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
                        .even
 0000           _timer1_ovf_isr::
 0000 00D0              rcall push_lset
 0002                   .dbline -1
 0002                   .dbline 16
 0002           ; #include "config.h"
 0002           ; 
 0002           ; extern unsigned char dp2rass[5];
 0002           ; extern unsigned char rass2dp;
 0002           ; extern unsigned int test_freq;
 0002           ; extern unsigned char rxed_flag;
 0002           ; extern unsigned int seed;
 0002           ; extern unsigned char timer1;
 0002           ; extern unsigned int TCNT1_H;
 0002           ; extern unsigned int TCNT1_L;
 0002           ; extern unsigned int D15_0;
 0002           ; 
 0002           ; 
 0002           ; //#pragma interrupt_handler timer1_ovf_isr:7
 0002           ; void timer1_ovf_isr(void)
 0002           ; {
 0002                   .dbline 18
 0002           ;       //在这里改变频率
 0002           ;  timer1=1;
 0002 81E0              ldi R24,1
 0004 80930000          sts _timer1,R24
 0008                   .dbline 19
 0008           ;  TCNT1H = TCNT1_H; //reload counter high value
 0008 20900000          lds R2,_TCNT1_H
 000C 30900100          lds R3,_TCNT1_H+1
 0010 2DBC              out 0x2d,R2
 0012                   .dbline 20
 0012           ;  TCNT1L = TCNT1_L; //reload counter low value
 0012 20900000          lds R2,_TCNT1_L
 0016 30900100          lds R3,_TCNT1_L+1
 001A 2CBC              out 0x2c,R2
 001C                   .dbline 21
 001C           ;  ml2035(D15_0,1);
 001C 21E0              ldi R18,1
 001E 30E0              ldi R19,0
 0020 00910000          lds R16,_D15_0
 0024 10910100          lds R17,_D15_0+1
 0028 00D0              rcall _ml2035
 002A                   .dbline 22
 002A           ;  SEI();
 002A 7894              sei
 002C                   .dbline -2
 002C           L1:
 002C 00D0              rcall pop_lset
 002E                   .dbline 0 ; func end
 002E 1895              reti
 0030                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile E:\任务\RASS\rass_soft\interrupt.c
 0000           L3:
 0000                   .blkb 2
                        .area idata
 0000 0000              .word 0
                        .area data(ram, con, rel)
 0002                   .dbfile E:\任务\RASS\rass_soft\interrupt.c
                        .area text(rom, con, rel)
 0030                   .dbfile E:\任务\RASS\rass_soft\interrupt.c
 0030                   .dbfunc e uart0_rx_isr _uart0_rx_isr fV
 0030                   .dbsym s rxnum L3 I
 0030           ;            mid -> R16
                        .even
 0030           _uart0_rx_isr::
 0030 2A92              st -y,R2
 0032 3A92              st -y,R3
 0034 0A93              st -y,R16
 0036 8A93              st -y,R24
 0038 9A93              st -y,R25
 003A EA93              st -y,R30
 003C FA93              st -y,R31
 003E 2FB6              in R2,0x3f
 0040 2A92              st -y,R2
 0042                   .dbline -1
 0042                   .dbline 29
 0042           ; }
 0042           ; 
 0042           ; 
 0042           ; 
 0042           ; //#pragma interrupt_handler uart0_rx_isr:10
 0042           ; void uart0_rx_isr(void)
 0042           ; {
 0042                   .dbline 33
 0042           ;  //uart has received a character in UDR
 0042           ;  static int rxnum=0;
 0042           ;  unsigned char mid;
 0042           ;  mid=UDR;
 0042 0CB1              in R16,0xc
 0044                   .dbline 36
 0044           ;  
 0044           ;  
 0044           ;  if(!(mid&0x01))//判断是命令还是数据请求,是请求,则
 0044 00FD              sbrc R16,0
 0046 06C0              rjmp L4
 0048                   .dbline 37
 0048           ;        {
 0048                   .dbline 38
 0048           ;               rxed_flag=1;
 0048 81E0              ldi R24,1
 004A 80930000          sts _rxed_flag,R24
 004E                   .dbline 39
 004E           ;               dp2rass[0]=mid;
 004E 00930000          sts _dp2rass,R16
 0052                   .dbline 40
 0052           ;               return;
 0052 28C0              rjmp L2
 0054           L4:
 0054                   .dbline 43
 0054           ;        }
 0054           ;                                  
 0054           ;  dp2rass[rxnum++]=mid;
 0054 20900000          lds R2,L3
 0058 30900100          lds R3,L3+1
 005C C101              movw R24,R2
 005E 0196              adiw R24,1
 0060 90930100          sts L3+1,R25
 0064 80930000          sts L3,R24
 0068 80E0              ldi R24,<_dp2rass
 006A 90E0              ldi R25,>_dp2rass
 006C F101              movw R30,R2
 006E E80F              add R30,R24
 0070 F91F              adc R31,R25
 0072 0083              std z+0,R16
 0074                   .dbline 44
 0074           ;  PORTC ^=1<<pc0;
 0074 81E0              ldi R24,1
 0076 25B2              in R2,0x15
 0078 2826              eor R2,R24
 007A 25BA              out 0x15,R2
 007C                   .dbline 45
 007C           ;  if(rxnum>4)
 007C 84E0              ldi R24,4
 007E 90E0              ldi R25,0
 0080 20900000          lds R2,L3
 0084 30900100          lds R3,L3+1
 0088 8215              cp R24,R2
 008A 9305              cpc R25,R3
 008C 54F4              brge L6
 008E                   .dbline 46
 008E           ;       {
 008E                   .dbline 47
 008E           ;               rxnum=0;
 008E 2224              clr R2
 0090 3324              clr R3
 0092 30920100          sts L3+1,R3
 0096 20920000          sts L3,R2
 009A                   .dbline 48
 009A           ;               PORTC &=~(1<<pc0);
 009A A898              cbi 0x15,0
 009C                   .dbline 49
 009C           ;               rxed_flag=1;
 009C 81E0              ldi R24,1
 009E 80930000          sts _rxed_flag,R24
 00A2                   .dbline 50
 00A2           ;       }
 00A2           L6:
 00A2                   .dbline 51
 00A2           ;  SEI();
 00A2 7894              sei
 00A4                   .dbline -2
 00A4           L2:
 00A4 2990              ld R2,y+
 00A6 2FBE              out 0x3f,R2
 00A8 F991              ld R31,y+
 00AA E991              ld R30,y+
 00AC 9991              ld R25,y+
 00AE 8991              ld R24,y+
 00B0 0991              ld R16,y+
 00B2 3990              ld R3,y+
 00B4 2990              ld R2,y+
 00B6                   .dbline 0 ; func end
 00B6 1895              reti
 00B8                   .dbsym r mid 16 c
 00B8                   .dbend
 00B8                   .dbfunc e uart0_tx_isr _uart0_tx_isr fV
                        .even
 00B8           _uart0_tx_isr::
 00B8 00D0              rcall push_lset
 00BA                   .dbline -1
 00BA                   .dbline 58
 00BA           ; }
 00BA           ; 
 00BA           ; 
 00BA           ; 
 00BA           ; //#pragma interrupt_handler uart0_tx_isr:12
 00BA           ; void uart0_tx_isr(void)
 00BA           ; {
 00BA                   .dbline 61
 00BA           ;  //character has been transmitted
 00BA           ;  //use pc0 to show transmitter over
 00BA           ;  PORTC |=1<<pc1;
 00BA A99A              sbi 0x15,1
 00BC                   .dbline 62
 00BC           ;  delay_us(100);
 00BC 04E6              ldi R16,100
 00BE 00D0              rcall _delay_us
 00C0                   .dbline 63
 00C0           ;  PORTC &=~(1<<pc1);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -