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

📄 12_3.c

📁 51事例原代码 事例多多 应该对初学者很有用
💻 C
字号:
//双机点对点通信C51程序:

/* 8051双机点对点通信程序 */
# include < reg51. h >
# define FLAG 1		/* 发送或接收标记 */
unsigned char temp;
unsigned char idata buf [10 ];

void main (void)
{
	init () ; 			/* 串行口初始化 */
	if ( FLAG = = 0)
		send (buf);
	else
	receive (buf) ;
}

void init (void)		/* 串行口初始化 */
{ 
	TMOD = 0X20;		/* 定时器1,方式2 */
	TH1 = 0xE8;			/* fosc =11. 0592MHz,波特率1200 */
	TL1 = 0xE8;
	PCON = 0x00;		/* SMOD=0 */
	FLAG = 1;
	SCON = 0x50;		/* 8位UART,允许接收 */
}

void send(unsigned char idata *p)	/* 发送*/
{ 
	unsigned char i ;
	do
		{
		SBUF = 0xAA;
		while ( TI = = 0);
			TI = 0;
		while (RI = = 0);
			RI = 0;
		}
	while ( (SBUF^0xBB) ! = 0);
	do
		{
		temp = 0;
		for (i = 0;i < 16;i + + )
			{
			SBUF = p[ i ];
			temp + = p[ i ];
			while ( TI = = 0); 
				TI = 0;
			}
		SBUF = temp;
		while ( TI = = 0);
			TI = 0;
		while (RI = = 0);
			RI = 0;
		}
	while (SBUF ! = 0);
}

void receive (unsigned char idata *p)	/* 接收 */
{
	unsigned char i;
	do
		{	
		while (RI = = 0);
			RI = 0; 
		}
	while ( (SBUF^0xAA) ! = 0);
		SBUF = 0xBB;
	while ( TI = = 0); 
		TI = 0;
	while (1)
		{
		temp = 0;
		for (i = 0;i < 16;i + + ) 
			{
			while (RI = = 0);
				RI = 0;
			p[ i ] = SBUF;
			temp + = p[ i ];
			}
		while (RI = = 0);
			{
			RI = 0 ;
			if ( (SBUF^pf) = = 0)
				SBUF = 0x00;
			break;
			else
				{
				SBUF = 0xFF;
				while ( TI = = 0);
				TI = 0;
				}
			}
		}
}

⌨️ 快捷键说明

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