;Rs232 control I/O system
; <9600 N 8 1 >
;--------------------
LF EQU 0AH
CR EQU 0DH
;----------------------
ORG 0H
JMP BEGIN
;----------------------
BEGIN:
MOV SP,#60H ;設置堆棧至RAM地址的60H
CALL INIT_RS232 ;Rs232 端口初始化
MOV DPTR,#MESS ;將MESS內字符存至DPTR
CALL TX_STR ;將DPTR里面的內容發送至電腦
MOV DPTR,#MESS1 ;將MESS1內字符存至DPTR
CALL TX_STR ;將DPTR里面的內容發送至電腦
RUN:
JNB Ri,$ ;Ri為0則繼續掃描
CLR RI ;Ri清0
MOV A,SBUF ;將串中寄存器中的數據存到A寄存器
CALL TX_CHAR ;
JMP RUN
;-----------------------------------------
INIT_RS232: ;<9600 N 8 1> Rs232 communication subroutine
MOV SCON,#50H ;RS232在方式1下運行
MOV TMOD,#20H ;定時器1在模試二方式運行,SET TMOD 00100000B
MOV TH1,#0FDH ;定時器1高8位寄存器設定為0FDH,波特率為9600
SETB TR1 ;啟動定器1
SETB TI ;中斷請求開啟
RET
;------------------------------------
TX_CHAR: ;接收電腦數據子程序
;TX 1 CHAR
JNB TI,$ ;如果T1為0則繼續掃描
CLR TI ;將T1設為0
MOV SBUF, A ;將寄存器A里面的內容存入串口寄存器.
RET
;-------------------------------------
TEST_TX:
MOV R4, #100
TE1: MOV A,#'A'
CALL TX_CHAR
DJNZ R4, TE1
RET
;---------------------------------------
TX_STR: ;TX A STRING,向電腦發送數據子程式
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