📄 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-27 19:45:18
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 = 0x00;
000A 27BA out 0x17,R2
000C .dbline 14
000C ; PORTC = 0x00;
000C 25BA out 0x15,R2
000E .dbline 15
000E ; DDRC = 0xC0;
000E 80EC ldi R24,192
0010 84BB out 0x14,R24
0012 .dbline 16
0012 ; PORTD = 0x00;
0012 22BA out 0x12,R2
0014 .dbline 17
0014 ; DDRD = 0x00;
0014 21BA out 0x11,R2
0016 .dbline 18
0016 ; PORTE = 0x00;
0016 27B8 out 0x7,R2
0018 .dbline 19
0018 ; DDRE = 0x00;
0018 26B8 out 0x6,R2
001A .dbline -2
001A L1:
001A .dbline 0 ; func end
001A 0895 ret
001C .dbend
001C .dbfunc e timer1_init _timer1_init fV
.even
001C _timer1_init::
001C .dbline -1
001C .dbline 27
001C ; }
001C ;
001C ; //TIMER1 initialize - prescale:1
001C ; // WGM: 0) Normal, TOP=0xFFFF
001C ; // desired value: 1mSec
001C ; // actual value: 1.000mSec (0.0%)
001C ; void timer1_init(void)
001C ; {
001C .dbline 28
001C ; TCCR1B = 0x00; //stop
001C 2224 clr R2
001E 2EBC out 0x2e,R2
0020 .dbline 29
0020 ; TCNT1H = 0xD4; //setup
0020 84ED ldi R24,212
0022 8DBD out 0x2d,R24
0024 .dbline 30
0024 ; TCNT1L = 0xCE;
0024 8EEC ldi R24,206
0026 8CBD out 0x2c,R24
0028 .dbline 31
0028 ; OCR1AH = 0x2B;
0028 8BE2 ldi R24,43
002A 8BBD out 0x2b,R24
002C .dbline 32
002C ; OCR1AL = 0x32;
002C 82E3 ldi R24,50
002E 8ABD out 0x2a,R24
0030 .dbline 33
0030 ; OCR1BH = 0x2B;
0030 8BE2 ldi R24,43
0032 89BD out 0x29,R24
0034 .dbline 34
0034 ; OCR1BL = 0x32;
0034 82E3 ldi R24,50
0036 88BD out 0x28,R24
0038 .dbline 35
0038 ; TCCR1A = 0x00;
0038 2FBC out 0x2f,R2
003A .dbline 36
003A ; TCCR1B = 0x01; //start Timer
003A 81E0 ldi R24,1
003C 8EBD out 0x2e,R24
003E .dbline -2
003E L2:
003E .dbline 0 ; func end
003E 0895 ret
0040 .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 20C0 rjmp _timer1_ovf_isr
.area data(ram, con, rel)
0002 .dbfile C:\ATMega8515\定时实验\init.c
.area text(rom, con, rel)
0040 .dbfile C:\ATMega8515\定时实验\init.c
0040 .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
0040 _timer1_ovf_isr::
0040 2A92 st -y,R2
0042 3A92 st -y,R3
0044 8A93 st -y,R24
0046 9A93 st -y,R25
0048 EA93 st -y,R30
004A 2FB6 in R2,0x3f
004C 2A92 st -y,R2
004E .dbline -1
004E .dbline 43
004E .dbline 44
004E 84ED ldi R24,212
0050 8DBD out 0x2d,R24
0052 .dbline 45
0052 8EEC ldi R24,206
0054 8CBD out 0x2c,R24
0056 .dbline 47
0056 20900000 lds R2,_count
005A 30900100 lds R3,_count+1
005E C101 movw R24,R2
0060 0196 adiw R24,1
0062 90930100 sts _count+1,R25
0066 80930000 sts _count,R24
006A C101 movw R24,R2
006C 883E cpi R24,232
006E E3E0 ldi R30,3
0070 9E07 cpc R25,R30
0072 49F4 brne L4
0074 .dbline 47
0074 .dbline 47
0074 2224 clr R2
0076 3324 clr R3
0078 30920100 sts _count+1,R3
007C 20920000 sts _count,R2
0080 .dbline 47
0080 81E0 ldi R24,1
0082 80930000 sts _flag,R24
0086 .dbline 47
0086 L4:
0086 .dbline -2
0086 L3:
0086 2990 ld R2,y+
0088 2FBE out 0x3f,R2
008A E991 ld R30,y+
008C 9991 ld R25,y+
008E 8991 ld R24,y+
0090 3990 ld R3,y+
0092 2990 ld R2,y+
0094 .dbline 0 ; func end
0094 1895 reti
0096 .dbend
0096 .dbfunc e init_devices _init_devices fV
.even
0096 _init_devices::
0096 .dbline -1
0096 .dbline 52
0096 ; }
0096 ;
0096 ; unsigned int count=0;
0096 ; extern unsigned char flag;
0096 ; #pragma interrupt_handler timer1_ovf_isr:7
0096 ; void timer1_ovf_isr(void)
0096 ; {
0096 ; TCNT1H = 0xD4; //reload counter high value
0096 ; TCNT1L = 0xCE; //reload counter low value
0096 ; //计算1000次,一共1S
0096 ; if(count++==1000){count=0;flag=1;}
0096 ; }
0096 ;
0096 ; //call this routine to initialize all peripherals
0096 ; void init_devices(void)
0096 ; {
0096 .dbline 54
0096 ; //stop errant interrupts until set up
0096 ; CLI(); //disable all interrupts
0096 F894 cli
0098 .dbline 55
0098 ; port_init();
0098 B3DF rcall _port_init
009A .dbline 56
009A ; timer1_init();
009A C0DF rcall _timer1_init
009C .dbline 58
009C ;
009C ; MCUCR = 0x00;
009C 2224 clr R2
009E 25BE out 0x35,R2
00A0 .dbline 59
00A0 ; EMCUCR = 0x00;
00A0 26BE out 0x36,R2
00A2 .dbline 60
00A2 ; GICR = 0x00;
00A2 2BBE out 0x3b,R2
00A4 .dbline 61
00A4 ; TIMSK = 0x80;
00A4 80E8 ldi R24,128
00A6 89BF out 0x39,R24
00A8 .dbline 62
00A8 ; SEI(); //re-enable interrupts
00A8 7894 sei
00AA .dbline -2
00AA L6:
00AA .dbline 0 ; func end
00AA 0895 ret
00AC .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -