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

📄 init.lis

📁 ICCAVR Rainguage counter program
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 006A                   .dbline 0 ; func end
 006A 0895              ret
 006C                   .dbend
                        .area vector(rom, abs)
                        .org 40
 0028 0C943600          jmp _spi_stc_isr
                        .area text(rom, con, rel)
 006C                   .dbfile C:\RGauge\init.c
 006C                   .dbfunc e spi_stc_isr _spi_stc_isr fV
                        .even
 006C           _spi_stc_isr::
 006C                   .dbline -1
 006C                   .dbline 74
 006C           ; }
 006C           ; 
 006C           ; #pragma interrupt_handler spi_stc_isr:11
 006C           ; void spi_stc_isr(void)
 006C           ; {
 006C                   .dbline -2
 006C           L10:
 006C                   .dbline 0 ; func end
 006C 1895              reti
 006E                   .dbend
 006E                   .dbfunc e timer0_init _timer0_init fV
                        .even
 006E           _timer0_init::
 006E                   .dbline -1
 006E                   .dbline 84
 006E           ;  //byte in SPDR has been sent/received
 006E           ; }
 006E           ; 
 006E           ; 
 006E           ; //TIMER0 initialize - prescale:64
 006E           ; // WGM: Normal
 006E           ; // desired value: 1mSec
 006E           ; // actual value:  0.998mSec (0.2%)
 006E           ; void timer0_init(void)
 006E           ; {
 006E                   .dbline 85
 006E           ;  TCCR0 = 0x00; //stop
 006E 2224              clr R2
 0070 23BE              out 0x33,R2
 0072                   .dbline 86
 0072           ;  TCNT0 = 0x8D; //set count
 0072 8DE8              ldi R24,141
 0074 82BF              out 0x32,R24
 0076                   .dbline 87
 0076           ;  OCR0  = 0x73;  //set compare
 0076 83E7              ldi R24,115
 0078 8CBF              out 0x3c,R24
 007A                   .dbline 88
 007A           ;  TCCR0 = 0x03; //start timer
 007A 83E0              ldi R24,3
 007C 83BF              out 0x33,R24
 007E                   .dbline -2
 007E           L11:
 007E                   .dbline 0 ; func end
 007E 0895              ret
 0080                   .dbend
                        .area data(ram, con, rel)
 0002                   .dbfile C:\RGauge\init.c
 0002           _count::
 0002                   .blkb 2
                        .area idata
 0002 0000              .word 0
                        .area data(ram, con, rel)
 0004                   .dbfile C:\RGauge\init.c
 0004                   .dbsym e count _count i
                        .area vector(rom, abs)
                        .org 36
 0024 0C944000          jmp _timer0_ovf_isr
                        .area data(ram, con, rel)
 0004                   .dbfile C:\RGauge\init.c
                        .area text(rom, con, rel)
 0080                   .dbfile C:\RGauge\init.c
 0080                   .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
                        .even
 0080           _timer0_ovf_isr::
 0080 0E940000          xcall push_lset
 0084                   .dbline -1
 0084                   .dbline 98
 0084           ; }
 0084           ; 
 0084           ; 
 0084           ; unsigned int count=0; //to count timer0
 0084           ; extern char buffer [33];
 0084           ; char uabuffer [33];
 0084           ; extern int rcount;
 0084           ; #pragma interrupt_handler timer0_ovf_isr:10
 0084           ; void timer0_ovf_isr(void)
 0084           ; {
 0084                   .dbline 99
 0084           ;  TCNT0 = 0x8D; //reload counter value
 0084 8DE8              ldi R24,141
 0086 82BF              out 0x32,R24
 0088                   .dbline 100
 0088           ;  if (++count == 5000)  //1000 ms = 1 Sec
 0088 80910200          lds R24,_count
 008C 90910300          lds R25,_count+1
 0090 0196              adiw R24,1
 0092 90930300          sts _count+1,R25
 0096 80930200          sts _count,R24
 009A 8838              cpi R24,136
 009C E3E1              ldi R30,19
 009E 9E07              cpc R25,R30
 00A0 D9F4              brne L13
 00A2                   .dbline 101
 00A2           ;  {
 00A2                   .dbline 102
 00A2           ;  count = 0;
 00A2 2224              clr R2
 00A4 3324              clr R3
 00A6 30920300          sts _count+1,R3
 00AA 20920200          sts _count,R2
 00AE                   .dbline 103
 00AE           ;  if (sendready == 1) {
 00AE 80910000          lds R24,_sendready
 00B2 90910100          lds R25,_sendready+1
 00B6 8130              cpi R24,1
 00B8 E0E0              ldi R30,0
 00BA 9E07              cpc R25,R30
 00BC 51F4              brne L15
 00BE                   .dbline 103
 00BE                   .dbline 104
 00BE           ;  uart_puts(buffer);  //put the buffer to the serial
 00BE 00E0              ldi R16,<_buffer
 00C0 10E0              ldi R17,>_buffer
 00C2 0E940000          xcall _uart_puts
 00C6                   .dbline 105
 00C6           ;  sendready = 0;
 00C6 2224              clr R2
 00C8 3324              clr R3
 00CA 30920100          sts _sendready+1,R3
 00CE 20920000          sts _sendready,R2
 00D2                   .dbline 106
 00D2           ;  }
 00D2           L15:
 00D2                   .dbline 107
 00D2           ;  else {
 00D2                   .dbline 109
 00D2           ;  //put to the queue buffer
 00D2           ;  }
 00D2           L16:
 00D2                   .dbline 111
 00D2 2224              clr R2
 00D4 2DBC              out 0x2d,R2
 00D6                   .dbline 112
 00D6 2CBC              out 0x2c,R2
 00D8                   .dbline 113
 00D8           L13:
 00D8                   .dbline -2
 00D8           L12:
 00D8 0E940000          xcall pop_lset
 00DC                   .dbline 0 ; func end
 00DC 1895              reti
 00DE                   .dbend
 00DE                   .dbfunc e init_devices _init_devices fV
                        .even
 00DE           _init_devices::
 00DE                   .dbline -1
 00DE                   .dbline 119
 00DE           ;  //reset the counter 1
 00DE           ;  TCNT1H=0x00;
 00DE           ;  TCNT1L=0x00; 
 00DE           ;  }
 00DE           ;  
 00DE           ; }
 00DE           ; 
 00DE           ; //call this routine to initialize all peripherals
 00DE           ; void init_devices(void)
 00DE           ; {
 00DE                   .dbline 121
 00DE           ;  //stop errant interrupts until set up
 00DE           ;  CLI(); //disable all interrupts
 00DE F894              cli
 00E0                   .dbline 122
 00E0           ;  port_init();
 00E0 8FDF              xcall _port_init
 00E2                   .dbline 123
 00E2           ;  uart0_init();
 00E2 9ADF              xcall _uart0_init
 00E4                   .dbline 124
 00E4           ;  spi_init();
 00E4 BEDF              xcall _spi_init
 00E6                   .dbline 125
 00E6           ;  timer0_init();
 00E6 C3DF              xcall _timer0_init
 00E8                   .dbline 127
 00E8           ; 
 00E8           ;  MCUCR = 0x00;
 00E8 2224              clr R2
 00EA 25BE              out 0x35,R2
 00EC                   .dbline 128
 00EC           ;  GICR  = 0x00;
 00EC 2BBE              out 0x3b,R2
 00EE                   .dbline 129
 00EE           ;  TIMSK = 0x01; //timer interrupt sources
 00EE 81E0              ldi R24,1
 00F0 89BF              out 0x39,R24
 00F2                   .dbline 130
 00F2           ;  SEI(); //re-enable interrupts
 00F2 7894              sei
 00F4                   .dbline -2
 00F4           L17:
 00F4                   .dbline 0 ; func end
 00F4 0895              ret
 00F6                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\RGauge\init.c
 0000           _uabuffer::
 0000                   .blkb 33
 0021                   .dbsym e uabuffer _uabuffer A[33:33]c

⌨️ 快捷键说明

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