📄 mainback.c
字号:
#include <stdarg.h>///add,03-8-22,自定义printf
#include <string.h>
#include<intrins.h>
#include "main.h"
unsigned char xdata rcv_buff[360];
#define TC35_IGT P17
#define BUFF_LEN1 98
#define BUFF_LEN2 358
unsigned char idata decode_buff[60];
unsigned char xdata code_buff[100];
uchar t50ms,t50ms1, t1s1,t1s2,t1m1,t1m2,t1h1,t1s3,t1s4,times;
uchar rcv_point;
bit success_bit,message_bit,data_bit,device_use_bit,cnet_bit;
bit setting_pa_bit=0,setting_weaken_bit=0,setting_freq_bit=0,setting_alc_bit=0;
bit first_bit,send_bit;
uchar error,alarm_enable1,alarm_enable2,alarm_enable3;
uchar upa_pow,dpa_pow,upa_tem,dpa_tem,alarm1,alarm2,alarm3 ;
//uchar bdata alarm3,alarm_enable3;
//sbit alarm3_6=alarm3^6;
//sbit alarm3_7=alarm3^7;
//sbit alarm_enable3_6=alarm_enable3^6;
//sbit alarm_enable3_7=alarm_enable3^7;
uchar alarm_back1,alarm_back2,alarm_back3;
void UART();
void T0_int();
void resetTC35();
void init_CPU();
//void start_TC35();
void init_TC35();
//void delay(uint dat);
void Clear_rcv_buff();
uchar rcv_serch(uchar *serch);
uchar printat(uchar *COMMAND,uchar *RESULT);
void rest_24c64_data(void);
void receive_message();
//void delay_70us(void);
void putunchar (char c);
void printf(const char *fmt, ...);
void write_array(uchar array0[], uint write_adr,uchar n);
void search_net ();
void treatment(uchar temp);
uint cal_crc(uchar *ptr, uchar len);
void data_one_two(uchar *source_adr ,uchar *destination_adr, uchar Len);
uchar data_two_one(uchar Hight,uchar Low);
void send_data();
uchar read_port(uchar adr);
void write_port(uchar adr,uchar dat );
void write_mb1(uint dat);
void write_mb2(uint dat, uchar dat2);
void write_mb3(uint dat);
void write_mb4(uint dat, uchar dat2);
void receive_data();
void delay50us();
uchar tlc540(uchar adr);
void send_alarm();
void start_init();
uchar temp1;
void main()
{
uchar i , temp, temp3;
unsigned long temp2;
//unsigned char code *pr;
// start: resetTC35();
// resetTC35();
// pr=(char *) 0x14;
// *pr=3;
init_CPU();
WDT=1;
i=read_24c64(reset_24c64_adr);
if(i!=start_flag[0]) rest_24c64_data();
temp3=read_24c64(com_mode_adr);
if(temp3==1) search_net();
temp3=read_24c64(com_mode_adr);
if(temp3==1) init_TC35();
start_init() ;
ES=1;
message_bit=0;
data_bit=0;
setting_pa_bit=0;
setting_weaken_bit=0;
setting_alc_bit=0;
setting_alc_bit=0;
setting_freq_bit=0;
success_bit=1;
times=3;
first_bit=1;
alarm_back1=0;
alarm_back2=0;
alarm_back3=0;
Clear_rcv_buff();
while(1)
{
/*while(1)//test
{
delay(100);
//t1s1=0;
WDT=1;
delay(200);
P14=0;
P12=1;
P11=0;
P10=0;
//P1=4;
//LE=0;
//while(t1s1<5){WDT=1;};
//WDT=1;
//delay(200);
//WDT=1;
//delay(200);
//WDT=1;
//delay(100);
//WDT=1;
//delay(200);
//delay(100);
//WDT=1;
//delay(200);
//temp=read_24c64(freq_adr+4);
//write_mb1(0x8401);
//write_mb2(0xea14,0x01);
//write_mb1(0x8081); g
//write_mb2(0x5046,0x5); g
//while(t1s1<=2){}
//write_mb1(0x8a01);// cd
//write_mb2(0xc034,0x5); //cd
write_mb1(0x8401);// yd
write_mb2(0xea66,0x1); //yd
putunchar(0x31);
//P1=5;
WDT=1;
delay(100);
delay(100);
// P12=1;
//P11=0;
// P10=1;
//temp=read_24c64(freq_adr+5);
// if(temp==0xff) continue;
// P1=i ;
//write_mb1(0x8401);
//write_mb2(0xea66,1);
//write_mb1(0x8a01); //cd
//write_mb2(0xbe3e,0x5); //cd
//write_mb3(0x8401); //yd
//write_mb4(0xea14,0x1); //yd
//P14=1;
while(1){
WDT=1;
};
//t1s1=0;
} //test*/
/* while(1)//test
{
WDT=1;
putunchar(0x31);
delay(100);
delay(100);
WDT=1;
P10=0;
P11=0;
P12=4;
P14=0;
LE=0;
delay(3000);
LE=1;
delay(3000);
//t1s1=0;
} //test */
WDT=1;
if(data_bit)
receive_data();
if(message_bit)
receive_message();
if(setting_pa_bit);
{
temp=read_24c64(pa_on_adr);
temp=temp&0xe0;
temp1=read_24c64(upa_weaken_adr);
temp1=temp1&0x1F;
write_port(0,temp|temp1);
setting_pa_bit=0;
}
if(setting_weaken_bit)
{
temp =read_24c64(pa_on_adr);
temp =temp&0xe0;
temp1 =read_24c64(upa_weaken_adr);
write_port(0,temp|temp1);
temp=read_24c64(dpa_weaken_adr);
temp=~temp;
write_port(1,temp&0x1F);
setting_weaken_bit=0;
}
if(setting_alc_bit)
{
for(i=0;i<4;i++)
{
temp=read_24c64(alc_adr+i);
X9241(temp,i);
}
setting_alc_bit=0;
}
if(setting_freq_bit)
{
temp1=read_24c64(net_adr);
if(temp1==1)
{
for(i=0;i<4;i++)
{
WDT=1;
temp=read_24c64(freq_adr+i);
if(temp==0xff) continue;
P1=i ;
delay(100);
write_mb1(CR);
write_mb2(CUmb1502[temp-1],CUHEAD);
delay(100);
}
for(i=4;i<8;i++)
{
WDT=1;
temp=read_24c64(freq_adr+i);
if(temp==0xff) continue;
P1=i ;
delay(100);
write_mb1(CR);
write_mb2(CDmb1502[temp-1],CDHEAD);
delay(100);
}
}
else if(temp1==0)
{
for(i=0;i<8;i++)
{
WDT=1;
temp=read_24c64(freq_adr+i);
if(temp==0xff) continue;
P1=i ;
write_mb1(GR);
write_mb2(Gmb1502[temp],GHEAD);
delay(100);
}
}
else if(temp1==2)
{
for(i=0;i<4;i++)
{
WDT=1;
temp=read_24c64(freq_adr+i);
if(temp==0xff) continue;
P1=i ;
delay(100);
write_mb1(YR);
write_mb2(YUmb1502[temp-1],YHEAD);
delay(100);
}
for(i=4;i<8;i++)
{
WDT=1;
temp=read_24c64(freq_adr+i);
if(temp==0xff) continue;
P1=i ;
delay(100);
write_mb1(YR);
write_mb2(YDmb1502[temp-1],YHEAD);
delay(100);
}
}
P14=1;
setting_freq_bit=0;
}
if(t1s4>=1)
{
temp=read_24c64(upa_max_adr);
upa_pow= tlc540(1);
temp2=temp*upa_pow;
//upa_pow=1;//test
upa_pow=temp2/0xff;
delay(1);
upa_tem=tlc540(2);
//upa_tem=3;
temp2=85*upa_tem;
upa_tem=temp2/0xff;
delay(1);
//dpa_pow=4;
WDT=1;
dpa_pow =tlc540(3);
temp=read_24c64(dpa_max_adr);
temp2=dpa_pow*temp;
dpa_pow =temp2/0xff;
delay(1);
// dpa_tem=5;
dpa_tem=tlc540(0);
temp2=85*dpa_tem;
dpa_tem=temp2/0xff;
t1s4=0;
}
if(t50ms1>10)
{
t50ms1 =0;
alarm1=read_port(4);
alarm1=alarm_enable1&alarm1;
alarm2=read_port(2);
alarm2=alarm_enable2&alarm2;
alarm3=read_port(3);
temp=0x02&alarm_enable3;
temp=temp>>1;
alarm_enable3=temp|alarm_enable3;
//alarm_enable3_7=alarm_enable3_6;
alarm3=alarm_enable3&alarm3;
temp=0x01&alarm3;
temp=temp<<1;
alarm3=temp|alarm3;
// alarm3_6=alarm3_6|alarm3_7;
}
/*if(first_bit)
{
first_bit=0;
alarm_back1=alarm1;
alarm_back2=alarm2;
alarm_back3=alarm3;
if((alarm1!=0)||(alarm2!=0)||(alarm3!=0))
{
delay(10);
alarm1=read_port(4);
alarm1=alarm_enable1&alarm1;
alarm2=read_port(2);
alarm2=alarm_enable2&alarm2;
alarm3=read_port(3);
alarm3=alarm_enable3&alarm3;
if((alarm1!=0)||(alarm2!=0)||(alarm3!=0))
send_alarm();
// alarm_back1=alarm1;
// alarm_back2=alarm2;
// alarm_back3=alarm3;
}
}*/
if((alarm_back1!=alarm1)||(alarm_back2!=alarm2)||(alarm_back3!=alarm3))
{
delay(10);
alarm1=read_port(4);
alarm1=alarm_enable1&alarm1;
alarm2=read_port(2);
alarm2=alarm_enable2&alarm2;
alarm3=read_port(3);
temp=0x02&alarm_enable3;
temp=temp>>1;
alarm_enable3=temp|alarm_enable3;
//alarm_enable3_7=alarm_enable3_6;
alarm3=alarm_enable3&alarm3;
temp=0x01&alarm3;
temp=temp<<1;
alarm3=temp|alarm3;
if((alarm_back1!=alarm1)||(alarm_back2!=alarm2)||(alarm_back3!=alarm3))
{
send_alarm();
times=3;
}
}
if(!success_bit)
{
if((t1m1>=3)&&(times!=0))
// if((t1s1>=30)&&(times!=0))
{
//t1s1=0;
send_alarm();
// t1m1=0;
times--;
t1h1=0;
}
if(t1h1>=2)
times=3;
}
/* if(t1s3>60)//注册网络///
{
j=0;
do
{
WDT=1;
if(message_bit)
receive_message();
//if(data_bit)
//receive_data();
printf("AT+CREG?\r\n");//不要封装,否则影响计时
delay(1);ES=1;
t1s1=0;
do
{
delay(50);
i=rcv_serch(",1");
}while(i>BUFF_LEN1 && t1s1<2);///mod,11-1,2d
if(i<BUFF_LEN1) break;
j++;
if(j>60)///mod,4-10,自复位
{
goto start;
}
}while(1);
t1s3=0;
} */
}
}
void receive_data()
{
uchar i,temp;
uint crc_value;
delay(1000);
t50ms=0;t1s1=0;
do{delay(50);i=rcv_serch("X02");}while(i>BUFF_LEN1 && t1s1<2);///mod,03-8-22
ES=0;///add,3-28,以防充乱缓冲区
if(i>BUFF_LEN1)
{
Clear_rcv_buff();
data_bit=0;
ES=1;
return;
}
if((rcv_buff[i+3]=='*')&&(rcv_buff[i+4]=='*')&&(rcv_buff[i+5]=='*'))
{
temp= data_two_one(rcv_buff[i+6],rcv_buff[i+7]) ;
write_24c64(type_adr,temp);//选择设备类型
putunchar(rcv_buff[i+6]);
putunchar(rcv_buff[i+7]);
printf("OK");
Clear_rcv_buff();
data_bit=0;
ES=1;
return;
}
if((rcv_buff[i+3]=='#')&&(rcv_buff[i+4]=='#')&&(rcv_buff[i+5]=='#'))
{
temp= data_two_one(rcv_buff[i+6],rcv_buff[i+7]) ;
write_24c64(net_adr,temp); //选择网络01为C网 00为G网//02移频
putunchar(rcv_buff[i+6]);
putunchar(rcv_buff[i+7]);
printf("OK");
Clear_rcv_buff();
data_bit=0;
ES=1;
return;
}
if((rcv_buff[i+3]=='8')&&(rcv_buff[i+4]=='8')&&(rcv_buff[i+5]=='8'))
{
temp= data_two_one(rcv_buff[i+6],rcv_buff[i+7]) ;
device_use_bit=(bit)temp;
write_24c64(device_use_adr,temp); //选择设备是否已经使用0X00未使用
putunchar(rcv_buff[i+6]);
putunchar(rcv_buff[i+7]);
printf("OK");
Clear_rcv_buff();
data_bit=0;
ES=1;
return;
}
if((rcv_buff[i+3]=='7')&&(rcv_buff[i+4]=='7')&&(rcv_buff[i+5]=='7'))
{
temp= data_two_one(rcv_buff[i+6],rcv_buff[i+7]) ; //设置上行最大功率
write_24c64(upa_max_adr,temp);
putunchar(rcv_buff[i+6]);
putunchar(rcv_buff[i+7]);
printf("OK");
Clear_rcv_buff();
data_bit=0;
ES=1;
return;
}
if((rcv_buff[i+3]=='6')&&(rcv_buff[i+4]=='6')&&(rcv_buff[i+5]=='6'))
{
temp= data_two_one(rcv_buff[i+6],rcv_buff[i+7]) ; //设置下行最大功率
write_24c64(dpa_max_adr,temp);
putunchar(rcv_buff[i+6]);
putunchar(rcv_buff[i+7]);
printf("OK");
Clear_rcv_buff();
data_bit=0;
ES=1;
return;
}
if((rcv_buff[i+3]=='5')&&(rcv_buff[i+4]=='5')&&(rcv_buff[i+5]=='5'))
{
rest_24c64_data();
// putunchar(0x30+rcv_buff[i+6]);
// putunchar(0x30+rcv_buff[i+7]);
printf("OK");
Clear_rcv_buff();
data_bit=0;
ES=1;
return;
}
error= 0x00;
treatment(i+1);
if(send_bit)
{
if(error!=0)
{
decode_buff[11]= 0x00;
decode_buff[10]=error;
crc_value=cal_crc(decode_buff, 12);
decode_buff[12]= (uchar)crc_value;
crc_value=crc_value>>8;
decode_buff[12+1]=crc_value;
data_one_two(decode_buff ,code_buff , 12+2);
code_buff[24+4]=0;
send_data();
}
else send_data();
}
}
void receive_message()
{
uchar i ,temp;
uint crc_value;
//delay(200);
Clear_rcv_buff();
printf("AT+CMGR=1\r\n"); //读取no.1
delay(1);ES=1;
delay(4000);///mod,03-8-22,03-9-13,短信后期发送保险起见
t50ms=0;t1s1=0;
do{delay(50);i=rcv_serch("X02");}while(i>BUFF_LEN1 && t1s1<2);///mod,03-8-22
ES=0;///add,3-28,以防充乱缓冲区
if(i>BUFF_LEN1)
{
///rcv_point=0;///mod,03-8-22
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -