⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s_communication_1.c

📁 AT89S52单片机串口发送接收程序
💻 C
字号:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
#include<LCD_1602.h>

uchar num;
sbit s1=P3^2;
sbit judge_p30=P3^0;

void initial();
void txd(uchar temp);
void rxd();
void keyscan();
void delay(uint z);
void main()
{
	initial();
	initial_1602();
	display_1602(0,1,0,'S');
	display_1602(0,1,1,'e');
	display_1602(0,1,2,'n');
	display_1602(0,1,3,'d');
	display_1602(0,1,4,':');

	display_1602(0,2,0,'R');
	display_1602(0,2,1,'e');
	display_1602(0,2,2,'c');
	display_1602(0,2,3,'e');
	display_1602(0,2,4,'i');
	display_1602(0,2,5,'v');
	display_1602(0,2,6,'e');
	display_1602(0,2,7,':');
	while(1) 
	{
		keyscan();
		if(judge_p30==0) rxd();
	}
}
void initial()
{
	TMOD=0x20;	  //T1工作方式2
	TH1=0xfd;	  //波特率9600bps
	TL1=0xfd;
	TR1=1;

	SM0=0;	SM1=1;	 //设置方式1 8位异步收发 波特率可变
	REN=1;		     //允许串行口接收
}

void keyscan()
{
	if(s1==0)
	{
	 	delay(2);
		if(s1==0)
		{
			while(!s1);
			num++;
			txd(num);	     //发送数据
			if(num==255) num=0;		
		}	
	}
}

void txd(uchar temp)
{
	display_1602(1,1,8,temp);
	SBUF=temp;			   //发送数据
	while(TI==0);
	TI=0;
}

void rxd()
{
	uchar temp;
	while(RI==0);
	RI=0;			
	temp=SBUF;		//接收数据
	display_1602(1,2,8,temp);
}

void delay(uint z)
{
	uint x,y;
	for(x=z;x>0;x--)
		for(y=100;y>0;y--);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -