📄 ad.asm
字号:
;--------------------
; AD.ASM
; CONTROL A/D PORT
; 8051 TX TO PC VIA RS232
; <9600 N 8 1 >
;--------------------
LF EQU 0AH
CR EQU 0DH
;----------------------
; READ AD0804 DATA AND
; SEND DATA OUT TO PC
ORG 0H
JMP BEGIN
;----------------------
BEGIN: MOV SP,#60H
MOV R5,#10
CALL DELAY
CALL INIT_RS232
; SHOW MESSAGE
MOV DPTR,#MESS
CALL TX_STR
MOV DPTR,#MESS1
CALL TX_STR
AGAIN:
;READ IN DATA FROM P1
MOV A, P1
CALL HEX_OUT
MOV R5,#50
CALL DELAY
JMP AGAIN
;---------------------
; DELAY R5*10 ms
DELAY:
MOV R6,#50
$1:MOV R7,#100
$2:DJNZ R7,$2
DJNZ R6,$1
DJNZ R5,DELAY
RET
;--------------------
LED_BL:
MOV R4,#2
$0:CPL P1.7
MOV R5,#5
CALL DELAY
DJNZ R4, $0
RET
;----------------------
INIT_RS232:
MOV SCON,#50H
MOV TMOD,#20H
MOV TH1,#0FDH
SETB TR1
SETB TI
RET
;----------------------
TX_CHAR:
JNB TI,$
CLR TI
MOV SBUF, A
RET
;----------------------
TX_STR:
CLR A
MOVC A,@A+DPTR
CJNE A,#'$', $1
RET
$1:
CALL TX_CHAR
INC DPTR
JMP TX_STR
RET
;--------------------------
MESS: DB "TEST A/D 0804", LF, CR, '$'
MESS1: DB "READ DATA NORMAL SHOULD BE 7FH, 80H, 81H..... ", LF, CR,'$'
ASCT: DB "0123456789ABCDEF"
;--------------------------
HEX_OUT: ; 将数字数据由 RS232 接口传回 PC
; IN : A HEX_VALUE EX: 38H
; OUT : RS232 O/P "38H "
PUSH A
MOV DPTR,#ASCT
; SEND BYTE1
ANL A,#F0H
SWAP A
MOVC A,@A+DPTR
CALL TX_CHAR
; SEND BYTE2
POP A
ANL A,#0FH
MOVC A,@A+DPTR
CALL TX_CHAR
; SEND OUT 'H' AND ' '
MOV A,#'H'
CALL TX_CHAR
MOV A,#' '
CALL TX_CHAR
RET
;-------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -