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