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口没有办法正常模拟

相关推荐
LCG米5 小时前
STM32硬件CRC外设实测:多项式固定陷阱、CRC-32校验不匹配根因与软件查表法耗时对比落地
stm32·单片机·嵌入式硬件
La Pulga8 小时前
【FreeRTOS源码学习笔记】任务切换
单片机·mcu·学习·嵌入式·freertos·实时操作系统
女神下凡12 小时前
芯参谋(85):Linux_PPI_NAND_驱动开发指南
linux·运维·arm开发·驱动开发·单片机·嵌入式硬件·设计规范
硅基手札14 小时前
【Linux 内核专栏 19】20 · 嵌入式子系统 — GPIO·pinctrl·clock·regulator
linux·运维·单片机·linux内核·嵌入式开发·调试定位
何粥学16 小时前
Vivado 2024.2 开发记录(AC820 Zynq-7020)——软件使用,点亮led灯
单片机·嵌入式硬件·zynq
Sakura_j_h_16 小时前
51 单片机驱动四位数码管:动态扫描、限流电阻与消影的取舍
单片机·嵌入式硬件·51单片机·嵌入式·数码管·动态扫描·限流电阻
HANDY0920018 小时前
从“不照人”到“剂量达标”:扇叶遮挡式UV-C空气消毒的工程边界与可验证评估框架
开发语言·人工智能·嵌入式硬件·智能家居
飞凌嵌入式20 小时前
千次静电放电试炼,守住飞凌嵌入式硬件可靠底线
嵌入式硬件
蹊黎1 天前
Linux 下用 C 语言实现进度条
linux·c语言·单片机
无敌贵点大王1 天前
从寄存器层面重学STM32(6)——串口USART实战部分
stm32·单片机·嵌入式硬件