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

📄 init.lis

📁 avr单片机与flash存储器通信程序,调试通过,希望对大家有所帮助.
💻 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 + -