📄 main.c
字号:
#include "at91sam7a3.h"
extern unsigned long Abus_flag;
extern unsigned long Bbus_flag;
extern unsigned long UART0_TX_flag;
extern unsigned long UART0_RE_Flag;
extern unsigned int UART0_T_Count ;
extern unsigned char UART0_RData[522] ;
extern unsigned long TX_BUS_flag;
unsigned int IM_Data_Length;
unsigned char IM_Data[522];
unsigned char Z_Data[20];
unsigned char K_Data[20];
unsigned char ASK[522];
extern unsigned char UART1_RE[522];
extern unsigned char UART2_RE[522];
extern void power_on_initialization(void);
extern void control(void) ;
void Abus_dataframe(void);
void Bbus_dataframe(void);
void ABbus_dataframe(void);
void Abus_zl(void);
void Bbus_zl(void);
void ABbus_zl(void);
unsigned char ASCiitoHEX(unsigned char);
unsigned char HEXtoASCii(unsigned char);
//***************************************************************************
//* 名称:main() *
//* 功能:This edition add psk InData function. *
//***************************************************************************
int main(void)
{
int i,j;
AT91S_USART *pUS0;
power_on_initialization();
pUS0 = AT91C_BASE_US0;
while (1)
{
if(UART0_RE_Flag == 0x55555555)
{
UART0_T_Count = 0x0001;
if (UART0_RData[1]==0x44) //char_D In_Data
{
j=0;
for(i=2;i<=137;i=i+2)
{
IM_Data[j]=0x10*ASCiitoHEX(UART0_RData[i]);
IM_Data[j]=IM_Data[j]+ASCiitoHEX(UART0_RData[i+1]);
j++;
}
UART0_RE_Flag = 0xaaaaaaaa;
if (Abus_flag == 0x55555555)
Abus_dataframe();
if (Bbus_flag == 0x55555555)
Bbus_dataframe();
}
if (UART0_RData[1]==0x47) //char_G In_Data
{
j=0;
for(i=2;i<=137;i=i+2)
{
IM_Data[j]=0x10*ASCiitoHEX(UART0_RData[i]);
IM_Data[j]=IM_Data[j]+ASCiitoHEX(UART0_RData[i+1]);
j++;
}
UART0_RE_Flag = 0xaaaaaaaa;
ABbus_dataframe();
}
if (UART0_RData[1]==0x48) //char_H ZL1_ZL33
{
j=0;
for(i=2;i<=9;i=i+2)
{
Z_Data[j]=0x10*ASCiitoHEX(UART0_RData[i]);
Z_Data[j]=Z_Data[j]+ASCiitoHEX(UART0_RData[i+1]);
j++;
}
UART0_RE_Flag = 0xaaaaaaaa;
ABbus_zl();
}
if (UART0_RData[1]==0x4B) //char_K ZL1_ZL33
{
j=0;
for(i=2;i<=9;i=i+2)
{
Z_Data[j]=0x10*ASCiitoHEX(UART0_RData[i]);
Z_Data[j]=Z_Data[j]+ASCiitoHEX(UART0_RData[i+1]);
j++;
}
UART0_RE_Flag = 0xaaaaaaaa;
if (Abus_flag == 0x55555555)
Abus_zl();
if (Bbus_flag == 0x55555555)
Bbus_zl();
}
if (UART0_RData[1]==0x43) //char_C ctrl ABUS or BBUS
{
j=0;
for(i=2;i<=2;i=i+2)
{
K_Data[j]=0x10*ASCiitoHEX(UART0_RData[i]);
K_Data[j]=K_Data[j]+ASCiitoHEX(UART0_RData[i+1]);
j++;
}
UART0_RE_Flag = 0xaaaaaaaa;
control();
}
}
if(UART0_TX_flag == 0x55555555)
{
ASK[0] = 0x53;
if (TX_BUS_flag == 0x55555555)
{ ASK[1] = 0x41;
for (i=0;i<68;i++)
{
ASK[2*i+2] = UART1_RE[i] & 0xF0;
ASK[2*i+2] = ASK[2*i+2]>>4;
ASK[2*i+2] = HEXtoASCii(ASK[2*i+2]);
ASK[2*i+3] = UART1_RE[i] & 0x0F;
ASK[2*i+3] = HEXtoASCii(ASK[2*i+3]);
}
}
else if (TX_BUS_flag == 0xaaaaaaaa)
{
ASK[1] = 0x42;
for (i=0;i<68;i++)
{
ASK[2*i+2] = UART2_RE[i] & 0xF0;
ASK[2*i+2] = ASK[2*i+2]>>4;
ASK[2*i+2] = HEXtoASCii(ASK[2*i+2]);
ASK[2*i+3] = UART2_RE[i] & 0x0F;
ASK[2*i+3] = HEXtoASCii(ASK[2*i+3]);
}
}
ASK[138] = 0x51;
for (i=0;i<139;i++) //139;i++)
{
pUS0->US_THR = ASK[i];
while ((pUS0->US_CSR & 0x00000200) != 0x00000200)
{
}
}
UART0_TX_flag = 0xaaaaaaaa;
}
}
}
void Abus_zl(void)
{
AT91S_USART *pUS1;
int j,temp;
pUS1 = AT91C_BASE_US1;
pUS1->US_CR = 0x00001000;
pUS1->US_IDR = 0x00000001;
for (j=0;j<4;j++)
{
pUS1->US_THR = Z_Data[j]; //Z_Data[j];
while ((pUS1->US_CSR & 0x00000200) != 0x00000200);
temp = pUS1->US_RHR;
}
pUS1->US_IER = 0x00000001;
}
void Bbus_zl(void)
{
AT91S_USART *pUS2;
int j,temp;
pUS2 = AT91C_BASE_US2;
pUS2->US_CR = 0x00001000;
pUS2->US_IDR = 0x00000001;
for (j=0;j<4;j++)
{
pUS2->US_THR = Z_Data[j]; //Z_Data[j];
while ((pUS2->US_CSR & 0x00000200) != 0x00000200);
temp = pUS2->US_RHR;
}
pUS2->US_IER = 0x00000001;
}
void ABbus_zl(void)
{
AT91S_USART *pUS1;
AT91S_USART *pUS2;
int j,temp;
pUS1 = AT91C_BASE_US1;
pUS2 = AT91C_BASE_US2;
pUS1->US_CR = 0x00001000;
pUS1->US_IDR = 0x00000001;
pUS2->US_CR = 0x00001000;
pUS2->US_IDR = 0x00000001;
for (j=0;j<4;j++)
{
pUS1->US_THR = Z_Data[j]; //Z_Data[j];
pUS2->US_THR = Z_Data[j]; //Z_Data[j];
while (((pUS1->US_CSR & 0x00000200) != 0x00000200)&&((pUS2->US_CSR & 0x00000200) != 0x00000200));
temp = pUS1->US_RHR;
//while ((pUS2->US_CSR & 0x00000200) != 0x00000200);
temp = pUS2->US_RHR;
}
pUS1->US_IER = 0x00000001;
pUS2->US_IER = 0x00000001;
}
void Abus_dataframe(void)
{
AT91S_USART *pUS1;
int j,temp;
pUS1 = AT91C_BASE_US1;
pUS1->US_CR = 0x00001000;
pUS1->US_IDR = 0x00000001;
for (j=0;j<68;j++)
{
pUS1->US_THR = IM_Data[j]; //Z_Data[j];
while ((pUS1->US_CSR & 0x00000200) != 0x00000200);
temp = pUS1->US_RHR;
}
pUS1->US_IER = 0x00000001;
}
void Bbus_dataframe(void)
{
AT91S_USART *pUS2;
int j,temp;
pUS2 = AT91C_BASE_US2;
pUS2->US_CR = 0x00001000;
pUS2->US_IDR = 0x00000001;
for (j=0;j<68;j++)
{
pUS2->US_THR = IM_Data[j]; //Z_Data[j];
while ((pUS2->US_CSR & 0x00000200) != 0x00000200);
temp = pUS2->US_RHR;
}
pUS2->US_IER = 0x00000001;
}
void ABbus_dataframe(void)
{
AT91S_USART *pUS1;
AT91S_USART *pUS2;
int j,temp;
pUS1 = AT91C_BASE_US1;
pUS2 = AT91C_BASE_US2;
pUS1->US_CR = 0x00001000;
pUS1->US_IDR = 0x00000001;
pUS2->US_CR = 0x00001000;
pUS2->US_IDR = 0x00000001;
for (j=0;j<68;j++)
{
pUS1->US_THR = IM_Data[j]; //Z_Data[j];
pUS2->US_THR = IM_Data[j]; //Z_Data[j];
while (((pUS1->US_CSR & 0x00000200) != 0x00000200)&&((pUS2->US_CSR & 0x00000200) != 0x00000200));
temp = pUS1->US_RHR;
//while ((pUS2->US_CSR & 0x00000200) != 0x00000200);
temp = pUS2->US_RHR;
}
pUS1->US_IER = 0x00000001;
}
unsigned char ASCiitoHEX(unsigned char str1)
{
if ((str1>=0x30)&&(str1<=0x39))
{
return(str1-0x30);
}
if ((str1>=0x41)&&(str1<=0x46))
{
return(str1-0x37);
}
return 1;
}
unsigned char HEXtoASCii(unsigned char str1)
{
if (str1<=0x09) //if ((str1>=0x00)&&(str1<=0x09))
{
return(str1+0x30);
}
if ((str1>=0x0A)&&(str1<=0x0F))
{
return(str1+0x37);
}
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -