?? sm1110.asm
字號:
;/* 這是MAX111的匯編程序, 文件名為MAX1110.ASM */
;/* 功能:本程序主要是讀出芯片MAX111輸入通道CH0和CH1的模數轉換值, */
;/* 轉換值放在內存單元30H和31H中,30H放高位以及32H和33H中,32H放高位。*/
;/* MAX111芯片的2個通道 可編程為單極性/雙極性和差動/單端工作, 這 */
;/* 里采用單端\單極性輸入。MAX111有內部時鐘和外部時鐘兩種工作模式。 */
;/* 這里采用內部時鐘模式。 */
;/* 控制字中CONV4、CONV3、CONV2、CONV1取0110B,表示轉換分辨率為14位; */
;/* 控制字中DV2,DV4取01B,表示對計數脈沖發生器發出的脈沖作二分頻。 */
;/* 因采用+1.5V的參考電壓,故兩個通道的電壓輸入范圍都是0~1.5V。 */
CS BIT P1.0
DOUT BIT P1.3
DIN BIT P1.2
SCK BIT P1.1
BUSY BIT P1.7
count EQU 20H
ctrlh EQU 21H
ctrll EQU 22H
byteinh EQU 23H
byteinl EQU 24H
ORG 0000H
MOV SP,#60H
LCALL DELAY
CLR EA
LJMP AAA
MOV ctrlh,#8DH ;零偏校準
MOV ctrll,#0CH
LCALL M111
LCALL DELAY
MOV ctrlh,#8DH ;增益校準
MOV ctrll,#08H
LCALL M111
LCALL DELAY
MOV ctrlh,#8DH ;通道調零校準
MOV ctrll,#04H
LCALL M111
LCALL DELAY ;以上三步校準程序在上電時或需要校準時調用一次即可
AAA: MOV byteinh,#00H
MOV byteinl,#00H
MOV ctrlh,#8DH ;送第1輸入通道CH0的控制字,但把轉換值舍去
MOV ctrll,#00H
LCALL M111
MOV ctrlh,#8DH ;送第2輸入通道CH1的控制字,讀第1通道CH0轉換值
MOV ctrll,#10H
LCALL M111
;JC,SSS
MOV 30H,byteinh
MOV 31H,byteinl
LCALL DELAY
MOV ctrlh,#8DH ; 送下一輸入通道CH0的控制字,讀第2通道CH1轉換值
MOV ctrll,#00H
LCALL M111
;jc,W1
MOV 32H,byteinh
MOV 33H,byteinl
LCALL DELAY
QQQ: LJMP QQQ
W1:
M111: SETB BUSY ; 送通道控制字及讀出轉換值子程序
SETB DOUT
JNB ctrlh.7,WAIBUSY
MOV R3, #0CH ;等待BUSY信號為高電平
DLP3: MOV R2, #0FFH
DLP2: MOV R1, #0FFH
DLP1: JB BUSY,WAIBUSY
DJNZ R1, DLP1
DJNZ R2, DLP2
DJNZ R3, DLP3
SJMP TIMEOUT ;超時轉
WAIBUSY: CLR SCK
CLR CS
MOV COUNT,#08H ;處理高8位
LOOP1: NOP
MOV C,ctrlh.7
MOV DIN,C
SETB SCK
MOV C,DOUT
MOV byteinh.7,C
CLR SCK
MOV A,ctrlh
RL A
MOV ctrlh,A
MOV A,byteinh
RL A
MOV byteinh,A
DJNZ COUNT,LOOP1
MOV COUNT,#08H ;處理低8位
LOOP2: NOP
MOV C,ctrll.7
MOV DIN,C
SETB SCK
MOV C,DOUT
MOV byteinl.7,C
CLR SCK
MOV A,ctrll
RL A
MOV ctrll,A
MOV A,byteinl
RL A
MOV byteinl,A
DJNZ COUNT,LOOP2
SETB CS
CLR C
RET
TIMEOUT: SETB CS ;超時置進位位
SETB C
RET
Delay: NOP ;延時程序
MOV R2, #1
MOV R1, #0
MOV R0, #0
DLP: NOP
DJNZ R0, DLP
DJNZ R1, DLP
DJNZ R2, DLP
RET
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -