ORG 0030H
;-------------------------------------------
;以下是程序运行初使化
MAIN: MOV SP,#30H
CLR PSW.3 ;选定第0组工作寄存器
CLR PSW.4
CLR A
MOV R0,#08H ;inside ram initialize
MOV R7,#30
INITIA: MOV @R0,A
INC R0
DJNZ R7,INITIA
;----------------------
;---------------------
MOV PCON,#00H
MOV SCON,#01010000B ;MODE=1 SM2=0 REN=1
MOV TMOD,#00100000B ;T1:波特率发生器 模式2
MOV TL1,#0F4H ;晶振=11.0592M
MOV TH1,#0F4H
CLR ET1
SETB TR1 ;启动波特率 =2400Bps
;---------------------------
SETB EA
SETB ES ;串行口接收数据开
LOOP: ..... ;程序循环体
.....
LJMP LOOP
;-------------------串口接收-----------
SCINT: PUSH ACC
PUSH PSW
CLR ES
CLR RI
MOV A,SBUF
CJNE R2,#00H,BYTE1 ;接收WORD1 起始码
CJNE A,#STX,REFUSE
MOV R2,#01H
LJMP SCEXIT
BYTE1: CJNE R2,#01H,BYTE2 ;接收WORD2 地址
;CJNE A,#3CH,REFUSE ;与' <'比较
MOV WORD2,A
MOV R2,#02H
LJMP SCEXIT
BYTE2: CJNE R2,#02H,BYTE3 ;接收WORD3 DATA1
;CJNE A,#43H,REFUSE ;与'C'比较
MOV WORD3,A
MOV R2,#03H
LJMP SCEXIT
BYTE3: CJNE R2,#03H,BYTE4 ;接收WORD4 DATA2
;CJNE A,#X1H,REFUSE ;与X1H比较
MOV WORD4,A
MOV R2,#04H
LJMP SCEXIT
BYTE4: CJNE R2,#04H,BYTE5 ;接收WORD5 DATA3
;CJNE A,#X2H,REFUSE ;与X2比较
MOV WORD5,A
SJMP DEALDT
LJMP SCEXIT
BYTE5: CJNE R2,#05H,BYTE6 ;接收WORD6 DATA4
;CJNE A,#3EH,REFUSE ;与' <'比较
CJNE A,ETX,REFUSE
LJMP SCEXIT
REFUSE: LJMP SCRETI ;数据非法返回区
DEALDT: ........ ;中断处理段
SCRETI: MOV R2,#00H
SCEXIT: SETB ES
POP PSW
POP ACC
RETI
END
font: db LED0,LED1, 。。。,LED9 ;定义LED显示字形编码
你可以根据需要设置串口中断方式接收