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