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

📄 spi.lis

📁 AVR单片机系统开发经典实例部分源程序
💻 LIS
字号:
                        .module SPI.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\AVR\M\1\SPI.c
 0000                   .dbfunc e SPI_Init _SPI_Init fV
                        .even
 0000           _SPI_Init::
 0000                   .dbline -1
 0000                   .dbline 10
 0000           ; #include "SPI.h"
 0000           ; 
 0000           ; 
 0000           ; //---------------------------------
 0000           ; //
 0000           ; //        SPI初始化函数 
 0000           ; //
 0000           ; //---------------------------------
 0000           ; void SPI_Init(void)
 0000           ; { 
 0000                   .dbline 11
 0000           ;       SPI_SCK_OUT();
 0000 BF9A              sbi 0x17,7
 0002                   .dbline 12
 0002           ;       SPI_MOSI_OUT();
 0002 BD9A              sbi 0x17,5
 0004                   .dbline 13
 0004           ;       SPI_MISO_IN();
 0004 BE98              cbi 0x17,6
 0006                   .dbline 14
 0006           ;       PORTB = 0xFF;
 0006 8FEF              ldi R24,255
 0008 88BB              out 0x18,R24
 000A                   .dbline 15
 000A           ;       SPI_Low();
 000A 01D0              xcall _SPI_Low
 000C                   .dbline -2
 000C           L1:
 000C                   .dbline 0 ; func end
 000C 0895              ret
 000E                   .dbend
 000E                   .dbfunc e SPI_Low _SPI_Low fV
                        .even
 000E           _SPI_Low::
 000E                   .dbline -1
 000E                   .dbline 25
 000E           ; }
 000E           ; 
 000E           ; 
 000E           ; //---------------------------------
 000E           ; //
 000E           ; //     SPI低速模式设置函数 
 000E           ; //
 000E           ; //---------------------------------
 000E           ; void SPI_Low(void)
 000E           ; {
 000E                   .dbline 26
 000E           ;       SPCR |=(1<<SPE)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0);
 000E 8DB1              in R24,0xd
 0010 8365              ori R24,83
 0012 8DB9              out 0xd,R24
 0014                   .dbline 27
 0014           ;       SPSR &= ~(1<<SPI2X);
 0014 7098              cbi 0xe,0
 0016                   .dbline -2
 0016           L2:
 0016                   .dbline 0 ; func end
 0016 0895              ret
 0018                   .dbend
 0018                   .dbfunc e SPI_High _SPI_High fV
                        .even
 0018           _SPI_High::
 0018                   .dbline -1
 0018                   .dbline 38
 0018           ; }
 0018           ; 
 0018           ; 
 0018           ; 
 0018           ; //---------------------------------
 0018           ; //
 0018           ; //     SPI高速模式设置函数 
 0018           ; //
 0018           ; //---------------------------------
 0018           ; void SPI_High(void)
 0018           ; {
 0018                   .dbline 39
 0018           ;       SPCR = (1<<SPE)|(1<<MSTR);
 0018 80E5              ldi R24,80
 001A 8DB9              out 0xd,R24
 001C                   .dbline 40
 001C           ;       SPSR |= (1<<SPI2X);
 001C 709A              sbi 0xe,0
 001E                   .dbline -2
 001E           L3:
 001E                   .dbline 0 ; func end
 001E 0895              ret
 0020                   .dbend
 0020                   .dbfunc e SPI_SrByte _SPI_SrByte fc
 0020           ;            val -> R16
                        .even
 0020           _SPI_SrByte::
 0020                   .dbline -1
 0020                   .dbline 52
 0020           ; }
 0020           ; 
 0020           ; 
 0020           ; //---------------------------------
 0020           ; //
 0020           ; //SPI收发函数 
 0020           ; //val:要发送的数据
 0020           ; //SPDR:返回数据
 0020           ; //
 0020           ; //---------------------------------
 0020           ; uint8 SPI_SrByte(uint8 val)
 0020           ; {
 0020                   .dbline 53
 0020           ;       SPDR = val;
 0020 0FB9              out 0xf,R16
 0022           L5:
 0022                   .dbline 54
 0022           L6:
 0022                   .dbline 54
 0022           ;       while(!(SPSR & (1<<SPIF)));
 0022 779B              sbis 0xe,7
 0024 FECF              rjmp L5
 0026                   .dbline 55
 0026           ;       return SPDR;
 0026 0FB1              in R16,0xf
 0028                   .dbline -2
 0028           L4:
 0028                   .dbline 0 ; func end
 0028 0895              ret
 002A                   .dbsym r val 16 c
 002A                   .dbend

⌨️ 快捷键说明

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