📄 main.c
字号:
//pragma ot(0)
#define OS_GLOBALS
#include "Macro.h"
#include "Main.h"
unsigned char data mLastYx1,mLastYx2;
unsigned char data mainTmp;
void main(void)
{
static unsigned char mCnt;
AdOver=0;
Init_sys();
ChannelSel(Ad_Loop);
StartAD();
mCnt = 0;
while(1) {
if (mTimer) {
mTimer =0;
if (Snd[0].SendTime !=0) {
Snd[0].SendTime--;
if (Snd[0].SendTime == 0) {
SBUF=Snd[0].Data[ Snd[0].Head++ ];
Snd[0].Head = Snd[0].Head % sizeof(Snd[0].Data);
}
}
}
Std_Process(0);
if (Port1Style) {
Port1Process();
}
else {
Std_Process(1);
}
if (Port2Style) {
Port2Process();
}
else {
Std_Process(2);
}
if (AdOver < 4) {
AdOver++;
}
else {
if ( SaveData_AD(Ad_Loop)) Ad_Loop=(Ad_Loop+1) % 8;
ChannelSel(Ad_Loop);
StartAD();
AdOver=0;
}
if ( (LastYx1 != YX1) || (LastYx2 != YX2) ){
mCnt++;
if (mLastYx1 != YX1) mCnt = 0;
mLastYx1 = YX1;
if (mLastYx2 != YX2) mCnt = 0;
mLastYx2 = YX2;
if (mCnt > 10) {
LastYx1 = mLastYx1; LastYx2 = mLastYx2;
if (Port1Style == 0) SendYxYcToEXT(1);
if (Port2Style == 0) SendYxYcToEXT(2);
}
}
else {
mCnt = 0;
}
}
}
void StartAD(void)
{
unsigned char data cTmp;
ST_AD=1;
cTmp=0;
while (cTmp<20) cTmp++;
ST_AD=0;
}
void ChannelSel(unsigned char Chn)
{
AD_A0= Chn & 1;
AD_A1= Chn & 2;
AD_A2= Chn & 4;
}
unsigned char SaveData_AD(unsigned char Chn)
{
static unsigned char data TempPos=0;
static unsigned char xdata AD_Temp[AVERTIMES];
unsigned char data i,k,cTmp;
AD_Temp[TempPos++] = D_0809;
if (TempPos < AVERTIMES) return 0;
TempPos=0;
for (k=0; k<AVERTIMES-1; k++ ) {
for (i=k+1; i<AVERTIMES; i++) {
if ( AD_Temp[k] < AD_Temp[i] ) {
cTmp=AD_Temp[k];
AD_Temp[k]=AD_Temp[i];
AD_Temp[i]=cTmp;
}
}
}
AD_Data[Chn] = (unsigned int)AD_Temp[AVERTIMES / 2] + AD_Temp[AVERTIMES / 2 - 1] ;
return 1;
}
void Init_sys(void)
{
unsigned char xdata *pt;
unsigned int data iTmp;
unsigned char data k;
for (k=0; k<3; k++){
pt=(unsigned char xdata*)&Rcv[0];
for (iTmp=0; iTmp<sizeof(Rcv); iTmp++ ) *(pt++)=0;
pt=(unsigned char xdata*)&Snd[0];
for (iTmp=0; iTmp<sizeof(Snd); iTmp++ ) *(pt++)=0;
}
make_crctable();
SetCommPort();
SCON=0x70;
TMOD=0x21;
// PCON = 0x80; // 0x80:19200Bps
IT0=0; IT1=0;
TH0=0xF2; TL0=0xAB;
TH1=In_BAUD4800; // 0xFA: 4800; 0xFD: 9600/19200
TR=0;
Address=D_ADDR & 0x1f;
RELAY1 = 1;
RELAY2 = 1;
iDelay = 0;
TR0=1; TR1=1;
EX0=1; EX1=1; ET0=1; ET1=0; ES=1;
EA=1;
}
void SetCommPort(void)
{
unsigned int data i;
unsigned int data CRC;
unsigned int data iTmp;
unsigned char xdata tmpBuff[sizeof(Port1Cmd) + sizeof(Port2Cmd) + 20];
ReadEE(tmpBuff, sizeof(Port1Cmd) + sizeof(Port2Cmd) + 11);
Port1Baud = Ext_BAUD4800;
Port1Mode = 3;
Port2Baud = Ext_BAUD4800;
Port2Mode = 3;
Port1Style = 0; // 1:协议转发
Port2Style = 0;
if (tmpBuff[0] == 0x08) { // port * 2 { style, 9600, N/M/P/E, CmdNum}
CRC = 0;
iTmp = tmpBuff[4] * LENCMD + tmpBuff[8] * LENCMD + 11; // 11 = 1 + 4 + 4 + 2(crc)
for (i=0; i<iTmp; i++)
UPDATA_CRC(CRC,tmpBuff[i]);
if (CRC == 0){
if (tmpBuff[1] == 1) {
Port1Style = 1;
Port1Baud = tmpBuff[2];
Port1Mode = tmpBuff[3];
Port1Cmd[0] = tmpBuff[4];
memcpy(&Port1Cmd[1],&tmpBuff[9],tmpBuff[4] * LENCMD);
}
if (tmpBuff[5] == 1) {
Port2Style = 1;
Port2Baud = tmpBuff[6];
Port2Mode = tmpBuff[7];
Port2Cmd[0] = tmpBuff[8];
memcpy(&Port2Cmd[1],&tmpBuff[9 + tmpBuff[4] * LENCMD],tmpBuff[8] * LENCMD);
}
}
}
LCR1=0x80; LCR2=0x80;
D_SER1=Port1Baud; D_SER2=Port2Baud;
IER1=0x00; IER2=0x00;
LCR1=Port1Mode; LCR2=Port2Mode;
IER1=0x01; IER2=0x01;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -