📄 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 10
0000 ; //ICC-AVR application builder : 2006-4-29 3:07:04
0000 ; // Target : M8515
0000 ; // Crystal: 11.059Mhz
0000 ;
0000 ; #include <iom8515v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; #define uchar unsigned char
0000 ; void port_init(void)
0000 ; {
0000 .dbline 11
0000 ; PORTA = 0x00;
0000 2224 clr R2
0002 2BBA out 0x1b,R2
0004 .dbline 12
0004 ; DDRA = 0xFF;
0004 8FEF ldi R24,255
0006 8ABB out 0x1a,R24
0008 .dbline 13
0008 ; PORTB = 0x00;
0008 28BA out 0x18,R2
000A .dbline 14
000A ; DDRB = 0x00;
000A 27BA out 0x17,R2
000C .dbline 15
000C ; PORTC = 0x00;
000C 25BA out 0x15,R2
000E .dbline 16
000E ; DDRC = 0xC0;
000E 80EC ldi R24,192
0010 84BB out 0x14,R24
0012 .dbline 17
0012 ; PORTD = 0x00;
0012 22BA out 0x12,R2
0014 .dbline 18
0014 ; DDRD = 0x00;
0014 21BA out 0x11,R2
0016 .dbline 19
0016 ; PORTE = 0x00;
0016 27B8 out 0x7,R2
0018 .dbline 20
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 watchdog_init _watchdog_init fV
.even
001C _watchdog_init::
001C .dbline -1
001C .dbline 26
001C ; }
001C ;
001C ; //Watchdog initialize
001C ; // prescale: 2048K
001C ; void watchdog_init(void)
001C ; {
001C .dbline 27
001C ; WDR(); //this prevents a timout on enabling
001C A895 wdr
001E .dbline 28
001E ; WDTCR = 0x0F; //WATCHDOG ENABLED - dont forget WDR
001E 8FE0 ldi R24,15
0020 81BD out 0x21,R24
0022 .dbline -2
0022 L2:
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 36
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 37
0024 ; TCCR1B = 0x00; //stop
0024 2224 clr R2
0026 2EBC out 0x2e,R2
0028 .dbline 38
0028 ; TCNT1H = 0xD4; //setup
0028 84ED ldi R24,212
002A 8DBD out 0x2d,R24
002C .dbline 39
002C ; TCNT1L = 0xCE;
002C 8EEC ldi R24,206
002E 8CBD out 0x2c,R24
0030 .dbline 40
0030 ; OCR1AH = 0x2B;
0030 8BE2 ldi R24,43
0032 8BBD out 0x2b,R24
0034 .dbline 41
0034 ; OCR1AL = 0x32;
0034 82E3 ldi R24,50
0036 8ABD out 0x2a,R24
0038 .dbline 42
0038 ; OCR1BH = 0x2B;
0038 8BE2 ldi R24,43
003A 89BD out 0x29,R24
003C .dbline 43
003C ; OCR1BL = 0x32;
003C 82E3 ldi R24,50
003E 88BD out 0x28,R24
0040 .dbline 44
0040 ; TCCR1A = 0x00;
0040 2FBC out 0x2f,R2
0042 .dbline 45
0042 ; TCCR1B = 0x01; //start Timer
0042 81E0 ldi R24,1
0044 8EBD out 0x2e,R24
0046 .dbline -2
0046 L3:
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 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile C:\ATMega8515\看门狗\init.c
0001 .dbsym e count _count c
.area vector(rom, abs)
.org 12
000C 24C0 rjmp _timer1_ovf_isr
.area data(ram, con, rel)
0001 .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 2A92 st -y,R2
004A 3A92 st -y,R3
004C 8A93 st -y,R24
004E 9A93 st -y,R25
0050 2FB6 in R2,0x3f
0052 2A92 st -y,R2
0054 .dbline -1
0054 .dbline 52
0054 .dbline 53
0054 84ED ldi R24,212
0056 8DBD out 0x2d,R24
0058 .dbline 54
0058 8EEC ldi R24,206
005A 8CBD out 0x2c,R24
005C .dbline 55
005C 20900000 lds R2,_count
0060 3324 clr R3
0062 822D mov R24,R2
0064 8F5F subi R24,255 ; addi 1
0066 80930000 sts _count,R24
006A 822D mov R24,R2
006C 843F cpi R24,244
006E 41F4 brne L5
0070 .dbline 55
0070 .dbline 55
0070 2224 clr R2
0072 20920000 sts _count,R2
0076 .dbline 55
0076 80910000 lds R24,_shuma
007A 8F5F subi R24,255 ; addi 1
007C 80930000 sts _shuma,R24
0080 .dbline 55
0080 L5:
0080 .dbline -2
0080 L4:
0080 2990 ld R2,y+
0082 2FBE out 0x3f,R2
0084 9991 ld R25,y+
0086 8991 ld R24,y+
0088 3990 ld R3,y+
008A 2990 ld R2,y+
008C .dbline 0 ; func end
008C 1895 reti
008E .dbend
008E .dbfunc e init_devices _init_devices fV
.even
008E _init_devices::
008E .dbline -1
008E .dbline 60
008E ; }
008E ;
008E ; uchar count=0;
008E ; extern uchar shuma;
008E ; #pragma interrupt_handler timer1_ovf_isr:7
008E ; void timer1_ovf_isr(void)
008E ; {
008E ; TCNT1H = 0xD4; //reload counter high value
008E ; TCNT1L = 0xCE; //reload counter low value
008E ; if(count++==500){count=0;shuma++;}
008E ; }
008E ;
008E ; //call this routine to initialize all peripherals
008E ; void init_devices(void)
008E ; {
008E .dbline 62
008E ; //stop errant interrupts until set up
008E ; CLI(); //disable all interrupts
008E F894 cli
0090 .dbline 63
0090 ; port_init();
0090 B7DF rcall _port_init
0092 .dbline 64
0092 ; watchdog_init();
0092 C4DF rcall _watchdog_init
0094 .dbline 65
0094 ; timer1_init();
0094 C7DF rcall _timer1_init
0096 .dbline 67
0096 ;
0096 ; MCUCR = 0x00;
0096 2224 clr R2
0098 25BE out 0x35,R2
009A .dbline 68
009A ; EMCUCR = 0x00;
009A 26BE out 0x36,R2
009C .dbline 69
009C ; GICR = 0x00;
009C 2BBE out 0x3b,R2
009E .dbline 70
009E ; TIMSK = 0x80;
009E 80E8 ldi R24,128
00A0 89BF out 0x39,R24
00A2 .dbline 71
00A2 ; SEI(); //re-enable interrupts
00A2 7894 sei
00A4 .dbline -2
00A4 L7:
00A4 .dbline 0 ; func end
00A4 0895 ret
00A6 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -