|
初学同步通信,帮忙找找出什么问题了?为什么接收不到数据。
#include <reg51.h>// 延时函数,用于控制发送频率
void delay(unsigned int time) {
unsigned int i, j;
for(i = 0; i < time; i++)
for(j = 0; j < 120; j++);
}
void main() {
unsigned char switch_data;
// 配置串口为方式0(同步移位寄存器方式)
SCON = 0x00; // SM0=0, SM1=0, 方式0
// ES=1;
// EA=1;
while(1) {
// 读取P1端口的开关状态
switch_data = P1;
// 发送数据
SBUF = switch_data;
// 等待发送完成(TI置位)
while(!TI);
TI = 0; // 清除发送完成标志 // 适当延时,避免频繁发送
delay(5000);
}
}
#include <reg51.h>void main() {
// 配置串口为方式0(同步移位寄存器方式),并使能接收
SCON = 0x10; // SM0=0, SM1=0, REN=1(允许接收)
REN=1;
// ES=1;
// EA=1;
while(1) {
// 等待接收完成(RI置位)
while(!RI);
// 将接收到的数据输出到P1端口控制LED
P1 = SBUF;
// 清除接收完成标志,准备下一次接收
RI = 0;
}
}
|
-
1.png
(66.85 KB, 下载次数: 0)
|