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

📄 main.lis

📁 GCC-AVR application builder : 2007-8-31 18:00:11 Target : M16 Crystal: 7.3728Mhz 作者:小马哈 功能:SP
💻 LIS
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\TEMP\m16spi\main.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 16
 0000           ; //ICC-AVR application builder : 2008-6-16 18:47:52
 0000           ; // Target : M16
 0000           ; // Crystal: 16.000Mhz
 0000           ; 
 0000           ; #define MASTER
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000           ; #include "delay.h"
 0000           ; 
 0000           ; #ifdef MASTER
 0000           ;       #warning "build as MASTER SPI"
 0000           ; #else
 0000           ;       #warning "build as SLAVE SPI"
 0000           ; #endif
 0000           ; void port_init(void)
 0000           ; {
 0000                   .dbline 17
 0000           ;       PORTA = 0xff;
 0000 8FEF              ldi R24,255
 0002 8BBB              out 0x1b,R24
 0004                   .dbline 18
 0004           ;       DDRA  = 0xff;
 0004 8ABB              out 0x1a,R24
 0006                   .dbline 19
 0006           ;       PORTB = 0x00;
 0006 2224              clr R2
 0008 28BA              out 0x18,R2
 000A                   .dbline 20
 000A           ;       DDRB  = 0x00;
 000A 27BA              out 0x17,R2
 000C                   .dbline 21
 000C           ;       PORTC = 0x00; //m103 output only
 000C 25BA              out 0x15,R2
 000E                   .dbline 22
 000E           ;       DDRC  = 0x00;
 000E 24BA              out 0x14,R2
 0010                   .dbline 23
 0010           ;       PORTD = 0x00;
 0010 22BA              out 0x12,R2
 0012                   .dbline 24
 0012           ;       DDRD  = 0x00;
 0012 21BA              out 0x11,R2
 0014                   .dbline -2
 0014           L1:
 0014                   .dbline 0 ; func end
 0014 0895              ret
 0016                   .dbend
 0016                   .dbfunc e spi_init _spi_init fV
                        .even
 0016           _spi_init::
 0016                   .dbline -1
 0016                   .dbline 30
 0016           ; }
 0016           ; 
 0016           ; //SPI initialize
 0016           ; // clock rate: 1000000hz
 0016           ; void spi_init(void)
 0016           ; {
 0016                   .dbline 32
 0016           ;       #ifdef MASTER
 0016           ;               SPCR = 0x51; //setup SPI Master
 0016 81E5              ldi R24,81
 0018 8DB9              out 0xd,R24
 001A                   .dbline 36
 001A           ;       #else
 001A           ;               SPCR = 0x41|0x80; //setup SPI Slave
 001A           ;       #endif
 001A           ;       SPSR = 0x00; //setup SPI
 001A 2224              clr R2
 001C 2EB8              out 0xe,R2
 001E                   .dbline -2
 001E           L2:
 001E                   .dbline 0 ; func end
 001E 0895              ret
 0020                   .dbend
 0020                   .dbfunc e init_devices _init_devices fV
                        .even
 0020           _init_devices::
 0020                   .dbline -1
 0020                   .dbline 41
 0020           ; }
 0020           ; 
 0020           ; //call this routine to initialize all peripherals
 0020           ; void init_devices(void)
 0020           ; {
 0020                   .dbline 43
 0020           ;       //stop errant interrupts until set up
 0020           ;       CLI(); //disable all interrupts
 0020 F894              cli
 0022                   .dbline 44
 0022           ;       port_init();
 0022 EEDF              xcall _port_init
 0024                   .dbline 45
 0024           ;       spi_init();
 0024 F8DF              xcall _spi_init
 0026                   .dbline 47
 0026           ; 
 0026           ;       MCUCR = 0x00;
 0026 2224              clr R2
 0028 25BE              out 0x35,R2
 002A                   .dbline 48
 002A           ;       GICR  = 0x00;
 002A 2BBE              out 0x3b,R2
 002C                   .dbline 49
 002C           ;       TIMSK = 0x00; //timer interrupt sources
 002C 29BE              out 0x39,R2
 002E                   .dbline 50
 002E           ;       SEI(); //re-enable interrupts
 002E 7894              sei
 0030                   .dbline -2
 0030           L3:
 0030                   .dbline 0 ; func end
 0030 0895              ret
 0032                   .dbend
                        .area vector(rom, abs)
                        .org 68
 0044 0C941900          jmp _SPI_RXC_ISR
                        .area text(rom, con, rel)
 0032                   .dbfile C:\TEMP\m16spi\main.c
 0032                   .dbfunc e SPI_RXC_ISR _SPI_RXC_ISR fV
                        .even
 0032           _SPI_RXC_ISR::
 0032                   .dbline -1
 0032                   .dbline 56
 0032           ;       //all peripherals are now initialized
 0032           ; }
 0032           ; 
 0032           ; #pragma interrupt_handler SPI_RXC_ISR:18 
 0032           ; void SPI_RXC_ISR(void) 
 0032           ; { 
 0032                   .dbline -2
 0032           L4:
 0032                   .dbline 0 ; func end
 0032 1895              reti
 0034                   .dbend
 0034                   .dbfunc e main _main fV
 0034           ;              n -> R20
                        .even
 0034           _main::
 0034                   .dbline -1
 0034                   .dbline 67
 0034           ;       //unsigned char data_temp; 
 0034           ;       //SPDR=0xab; 
 0034           ;       //data_temp=SPDR; 
 0034           ;       #ifdef MASTER
 0034           ;       #else
 0034           ;               PORTA=SPDR;
 0034           ;       #endif
 0034           ; } 
 0034           ; //
 0034           ; void main(void)
 0034           ; {
 0034                   .dbline 68
 0034           ;       unsigned char n=0;
 0034 4427              clr R20
 0036                   .dbline 69
 0036           ;       init_devices();
 0036 F4DF              xcall _init_devices
 0038                   .dbline 72
 0038           ;       //insert your functional code here...
 0038           ;       #ifdef MASTER
 0038           ;               DDRB|=0x10;
 0038 BC9A              sbi 0x17,4
 003A                   .dbline 73
 003A           ;               PORTB|=0x10;
 003A C49A              sbi 0x18,4
 003C 0CC0              xjmp L7
 003E           L6:
 003E                   .dbline 78
 003E           ;       #else
 003E           ;               PORTB|=0x10;
 003E           ;       #endif
 003E           ;       while(1)
 003E           ;       {
 003E                   .dbline 79
 003E           ;               n++;
 003E 4395              inc R20
 0040                   .dbline 81
 0040           ;               #ifdef MASTER
 0040           ;                       PORTB&=0xef;
 0040 88B3              in R24,0x18
 0042 8F7E              andi R24,239
 0044 88BB              out 0x18,R24
 0046                   .dbline 82
 0046           ;                       SPDR=n;
 0046 4FB9              out 0xf,R20
 0048           L9:
 0048                   .dbline 86
 0048           L10:
 0048                   .dbline 86
 0048 779B              sbis 0xe,7
 004A FECF              rjmp L9
 004C                   .dbline 87
 004C C49A              sbi 0x18,4
 004E                   .dbline 91
 004E 08EC              ldi R16,200
 0050 10E0              ldi R17,0
 0052 0E940000          xcall _delay_nms
 0056                   .dbline 92
 0056           L7:
 0056                   .dbline 77
 0056 F3CF              xjmp L6
 0058           X0:
 0058                   .dbline -2
 0058           L5:
 0058                   .dbline 0 ; func end
 0058 0895              ret
 005A                   .dbsym r n 20 c
 005A                   .dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -