?? ad8325a.asm
字號:
;CPU各個輸入輸出端口定義
SPICLK BIT P1.1 ;SPI時鐘,X5645DE的SCK6 MCP42010的SCK2 ADS8325的DCLK7
PXDZA BIT P1.2 ;二四譯碼器74139 14腳A端
PXDZB BIT P1.3 ;二四譯碼器74139 13腳B端
SPISR BIT P1.6 ;SPI,DAC8532數據輸入,X5645DE的輸入,MCP42010的輸入,
SPISC BIT P3.1 ;SPI,DAC8532的SYNC,X5645DE的數據輸出,ADS8325的數據輸出
;***************啟動ADS8325子程序 ********************
;一次濾波,0至128次。二次濾波,加次數
;用一區寄存器
ADS8325: PUSH PSW ;保護PSW
SETB RS0 ;用一區寄存器
CLR RS1
MOV R6,#08H ;無濾波時
SETB YCLBBZ ;置一次濾波標志
MOV DPTR,#YCLBDZ ;一次濾波地址
MOVX R7,@DPTR ;一次濾波參數進R7
MOV A,R7
JNZ ADS1 ;不是零有濾波則轉ADS1,
INC R7 ;無濾波一次采集
CLR YCLBBZ ;清一次濾波標志
ADS1: SETB ECLBBZ ;置二次濾波標志
MOV DPTR,#ECLBDZ
MOVX A,@DPTR ;二次濾波參數
JNC A,ADS2 ;不零轉ADS2
MOV R6,#0FH
CLR ECLBBZ ;清二次濾波標志
ADS2: JNB ECLBBZ,ADS3 ;二次濾波標志,零轉
MOV A,#08H
ADD A,R7
MOV R7,A
ADS3: SETB PXDZA
SETB PXDZB
SETB SPISC
SETB SPICLK
MOV R0, #40H
ADS4: MOV R5, #2 ;十六位采集
SETB PXDZA ;片選信號
CLR PXDZB ;CS2 A=1 ,B=0
MOV A, #06 ;啟動脈沖數6個
ADS5: CLR SPICLK ;啟動脈沖
DEC A
SETB SPICLK
JNZ ADS5 ;啟動脈沖結束
ADS6: JB SPISC, ADS6 ;AD數據讀準備好 ;/???????
ADS7: MOV R4,#08 ;8次一個循環
ADS8: CLR SPICLK
CLR C
SETB SPICLK
MOV C, SPISC ;讀一位數據
RLC A ;左移C一位數據進A
DJNZ R4, ADS8
MOV @R0,A ;8位數據送RAM
INC R0
DJNZ R5,ADS7 ;讀下一字節數據
SETB PXDZA ;關片選
SETB PXDZB
MOV A,#03 ;停AD8325Z轉換,停止脈沖數3
ADS9: CLR SPICLK
DEC A
SETB SPICLK
JNZ ADS9 ;停AD8325Z脈沖結束
DJNZ R6, ADS4
DJNZ R7, ADS4
NOP
POP PSW
RET
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -