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

📄 com.c

📁 基于c8051f020的应用
💻 C
字号:
//**************************************************************************************************************************
#include <c8051F020.h>
#include "HEAD.H"
//**************************************************************************************************************************
void Com0_Init(void)
{
	SCON0  = 0x50;                	// SCON0: 模式1, 8位UART, 允许RX
	TMOD  |= 0x20;                 	// TMOD: 定时器1, 模式2, 8位重装
	TH1    = -(SYSCLK/BAUDRATE/16); // 按波特率设置定时器1重装值
	TR1    = 1;                     // 起动定时器1
	CKCON |= 0x10;               	// 定时器1使用系统时钟为时基
	PCON  |= 0x80;                	// SMOD00 = 1

	ES0 = 1;						// UART0中断允许

	DatLong=0x00;
} 
//**************************************************************************************************************************
void Enter_UART0(void) interrupt 4
{
	RI0 = 0;
	DatPocket[DatLong]=SBUF0;
	Timer0_ReSet();	
    DatLong++;
	ComFlag=0x01;
}
//**************************************************************************************************************************
void Com0_Send_Char(unsigned char datas)
{
	SBUF0 = datas;
    while(!TI0);
    TI0=0;
}
//**************************************************************************************************************************
void Com0_Send_String(unsigned char *string,unsigned int bytes)
{
	xdata unsigned int i;

	for(i=0;i<bytes;i++)
		Com0_Send_Char(string[i]);
}

//**************************************************************************************************************************
/*
unsigned char Com0_Get_Char(void)
{
	while(RI0 == 0);
	RI0 = 0;

	return SBUF0;
}
*/

//**************************************************************************************************************************
void Com1_Init(void)
{
	SCON1 = 0x50;                   		//"S1MODE  -  MCE1  REN1   TB81 RB81 TI1 RI1"  
    TMOD   |=  0x20;    	                //Timer1 Mode,"GATE1  C/T1  T1M1  T1M0  GATE0  C/T0  T0M1  T0M0"
	TH1    = -(SYSCLK/BAUDRATE/16); // 按波特率设置定时器1重装值
	TR1    = 1;                     // 起动定时器1
	CKCON |= 0x10;               	// 定时器1使用系统时钟为时基
	PCON  |= 0x80;                	// SMOD00 = 1

/*
	PCON &=~0x80;		// 串口波特率加倍使能。0:串口波特率为SCON中的串口方式定义值;1:加倍
//	SCON  = 0x70;		// Mode 1: 8-Bit UART, Variable Baud Rate ,receive enable.
	CKCON = 0x00;      	// Timer 2,1,0 uses the system clock divided by 12.
	T2CON |= 0x30;		// RCLK和TCLK中有任何一个被置‘1’时,定时器2中断被自动禁止
						// 定时器被强制工作于波特率发生器方式并使用SYSCLK/2作为时钟源。
	RCAP2H = 0xFF;		// 9600=(1/16)*(11059200/2)/(65536-X).0xFFDC=9600,0xFFED=19200,0xFFF7=38400,0xFFFD=115200
	RCAP2L = 0xFA;
	TR2 = 1;			// 时钟2使能
*/
    
	EIE2 |= 0x40;//ES1 = 1;//允许UART1中断

	DatLong=0x00;
}
//**************************************************************************************************************************
void Enter_UART1(void) interrupt 20
{
	SCON1 &=~0x01;
	DatPocket[DatLong]=SBUF1;
	Timer0_ReSet();	
    DatLong++;
	ComFlag=0x02;
}
//**************************************************************************************************************************
void Com1_Send_Char (unsigned char data1)
{
	SBUF1 = data1;
    while(!(SCON1 & 0x02));
    SCON1 &=~0x02;
}
//**************************************************************************************************************************
void Com1_Send_String(unsigned char *string,unsigned int bytes)
{
	xdata unsigned int  i;
	xdata unsigned int  j;

	CTRL485 = 1;
	for(j=0;j<200;j++);

	for(i=0;i<bytes;i++)
		Com1_Send_Char(string[i]);

	for(j=0;j<100;j++);
	CTRL485 = 0;
}
//**************************************************************************************************************************
void Com_Send_String(unsigned char *string,unsigned int bytes,unsigned char flag)
{
	if(flag==0x01)
		Com0_Send_String(string,bytes);
	else if(flag==0x02)
		Com1_Send_String(string,bytes);
}
//**************************************************************************************************************************
// The End
//**************************************************************************************************************************

⌨️ 快捷键说明

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