;学习多处理通信的接收程序
ADDR EQU 27H
STOP EQU 00H
;
ORG 0000H
RESTE: MOV R0,#00H
L0: DJNZ R0,L0
;
START: LCALL INIT_SIO ;跳转到中断初始化程序中去
CLR RI ;中断请求位清零
SETB SM2 ;多机通信位置1 ,开始接收地址值
WAIT: JNB RI,WAIT
MOV A,SBUF
CLR RI
CJNE A,#ADDR,WAIT ;查看接收到的地址是否于自己相同,不行同则据需等待
CLR SM2 ;多机通信位置0,开始接收数据值
DWAIT: JNB RI,DWAIT
MOV A,SBUF
CLR RI
SETB SM2 ;重新置SM2为1,重新开始接收地址值
CJNE A,#STOP,WAIT ;当接收到的地址值为STOP时,结束
SJMP START ;程序结束后从新从开始进行运行
INIT_SIO:
MOV TMOD,#00100000B ;设置定时器1工作在工作方式2(串行口工作方式)
MOV TH1,#0FDH ;波特率设置为9600b/s
MOV TL1,#0FDH
SETB TR1 ;打开串行口中断
MOV SCON,#11010000B ;设置串行模式设置寄存器工作在模式3,并且打开允许接收位
RET
END
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』