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

📄 serial.c

📁 PDIUSB12+51做 U盘程序,可以将自己的系统单做U盘跟 电脑通信
💻 C
字号:
/***************************************************************************************************************8
**	串口通信程序,拨特率可以在初始化端口使用参数从300、600、1200、2400、4800、9600、19200中任意选择
** 	作者:谭超
**	仅供学习用,请勿用做商业用途
**	提示:晶体频率为11.0592MHz,12M,24M,33。用#define命选择不同晶体对应的程序,一般在做调试程序的时候用于状态显示
**/
#include<reg52.h>


#define	CRY_11_MHz		11
#define	CRY_12_MHz		12
#define	CRY_24_MHz		24
#define	CRY_33_MHz		33

#define Crystal	  CRY_24_MHz


void	Init_Port(unsigned int BordRate)   
{
		
 //   unsigned char  Crystal;
	#if Crystal==CRY_11_MHz   //如果予定义晶体频率为11MHz
	unsigned int x;	
	if(BordRate>9600)		//如果拨特率大于9600,需要设置smod=1,
   	{
		PCON=0X80;	//	smod=1
		x=2*28800/BordRate;
	}
	else
	{
		PCON=0X00;	//	smod=0
		x=28800/BordRate;
	}
	x=256-x;
	TH1=TL1=x;
   	TMOD=0X20;
	ET1=0;

	TR1=1;
	SCON=0X40;
	#endif
	
	#if Crystal==CRY_12_MHz
	#endif

	#if Crystal==CRY_24_MHz	
	switch(BordRate) 
	{
		case	1200:TH1=TL1=0x98;break;   
		case	2400:TH1=TL1=0xcc;break;	
		case	4800:TH1=TL1=0xe6;break;   
		case	9600:TH1=TL1=0xf3;break;   
//		case	19200:TH1=TL1=0xf9;break;  
//		case	38400:TH1=TL1=0xfd;break;
		default:break;
	}  		
	PCON=0X80;
	TMOD=0X20;
	ET1=0;

	TR1=1;
	SCON=0X40;
	#endif

	#if Crystal==CRY_33_MHz	
	#endif
	

	 
}
/*
void	ClosePort()
{
   TR1=0;	//关闭定时器,:)没有拨特率就不会发数据了

}*/	
					
void	OutputC(unsigned char Dat)
{
	TI=0;
	SBUF=Dat;
	while(!TI);		
}
void	OutputH(unsigned char Dat)
{
	unsigned  char i;
	for(i=0;i<8;i++)
	{
		if((Dat<<i)&0x80)OutputC(0X31); //由于1在电脑上的内码是0X31,所以这里送0X31。先送高位,后送低位。
		else OutputC(0X30);
	}
}

void	OutputS(unsigned char	*p)
{
	while(*p!=0)
	{
		OutputC(*p);
		p++;
	}
}

⌨️ 快捷键说明

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