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