commucation2.c

来自「用KEILC写的单片机典型C51编程」· C语言 代码 · 共 86 行

C
86
字号
 /*********************************************************************************/
	//程序名:commucation2.c
	//功能描述:利用单片机的串口实现双机双工通信接收程序
	//调用函数:
	//输入:
	//返回:
	//设计者:wei												日期:2006.10.25
	//修改者:												日期:
	//版本:
	/********************************************************************************/
	
	
	#include<Reg51.h>
	#define	unit		unsigned int
	#define uchar	unsigned char
	#define ulong unsigned long
 
	#define OSC_FREQ						12000000
	#define	C10ms								(65536-OSC_FREQ/(12000000/9970))
	
	uchar ucSBUF232;
	
	/******************************************************************************************
	 *********************************初始化CPU****************************************
	 *****************************************************************************************/
	 void	serial_Init(void)
	 {
	 	IE =0x00;
	 	TMOD = 0x21;
	 	TH0 = C10ms/256;
	 	TL0 = C10ms%256;
	 	TH1 = 0xfa;
	 	TL1 = 0xfa;
	 	PCON = 0x00;
	 	SCON = 0xd8;
	 	
	 	RI = 0 ;
	 	TI = 0;
	 	TR0 = 0;
	 	TR1 = 1;
	 	ES = 1;
	 	EA = 1;
	 }
	
 
 
 /******************************************************************************************
	 *********************************串行口中断处理****************************************
	 *****************************************************************************************/
	 void	serialInterrupt() interrupt 4
	 {
	 	if(RI)
	 		{
	 			RI = 0;
	 			ucSBUF232 = SBUF;
	 			if(ucSBUF232 == 0x01)
	 				{
	 				  P1 = 0x01;
	 				  SBUF = 0x02;
	 				}
	 			else if(ucSBUF232 == 0x02)
	 				{
	 					P1 = 0x02;	
	 					SBUF = 0x04;	
	 				}
	 			else if(ucSBUF232 == 0x04)
	 				{
	 					P1 = 0x04;	
	 					SBUF = 0x01;	
	 				}	
	 		}		
	 	else if(TI)
	 		{ 
	 			TI = 0;
	 			REN =1;
	 			ucSBUF232 = 0xff;
	 		}
	 }
	  
	  void main(void)
	  { 
	  	serial_Init();
	  	REN = 1;
	  	P1 = 0;
	  	while(1);
	  }

⌨️ 快捷键说明

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