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