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

📄 spi.lis

📁 ATmega128和ads7864实现ATP闭环控制
💻 LIS
字号:
                        .module SPI.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\ATP_AVR\SPI.c
 0000                   .dbfunc e spi_init _spi_init fV
                        .even
 0000           _spi_init::
 0000                   .dbline -1
 0000                   .dbline 9
 0000           ; 
 0000           ; 
 0000           ; #include "public.h"
 0000           ; #include <string.h>
 0000           ; 
 0000           ; //SPI initialize
 0000           ; // clock rate: 5529498hz
 0000           ; void spi_init(void)
 0000           ; {
 0000                   .dbline 10
 0000           ;  SPCR = 0x50;         //disable the spi interrupt
 0000 80E5              ldi R24,80
 0002 8DB9              out 0xd,R24
 0004                   .dbline 16
 0004           ;                               //enable spi
 0004           ;                               //MSB first
 0004           ;                               //spi master
 0004           ;                               //mode 0
 0004           ;                               //spi clock rate:fosc/4
 0004           ;  SPSR = 0x01;         //
 0004 81E0              ldi R24,1
 0006 8EB9              out 0xe,R24
 0008                   .dbline -2
 0008           L1:
 0008                   .dbline 0 ; func end
 0008 0895              ret
 000A                   .dbend
 000A                   .dbfunc e SPISend _SPISend fV
 000A           ;         ucByte -> R16
                        .even
 000A           _SPISend::
 000A                   .dbline -1
 000A                   .dbline 21
 000A           ; }
 000A           ; 
 000A           ; 
 000A           ; void SPISend(unsigned char ucByte)
 000A           ; {
 000A                   .dbline 22
 000A           ;       SPDR = ucByte;
 000A 0FB9              out 0xf,R16
 000C           L3:
 000C                   .dbline 23
 000C           L4:
 000C                   .dbline 23
 000C           ;       while (!(SPSR & 0x80));
 000C 779B              sbis 0xe,7
 000E FECF              rjmp L3
 0010                   .dbline 24
 0010           ;       ucByte = SPDR;
 0010 0FB1              in R16,0xf
 0012                   .dbline -2
 0012           L2:
 0012                   .dbline 0 ; func end
 0012 0895              ret
 0014                   .dbsym r ucByte 16 c
 0014                   .dbend
 0014                   .dbfunc e SPIReadData _SPIReadData fc
                        .even
 0014           _SPIReadData::
 0014                   .dbline -1
 0014                   .dbline 29
 0014           ; }
 0014           ; 
 0014           ; 
 0014           ; unsigned char SPIReadData(void)
 0014           ; {
 0014                   .dbline 30
 0014           ;       SPDR = 0x00;
 0014 2224              clr R2
 0016 2FB8              out 0xf,R2
 0018           L7:
 0018                   .dbline 31
 0018           L8:
 0018                   .dbline 31
 0018           ;       while (!(SPSR & 0x80));
 0018 779B              sbis 0xe,7
 001A FECF              rjmp L7
 001C                   .dbline 32
 001C           ;       return SPDR;
 001C 0FB1              in R16,0xf
 001E                   .dbline -2
 001E           L6:
 001E                   .dbline 0 ; func end
 001E 0895              ret
 0020                   .dbend
 0020                   .dbfunc e SPI_CSTiming _SPI_CSTiming fV
                        .even
 0020           _SPI_CSTiming::
 0020                   .dbline -1
 0020                   .dbline 36
 0020           ; }
 0020           ; 
 0020           ; void SPI_CSTiming(void)
 0020           ; {
 0020                   .dbline 37
 0020           ;       SETBIT(SPI_OUT,SPI_CS);
 0020 C09A              sbi 0x18,0
 0022                   .dbline 38
 0022           ;       NOP();
 0022 0000              nop
 0024                   .dbline 39
 0024           ;       NOP();
 0024 0000              nop
 0026                   .dbline 40
 0026           ;       NOP();
 0026 0000              nop
 0028                   .dbline 41
 0028           ;       NOP();
 0028 0000              nop
 002A                   .dbline 42
 002A           ;       NOP();
 002A 0000              nop
 002C                   .dbline 43
 002C           ;       NOP();
 002C 0000              nop
 002E                   .dbline 44
 002E           ;       NOP();
 002E 0000              nop
 0030                   .dbline 45
 0030           ;       NOP();
 0030 0000              nop
 0032                   .dbline 46
 0032           ;       NOP();
 0032 0000              nop
 0034                   .dbline 47
 0034           ;       NOP();
 0034 0000              nop
 0036                   .dbline 48
 0036           ;       NOP();
 0036 0000              nop
 0038                   .dbline 49
 0038           ;       CLEARBIT(SPI_OUT,SPI_CS);
 0038 C098              cbi 0x18,0
 003A                   .dbline -2
 003A           L10:
 003A                   .dbline 0 ; func end
 003A 0895              ret
 003C                   .dbend

⌨️ 快捷键说明

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