📄 bidtu.i
字号:
{
PORTA.0 = 1;
delay_ms(100);
PORTA.0 = 0;
delay_ms(30);
}
if ((dtutype == 4) || (dtutype == 5) || (dtutype == 6))
{
PORTA.0 = 1;
PORTA.0 = 0;
delay_ms(150);
PORTA.0 = 1;
delay_ms(500);
}
delay_ms(1000);
}
void powerdowndtu(char dtutype)
{
if ((dtutype == 2) || (dtutype == 3))
{
PORTA.0 = 1;
delay_ms(100);
PORTA.0 = 0;
delay_ms(2000);
PORTA.0 = 1;
}
}
void sendAT(char atcom[])
{
char data;
int i;
i = 0;
while (atcom[i] != 0)
{
data = atcom[i];
putchar1(data);
i++;
}
}
void sendstr(char atcom[])
{
char data;
int i;
i = 0;
while (atcom[i] != 0)
{
data = atcom[i];
putchar0(data);
i++;
}
}
unsigned int str_hex(unsigned char *str,unsigned char *hex)
{
unsigned char ctmp, ctmp1,half;
unsigned int num=0;
do{
do{
half = 0;
ctmp = *str;
if(!ctmp) break;
str++;
}while((ctmp == 0x20)||(ctmp == 0x2c)||(ctmp == '\t'));
if(!ctmp) break;
if(ctmp>='a') ctmp = ctmp -'a' + 10;
else if(ctmp>='A') ctmp = ctmp -'A'+ 10;
else ctmp=ctmp-'0';
ctmp=ctmp<<4;
half = 1;
ctmp1 = *str;
if(!ctmp1) break;
str++;
if((ctmp1 == 0x20)||(ctmp1 == 0x2c)||(ctmp1 == '\t'))
{
ctmp = ctmp>>4;
ctmp1 = 0;
}
else if(ctmp1>='a') ctmp1 = ctmp1 - 'a' + 10;
else if(ctmp1>='A') ctmp1 = ctmp1 - 'A' + 10;
else ctmp1 = ctmp1 - '0';
ctmp += ctmp1;
*hex = ctmp;
hex++;
num++;
}while(1);
if(half)
{
ctmp = ctmp>>4;
*hex = ctmp;
num++;
}
return(num);
}
void setbandrate(unsigned char bandtype)
{
unsigned int UBRRVAL;
unsigned char BANDRATE[16];
BANDRATE[0] = 0;
UBRRVAL = 71;
switch (bandtype)
{
case 1: UBRRVAL = 287;
strcatf(BANDRATE, "AT+IPR=2400\r\n");
break;
case 2: UBRRVAL = 143;
strcatf(BANDRATE, "AT+IPR=4800\r\n");
break;
case 3: UBRRVAL = 71;
strcatf(BANDRATE, "AT+IPR=9600\r\n");
break;
case 4: UBRRVAL = 47;
strcatf(BANDRATE, "AT+IPR=14400\r\n");
break;
case 5: UBRRVAL = 35;
strcatf(BANDRATE, "AT+IPR=19200\r\n");
break;
case 6: UBRRVAL = 23;
strcatf(BANDRATE, "AT+IPR=28800\r\n");
break;
case 7: UBRRVAL = 17;
strcatf(BANDRATE, "AT+IPR=38400\r\n");
break;
case 8: UBRRVAL = 11;
strcatf(BANDRATE, "AT+IPR=57600\r\n");
break;
case 9: UBRRVAL = 5;
strcatf(BANDRATE, "AT+IPR=115200\r\n");
break;
}
sendAT(ate0);
delay_ms(100);
while (rx_counter1 > 0)
{
getchar1();
}
sendAT(BANDRATE);
delay_ms(100);
while (rx_counter1 > 0)
{
getchar1();
}
sendAT(ate1);
e_bandtype = bandtype;
UCSR0A=0x00;
UCSR0B=0x98;
(*(unsigned char *) 0x95)=0x06;
(*(unsigned char *) 0x90)=UBRRVAL >> 8;
UBRR0L=UBRRVAL & 0x00ff;
(*(unsigned char *) 0x9b)=0x00;
(*(unsigned char *) 0x9a)=0x98;
(*(unsigned char *) 0x9d)=0x06;
(*(unsigned char *) 0x98)=UBRRVAL >> 8;
(*(unsigned char *) 0x99)=UBRRVAL & 0x00ff;
delay_ms(1000);
}
void deal_with_command()
{
unsigned char rec_buff[40];
unsigned char i;
if (HEX == 0)
{
putsf(" \r \r");
printf("DTU>");
getstr(comd_buff,256);
if (comd_buff[0] == 0) return;
printf(" \r");
switch(comd_buff[0])
{
case 'h':
comd_buff[0]='\0' ;
if((comd_buff[1]=='l')&&(comd_buff[2]=='p')&&(comd_buff[3]==0))
{
putsf(" \r \r");
sendstr(dtuname);
putsf(" (");
sendstr(dtuver);
putsf(") Wireless MODEM Command Sets Introduction:\r");
putsf(" \r");
putsf("bdr=x Reset the MODEM bandrate\r");
putsf(" x=1:2400/2:4800/3:9600/4:14400/5:19200/6:28800/7:38400/8:57600/9:115200\r");
putsf("dtu Show dtu module name, and save it's type into mcu eeprom\r");
putsf("eon Open the ECHO mode\r");
putsf("eof Close the ECHO mode\r");
putsf("hlp Show this help menu\r");
putsf("mod Show hardware module name\r");
putsf("trs Enter data bridge mode\r");
putsf("tst User defined command\r");
putsf("rst Reset MCU(not DTU)\r");
putsf("ver Show firmware version\r");
}
else
{
putsf(" \r");
putsf("Command Error!,please input again. input \'hlp\' for command details.\r");
}
break;
case 0x41:
comd_buff[0] = '\0';
if ((comd_buff[1]==0x56)&&(comd_buff[2]==0x52)&&(comd_buff[3]==0x55)&&(comd_buff[4]==0x42))
{
#pragma optsize-
WDTCR=0x18;
WDTCR=0x08;
while (1);
}
case 'b':
comd_buff[0] = '\0';
if((comd_buff[1]=='d')&&(comd_buff[2]=='r')&&(comd_buff[3]=='=')&&(comd_buff[5]==0))
{
putsf(" \r");
putsf("OK! \r");
putsf("Then please set the right bandrate of your computer!\r");
setbandrate(comd_buff[4] - 0x30);
}
else
{
putsf(" \r");
putsf("Command Error!,please input again. input \'hlp\' for command details.\r");
}
break;
case 'v':
comd_buff[0] = '\0' ;
if((comd_buff[1]=='e')&&(comd_buff[2]=='r')&&(comd_buff[3]==0))
{
putsf(" \r");
sendstr(dtuver);
putsf(" \r");
}
else
{
putsf(" \r");
putsf("Command Error!,please input again. input \'hlp\' for command details.\r");
}
break;
case 'm':
comd_buff[0]='\0' ;
if((comd_buff[1]=='o')&&(comd_buff[2]=='d')&&(comd_buff[3]==0))
{
putsf(" \r");
sendstr(dtuname);
putsf(" \r");
}
else
{
putsf(" \r");
putsf("Command Error!,please input again. input \'hlp\' for command details.\r");
}
break;
case 'p':
comd_buff[0]='\0' ;
if((comd_buff[1]=='o')&&(comd_buff[2]=='n')&&(comd_buff[3]==0))
{
putsf(" \r");
dtutype = e_dtutype;
powerondtu(2);
putsf("DTU is powered on!");
putsf(" \r");
}
else
{
if((comd_buff[1]=='o')&&(comd_buff[2]=='d')&&(comd_buff[3]==0))
{
putsf(" \r");
dtutype = e_dtutype;
powerdowndtu(dtutype);
putsf("DTU is powered down!");
putsf(" \r");
}
else
{
putsf(" \r");
putsf("Command Error!,please input again. input \'hlp\' for command details.\r");
}
}
break;
case 'd':
comd_buff[0]='\0' ;
if((comd_buff[1]=='t')&&(comd_buff[2]=='u')&&(comd_buff[3]==0))
{
putsf(" \r");
sendAT(atgmm);
delay_ms(100);
i = 0;
while (rx_counter1 > 0)
{
rec_buff[i] = getchar1();
i ++;
}
dtutype = 0;
if (strstrf(rec_buff, "GTM900B") != 0) dtutype = 2;
if (strstrf(rec_buff, "GTM900A") != 0) dtutype = 3;
if (strstrf(rec_buff, "TC35") != 0) dtutype = 4;
if (strstrf(rec_buff, "MC35") != 0) dtutype = 5;
if (strstrf(rec_buff, "MC39") != 0) dtutype = 6;
if (strstrf(rec_buff, "Model 199") != 0) dtutype = 1;
if (dtutype == 1) sendstr(dtutype1);
if (dtutype == 2) sendstr(dtutype2);
if (dtutype == 3) sendstr(dtutype3);
if (dtutype == 4) sendstr(dtutype4);
if (dtutype == 5) sendstr(dtutype5);
if (dtutype == 6) sendstr(dtutype6);
if (dtutype == 0) sendstr(dtutype0);
e_dtutype = dtutype;
putsf(" \r");
}
else
{
putsf(" \r");
putsf("Command Error!,please input again. input \'hlp\' for command details.\r");
}
break;
case 't':
comd_buff[0]='\0' ;
if((comd_buff[1]=='r')&&(comd_buff[2]=='s')&&(comd_buff[3]==0))
{
if (authok == 1)
{
if (simok == 1)
{
putsf(" \r");
putsf("Enter data bridge mode......\r");
while (rx_counter1 > 0) getchar1();
transmode = 1;
}
else
{
putsf(" \r");
putsf("SIM Card verification failure!\r");
transmode = 0;
}
}
else
{
putsf(" \r");
putsf("Must be Authenticated!\r");
}
}
else
{
if((comd_buff[1]=='s')&&(comd_buff[2]=='t')&&(comd_buff[3]==0))
{
putsf(" \r");
if (PINC.1) putsf("DTU ON\r");
if (!PINC.1) putsf("DTU OFF\r");
}
else
{
putsf(" \r");
putsf("Command Error!,please input again. input \'hlp\' for command details.\r");
}
}
break;
case 'r':
comd_buff[0]='\0' ;
if((comd_buff[1]=='s')&&(comd_buff[2]=='t')&&(comd_buff[3]==0))
{
putsf(" \r");
putsf("Reseting......");
#pragma optsize-
WDTCR=0x18;
WDTCR=0x08;
while (1);
}
else
{
putsf(" \r");
putsf("Command Error!,please input again. input \'hlp\' for command details.\r");
}
break;
case 'e':
comd_buff[0]='\0' ;
if((comd_buff[1]=='o')&&(comd_buff[2]=='n')&&(comd_buff[3]==0))
{
ECHO = 1;
putsf("\r");
putsf("ECHO mode Open\r");
}
else
{
if((comd_buff[1]=='o')&&(comd_buff[2]=='f')&&(comd_buff[3]==0))
{
ECHO = 0;
putsf("\r");
putsf("ECHO mode Close\r");
}
else
{
putsf(" \r");
putsf("Command Error!,please input again. input \'hlp\' for command details.\r");
}
}
break;
default:
putsf(" \r");
putsf("Command Error!,please input again. input \'hlp\' for command details.\r");
break;
}
return;
}
}
void main(void)
{
unsigned char i, bandtype;
initmcu();
bandtype = blank[0];
dtutype = e_dtutype;
bandtype = e_bandtype;
powerondtu(dtutype);
#asm("sei")
setbandrate(bandtype);
putsf(" \r \r");
sendstr(dtuname);
putsf(" Wireless MODEM ");
sendstr(dtuver);
putsf(" \r");
putsf("Designed by Appcat. Copyleft(c) 2008 All rights Opened\r");
while (1)
{
while (transmode == 0) deal_with_command();
};
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -