?? spi接口發(fā)送.lis
字號:
.module SPI接口發(fā)送.c
.area text(rom, con, rel)
0000 .dbfile E:\xiaozhiyong2009\設(shè)計(jì)資料\項(xiàng)目設(shè)計(jì)\ICCAVR_mega8_C\ICCAVR_mega8_SPI接口發(fā)送\SPI接口發(fā)送.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 9
0000 ; //ICC-AVR application builder : 2009-3-12 16:45:27
0000 ; // Target : M8
0000 ; // Crystal: 8.0000Mhz
0000 ;
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 10
0000 ; PORTB = 0x00;
0000 2224 clr R2
0002 28BA out 0x18,R2
0004 .dbline 11
0004 ; DDRB = 0x00;
0004 27BA out 0x17,R2
0006 .dbline 12
0006 ; PORTC = 0x00; //m103 output only
0006 25BA out 0x15,R2
0008 .dbline 13
0008 ; DDRC = 0x00;
0008 24BA out 0x14,R2
000A .dbline 14
000A ; PORTD = 0x00;
000A 22BA out 0x12,R2
000C .dbline 15
000C ; DDRD = 0x00;
000C 21BA out 0x11,R2
000E .dbline -2
000E L1:
000E .dbline 0 ; func end
000E 0895 ret
0010 .dbend
0010 .dbfunc e init_devices _init_devices fV
.even
0010 _init_devices::
0010 .dbline -1
0010 .dbline 20
0010 ; }
0010 ;
0010 ; //call this routine to initialize all peripherals
0010 ; void init_devices(void)
0010 ; {
0010 .dbline 22
0010 ; //stop errant interrupts until set up
0010 ; CLI(); //disable all interrupts
0010 F894 cli
0012 .dbline 23
0012 ; port_init();
0012 F6DF rcall _port_init
0014 .dbline 25
0014 ;
0014 ; MCUCR = 0x00;
0014 2224 clr R2
0016 25BE out 0x35,R2
0018 .dbline 26
0018 ; GICR = 0x00;
0018 2BBE out 0x3b,R2
001A .dbline 27
001A ; TIMSK = 0x00; //timer interrupt sources
001A 29BE out 0x39,R2
001C .dbline 28
001C ; SEI(); //re-enable interrupts
001C 7894 sei
001E .dbline -2
001E L2:
001E .dbline 0 ; func end
001E 0895 ret
0020 .dbend
0020 .dbfunc e spi_master_init _spi_master_init fV
.even
0020 _spi_master_init::
0020 .dbline -1
0020 .dbline 41
0020 ; //all peripherals are now initialized
0020 ; }
0020 ;
0020 ; //*******************************spi_master*****************************
0020 ; /***********************************************************
0020 ; 用 途:SPI主從式發(fā)送
0020 ; Taget :mega8
0020 ; crystal :8M
0020 ; 介 紹:PB2-SS,PB3-MOSI,PB4-MISO,PB5-SCK
0020 ; 從機(jī)的SS要接地
0020 ; **********************************************************/
0020 ; void spi_master_init()
0020 ; {
0020 .dbline 43
0020 ; //DDR_SPI=(1<<DD_MOSI)|(1<<DD_SCK)
0020 ; DDRB=(1<<3)|(1<<5)|(1<<2);
0020 8CE2 ldi R24,44
0022 87BB out 0x17,R24
0024 .dbline 45
0024 ; //使能SPI,master,fck/16
0024 ; SPCR=(1<<SPE)|(1<<MSTR)|(1<<SPR1);
0024 82E5 ldi R24,82
0026 8DB9 out 0xd,R24
0028 .dbline -2
0028 L3:
0028 .dbline 0 ; func end
0028 0895 ret
002A .dbend
002A .dbfunc e spi_master_putc _spi_master_putc fV
002A ; cData -> R16
.even
002A _spi_master_putc::
002A .dbline -1
002A .dbline 49
002A ; }
002A ; //發(fā)送數(shù)據(jù)
002A ; void spi_master_putc(unsigned char cData)
002A ; {
002A .dbline 50
002A ; SPDR=cData;//發(fā)送數(shù)據(jù)
002A 0FB9 out 0xf,R16
002C L5:
002C .dbline 52
002C ; while(!(SPSR&(1<<SPIF)))
002C ; {;}
002C .dbline 52
002C .dbline 52
002C L6:
002C .dbline 51
002C 779B sbis 0xe,7
002E FECF rjmp L5
0030 X0:
0030 .dbline -2
0030 L4:
0030 .dbline 0 ; func end
0030 0895 ret
0032 .dbsym r cData 16 c
0032 .dbend
0032 .dbfunc e main _main fV
.even
0032 _main::
0032 .dbline -1
0032 .dbline 57
0032 ; }
0032 ; //*********************************************************************
0032 ;
0032 ; void main()
0032 ; {
0032 .dbline 58
0032 ; port_init();
0032 E6DF rcall _port_init
0034 .dbline 59
0034 ; init_devices();
0034 EDDF rcall _init_devices
0036 .dbline 61
0036 ;
0036 ; spi_master_init();
0036 F4DF rcall _spi_master_init
0038 02C0 rjmp L10
003A L9:
003A .dbline 63
003A ; while(1)
003A ; {
003A .dbline 64
003A ; spi_master_putc(0x54);
003A 04E5 ldi R16,84
003C F6DF rcall _spi_master_putc
003E .dbline 65
003E ; }
003E L10:
003E .dbline 62
003E FDCF rjmp L9
0040 X1:
0040 .dbline -2
0040 L8:
0040 .dbline 0 ; func end
0040 0895 ret
0042 .dbend
0042 ; }
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -