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

📄 sudu.lis

📁 用AVR单片机实现脉冲采集源代码
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 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 + -