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

📄 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 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 + -