51单片机串口通信
实验仿真图:
实验原理:
主机的P3,1(TXD)连接到从机的P3,0(RXD),利用开关对主机的P1口赋值,将P1的数据存到主机SBUF,在通过串口传动到从机的SBUF,从机将接收到的数据从机的P1口体现。
说明:主机和从机代码分开。
//主机程序 (汇编)
ORG 0000H //将程序放到RAM
LJMP START
ORG 0030H
START: MOV SP,#60H //堆栈赋值
CALL INIT //进入定时器和串口初始化
MLOOP: MOV SBUF, P1
CALL DELAY //进入定时器和串口初始化
SJMP MLOOP
INIT: MOV TMOD,#20H //定时器1工作方式选择 选择了工作方式2:0010 0000 定时器提供了一个时间基准
MOV TH1,#0FDH
MOV TL1,#0FDH //波特率9600
MOV SCON,#50H //串口工作模式选择 选择了工作方式1: 0101 0000
MOV PCON,#00H
SETB TR1 //定时器计时启动
RET
//延时函数
DELAY: MOV R7,#0FFH
DELAY1:MOV R6,#0FFH
DJNZ R6,$ //寄存器内容减1 非0转移
DJNZ R7,DELAY1
RET
END
//从机(汇编)
ORG 0000H //将程序放到RAM
LJMP START
ORG 0023H //定时器1地址入口
LJMP RECEIVE
ORG 0030H
START: MOV SP,#60H //堆栈赋值
LCALL INIT //进入定时器和串口初始化
SJMP $
// 定时器和串口初始化
INIT: MOV TMOD,#