?? spi.asm
字號:
;用戶寄存器定義
SPI_DATA .usect ".data0",1 ;臨時數(shù)據(jù)寄存器
SPI_FLAG .usect ".data0",1 ;SPI 標志位
SPI_CON .usect ".data0",1 ;MAX5741的控制字
DP_USER .set 5 ;用戶寄存器存放頁指針
;MAX5121 的控制字宏定義
DACOUT .set 0000H ;0
UPINREG .set 07FEH ;
UPDACREG .set 0FFCH ;1
;(1) 主程序
.include "F2407REGS.H"
.def _c_int0
.text
_c_int0
CALL SYSINIT ;調(diào)系統(tǒng)初始化程序
CALL SPI_INIT ;調(diào)SPI初始化程序
LOOP: CALL SPI_SEND ;調(diào)輸出三角波程序
NOP
WAIT: LDP #DP_USER
SPLK #00H, SPI_FLAG ;清標志
SPLK #00H, SPI_DATA ;重置初值
B LOOP
;(2) 系統(tǒng)初始化程序
SYSINIT:
SETC INTM
CLRC SXM
CLRC OVM
CLRC CNF
LDP #0E0H
SPLK #81FEH,SCSR1 ;四倍頻CLKIN=6M,CLKOUT=24M
SPLK #0E8h,WDCR ;關(guān)看門狗
LDP #0
SPLK #0001h,IMR ;使能中斷1
SPLK #0FFFFh,IFR ;清中斷標志
RET
;(3) SPI初始化程序
SPI_INIT:
LDP #DP_PF2
LACL MCRB
OR #00014H ;配置SPISIMO和SPICLK引腳為特殊功能方式
SACL MCRB
LACL MCRB
AND #0FFF7H ;配置IOPC3為一般的I/O口功能
SACL MCRC ;CS=IOPC3
LDP #DP_PF1
SPLK #004FH,SPICCR ;配置SPI寄存器允許初始化,16位數(shù)據(jù)輸出
SPLK #0006H,SPICTL ;主機方式,時鐘方式為無延時的下降沿
SPLK #0002H,SPIBRR ;SPI波特率為6MHZ
SPLK #00CFh,SPICCR ;初始化結(jié)束,并關(guān)閉初始化使能位
LDP #DP_USER
SPLK #00H,SPI_DATA ;置發(fā)送數(shù)據(jù)初值
SPLK #00H,SPI_FLAG ;SPI_FLAG=00H,執(zhí)行三角波上升
;SPI_FLAG=01H,執(zhí)行三角波下降
SPLK #DACOUT,SPI_CON ;送MAX5741的控制字
RET
;(4) 輸出三角波程序
SPI_SEND:
SPI_TX: LDP #DP_PF2
LACL PCDATDIR
OR #0800H ;IOPC3 腳為輸出方式
AND #0FFF7H ;CS= IOPC3=0
SACL PCDATDIR
NOP
NOP
LDP #DP_USER
LACC SPI_DATA
AND #01FFEH ;S0=0
OR SPI_CON
SACL SPI_DATA ;規(guī)格化發(fā)送的數(shù)據(jù)
LDP #DP_PF1
SACL SPITXBUF ;數(shù)據(jù)寫入到SPI發(fā)送緩沖區(qū)
XMIT_RDY:BIT SPISTS,BIT6 ;等待數(shù)據(jù)
BCND XMIT_RDY,NTC ;發(fā)送完
NOP
NOP
NOP
LDP #DP_PF2
LACL PCDATDIR
OR #0808H ;CS=IOPC3=1
SACL PCDATDIR ;鎖存數(shù)據(jù)
LDP #DP_USER
BIT SPI_FLAG,BIT0
BCND SPI_FALL,TC
LDP #DP_USER ;三角波上升段程序
LACC SPI_DATA
AND #01FFEH
ADD #04H ;遞增
SACL SPI_DATA
SUB #01FFEH
BCND SPI_FALL,EQ
B SPI_TX
SPI_FALL:LDP #DP_USER ;三角波下降段程序
SPLK #01, SPI_FLAG
LACC SPI_DATA
AND #01FFEH
SUB #04H ;遞減
SACL SPI_DATA
BCND SPI_RET,EQ
B SPI_TX
SPI_RET:RET
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -