📄 zong.lis
字号:
0084 ; }
0084 ;
0084 ;
0084 ; void int0_init(void)
0084 ; {
0084 .dbline 108
0084 ; MCUCR|=((1<<ISC01)|(1<<ISC00));
0084 85B7 in R24,0x35
0086 8360 ori R24,3
0088 85BF out 0x35,R24
008A .dbline 109
008A ; GICR|=(1<<INT0);
008A 8BB7 in R24,0x3b
008C 8064 ori R24,64
008E 8BBF out 0x3b,R24
0090 .dbline -2
0090 L15:
0090 .dbline 0 ; func end
0090 0895 ret
0092 .dbend
.area vector(rom, abs)
.org 32
0020 0C944900 jmp _timer1_ovf_isr
.area text(rom, con, rel)
0092 .dbfile zong.c
0092 .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
0092 _timer1_ovf_isr::
0092 8A93 st -y,R24
0094 9A93 st -y,R25
0096 8FB7 in R24,0x3f
0098 8A93 st -y,R24
009A .dbline -1
009A .dbline 118
009A ; }
009A ;
009A ;
009A ;
009A ;
009A ;
009A ; #pragma interrupt_handler timer1_ovf_isr:9
009A ; void timer1_ovf_isr(void)
009A ; {
009A .dbline 119
009A ; T1OVF_NUM++;
009A 80910100 lds R24,_T1OVF_NUM
009E 90910200 lds R25,_T1OVF_NUM+1
00A2 0196 adiw R24,1
00A4 90930200 sts _T1OVF_NUM+1,R25
00A8 80930100 sts _T1OVF_NUM,R24
00AC .dbline -2
00AC L16:
00AC 8991 ld R24,y+
00AE 8FBF out 0x3f,R24
00B0 9991 ld R25,y+
00B2 8991 ld R24,y+
00B4 .dbline 0 ; func end
00B4 1895 reti
00B6 .dbend
00B6 .dbfunc e uart0_init _uart0_init fV
.even
00B6 _uart0_init::
00B6 .dbline -1
00B6 .dbline 132
00B6 ;
00B6 ; //TIMER1 has overflowed
00B6 ; //TCNT1H = 0x00 /*INVALID SETTING*/; //reload counter high value
00B6 ; //TCNT1L = 0x00 /*INVALID SETTING*/; //reload counter low value
00B6 ; }
00B6 ;
00B6 ; //UART0 initialize
00B6 ; // desired baud rate: 9600
00B6 ; // actual: baud rate:9615 (0.2%)
00B6 ; // char size: 8 bit
00B6 ; // parity: Disabled
00B6 ; void uart0_init(void)
00B6 ; {
00B6 .dbline 133
00B6 ; UCSRB = 0x98; //disable while setting baud rate
00B6 88E9 ldi R24,152
00B8 8AB9 out 0xa,R24
00BA .dbline 134
00BA ; UCSRA = 0x20;
00BA 80E2 ldi R24,32
00BC 8BB9 out 0xb,R24
00BE .dbline 135
00BE ; UCSRC = 0x86;
00BE 86E8 ldi R24,134
00C0 80BD out 0x20,R24
00C2 .dbline 136
00C2 ; UBRRL = 0x33; //set baud rate lo
00C2 83E3 ldi R24,51
00C4 89B9 out 0x9,R24
00C6 .dbline 137
00C6 ; UBRRH = 0x00; //set baud rate hi
00C6 2224 clr R2
00C8 20BC out 0x20,R2
00CA .dbline -2
00CA L17:
00CA .dbline 0 ; func end
00CA 0895 ret
00CC .dbend
00CC .dbfunc e usart_tx _usart_tx fV
00CC ; data -> R20
.even
00CC _usart_tx::
00CC 0E940000 xcall push_gset1
00D0 402F mov R20,R16
00D2 .dbline -1
00D2 .dbline 143
00D2 ; //UCSRB = 0x00;
00D2 ; }
00D2 ;
00D2 ;
00D2 ; void usart_tx(unsigned char data)
00D2 ; {
00D2 .dbline 144
00D2 ; UDR=data;
00D2 4CB9 out 0xc,R20
00D4 L19:
00D4 .dbline 146
00D4 L20:
00D4 .dbline 145
00D4 ; while(!(UCSRA&(1<<TXC)))
00D4 5E9B sbis 0xb,6
00D6 FECF rjmp L19
00D8 .dbline 147
00D8 ; ;
00D8 ; delay_nms(1);
00D8 01E0 ldi R16,1
00DA 10E0 ldi R17,0
00DC 9ADF xcall _delay_nms
00DE .dbline -2
00DE L18:
00DE 0E940000 xcall pop_gset1
00E2 .dbline 0 ; func end
00E2 0895 ret
00E4 .dbsym r data 20 c
00E4 .dbend
.area vector(rom, abs)
.org 44
002C 0C947200 jmp _usart_receive
.area text(rom, con, rel)
00E4 .dbfile zong.c
00E4 .dbfunc e usart_receive _usart_receive fV
00E4 ; d -> R16
.even
00E4 _usart_receive::
00E4 0A93 st -y,R16
00E6 0FB7 in R16,0x3f
00E8 0A93 st -y,R16
00EA .dbline -1
00EA .dbline 152
00EA ; }
00EA ;
00EA ; #pragma interrupt_handler usart_receive:12
00EA ; void usart_receive(void)
00EA ; {
00EA .dbline 154
00EA ; unsigned char d;
00EA ; d=UDR;
00EA 0CB1 in R16,0xc
00EC .dbline 155
00EC ; if(d==0x01)
00EC 0130 cpi R16,1
00EE 19F4 brne L23
00F0 .dbline 156
00F0 ; {
00F0 .dbline 157
00F0 ; PORTB|=(1<<0);
00F0 C09A sbi 0x18,0
00F2 .dbline 158
00F2 ; SEI();
00F2 7894 sei
00F4 .dbline 159
00F4 ; }
00F4 02C0 xjmp L24
00F6 L23:
00F6 .dbline 161
00F6 .dbline 162
00F6 C098 cbi 0x18,0
00F8 .dbline 163
00F8 F894 cli
00FA .dbline 164
00FA L24:
00FA .dbline -2
00FA L22:
00FA 0991 ld R16,y+
00FC 0FBF out 0x3f,R16
00FE 0991 ld R16,y+
0100 .dbline 0 ; func end
0100 1895 reti
0102 .dbsym r d 16 c
0102 .dbend
.area vector(rom, abs)
.org 4
0004 0C948100 jmp _int0_isr
.area text(rom, con, rel)
0102 .dbfile zong.c
0102 .dbfunc e int0_isr _int0_isr fV
.even
0102 _int0_isr::
0102 0E940000 xcall push_lset
0106 0E940000 xcall push_gset2
010A .dbline -1
010A .dbline 169
010A ; else
010A ; {
010A ; PORTB&=~(1<<0);
010A ; CLI();
010A ; }
010A ; }
010A ;
010A ; #pragma interrupt_handler int0_isr:2
010A ; void int0_isr(void)
010A ; {
010A .dbline 170
010A ; if(!N)
010A 20900000 lds R2,_N
010E 2220 tst R2
0110 49F4 brne L26
0112 .dbline 171
0112 ; {
0112 .dbline 172
0112 ; TCCR1B=0X01;//开始内部计数
0112 81E0 ldi R24,1
0114 8EBD out 0x2e,R24
0116 .dbline 173
0116 ; MCUCR=0X02;//设置外部中断0下降沿产生中断
0116 82E0 ldi R24,2
0118 85BF out 0x35,R24
011A .dbline 174
011A ; N++;
011A 822D mov R24,R2
011C 8F5F subi R24,255 ; addi 1
011E 80930000 sts _N,R24
0122 .dbline 175
0122 ; }
0122 77C0 xjmp L27
0124 L26:
0124 .dbline 177
0124 .dbline 178
0124 2224 clr R2
0126 2EBC out 0x2e,R2
0128 .dbline 179
0128 F894 cli
012A .dbline 181
012A 20900100 lds R2,_T1OVF_NUM
012E 30900200 lds R3,_T1OVF_NUM+1
0132 4424 clr R4
0134 5524 clr R5
0136 30920300 sts _T1_NUM+1,R3
013A 20920200 sts _T1_NUM,R2
013E 50920500 sts _T1_NUM+2+1,R5
0142 40920400 sts _T1_NUM+2,R4
0146 .dbline 182
0146 40900400 lds R4,_T1_NUM+2
014A 50900500 lds R5,_T1_NUM+2+1
014E 20900200 lds R2,_T1_NUM
0152 30900300 lds R3,_T1_NUM+1
0156 40E0 ldi R20,0
0158 50E0 ldi R21,0
015A 61E0 ldi R22,1
015C 70E0 ldi R23,0
015E 5A92 st -y,R5
0160 4A92 st -y,R4
0162 3A92 st -y,R3
0164 2A92 st -y,R2
0166 8A01 movw R16,R20
0168 9B01 movw R18,R22
016A 0E940000 xcall empy32u
016E 1801 movw R2,R16
0170 2901 movw R4,R18
0172 6CB4 in R6,0x2c
0174 7DB4 in R7,0x2d
0176 8824 clr R8
0178 9924 clr R9
017A 260C add R2,R6
017C 371C adc R3,R7
017E 481C adc R4,R8
0180 591C adc R5,R9
0182 30920300 sts _T1_NUM+1,R3
0186 20920200 sts _T1_NUM,R2
018A 50920500 sts _T1_NUM+2+1,R5
018E 40920400 sts _T1_NUM+2,R4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -