?? spi.s
字號:
.module SPI.c
.area text(rom, con, rel)
.dbfile D:\ATP_AVR\SPI.c
.dbfunc e spi_init _spi_init fV
.even
_spi_init::
.dbline -1
.dbline 9
;
;
; #include "public.h"
; #include <string.h>
;
; //SPI initialize
; // clock rate: 5529498hz
; void spi_init(void)
; {
.dbline 10
; SPCR = 0x50; //disable the spi interrupt
ldi R24,80
out 0xd,R24
.dbline 16
; //enable spi
; //MSB first
; //spi master
; //mode 0
; //spi clock rate:fosc/4
; SPSR = 0x01; //
ldi R24,1
out 0xe,R24
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e SPISend _SPISend fV
; ucByte -> R16
.even
_SPISend::
.dbline -1
.dbline 21
; }
;
;
; void SPISend(unsigned char ucByte)
; {
.dbline 22
; SPDR = ucByte;
out 0xf,R16
L3:
.dbline 23
L4:
.dbline 23
; while (!(SPSR & 0x80));
sbis 0xe,7
rjmp L3
.dbline 24
; ucByte = SPDR;
in R16,0xf
.dbline -2
L2:
.dbline 0 ; func end
ret
.dbsym r ucByte 16 c
.dbend
.dbfunc e SPIReadData _SPIReadData fc
.even
_SPIReadData::
.dbline -1
.dbline 29
; }
;
;
; unsigned char SPIReadData(void)
; {
.dbline 30
; SPDR = 0x00;
clr R2
out 0xf,R2
L7:
.dbline 31
L8:
.dbline 31
; while (!(SPSR & 0x80));
sbis 0xe,7
rjmp L7
.dbline 32
; return SPDR;
in R16,0xf
.dbline -2
L6:
.dbline 0 ; func end
ret
.dbend
.dbfunc e SPI_CSTiming _SPI_CSTiming fV
.even
_SPI_CSTiming::
.dbline -1
.dbline 36
; }
;
; void SPI_CSTiming(void)
; {
.dbline 37
; SETBIT(SPI_OUT,SPI_CS);
sbi 0x18,0
.dbline 38
; NOP();
nop
.dbline 39
; NOP();
nop
.dbline 40
; NOP();
nop
.dbline 41
; NOP();
nop
.dbline 42
; NOP();
nop
.dbline 43
; NOP();
nop
.dbline 44
; NOP();
nop
.dbline 45
; NOP();
nop
.dbline 46
; NOP();
nop
.dbline 47
; NOP();
nop
.dbline 48
; NOP();
nop
.dbline 49
; CLEARBIT(SPI_OUT,SPI_CS);
cbi 0x18,0
.dbline -2
L10:
.dbline 0 ; func end
ret
.dbend
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -