c51单片机串行通信示例代码(单片机--单片机通信)(附带proteus线路图)

cpp 复制代码
//这个发送端代码
#include "reg51.h"
#include "myheader.h"
#define uchar unsigned char
long int sleep_i=0;
long int main_i=0;
void main()
{
	uchar sendx[6]={2,0,2,3,8,1};
	sleep(2000);
	TMOD=0x20;
	TH1=0XF4;//根据波特率计算公式这里需要设置为这么多才能够在串行数据传输模式1的状况下实现波特率2400B/S
	TL1=0XF4;
	TR1=1;
	SCON=0X40;
	while(1)
	{
		for(main_i=0;main_i<6;main_i++)
		{
			SBUF=sendx[main_i];
			while(TI==0);//这个是清除发送的中断,不是清除闹钟中断
			TI=0;
		}
	}
}

void sleep(long int a)
{
	for(sleep_i=0;sleep_i<a;sleep_i++)
	{
		;
	}
}

后面这个是接收端代码

cpp 复制代码
#include "reg51.h"
#include "myheader.h"
#define uchar unsigned char
int szc[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int bufferc[6]={0};
int sza[6]={0x01,0x02,0x04,0x08,0x10,0x20};
void display()
{
	uchar i=0;
	uchar num=0;
	for(i=0;i<6;i++)
	{
		num=bufferc[i];
		P2=szc[num];
		P1=sza[i];
		sleep(50);
		P2=0xff;
	}
}

void main()
{
	uchar i=0;
	TMOD=0x20;
	TH1=0XF4;//根据波特率计算公式这里需要设置为这么多才能够在串行数据传输模式1的状况下实现波特率2400B/S
	TL1=0XF4;
	TR1=1;
	SCON=0x40;//串口工作与方式1,定义了传送数据的格式
	REN=1;
	for(i=0;i<6;i++)
	{
		while(RI==0)
		{
			;
		}
		bufferc[i]=SBUF;
		RI=0;
	}
	while(1)
	{
		display();
	}
}

void sleep(long int a)
{
	uchar i=0;
	for(i=0;i<a;i++)
	{
		;
	}
}

另外发现一个奇怪的现象:如果把T1口改为T0口没有办法正常模拟

相关推荐
Devlab6 小时前
LVGL设计大师——网页版anyui来了!!
嵌入式硬件·物联网·低代码·ui·iot
Dr.kangder9 小时前
嵌入式面试总结(十五)——异常处理
单片机·面试·职场和发展·系统架构·嵌入式
zlinear数据采集卡11 小时前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
ACP广源盛1392462567311 小时前
蚂蚁百灵 Ling‑3.0‑flash 开源 + 昇腾 0‑Day 原生适配@ACP#GSV9001E 在国产算力矩阵中的机会与落地场景
大数据·人工智能·分布式·单片机·嵌入式硬件
Rocktech_ruixun13 小时前
机器人端侧大模型部署对主板有哪些要求?瑞迅主控板分级方案对比
人工智能·嵌入式硬件·机器人
振南的单片机世界13 小时前
SysTick硬核拆解:既是HAL_Delay的“心跳”,也是RTOS的“节拍器”
arm开发·stm32·单片机·嵌入式硬件
Lzh编程小栈14 小时前
【嵌入式底层】SPI超透彻详解:通信原理、四线结构、四种模式、寄存器底层 + 面试全集
c语言·stm32·单片机·面试·职场和发展
Rocktech_ruixun14 小时前
机器人数据采集能力取决于什么?瑞迅科技RK3588/3576核心板方案深度解析
人工智能·嵌入式硬件·机器人
水果里面有苹果14 小时前
28-DRV8825PWPR步进电机驱动器
单片机
恒锐丰科技韩生15 小时前
率能 SS6625E|3.0~20V 单通道 H 桥直流电机驱动 SOP8 电子锁玩具机器人分享
嵌入式硬件·硬件工程