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

📄 spi.lis

📁 AVR系列单片机ATMEGA64开发的LED显示屏程序 内容包括ATMEGA64大部分资源的初始化程序
💻 LIS
字号:
                        .module spi.c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\dujiang\费显动态LED屏\下位机程序\spi.c
 0000                   .dbfunc e SpiWriteByte _SpiWriteByte fV
 0000           ;           byte -> R16
                        .even
 0000           _SpiWriteByte::
 0000                   .dbline -1
 0000                   .dbline 15
 0000           ; #include <iom64v.h>   // change to the appropriate header file
 0000           ; #include "spi.h"
 0000           ; 
 0000           ; 
 0000           ; 
 0000           ; /* spi_init function should be generated using the AppBuilder
 0000           ;  */
 0000           ; 
 0000           ; /*
 0000           ; **  SpiWriteByte() writes a byte to the SPI and waits until
 0000           ; **  it has been transmitted. This function doesn't
 0000           ; **  return any value back.
 0000           ; */
 0000           ; void SpiWriteByte(unsigned char byte)
 0000           ; {
 0000                   .dbline 16
 0000           ;     SPDR = byte;
 0000 0FB9              out 0xf,R16
 0002           L2:
 0002                   .dbline 17
 0002           L3:
 0002                   .dbline 17
 0002           ;     while (!(SPSR & 0x80));
 0002 779B              sbis 0xe,7
 0004 FECF              rjmp L2
 0006                   .dbline 18
 0006           ;     byte = SPDR;
 0006 0FB1              in R16,0xf
 0008                   .dbline -2
 0008           L1:
 0008                   .dbline 0 ; func end
 0008 0895              ret
 000A                   .dbsym r byte 16 c
 000A                   .dbend
 000A                   .dbfunc e SpiReadByte _SpiReadByte fc
                        .even
 000A           _SpiReadByte::
 000A                   .dbline -1
 000A                   .dbline 28
 000A           ; }
 000A           ; 
 000A           ; /*
 000A           ; **  SpiReadByte() first writes a byte (a dummy, since
 000A           ; **  that byte is to generate clock signals to "poll" home
 000A           ; **  the byte from the slave. The function returns the
 000A           ; **  received byte.
 000A           ; */
 000A           ; unsigned char SpiReadByte(void)
 000A           ; {
 000A                   .dbline 29
 000A           ;     SPDR = 0x00;
 000A 2224              clr R2
 000C 2FB8              out 0xf,R2
 000E           L6:
 000E                   .dbline 30
 000E           L7:
 000E                   .dbline 30
 000E           ;     while (!(SPSR & 0x80));
 000E 779B              sbis 0xe,7
 0010 FECF              rjmp L6
 0012                   .dbline 31
 0012           ;     return SPDR;
 0012 0FB1              in R16,0xf
 0014                   .dbline -2
 0014           L5:
 0014                   .dbline 0 ; func end
 0014 0895              ret
 0016                   .dbend
 0016                   .dbfunc e SpiReadDataReg _SpiReadDataReg fc
                        .even
 0016           _SpiReadDataReg::
 0016                   .dbline -1
 0016                   .dbline 40
 0016           ; }
 0016           ; 
 0016           ; /*
 0016           ; **  SpiReadDataReg() reads the last byte in the SPI register
 0016           ; **  without any clock signals generated. Could be used
 0016           ; **  as reading the last byte received.
 0016           ; */
 0016           ; unsigned char SpiReadDataReg(void)
 0016           ; {
 0016                   .dbline 41
 0016           ;     return SPDR;
 0016 0FB1              in R16,0xf
 0018                   .dbline -2
 0018           L9:
 0018                   .dbline 0 ; func end
 0018 0895              ret
 001A                   .dbend
 001A                   .dbfunc e main _main fV
                        .even
 001A           _main::
 001A                   .dbline -1
 001A                   .dbline 44
 001A           ; }
 001A           ; void main(void)
 001A           ; {
 001A                   .dbline 45
 001A           ; SpiReadDataReg();
 001A FDDF              xcall _SpiReadDataReg
 001C           L11:
 001C                   .dbline 46
 001C           L12:
 001C                   .dbline 46
 001C FFCF              xjmp L11
 001E           X0:
 001E                   .dbline -2
 001E           L10:
 001E                   .dbline 0 ; func end
 001E 0895              ret
 0020                   .dbend

⌨️ 快捷键说明

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