?? spiproc.h
字號(hào):
;===============================================
; Function:SpiSendHalf(A = SpiData) SendHalfByte()
;===============================================
SpiSendHalf:
MOV A_buff,A
MOV A,@4
MOV N1,A
SpiSendHLoop:
BC SpiPort,WR
CALL SpiDelay
JBS A_buff,3
JMP SpiSendHDat0
SpiSendHDat1:
BS SpiPort,DAT
JMP SpiSendHClk
SpiSendHDat0:
BC SpiPort,DAT
SpiSendHClk:
CALL SpiDelay
BS SpiPort,WR
CALL SpiDelay
CALL SpiDelay
SpiSendHNext:
RLC A_buff
DJZ N1
JMP SpiSendHLoop
; 最后要低下來(lái)表示數(shù)據(jù)傳完!
BC SpiPort,WR
CALL SpiDelay
RET
;===============================================
; Function:SpiSendByte(A = SpiData) L->H Send
;===============================================
SpiSendByte:
MOV A_buff,A
MOV A,@8
MOV N1,A
SpiSendLoop:
BC SpiPort,WR
CALL SpiDelay
JBS A_buff,7
JMP SpiSendDat0
SpiSendDat1:
BS SpiPort,DAT
JMP SpiSendClk
SpiSendDat0:
BC SpiPort,DAT
SpiSendClk:
CALL SpiDelay
BS SpiPort,WR
CALL SpiDelay
CALL SpiDelay
SpiSendNext:
RLC A_buff
DJZ N1
JMP SpiSendLoop
BC SpiPort,WR
CALL SpiDelay
RET
;===============================================
; Function:SpiReadByte()= A
;===============================================
SpiReadByte:
IOR SpiPort
OR A,@OSPI_DAT
IOW SpiPort
; 循環(huán) 8 次
MOV A,@8
MOV N1,A
; 緩沖清除
CLR A_buff
SpiReadLoop:
; RD 由高到低
BS SpiPort,RD
CALL SpiDelay
CALL SpiDelay
BC SpiPort,RD
CALL SpiDelay
; 清進(jìn)位標(biāo)志
BC STATU,C
; 左移數(shù)據(jù)
RLC A_buff
; 數(shù)據(jù)是否高
JBS SpiPort,DAT
JMP SpiReadNext
; 低位置1
BS A_buff,0
SpiReadNext:
DJZ N1
JMP SpiReadLoop
; 數(shù)據(jù)置為輸出
IOR SpiPort
AND A,@ASPI_DAT
IOW SpiPort
MOV A,A_buff
RET
;===============================================
; Function:SpiVSendByte(A = SpiData) 先發(fā)低位
;===============================================
SpiVSendByte:
MOV A_buff,A
MOV A,@8
MOV N1,A
SpiVSendLoop:
BC SpiPort,WR
CALL SpiDelay
JBS A_buff,0
JMP SpiVSendDat0
SpiVSendDat1:
BS SpiPort,DAT
JMP SpiVSendClk
SpiVSendDat0:
BC SpiPort,DAT
SpiVSendClk:
CALL SpiDelay
BS SpiPort,WR
CALL SpiDelay
CALL SpiDelay
SpiVSendNext:
RRC A_buff
DJZ N1
JMP SpiVSendLoop
BC SpiPort,WR
CALL SpiDelay
RET
;===============================================
; Function:SpiFmWrite(A = FmMode)
;===============================================
SpiFmWrite:
BS SpiPort,ENA
CALL SpiDelay
;(436B + A)=(0875 + A)
ADD A,@MIN_FM_LO
JBC STATU,C
JMP FmLarge
FmSmall:
CALL SpiVSendByte
MOV A,@MIN_FM_HI
ADD A,@0x40
JMP FmHiByte
FmLarge:
CALL SpiVSendByte
MOV A,@MIN_FM_HI
ADD A,@0x41
FmHiByte:
CALL SpiVSendByte
BC SpiPort,ENA
CALL SpiDelay
RET
;===============================================
; END OF SPI
;===============================================
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -