📄 mainback.c
字号:
write_24c64(alarm_enable_adr+i ,0x00);
write_24c64( number_adr ,0x00);
write_24c64(net_adr ,0x00);
// write_24c64(first_bit_adr ,0x01);
}
void write_array(uchar array0[], uint write_adr,uchar n)///add,03-8-22
{
uchar i;
for(i=0;i<n;i++)
write_24c64(write_adr+i,array0[i]);
}
void init_TC35()
{
uchar i, error_cnt;
printat("AT+CREG=1\r\n","OK");
//printat("AT+CLIP=1\r\n","OK");
printat("AT\Q0\r\n","OK");
printat("ATE0\r\n","OK");//test
///delay(100);///mod,03-8-22
do //信息中心
{
WDT=1;
Clear_rcv_buff();
///rcv_point=0;///mod,03-8-22
///ES=0;RI=0;TI=1;///mod,03-8-22
printf("AT+CSCA=\"+86");
for(i=0;i<11;i++)
putunchar(start_message_hao[i]);
delay(50);
printf("\"\r\n");
delay(1);ES=1;
delay(100);
t50ms=0;t1s1=0;
do{i=rcv_serch("OK");}while(i>BUFF_LEN1 && t1s1<2);
if(i>BUFF_LEN1) error_cnt++;
}while(i>BUFF_LEN1 && error_cnt<2);
delay(200);
i=printat("AT+CMGF=1\r\n","OK");
delay(200);
printat("AT+CMGD=1\r\n","OK");
i=printat("AT+CNMI=2,1,0,0,1\r\n","OK");
}
uchar rcv_serch(uchar *serch)
{
uchar i,j,k,lenth;
lenth=strlen(serch);
for(i=0;i<=(BUFF_LEN1+2-lenth);i++)
{
k=0;
for(j=0;j<lenth;j++)
{
if(rcv_buff[i+j]==serch[j]) k=k+1;
}
if(k==lenth) return i;
}
i=BUFF_LEN1+2;
return i;
}
void Clear_rcv_buff()
{
uint i;
for(i=0;i<BUFF_LEN2+2;i++) rcv_buff[i]=0;
rcv_point=0;///add,03-8-22
}
void putunchar (uchar c)///mod,03-8-22,自定义printf///mod,03-9-9可能更可靠
{
TI = 0;
ES=0;///add,03-8-22,最后一次使用完需ES=1
SBUF = c;
while (!TI);
}
void printf(const char *fmt, ...)///add,03-8-22,自定义printf
{
char type_char;
va_list args;
va_start (args, fmt);
///////暂时关闭串口中断并置位TI位////////
ES=0; RI=0; TI=1;
while(*fmt)
{
if (*fmt != '%' || *++fmt == '%')
{
putunchar(*fmt++);
continue;
}
type_char = *fmt++;
if(type_char == 'c')
{
putunchar(va_arg (args, char));
}
}
va_end (args);
////恢复串口中断/////
// while (!TI);
///delay(1);///mod,03-8-22
///ES=1;///mod,03-8-22连用时,外部控制更保险
}
uchar printat(uchar *COMMAND,uchar *RESULT)
{
uchar i,j;
j=0;
do
{ WDT=1;
Clear_rcv_buff();
///rcv_point=0;///mod,03-8-22
///ES=0;RI=0;TI=1;///mod,03-8-22,自定义printf
printf(COMMAND);
delay(1);ES=1;///mod,03-8-22,自定义printf
delay(100);///mod,03-8-22
t50ms=0;t1s1=0;
do{ WDT=1;i=rcv_serch(RESULT);}while(i>BUFF_LEN1 && t1s1<5);///mod,11-1,2d
if(i>BUFF_LEN1) {j++;}///mod,11-1,2d,start_TC35(),mod,03-8-22
}while(i>BUFF_LEN1 && j<5);
delay(100);///add,03-8-22
return i;
}
void T0_int() interrupt 1 using 2
{ TR0=0;
TH0=TH0+0x4c;//TL0=0xe0; // T0=5ms
t50ms++;
t50ms1++;
if(t50ms>=20)
{
t50ms=0;
t1s1++;
t1s2++;
t1s3++;
t1s4++;
}
if(t1s2>=50)
{
t1m1++;
t1m2++;
t1s2=0;
}
if(t1m2>=60)
{
t1m2=0;
t1h1++;
}
TR0=1;
}
void UART() interrupt 4 using 1
{
uint data i;
if(TI) TI=0;
if(RI)
{
RI=0;
if(SBUF>0x09 && SBUF<0x80)
{
//AUXR=0;///add,4-4
if(rcv_point < BUFF_LEN2 + 2)
{
rcv_buff[rcv_point]=SBUF;
rcv_point++;
}
else
{
for(i=0;i<(BUFF_LEN2+1);i++) rcv_buff[i]=rcv_buff[i+1];
rcv_buff[BUFF_LEN2+1]=SBUF;
}
if(rcv_buff[rcv_point-1]=='I'&&rcv_point>3)
{
if(rcv_buff[rcv_point-2]=='T'&& rcv_buff[rcv_point-3]=='M' && rcv_buff[rcv_point-4]=='C')
message_bit =1;///add,03-8-22来短信标志
}
if(rcv_buff[rcv_point-1]=='#'&&rcv_point>2)
{
if(rcv_buff[rcv_point-2]=='#'&& rcv_buff[rcv_point-3]=='#')
data_bit=1;
}
}
//if(AUXR_flag)AUXR=0x02;///add,4-4;
}
}
uchar read_port(uchar adr)
{
uchar temp;
P2=0xf8|adr;
_nop_();
_nop_();
temp=P0;
return temp;
}
void write_port(uchar adr,uchar dat )
{
P2=0xf8|adr;
_nop_();
P0=dat;
WR=0;
_nop_();
_nop_();
WR=1;
_nop_();
_nop_();
}
void write_mb1(uint dat)
{
uchar i;
uint temp;
LE=0;
for(i=0;i<16;i++)
{
temp=0x8000&dat;
CK=0;
delay(2);
if(temp==0)
DA=0;
else DA=1;
delay(2);
CK=1;
dat=dat<<1;
}
CK=0;
delay(2);
LE=1;
delay(4);
LE=0;
}
void write_mb2(uint dat,uchar dat2)
{
uchar i,temp1;
uint temp;
LE=0;
for(i=0;i<3;i++)
{
temp1=0x04&dat2;
CK=0;
delay(2);
if(temp1==0)
DA=0;
else DA=1;
delay(2);
CK=1;
dat2=dat2<<1;
}
for(i=0;i<16;i++)
{
temp=0x8000&dat;
CK=0;
delay(2);
if(temp==0)
DA=0;
else DA=1;
delay(2);
CK=1;
dat=dat<<1;
}
CK=0;
delay(2);
LE=1;
delay(4);
LE=0;
}
//test
/*void write_mb3(uint dat)
{
uchar i;
uint temp;
LE2=0;
for(i=0;i<16;i++)
{
temp=0x8000&dat;
CK=0;
delay(2);
if(temp==0)
DA=0;
else DA=1;
delay(2);
CK=1;
dat=dat<<1;
}
CK=0;
delay(2);
LE2=1;
delay(2);
LE2=0;
}
void write_mb4(uint dat,uchar dat2)
{
uchar i,temp1;
uint temp;
LE2=0;
for(i=0;i<3;i++)
{
temp1=0x04&dat2;
CK=0;
delay(2);
if(temp1==0)
DA=0;
else DA=1;
delay(2);
CK=1;
dat2=dat2<<1;
}
for(i=0;i<16;i++)
{
temp=0x8000&dat;
CK=0;
delay(2);
if(temp==0)
DA=0;
else DA=1;
delay(2);
CK=1;
dat=dat<<1;
}
CK=0;
delay(2);
LE2=1;
delay(2);
LE2=0;
}
//test */
uchar tlc540(uchar adr)
{
uchar temp,temp1,i;
CS=0;
CLK=0;
DAT=1;
delay50us();
for(i=0;i<4;i++)
{
temp1=temp1<<1;
temp=0x08&adr;
if(temp==0)
ADR=0;
else ADR=1;
adr=adr<<1;
delay50us();
CLK=1;
delay50us();
CLK=0;
delay50us();
if(DAT==1)
temp1++;
}
for(i=0;i<4;i++)
{
temp1=temp1<<1;
CLK=1;
delay50us();
CLK=0;
delay50us();
if(DAT==1)
temp1++;
}
CS=1;
return temp1;
}
void delay50us()
{
uchar i=50;
while(i--)
{};
}
void send_alarm()
{
uchar i,temp;
uint crc_value;
alarm_back1=alarm1;
alarm_back2=alarm2;
alarm_back3=alarm3;
decode_buff[0]=0x02;
decode_buff[1]=0x01;
decode_buff[2]=0x01;
decode_buff[3]=read_24c64(type_adr);
decode_buff[4]=0x10;
for(i=0;i<5;i++)
decode_buff[5+i]=read_24c64(device_adr+i);
decode_buff[10]=0x00;
decode_buff[11]=0x03;
decode_buff[12]=alarm1;
decode_buff[13]=alarm2;
decode_buff[14]=alarm3;
crc_value=cal_crc(decode_buff, 15);
decode_buff[15]= (uchar)crc_value;
crc_value=crc_value>>8;
decode_buff[16]=crc_value;
data_one_two(decode_buff ,code_buff , 12+5);
code_buff[24+10]=0;
temp=read_24c64(com_mode_adr);
if(temp==0x01)
{
printf("AT+CMGS=\"+86");
for(i=0;i<11;i++)
putunchar(read_24c64(alarm_hao_adr+i));
delay(50);
printf("\"\r\n");
delay(500);
putunchar('X');
printf(code_buff);
putunchar('X');
delay(500);
printf("\x1A");
delay(100);ES=1;///mod,9-30
delay(2000);
delay(2000);
delay(2000);///add,12-20上传余额
t50ms=0;t1s1=0;
do{delay(100);i=rcv_serch("CMGS:");}while(i>BUFF_LEN1 && t1s1<5);
// ES=1;
rcv_point=0;
}
if(temp==0x02)
{
printf("###") ;
putunchar('X');
printf(code_buff);
putunchar('X');
ES=1;
rcv_point=0;
}
success_bit=0;
t1m1=0;
}
void start_init()
{
uchar i,temp,temp1,temp3,temp4;
temp3=read_24c64(number_adr);
temp3++;
write_24c64(number_adr,temp3);
temp=read_24c64(pa_on_adr);
temp=temp&0xe0;
temp1=read_24c64(upa_weaken_adr);
temp1=temp1&0x1F;
write_port(0,temp|temp1);
temp=read_24c64(dpa_weaken_adr);
temp=~temp;
write_port(1,temp&0x1F );
//if(temp3>125)
// {write_24c64(device_adr,0xee);
// write_24c64(alarm_hao_adr,0x32);}//test
for(i=0;i<4;i++)
{
temp=read_24c64(alc_adr+i);
X9241(temp,i);
}
temp=read_24c64(device_use_adr);
if(temp==1)
device_use_bit=1;
else device_use_bit=0;
alarm_enable1=read_24c64(alarm_enable_adr);
alarm_enable2=read_24c64(alarm_enable_adr+1);
alarm_enable3=read_24c64(alarm_enable_adr+2);
temp4=read_24c64(net_adr);
// if(temp==1) cnet_bit=1;
//if(temp==0) cnet_bit=0;
if(temp4==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(temp4==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(300);
}
}
else if(temp4==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;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -