标题: 初学单片机同步通信 大侠,帮忙找找问题 [打印本页]

作者: linan_111linan    时间: 2025-6-8 11:51
标题: 初学单片机同步通信 大侠,帮忙找找问题
初学同步通信,帮忙找找出什么问题了?为什么接收不到数据。
#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)

1.png

作者: 红花无常    时间: 2025-6-9 09:10
是不是接线错了?甲机的RX应该接乙机的TX,甲机的TX应该接乙机的RX
作者: haiyang201    时间: 2025-6-9 09:24
你这接法都有问题,RX接TX,TX接RX才对,  你这接法怎么能通讯呢
作者: zsyzdx    时间: 2025-6-11 09:51
第一:硬件的接线错了,上面的坛友已经回复了;第二:程序建议用中断的形式,很多开发板都有模板,在中断里面去接收数据。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1