?? sm111b.asm
字號(hào):
;/* 這是被CALL111.C調(diào)用的MAX111匯編程序,文件名為MAX111B.ASM */
;/* 功能:本程序主要是讀出芯片MAX111輸入通道CH0和CH1的模數(shù)轉(zhuǎn)換值, */
;/* 轉(zhuǎn)換值放在寄存器R6,R7中,R6放高位。MAX111芯片的2個(gè)通道 */
;/* 可編程為單極性/雙極性和差動(dòng)/單端工作, 這里采用單端\單極性 */
;/* 輸入。MAX111有內(nèi)部時(shí)鐘和外部時(shí)鐘兩種工作模式。這里采用內(nèi) */
;/* 部時(shí)鐘模式 */
NAME MAX111B
?PR?_a_func?MAX111B SEGMENT CODE
?DT?_a_func?MAX111B SEGMENT DATA OVERLAYABLE
?DT?MAX111B SEGMENT DATA
PUBLIC chai
PUBLIC ?_a_func?BYTE
PUBLIC _a_func
RSEG ?DT?_a_func?MAX111B
?_a_func?BYTE:
aa:DS 2
RSEG ?DT?MAX111B
chai:DS 2
RSEG ?PR?_a_func?MAX111B
_a_func:
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
MOV aa,R7 ;在入口:R6,R7中放傳遞進(jìn)來的一個(gè)整型數(shù)
MOV aa+1,R6
MOV ctrlh,R6
MOV ctrll,R7
LCALL M111
MOV R6,byteinh ;在出口,R6和R7中放返回整型值
MOV R7,byteinl
RET
M111: SETB BUSY ;送通道控制字及讀出轉(zhuǎn)換值子程序
SETB DOUT
JNB ctrlh.7,WAIBUSY
MOV R3, #0CH ;等待BUSY信號(hào)為高電平
DLP3: MOV R2, #0FFH
DLP2: MOV R1, #0FFH
DLP1: JB BUSY,WAIBUSY
DJNZ R1, DLP1
DJNZ R2, DLP2
DJNZ R3, DLP3
SJMP TIMEOUT ;超時(shí)轉(zhuǎn)
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 ;超時(shí)置進(jìn)位位
SETB C
RET
Delay: NOP ;延時(shí)程序
MOV R2, #1
MOV R1, #0
MOV R0, #0
DLP: NOP
DJNZ R0, DLP
DJNZ R1, DLP
DJNZ R2, DLP
RET
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -