📄 uart.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 + -