|
初學同步通信,幫忙找找出什么問題了?為什么接收不到數(shù)據(jù)。
#include <reg51.h>// 延時函數(shù),用于控制發(fā)送頻率
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端口的開關(guān)狀態(tài)
switch_data = P1;
// 發(fā)送數(shù)據(jù)
SBUF = switch_data;
// 等待發(fā)送完成(TI置位)
while(!TI);
TI = 0; // 清除發(fā)送完成標志 // 適當延時,避免頻繁發(fā)送
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);
// 將接收到的數(shù)據(jù)輸出到P1端口控制LED
P1 = SBUF;
// 清除接收完成標志,準備下一次接收
RI = 0;
}
}
|
-
1.png
(66.85 KB, 下載次數(shù): 0)
下載附件
2025-6-8 11:48 上傳
|