📄 init.lis
字号:
.module init.c
.area text(rom, con, rel)
0000 .dbfile C:\ATMega8515\测试程序\init.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 9
0000 ; //ICC-AVR application builder : 2006-4-28 17:54:09
0000 ; // Target : M8515
0000 ; // Crystal: 11.059Mhz
0000 ;
0000 ; #include <iom8515v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 10
0000 ; PORTA = 0x00;
0000 2224 clr R2
0002 2BBA out 0x1b,R2
0004 .dbline 11
0004 ; DDRA = 0xFF;
0004 8FEF ldi R24,255
0006 8ABB out 0x1a,R24
0008 .dbline 12
0008 ; PORTB = 0x00;
0008 28BA out 0x18,R2
000A .dbline 13
000A ; DDRB = 0xBF;
000A 8FEB ldi R24,191
000C 87BB out 0x17,R24
000E .dbline 14
000E ; PORTC = 0xE0;
000E 80EE ldi R24,224
0010 85BB out 0x15,R24
0012 .dbline 15
0012 ; DDRC = 0xFC;
0012 8CEF ldi R24,252
0014 84BB out 0x14,R24
0016 .dbline 16
0016 ; PORTD = 0x20;
0016 80E2 ldi R24,32
0018 82BB out 0x12,R24
001A .dbline 17
001A ; DDRD = 0x22;
001A 82E2 ldi R24,34
001C 81BB out 0x11,R24
001E .dbline 18
001E ; PORTE = 0x00;
001E 27B8 out 0x7,R2
0020 .dbline 19
0020 ; DDRE = 0x00;
0020 26B8 out 0x6,R2
0022 .dbline -2
0022 L1:
0022 .dbline 0 ; func end
0022 0895 ret
0024 .dbend
0024 .dbfunc e timer1_init _timer1_init fV
.even
0024 _timer1_init::
0024 .dbline -1
0024 .dbline 27
0024 ; }
0024 ;
0024 ; //TIMER1 initialize - prescale:1
0024 ; // WGM: 0) Normal, TOP=0xFFFF
0024 ; // desired value: 1mSec
0024 ; // actual value: 1.000mSec (0.0%)
0024 ; void timer1_init(void)
0024 ; {
0024 .dbline 28
0024 ; TCCR1B = 0x00; //stop
0024 2224 clr R2
0026 2EBC out 0x2e,R2
0028 .dbline 29
0028 ; TCNT1H = 0xD4; //setup
0028 84ED ldi R24,212
002A 8DBD out 0x2d,R24
002C .dbline 30
002C ; TCNT1L = 0xCE;
002C 8EEC ldi R24,206
002E 8CBD out 0x2c,R24
0030 .dbline 31
0030 ; OCR1AH = 0x2B;
0030 8BE2 ldi R24,43
0032 8BBD out 0x2b,R24
0034 .dbline 32
0034 ; OCR1AL = 0x32;
0034 82E3 ldi R24,50
0036 8ABD out 0x2a,R24
0038 .dbline 33
0038 ; OCR1BH = 0x2B;
0038 8BE2 ldi R24,43
003A 89BD out 0x29,R24
003C .dbline 34
003C ; OCR1BL = 0x32;
003C 82E3 ldi R24,50
003E 88BD out 0x28,R24
0040 .dbline 35
0040 ; TCCR1A = 0x00;
0040 2FBC out 0x2f,R2
0042 .dbline 36
0042 ; TCCR1B = 0x01; //start Timer
0042 81E0 ldi R24,1
0044 8EBD out 0x2e,R24
0046 .dbline -2
0046 L2:
0046 .dbline 0 ; func end
0046 0895 ret
0048 .dbend
.area data(ram, con, rel)
0000 .dbfile C:\ATMega8515\测试程序\init.c
0000 _count::
0000 .blkb 2
.area idata
0000 0000 .word 0
.area data(ram, con, rel)
0002 .dbfile C:\ATMega8515\测试程序\init.c
0002 .dbsym e count _count i
.area vector(rom, abs)
.org 12
000C 24C0 rjmp _timer1_ovf_isr
.area data(ram, con, rel)
0002 .dbfile C:\ATMega8515\测试程序\init.c
.area text(rom, con, rel)
0048 .dbfile C:\ATMega8515\测试程序\init.c
0048 .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
0048 _timer1_ovf_isr::
0048 8A93 st -y,R24
004A 9A93 st -y,R25
004C 8FB7 in R24,0x3f
004E 8A93 st -y,R24
0050 .dbline -1
0050 .dbline 45
0050 ; }
0050 ;
0050 ; unsigned int count =0;
0050 ; extern unsigned char ledflag;
0050 ; extern unsigned char shuflag;
0050 ; extern unsigned char lcdflag;
0050 ; #pragma interrupt_handler timer1_ovf_isr:7
0050 ; void timer1_ovf_isr(void)
0050 ; {
0050 .dbline 46
0050 ; TCNT1H = 0xD4; //reload counter high value
0050 84ED ldi R24,212
0052 8DBD out 0x2d,R24
0054 .dbline 47
0054 ; TCNT1L = 0xCE; //reload counter low value
0054 8EEC ldi R24,206
0056 8CBD out 0x2c,R24
0058 .dbline 48
0058 ; if((++count&0xff)==0)ledflag=1;
0058 80910000 lds R24,_count
005C 90910100 lds R25,_count+1
0060 0196 adiw R24,1
0062 90930100 sts _count+1,R25
0066 80930000 sts _count,R24
006A 9070 andi R25,0
006C 8030 cpi R24,0
006E 8907 cpc R24,R25
0070 19F4 brne L4
0072 X0:
0072 .dbline 48
0072 81E0 ldi R24,1
0074 80930000 sts _ledflag,R24
0078 L4:
0078 .dbline 49
0078 ; if((count&0x3ff)==0)shuflag=1;
0078 80910000 lds R24,_count
007C 90910100 lds R25,_count+1
0080 9370 andi R25,3
0082 8030 cpi R24,0
0084 8907 cpc R24,R25
0086 19F4 brne L6
0088 X1:
0088 .dbline 49
0088 81E0 ldi R24,1
008A 80930000 sts _shuflag,R24
008E L6:
008E .dbline 50
008E 80910000 lds R24,_count
0092 90910100 lds R25,_count+1
0096 9170 andi R25,1
0098 8030 cpi R24,0
009A 8907 cpc R24,R25
009C 19F4 brne L8
009E X2:
009E .dbline 50
009E 81E0 ldi R24,1
00A0 80930000 sts _lcdflag,R24
00A4 L8:
00A4 .dbline -2
00A4 L3:
00A4 8991 ld R24,y+
00A6 8FBF out 0x3f,R24
00A8 9991 ld R25,y+
00AA 8991 ld R24,y+
00AC .dbline 0 ; func end
00AC 1895 reti
00AE .dbend
00AE .dbfunc e spi_init _spi_init fV
.even
00AE _spi_init::
00AE .dbline -1
00AE .dbline 57
00AE ; if((count&0x1ff)==0)lcdflag=1;
00AE ;
00AE ; }
00AE ;
00AE ; //SPI initialize
00AE ; // clock rate: 5529498hz
00AE ; void spi_init(void)
00AE ; {
00AE .dbline 58
00AE ; SPCR = 0xFC; //setup SPI
00AE 8CEF ldi R24,252
00B0 8DB9 out 0xd,R24
00B2 .dbline -2
00B2 L10:
00B2 .dbline 0 ; func end
00B2 0895 ret
00B4 .dbend
.area vector(rom, abs)
.org 16
0010 5AC0 rjmp _spi_stc_isr
.area text(rom, con, rel)
00B4 .dbfile C:\ATMega8515\测试程序\init.c
00B4 .dbfunc e spi_stc_isr _spi_stc_isr fV
.even
00B4 _spi_stc_isr::
00B4 2A92 st -y,R2
00B6 8A93 st -y,R24
00B8 2FB6 in R2,0x3f
00BA 2A92 st -y,R2
00BC .dbline -1
00BC .dbline 63
00BC ; }
00BC ;
00BC ; #pragma interrupt_handler spi_stc_isr:9
00BC ; void spi_stc_isr(void)
00BC ; {
00BC .dbline 65
00BC ; //byte in SPDR has been sent/received
00BC ; PORTB^=0x10;
00BC 80E1 ldi R24,16
00BE 28B2 in R2,0x18
00C0 2826 eor R2,R24
00C2 28BA out 0x18,R2
00C4 .dbline 66
00C4 ; PORTB^=0x10;
00C4 28B2 in R2,0x18
00C6 2826 eor R2,R24
00C8 28BA out 0x18,R2
00CA .dbline -2
00CA L11:
00CA 2990 ld R2,y+
00CC 2FBE out 0x3f,R2
00CE 8991 ld R24,y+
00D0 2990 ld R2,y+
00D2 .dbline 0 ; func end
00D2 1895 reti
00D4 .dbend
00D4 .dbfunc e uart0_init _uart0_init fV
.even
00D4 _uart0_init::
00D4 .dbline -1
00D4 .dbline 73
00D4 ; }
00D4 ;
00D4 ; //UART0 initialize
00D4 ; // desired baud rate: 9600
00D4 ; // actual: baud rate:9600 (0.0%)
00D4 ; void uart0_init(void)
00D4 ; {
00D4 .dbline 74
00D4 ; UCSRB = 0x00; //disable while setting baud rate
00D4 2224 clr R2
00D6 2AB8 out 0xa,R2
00D8 .dbline 75
00D8 ; UCSRA = 0x00;
00D8 2BB8 out 0xb,R2
00DA .dbline 76
00DA ; UCSRC = BIT(URSEL) | 0x06;
00DA 86E8 ldi R24,134
00DC 80BD out 0x20,R24
00DE .dbline 77
00DE ; UBRRL = 0x47; //set baud rate lo
00DE 87E4 ldi R24,71
00E0 89B9 out 0x9,R24
00E2 .dbline 78
00E2 ; UBRRH = 0x00; //set baud rate hi
00E2 20BC out 0x20,R2
00E4 .dbline 79
00E4 ; UCSRB = 0x18;
00E4 88E1 ldi R24,24
00E6 8AB9 out 0xa,R24
00E8 .dbline -2
00E8 L12:
00E8 .dbline 0 ; func end
00E8 0895 ret
00EA .dbend
00EA .dbfunc e init_devices _init_devices fV
.even
00EA _init_devices::
00EA .dbline -1
00EA .dbline 84
00EA ; }
00EA ;
00EA ; //call this routine to initialize all peripherals
00EA ; void init_devices(void)
00EA ; {
00EA .dbline 86
00EA ; //stop errant interrupts until set up
00EA ; CLI(); //disable all interrupts
00EA F894 cli
00EC .dbline 87
00EC ; port_init();
00EC 89DF rcall _port_init
00EE .dbline 88
00EE ; timer1_init();
00EE 9ADF rcall _timer1_init
00F0 .dbline 89
00F0 ; spi_init();
00F0 DEDF rcall _spi_init
00F2 .dbline 90
00F2 ; uart0_init();
00F2 F0DF rcall _uart0_init
00F4 .dbline 92
00F4 ;
00F4 ; MCUCR = 0x00;
00F4 2224 clr R2
00F6 25BE out 0x35,R2
00F8 .dbline 93
00F8 ; EMCUCR = 0x00;
00F8 26BE out 0x36,R2
00FA .dbline 94
00FA ; GICR = 0x00;
00FA 2BBE out 0x3b,R2
00FC .dbline 95
00FC ; TIMSK = 0x80;
00FC 80E8 ldi R24,128
00FE 89BF out 0x39,R24
0100 .dbline 96
0100 ; SEI(); //re-enable interrupts
0100 7894 sei
0102 .dbline -2
0102 L13:
0102 .dbline 0 ; func end
0102 0895 ret
0104 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -