;Rs232 control I/O system
; <9600 N 8 1 >
;--------------------
LF EQU 0AH
CR EQU 0DH
;----------------------
ORG 0H
JMP BEGIN
;----------------------
BEGIN:
MOV SP,#60H ;設(shè)置堆棧至RAM地址的60H
CALL INIT_RS232 ;Rs232 端口初始化
MOV DPTR,#MESS ;將MESS內(nèi)字符存至DPTR
CALL TX_STR ;將DPTR里面的內(nèi)容發(fā)送至電腦
MOV DPTR,#MESS1 ;將MESS1內(nèi)字符存至DPTR
CALL TX_STR ;將DPTR里面的內(nèi)容發(fā)送至電腦
RUN:
JNB Ri,$ ;Ri為0則繼續(xù)掃描
CLR RI ;Ri清0
MOV A,SBUF ;將串中寄存器中的數(shù)據(jù)存到A寄存器
CALL TX_CHAR ;
JMP RUN
;-----------------------------------------
INIT_RS232: ;<9600 N 8 1> Rs232 communication subroutine
MOV SCON,#50H ;RS232在方式1下運(yùn)行
MOV TMOD,#20H ;定時(shí)器1在模試二方式運(yùn)行,SET TMOD 00100000B
MOV TH1,#0FDH ;定時(shí)器1高8位寄存器設(shè)定為0FDH,波特率為9600
SETB TR1 ;啟動(dòng)定器1
SETB TI ;中斷請求開啟
RET
;------------------------------------
TX_CHAR: ;接收電腦數(shù)據(jù)子程序
;TX 1 CHAR
JNB TI,$ ;如果T1為0則繼續(xù)掃描
CLR TI ;將T1設(shè)為0
MOV SBUF, A ;將寄存器A里面的內(nèi)容存入串口寄存器.
RET
;-------------------------------------
TEST_TX:
MOV R4, #100
TE1: MOV A,#'A'
CALL TX_CHAR
DJNZ R4, TE1
RET
;---------------------------------------
TX_STR: ;TX A STRING,向電腦發(fā)送數(shù)據(jù)子程式
CLR A
MOVC A,@A+DPTR
CJNE A,#'$', TX1
RET
TX1:
CALL TX_CHAR
INC DPTR
JMP TX_STR
RET
;--------------------------
MESS: DB "Load control board is set complete", LF, CR, "$"
MESS1: DB "PLEASE KEY IN DATA 1-9 TSET CONTROL PIN ", LF, CR, "$"
END