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

📄 uart.c

📁 I2C slaver 的8051源码
💻 C
字号:
#include "STC11L60XE.h"
#include "globe.h"

extern unsigned char xdata SDA_DATA[];
extern bit Buffer_Return;
extern unsigned int var;


unsigned int i_i;
unsigned int var_var;

void SendToPc(void)
{
	static unsigned int  i = 0;
	static unsigned char  j = 0;
	static unsigned char SBUF_Bak;

	static unsigned char First_Call = 0;
	static unsigned char Buffer_End = 0;	

	if (((i == 0) &&(First_Call == 0)) ||((i == 0) &&(Buffer_End == 1)))
		{
			;
		}
	else
		{
			i++;
		}
	First_Call = 1;
	Buffer_End = 0;	
	
	if((i < var ) && (Buffer_Return == 0))//var 是放的次序数
		{
			if(SDA_DATA[i] == 0x7c)
				{LED1 = !LED1;//////////////////////////////							
					i++;
					if(SDA_DATA[i] == 0xc0)
						{
							i++;
							if(SDA_DATA[i] == 0x20)
								{
									j = 1;
								}
							else
								{
									j = 0;

									SBUF_Bak = SBUF;
									
									SBUF = SDA_DATA[i];
									while(TI == 0);
									TI = 0; 

									SDA_DATA[i] = 0x20;//清空
																	
								}							
						}
					
					if(SDA_DATA[i] == 0x00)
						{					

							//SBUF = 0x0d;
							//while(TI == 0);
							//TI = 0; 
							//SBUF = 0x0a;
							//while(TI == 0);
							//TI = 0; 	
							
							if(SBUF_Bak != '|')
								{
									SBUF = 0x0d;
									while(TI == 0);
									TI = 0; 
									SBUF =0x0a;
									while(TI == 0);
									TI = 0; 		

									SBUF_Bak = '|';
								}


							i++; //处理7c 00 c0的c0
							SDA_DATA[i] = 0x20;
						}		
					
				}	
			
			if(SDA_DATA[i] == 0xc0) 
				{LED2 = !LED2;//////////////////////////////		
					i++;
					if(SDA_DATA[i] == 0x20)
						{
							if(j == 0)
								{
									SBUF_Bak = SBUF;
									
									SBUF = SDA_DATA[i];
									while(TI == 0);
									TI = 0; 

									SDA_DATA[i] = 0x20;//清空	
								}
						}
					else
						{
							SBUF_Bak = SBUF;
							
							SBUF = SDA_DATA[i];
							while(TI == 0);
							TI = 0; 

							SDA_DATA[i] = 0x20;//清空	
						
						}
				}
			
		}
	 if(Buffer_Return == 1) //Buffer_Return等于1是返回的标志
		{
			while(i < Buffer_Len)
				{
					if(SDA_DATA[i] == 0x7c)
					{							
					i++;
					if(SDA_DATA[i] == 0xc0)
						{
							i++;
							if(SDA_DATA[i] == 0x20)
								{
									j = 1;
								}
							else
								{
									j = 0;
									
									SBUF_Bak = SBUF;
									
									SBUF = SDA_DATA[i];
									while(TI == 0);
									TI = 0; 

									SDA_DATA[i] = 0x20;//清空
																	
								}							
						}
					
					if(SDA_DATA[i] == 0x00)
						{
							
							//SBUF = 0x0d;
							//while(TI == 0);
							//TI = 0; 
							//SBUF =0x0a;
							//while(TI == 0);
							//TI = 0; 		

							if(SBUF_Bak!= '|')
								{
									SBUF = 0x0d;
									while(TI == 0);
									TI = 0; 
									SBUF =0x0a;
									while(TI == 0);
									TI = 0; 	 	

									SBUF_Bak = '|';
								}	
							
							i++; //处理7c 00 c0的c0
							SDA_DATA[i] = 0x20;

						}		
					
				}
					
				if(SDA_DATA[i] == 0xc0)
					{		
						{		
							i++;
							if(SDA_DATA[i] == 0x20)
								{
									if(j == 0)
										{
											SBUF_Bak = SBUF;
											
											SBUF = SDA_DATA[i];
											while(TI == 0);
											TI = 0; 

											SDA_DATA[i] = 0x20;//清空	
										}
								}
							else
								{
										SBUF_Bak = SBUF;
										
										SBUF = SDA_DATA[i];
										while(TI == 0);
										TI = 0; 

										SDA_DATA[i] = 0x20;//清空	
								
								}
						}				
					}
				i++;//while(i < Buffer_Len)循环的i++
				}	
				i = 0;
				Buffer_End = 1;
				Buffer_Return = 0;
		}

	 if(TEST_PIN == 0)
	{
		i_i = i;		
		SBUF =  (unsigned char)(i_i >> 8);   
		while(TI == 0);
		TI = 0;  

		i_i = i;		
		SBUF = (unsigned char)(i & 0x00ff);
		while(TI == 0);
		TI = 0;  

		var_var = var;
		SBUF = (unsigned char)(var_var>> 8);  
		while(TI == 0);
		TI = 0;  
		
		var_var = var;
		SBUF = (unsigned char)(var_var& 0x00ff);
		while(TI == 0);
		TI = 0; 

		SBUF = (unsigned char)Buffer_Return;
		while(TI == 0);
		TI = 0;  
	}
}



#if 0//原始数据
void SendToPc(void) 
{
	static unsigned int  i = 0;
	
	if(i < var ) //var 是放的次序数
		{
			SBUF = SDA_DATA[i];
			while(TI == 0);
			TI = 0;          
			SDA_DATA[i] = 0x20;//清空
			i++;//i是拿的次序数     
		}
	 if(Buffer_Return == 1) //Buffer_Return等于1是返回的标志
		{
			//while(i < 200)
			while(i < 1000)
				{
					SBUF = SDA_DATA[i];
					while(TI == 0);
					TI = 0;
					SDA_DATA[i] = 0x20;//清空
					i++;
				}			
				i = 0;
				Buffer_Return = 0;
		}

if(TEST_PIN == 0)
{
	
		i_i = i;		
		SBUF =  (unsigned char)(i_i >> 8);   
		while(TI == 0);
		TI = 0;  

		i_i = i;		
		SBUF = (unsigned char)(i & 0x00ff);
		while(TI == 0);
		TI = 0;  

		var_var = var;
		SBUF = (unsigned char)(var_var>> 8);  
		while(TI == 0);
		TI = 0;  
		
		var_var = var;
		SBUF = (unsigned char)(var_var& 0x00ff);
		while(TI == 0);
		TI = 0; 

		SBUF = (unsigned char)Buffer_Return;
		while(TI == 0);
		TI = 0;  
}
	

	
}
#endif	 

⌨️ 快捷键说明

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