📄 sudu.lis
字号:
02B0 ;
02B0 ;
02B0 ; //定时器0溢出中断
02B0 ; #pragma interrupt_handler tim0Ovf:10 // vector #
02B0 ; //测量时间定时
02B0 ; void tim0Ovf(void)
02B0 ; {
02B0 .dbline 183
02B0 ; TCCR0 = 0x00; //停止TC0
02B0 2224 clr R2
02B2 23BE out 0x33,R2
02B4 .dbline 185
02B4 ; //INT0中断关
02B4 ; GICR = 0x00;
02B4 2BBE out 0x3b,R2
02B6 .dbline 187
02B6 ;
02B6 ; m += 1;
02B6 80911800 lds R24,_m
02BA 90911900 lds R25,_m+1
02BE 0196 adiw R24,1
02C0 90931900 sts _m+1,R25
02C4 80931800 sts _m,R24
02C8 .dbline 188
02C8 ; TCNT0 = TIME50ms;
02C8 8EEA ldi R24,174
02CA 82BF out 0x32,R24
02CC .dbline 189
02CC ; TCCR0 = 0x05; // Timer on //1024分频
02CC 85E0 ldi R24,5
02CE 83BF out 0x33,R24
02D0 .dbline 194
02D0 ;
02D0 ; //PORTB |= (1<<PORTB1);
02D0 ; //PORTB &= ~(1<<PORTB1);
02D0 ;
02D0 ; if(GIFR& 0x40)
02D0 2AB6 in R2,0x3a
02D2 26FE sbrs R2,6
02D4 02C0 rjmp L32
02D6 .dbline 195
02D6 ; GIFR = 0x40; //清除INT0中断标志
02D6 80E4 ldi R24,64
02D8 8ABF out 0x3a,R24
02DA L32:
02DA .dbline 196
02DA ; SEI();
02DA 7894 sei
02DC .dbline 198
02DC ; //INT0中断开
02DC ; GICR = 0x40;
02DC 80E4 ldi R24,64
02DE 8BBF out 0x3b,R24
02E0 .dbline -2
02E0 .dbline 200
02E0 ;
02E0 ; }
02E0 L31:
02E0 2990 ld R2,y+
02E2 2FBE out 0x3f,R2
02E4 9991 ld R25,y+
02E6 8991 ld R24,y+
02E8 2990 ld R2,y+
02EA .dbline 0 ; func end
02EA 1895 reti
02EC .dbend
.area vector(rom, abs)
.org 2
0002 76C1 rjmp _INT_0
.area text(rom, con, rel)
02EC .dbfile sudu.c
02EC .dbfunc e INT_0 _INT_0 fV
.even
02EC _INT_0::
02EC 00D0 rcall push_lset
02EE .dbline -1
02EE .dbline 205
02EE ; //INT0中断服务子程序
02EE ; #pragma interrupt_handler INT_0:2 // vector #
02EE ;
02EE ; void INT_0(void)
02EE ; {
02EE .dbline 206
02EE ; n = m;
02EE 20901800 lds R2,_m
02F2 30901900 lds R3,_m+1
02F6 30921700 sts _n+1,R3
02FA 20921600 sts _n,R2
02FE .dbline 215
02FE ; /*
02FE ; while(1)
02FE ; {
02FE ; PORTD |= (1<<PORTD3);
02FE ; PORTD &= ~(1<<PORTD3);
02FE ; delay(500);
02FE ; }
02FE ; */
02FE ; num_read(); //从EEROM读出num
02FE 62DF rcall _num_read
0300 .dbline 216
0300 ; num += m ;
0300 20901800 lds R2,_m
0304 30901900 lds R3,_m+1
0308 4424 clr R4
030A 5524 clr R5
030C 80901200 lds R8,_num+2
0310 90901300 lds R9,_num+2+1
0314 60901000 lds R6,_num
0318 70901100 lds R7,_num+1
031C 620C add R6,R2
031E 731C adc R7,R3
0320 841C adc R8,R4
0322 951C adc R9,R5
0324 70921100 sts _num+1,R7
0328 60921000 sts _num,R6
032C 90921300 sts _num+2+1,R9
0330 80921200 sts _num+2,R8
0334 .dbline 217
0334 ; num_write(); //将num写入EEROM
0334 5CDF rcall _num_write
0336 .dbline 218
0336 ; DataTransmit(); //串行485数据发送
0336 70DF rcall _DataTransmit
0338 .dbline 219
0338 ; m = 0;
0338 2224 clr R2
033A 3324 clr R3
033C 30921900 sts _m+1,R3
0340 20921800 sts _m,R2
0344 .dbline 220
0344 ; TCNT0 = TIME50ms;
0344 8EEA ldi R24,174
0346 82BF out 0x32,R24
0348 .dbline 221
0348 ; TCCR0 = 0x05; //Timer on //1024分频
0348 85E0 ldi R24,5
034A 83BF out 0x33,R24
034C .dbline -2
034C .dbline 224
034C ;
034C ;
034C ; }
034C L34:
034C 00D0 rcall pop_lset
034E .dbline 0 ; func end
034E 1895 reti
0350 .dbend
0350 .dbfunc e main _main fV
.even
0350 _main::
0350 .dbline -1
0350 .dbline 228
0350 ;
0350 ;
0350 ; void main(void)
0350 ; {
0350 .dbline 229
0350 ; delay(200);
0350 08EC ldi R16,200
0352 56DE rcall _delay
0354 .dbline 230
0354 ; OSCCAL=e2rom_read(osccal_addr);
0354 0FEF ldi R16,511
0356 11E0 ldi R17,1
0358 2EDF rcall _e2rom_read
035A 01BF out 0x31,R16
035C .dbline 233
035C ; //OSCCAL=osccal;
035C ;
035C ; PORTD|=(1<<PORTD3);
035C 939A sbi 0x12,3
035E .dbline 235
035E ;
035E ; MCUCR = 0x02; //INT0下降沿
035E 82E0 ldi R24,2
0360 85BF out 0x35,R24
0362 .dbline 236
0362 ; TIMSK = 0x01; //TC0溢出中断允许
0362 81E0 ldi R24,1
0364 89BF out 0x39,R24
0366 .dbline 239
0366 ;
0366 ; //定时器0中断设置
0366 ; TCCR0 = 0x00; //停止TC0
0366 2224 clr R2
0368 23BE out 0x33,R2
036A .dbline 240
036A ; TCNT0 = TIME50ms; //初装值
036A 8EEA ldi R24,174
036C 82BF out 0x32,R24
036E .dbline 242
036E ;
036E ; USART_Init();
036E 93DF rcall _USART_Init
0370 .dbline 244
0370 ;
0370 ; DDRD=0xfb;
0370 8BEF ldi R24,251
0372 81BB out 0x11,R24
0374 .dbline 246
0374 ;
0374 ; SEI();
0374 7894 sei
0376 .dbline 248
0376 ;
0376 ; GICR = 0x40; //INT0中断开
0376 80E4 ldi R24,64
0378 8BBF out 0x3b,R24
037A .dbline 249
037A ; m = 0;
037A 2224 clr R2
037C 3324 clr R3
037E 30921900 sts _m+1,R3
0382 20921800 sts _m,R2
0386 .dbline 250
0386 ; TCCR0 = 0x05; //Timer on //1024分频
0386 85E0 ldi R24,5
0388 83BF out 0x33,R24
038A 1BC0 rjmp L37
038C L36:
038C .dbline 254
038C ; //主循环...
038C ;
038C ; while(1)
038C ; {
038C .dbline 260
038C ; /*测试程序段,已屏蔽*/
038C ; /*PORTB &= ~(1<<PORTB2);
038C ; delay(1);
038C ; PORTB |= (1<<PORTB2);
038C ; */
038C ; DataTransmit();
038C 45DF rcall _DataTransmit
038E .dbline 261
038E ; for(k=1;k<100;k++)
038E 81E0 ldi R24,1
0390 90E0 ldi R25,0
0392 90931500 sts _k+1,R25
0396 80931400 sts _k,R24
039A 0BC0 rjmp L42
039C L39:
039C .dbline 262
039C 08EC ldi R16,200
039E 30DE rcall _delay
03A0 L40:
03A0 .dbline 261
03A0 80911400 lds R24,_k
03A4 90911500 lds R25,_k+1
03A8 0196 adiw R24,1
03AA 90931500 sts _k+1,R25
03AE 80931400 sts _k,R24
03B2 L42:
03B2 .dbline 261
03B2 80911400 lds R24,_k
03B6 90911500 lds R25,_k+1
03BA 8436 cpi R24,100
03BC E0E0 ldi R30,0
03BE 9E07 cpc R25,R30
03C0 68F3 brlo L39
03C2 .dbline 265
03C2 L37:
03C2 .dbline 253
03C2 E4CF rjmp L36
03C4 X0:
03C4 .dbline -2
03C4 .dbline 268
03C4 ; delay(200);
03C4 ;
03C4 ;
03C4 ; }
03C4 ;
03C4 ;
03C4 ; }
03C4 L35:
03C4 .dbline 0 ; func end
03C4 0895 ret
03C6 .dbend
.area bss(ram, con, rel)
0000 .dbfile sudu.c
0000 _data_receive::
0000 .blkb 3
0003 .dbsym e data_receive _data_receive A[3:3]c
0003 _xxx::
0003 .blkb 3
0006 .dbsym e xxx _xxx A[3:3]c
0006 _cx::
0006 .blkb 1
0007 .dbsym e cx _cx c
0007 _i::
0007 .blkb 1
0008 .dbsym e i _i c
0008 _flag_receive::
0008 .blkb 1
0009 .dbsym e flag_receive _flag_receive c
0009 _nLH::
0009 .blkb 1
000A .dbsym e nLH _nLH c
000A _nLL::
000A .blkb 1
000B .dbsym e nLL _nLL c
000B _K::
000B .blkb 1
000C .dbsym e K _K c
000C _numHH::
000C .blkb 1
000D .dbsym e numHH _numHH c
000D _numHL::
000D .blkb 1
000E .dbsym e numHL _numHL c
000E _numLH::
000E .blkb 1
000F .dbsym e numLH _numLH c
000F _numLL::
000F .blkb 1
0010 .dbsym e numLL _numLL c
0010 _num::
0010 .blkb 4
0014 .dbsym e num _num l
0014 _k::
0014 .blkb 2
0016 .dbsym e k _k i
0016 _n::
0016 .blkb 2
0018 .dbsym e n _n i
0018 _m::
0018 .blkb 2
001A .dbsym e m _m i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -