📄 uart.c
字号:
#include "REG51.h"
#include "lcd.h"
#include "key.h"
//-----------------------------------
extern xdata unsigned char CEedit;
extern xdata unsigned char CEspeed;
extern xdata unsigned char CEWW;
extern xdata unsigned char CEbegin;
extern xdata unsigned char CEend;
extern xdata unsigned char CEauto;
extern xdata unsigned char CEP1D;
//extern xdata unsigned char CEFF;
//extern xdata unsigned char CEPP_Sign;
extern xdata unsigned char CElamp;
extern xdata unsigned char CEcut;
extern xdata unsigned char DCEFF[];
extern xdata unsigned char CDSSUart_En;
extern xdata unsigned char LRUart_Sign;
extern xdata unsigned char LRCount;
extern xdata unsigned char StartEn;
extern xdata unsigned char SaveEn;
//xdata unsigned char RRBuffer[50][2];
///int OutKey=0;
//int LcdST=0;
//int LcdData=0;
//-------------------------------------------
unsigned char UARTbme (unsigned char utST)
{
unsigned char fefe;
long TimeEr,TimeEr1;
TimeEr1 = 5000;
do{
TimeEr1 --;
if(TimeEr1 == 0) { return (1); }
TI=0;
SBUF=utST;
while (!TI);
RI=0;
// SSTAT=0x60;
TimeEr=200000;
while (!RI)
{ TimeEr--;
if(TimeEr==0) { return (1); }
}
fefe=SBUF;
RI=0;
} while(fefe!=utST);
return (0);
}
unsigned char UARTend (unsigned char utST)
{
unsigned char fefe;
long TimeEr;
TI=0;
SBUF=utST;
while (!TI);
RI=0;
TimeEr=200000;
while (!RI)
{ TimeEr--;
if(TimeEr==0) { return (1); }
}
fefe=SBUF;
RI=0;
if(fefe==utST) { return(0); }
else { return (2); }
}
Sendchar ( unsigned char SendST, unsigned char SendData )
{
unsigned char seed;
seed= SendData;
TI=0;
SBUF=SendST;
while (!TI);
TI=0;
SBUF=seed;
while (!TI);
}
/*
UARTRer()
{
long TimeEr;
RI=0;
TimeEr=400000;
while(!RI)
{
TimeEr--;
if(TimeEr == 0)
return (2);
}
return 1;
}
ReceiveData(unsigned char utST) //receiv the head address if
{ unsigned char i=0,whexet = 1; //the head addr equal the ask addr the return 0,else return 1
unsigned char fefe;
long int TimeEr,TimeEr1,TimeEr2;
TimeEr1 = 5000;
TimeEr2 = 5000;
while (fefe!=utST) //receive always while fefe == utSt
{ TimeEr1--;
if(UARTRer()== 1)
{
fefe=SBUF;
RI=0;
TI=0;
SBUF=fefe;
while (!TI);
}
else {return (1);}
if(TimeEr1 == 0){return (2);}
}
while (fefe==utST) //receive always while fefe != utSt
{
TimeEr2 -- ;
if(TimeEr2 == 0){return (2);}
if(UARTRer()== 1)
{
fefe=SBUF;
RI=0;
if(fefe == utST)
{
TI=0;
SBUF=fefe;
while (!TI);
}
else
{
RRBuffer[0][0]= fefe; //receive the unequal data then give it to rrbuffer!
}
}
else{ return (2); }
}
while(whexet == 1)
{
RI=0;
TimeEr=400000;
while (!RI)
{
TimeEr--;
if(TimeEr==0) { return (2); }
}
RRBuffer[i][1]=SBUF;
RI=0;
TimeEr=400000;
i++;
while (!RI)
{
TimeEr--;
if(TimeEr==0) { return (2); }
}
RRBuffer[i][0]=SBUF;
RI=0;
if(RRBuffer[i][0] == 0x79)
{
whexet = 0;
}
if(i>50)
{
i = 0;
return (2);
}
}
TI=0;
SBUF=0x79;
while (!TI);
TI = 0;
return(0); //if all if right return 0;
}
void UARTRRBuffer() //send the data of buffer which used for test;
{
int i = 0,whexet =1;
while(whexet == 1)
{
TI=0;
SBUF=i;
while (!TI);
TI=0;
TI=0;
SBUF=RRBuffer[i][0];
while (!TI);
TI=0;
SBUF=RRBuffer[i][1];
while (!TI);
i++;
if(RRBuffer[i+1][0]==0x79)
{
whexet = 0;
}
}
}
void DealReceiveData()
{
unsigned char i = 0,whexet = 1;
while(whexet == 1)
{
if(RRBuffer[i][0]==0xC0){Data_H = RRBuffer[i][1]*100;}
if(RRBuffer[i][0]==0xC1){Data_PSL = RRBuffer[i][1];}
if(RRBuffer[i][0]==0xC5){Data_S = RRBuffer[i][1]*100;}
if(RRBuffer[i][0]==0xC1){Data_SLS = RRBuffer[i][1];}
if(RRBuffer[i][0]==0xC8){Data_DIR = RRBuffer[i][1];}
if(RRBuffer[i][0]==0xCb){Data_T = RRBuffer[i][1]*50;}
if(RRBuffer[i][0]==0xe1){Data_FO = RRBuffer[i][1]*100;}
if(RRBuffer[i][0]==0xe2){Data_FC = RRBuffer[i][1];}
if(RRBuffer[i][0]==0xe4){Data_SFM = RRBuffer[i][1];}
if(RRBuffer[i][0]==0xe6){Data_ANU = RRBuffer[i][1];}
if(RRBuffer[i][0]==0xF5){Data_D1 = RRBuffer[i][1];}
if(RRBuffer[i][0]==0xF6){Data_D2 = RRBuffer[i][1];}
if(RRBuffer[i][0]==0xF7){Data_D3 = RRBuffer[i][1]*100;}
if(RRBuffer[i][0]==0xF8){Data_W1 = RRBuffer[i][1]*100;}
if(RRBuffer[i][0]==0xF9){Data_W2 = RRBuffer[i][1]*100;}
i++;
if(RRBuffer[i][0]==0x79)
{
whexet = 0;
}
}
} */
/*
void UARTrr(void)
{
unsigned char ER;
ER = ReceiveData(0x70);
if(ER == 0)
{
DealReceiveData();
}
if(ER == 1)
{while(1)
{
DispER(ER);
}
}
if(ER == 2)
{
while(1)
{
DispER(ER);
}
}
} */
unsigned char UARTtt ()
{
xdata unsigned char OnOffSign0 = 0x00;
xdata unsigned char OnOffSign1 = 0x00;
// unsigned char UPDOWN;
unsigned char MuER,Cut;
static int MMER;
if(CEcut == 1)
{
Cut = 0;
}
else
{
Cut = 1;
}
OnOffSign1 = CElamp;
OnOffSign0 = (CEbegin)|(CEend<<1)|(CEP1D<<2)|(CEWW<<3)|(Cut<<4)|(CEauto<<5);
if( 1==UARTbme(0x78)) { return (1); }
MMER=0;
do
{
/*
if(LRUart_Sign == 1)
{
Sendchar( 0xF4,LRCount);
LRUart_Sign = 0;
} */
if(CEbegin == 1)
{
if(Data_SBB == 0)
{
Sendchar( 0xa0,0);
Sendchar( 0xa1,0);
Sendchar( 0xa2,0);
Sendchar( 0xa3,0);
Sendchar( 0xa4,0);
Sendchar( 0xa5,0);
}
else if(Data_SBA == 0)
{
Sendchar( 0xa0,0);
Sendchar( 0xa1,Data_SBB);
Sendchar( 0xa2,0);
Sendchar( 0xa3,0);
Sendchar( 0xa4,0);
Sendchar( 0xa5,0);
}
else
{
if(Data_SBN ==1 )
{
Sendchar( 0xa0,Data_SBA);
Sendchar( 0xa1,Data_SBB);
Sendchar( 0xa2,0);
Sendchar( 0xa3,0);
Sendchar( 0xa4,0);
Sendchar( 0xa5,0);
}
if(Data_SBN ==2 )
{
Sendchar( 0xa0,Data_SBA);
Sendchar( 0xa1,Data_SBB);
Sendchar( 0xa2,Data_SBA);
Sendchar( 0xa3,Data_SBB);
Sendchar( 0xa4,0);
Sendchar( 0xa5,0);
}
if(Data_SBN ==3 )
{
Sendchar( 0xa0,Data_SBA);
Sendchar( 0xa1,Data_SBB);
Sendchar( 0xa2,Data_SBA);
Sendchar( 0xa3,Data_SBB);
Sendchar( 0xa4,Data_SBA);
Sendchar( 0xa5,Data_SBB);
}
}
}
if(CEend==1)
{
if(Data_EBC == 0)
{
Sendchar( 0xa6,0);
Sendchar( 0xa7,0);
Sendchar( 0xa8,0);
Sendchar( 0xa9,0);
Sendchar( 0xaa,0);
Sendchar( 0xab,0);
}
else if(Data_EBD == 0)
{
Sendchar( 0xa6,Data_EBC);
Sendchar( 0xa7,0);
Sendchar( 0xa8,0);
Sendchar( 0xa9,0);
Sendchar( 0xaa,0);
Sendchar( 0xab,0);
}
else
{
if(Data_EBN == 1)
{
Sendchar( 0xa6,Data_EBC);
Sendchar( 0xa7,Data_EBD);
Sendchar( 0xa8,0);
Sendchar( 0xa9,0);
Sendchar( 0xaa,0);
Sendchar( 0xab,0);
}
if(Data_EBN == 2)
{
Sendchar( 0xa6,Data_EBC);
Sendchar( 0xa7,Data_EBD);
Sendchar( 0xa8,Data_EBC);
Sendchar( 0xa9,Data_EBD);
Sendchar( 0xaa,0);
Sendchar( 0xab,0);
}
if(Data_EBN == 3)
{
Sendchar( 0xa6,Data_EBC);
Sendchar( 0xa7,Data_EBD);
Sendchar( 0xa8,Data_EBC);
Sendchar( 0xa9,Data_EBD);
Sendchar( 0xaa,Data_EBC);
Sendchar( 0xab,Data_EBD);
}
}
}
if(CEWW == 1)
{
Sendchar( 0xac,Data_WWWC);
Sendchar( 0xad,Data_WWWD);
}
if(CEP1D ==1 )
{
Sendchar( 0xb1,Data_PS[1]);
Sendchar( 0xb2,Data_PS[2]);
Sendchar( 0xb3,Data_PS[3]);
Sendchar( 0xb4,Data_PS[4]);
Sendchar( 0xb5,Data_PS[5]);
Sendchar( 0xb6,Data_PS[6]);
Sendchar( 0xb7,Data_PS[7]);
Sendchar( 0xb8,Data_PS[8]);
Sendchar( 0xb9,Data_PS[9]);
Sendchar( 0xba,Data_PS[10]);
Sendchar( 0xbb,Data_PS[11]);
Sendchar( 0xbc,Data_PS[12]);
}
Sendchar( 0xaf,OnOffSign0);
Sendchar( 0xae,OnOffSign1);
Sendchar( 0xDC,DCEFF[4]);
if(StartEn == 1)
{
Sendchar( 0xc2,(unsigned char )(Data_N/100)); //START BACK-TACKING SPEED
Sendchar( 0xc3,(unsigned char )(Data_V/100)); //end back-tacking speed
Sendchar( 0xc4,(unsigned char )(Data_B/100)); //bar -tacking speed
Sendchar( 0xc7,(unsigned char )(Data_A/100)); //AUTOMATIC CONSTANT STITCH SEWING SPEED
//
Sendchar( 0xC9,(unsigned char )(Data_M/100)); //MIDDLE SPEED
Sendchar( 0xCA,(unsigned char )(Data_L/100));
Sendchar( 0xd0,Data_ACD);
Sendchar( 0xd1,Data_RVM);
Sendchar( 0xd2,Data_SBN);
Sendchar( 0xD3,Data_BT1);
Sendchar( 0xD4,Data_BT2);
Sendchar( 0xD5,Data_EBN);
Sendchar( 0xD6,Data_BT3);
Sendchar( 0xD7,Data_BT4);
Sendchar( 0xd8,Data_BCC);
Sendchar( 0xd9,Data_BCD);
Sendchar( 0xDA,Data_BT5);
Sendchar( 0xDB,Data_BT6);
Sendchar( 0xDE,Data_BT7);
Sendchar( 0xDF,Data_BT8);
Sendchar( 0xE0,Data_FTP);
Sendchar( 0xE3,Data_FL);
// Sendchar( 0xE7,Data_HL); //Hign speed limt
Sendchar( 0xE8,Data_MAV);
Sendchar( 0xE9,(unsigned char )(Data_MIV/10));
Sendchar( 0xEA,Data_PV);
Sendchar( 0xEB,(unsigned char )(Data_OVD/10));
Sendchar( 0xEC,(unsigned char )(Data_LVD/10));
Sendchar( 0xF0,(unsigned char )(Data_TOT/10));
Sendchar( 0xF1,(unsigned char )(Data_TM1/10));
Sendchar( 0xF2,(unsigned char )(Data_TM2/10));
Sendchar( 0xF3,Data_UTD);
StartEn = 0;
}
if(CDSSUart_En == 1)
{
if(Data_H>Data_HL)
{
Sendchar( 0xc0,(unsigned char )(Data_HL/100));
}
else
{
Sendchar( 0xc0,(unsigned char )(Data_H/100)); //Automatic Constant-Stitch sewing speed
}
Sendchar( 0xC8,Data_DIR);
Sendchar( 0xc1,Data_PSL);
Sendchar( 0xc5,(unsigned char )(Data_S/100)); //soft start speed
Sendchar( 0xc6,Data_SLS);
Sendchar( 0xCB,(unsigned char )(Data_T/50));
//
Sendchar( 0xE1,(unsigned char )(Data_FO/100));
Sendchar( 0xE2,Data_FC);
Sendchar( 0xE4,Data_SFM);
Sendchar( 0xE5,Data_DD);
Sendchar( 0xE6,Data_ANU);
Sendchar( 0xED,Data_PDW);
Sendchar( 0xF5,Data_D1);
Sendchar( 0xF6,Data_D2);
Sendchar( 0xF7,(unsigned char )(Data_D3/100));
Sendchar( 0xF8,(unsigned char )(Data_W1/100));
Sendchar( 0xF9,(unsigned char )(Data_W2/100));
if(SaveEn == 1)
{
Sendchar( 0xce,1);
SaveEn = 0;
}
CDSSUart_En = 0;
}
MuER = UARTend(0x79);
MMER++;
if(MMER>200) { return (1); }
if(MuER == 1) { return (1); }
}while( MuER==2);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -