?? ad7708.asm
字號:
USING 0
; Port Definition
ADCRESET BIT P3.6
ADCCS BIT P3.7
ADCRDY BIT P3.2
DQ_LOW EQU P2
DQ_HIGH EQU P1
DATAVAL BIT 20H.0
DQVAL BIT P1.0
ORG 0000H
LJMP _START
ORG 0003H
LJMP _EXINT0
ORG 000BH
RETI
ORG 0013H
RETI
ORG 001BH
RETI
ORG 0023H
LJMP _SERIALPORT
ORG 0030H
_START:
MOV SP,#70H ; Stack: 70H~7FH
MOV SCON,#10H ; Mode 0, REN = 1
MOV PCON,#80H
CLR ADCCS
SETB ADCRESET
SETB IT0 ; Edge trigger
SETB EX0
SETB ES
SETB EA
CLR DATAVAL
SETB DQVAL
MOV A,#07H ; Next: write to the I/O Control Reg
SETB TI
MOV A,#00H
SETB TI
MOV A,#03H ; Next: write to the Filter Reg
SETB TI
MOV A,#0DH
SETB TI
MOV A,#02H ; Next: ADC Control Reg
SETB TI
MOV A,#8FH
SETB TI
MOV A,#01H ; Next: Mode Reg
SETB TI
MOV A,#03H
SETB TI
_MAINLOOP:
JNB DATAVAL,$ ; Waiting for the convertion data
CLR DATAVAL
MOV DQ_LOW,R7
MOV DQ_HIGH,R6
CLR DQVAL
NOP
NOP
NOP
NOP
NOP
SETB DQVAL
SJMP _MAINLOOP
_EXINT0:
CLR EA
MOV A,#44H
ACALL _SWAP
MOV SBUF,A
JNB TI,$
CLR TI
JNB RI,$
CLR RI
MOV A,SBUF
ACALL _SWAP
MOV R6,A ; High order byte
MOV A,#44H
ACALL _SWAP
MOV SBUF,A
JNB TI,$
CLR TI
JNB RI,$
CLR RI
MOV A,SBUF
ACALL _SWAP
MOV R7,A ; Low order byte
SETB EA
RETI
_SERIALPORT:
CLR ES
JB TI,_SERIALPORT_TRANSMIT
CLR RI
MOV A,SBUF
ACALL _SWAP
SJMP _SERIALPORT_EXIT
_SERIALPORT_TRANSMIT:
CLR TI
ACALL _SWAP
MOV SBUF,A
JNB TI,$
CLR TI
_SERIALPORT_EXIT:
SETB ES
RETI
_SWAP:
PUSH AR0
PUSH AR1
PUSH AR2
PUSH PSW
MOV R2,#08H
MOV R1,#00H
_SWAP_REPEAT:
CLR C
RRC A
MOV R0,A
MOV A,R1
RLC A
MOV R1,A
MOV A,R0
DJNZ R2,_SWAP_REPEAT
MOV A,R1
POP PSW
POP AR2
POP AR1
POP AR0
RET
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -