📄 tc39i.c
字号:
{
smk1=strrchr(stn1,0x2c);
smk1=smk1+1;
while(*smk1!=0x2a)
{
smk1++;
length1++;
}
smk2=strchr(stn2,0x2c);
smk2=smk2+1;
while(*smk2!=0x2c)
{
smk2++;
length2a++;
}
smk2=strrchr(stn2,0x2c);
smk2=smk2+1;
while(*smk2!=0x2a)
{
smk2++;
length2b++;
}
if(tip)
length=length1+length2a;
if(tip==0)
length=length1+length2b;
lengtha=length/2;
mat1=lengtha>>4;
mat2=lengtha&0x0f;
if((mat1>=0x00)&&(mat1<=0x09))
mat1=mat1+0x30;
else
mat1=mat1+0x37;
if((mat2>=0x00)&&(mat2<=0x09))
mat2=mat2+0x30;
else
mat2=mat2+0x37;
length=length+0x1e;
lengthb=length/2;
mat3=lengthb/10;
mat4=lengthb%10;
mat3=mat3+0x30;
mat4=mat4+0x30;
allow=0;
start=1;
capc=mete;
smk3=strchr(stn3,0x2c);
}
if(capc!=0)
{
if((operate==0x10&&again)||(start))
{
start=0;
dly=0;
again=0;
ds10=0;
for(n=0;n<=200000;n++);
WriteGsm("AT+CSCA=$");
send_string(message);
operate=0x11;
dly=1;
}
if((operate==0x11)&&(true1||again))
{
dly=0;
true1=0;
again=0;
ds10=0;
for(n=0;n<=200000;n++);
WriteGsm("AT+CMGF=0\r$");
operate=0x12;
dly=1;
}
if((operate==0x12)&&(true1||again))
{
dly=0;
true1=0;
again=0;
ds10=0;
for(n=0;n<=200000;n++);
WriteGsm("AT+CMGS=$");
SBUF0=mat3;
while(TI0==0);
TI0=0;
SBUF0=mat4;
while(TI0==0);
TI0=0;
SBUF0=0x0d;
while(TI0==0);
TI0=0;
for(n=0;n<=200000;n++);
WriteGsm("089168$");
smk1=strchr(stn1,0x2c);
smk1=smk1+19;
WriteGsm(smk1);
WriteGsm("11000D9168$");
smk3+=1;
WriteGsm(smk3);
WriteGsm("000800$");
SBUF0=mat1;
while(TI0==0);
TI0=0;
SBUF0=mat2;
while(TI0==0);
TI0=0;
smk1=strchr(stn1,0x2c);
smk1=smk1+32;
WriteGsm(smk1);
if(tip)
{
smk2=strchr(stn2,0x2c);
smk2=smk2+1;
}
if(tip==0)
{
smk2=strrchr(stn2,0x2c);
smk2=smk2+1;
}
WriteGsm(smk2);
SBUF0=0x1a;
while(TI0==0);
TI0=0;
dly=1;
smk3+=12;
operate=0x13;
dly=1;
}
if((operate==0x13)&&(true1))
{
dly=0;
true1=0;
ds10=0;
operate=0x00;
--capc;
if(capc==0)
fac=1;
start=1;
}
}
if((operate==0x14&&again)||(fac))
{
fac=0;
dly=0;
again=0;
ds10=0;
for(n=0;n<=200000;n++);
send_string("AT+CMGF=1\r/");
operate=0x15;
dly=1;
}
if((operate==0x15)&&(true1))
{
dly=0;
true1=0;
ds10=0;
operate=0x00;
spark=0x00;
state=1;
length1=0;
length2a=0;
length2b=0;
}
}
}
}
void SYSCLK_INIT(void)
{
uint i;
OSCXCN=0x67;
for(i=0;i<256;i++);
while(!(OSCXCN&0x80));
OSCICN=0x88;
}
void PORT_INIT(void)
{
XBR0=0x07;
XBR1=0x00;
XBR2=0x44;
P0MDOUT|=0x01;
P1MDOUT|=0x01;
P2MDOUT|= 0x10;
}
void UART0_INIT(void)
{
SCON0=0x50;
TMOD=0x20;
TH1=(int)TXVAL;
TL1=(int)TXVAL;
ES0=1;
TR1=1;
}
void UART1_INIT(void)
{
CKCON |= 0x40; // SYSCLK Clock Base
T4CON = 0x34; // 定时器4作为UART1串行时钟
SCON1 = 0x50; // SCON1: mode 1, 8-bit UART, enable RX
PCON |= 0x10; // SMOD1 = 1(禁止UART1的波特率/2功能)
RCAP4H = (65536-SYSCLK/BAUDRATE/32)/256; // set Timer reload value for baudrate
RCAP4L = (65536-SYSCLK/BAUDRATE/32)%256;
TH4 = RCAP4H;
TL4 = RCAP4L;
EIE2 &= ~0x04; // disable T4 interrupts
EIE2 |= 0x40; // enable UART1 interrupts
}
void Timer0_INIT(void)
{
TMOD|=0x01;
TH0=(65536-40000)/256;
TL0=(65536-40000)%256;
ET0=1;
TR0=1;
}
void WriteGsm(uchar *str)
{ uchar i=0;
while((str[i]!=0x2c)&&(str[i]!=0x24)&&(str[i]!=0x2a))
{
SBUF0=str[i];
while(TI0==0);
TI0=0;
i++;
}
}
void send_string(uchar *sta)
{
uchar i=0;
while(sta[i]!=0x2f)
{
SBUF0=sta[i];
while(TI0==0);
TI0=0;
i++;
}
}
void Answer_INIT(void)
{
answer[0]=0x23;
answer[1]=0x30;
answer[2]=0x30;
answer[3]=0x30;
answer[4]=0x30;
answer[5]=0x2c;
answer[6]=0x30;
answer[7]=0x30;
answer[8]=0x2c;
answer[9]=0x30;
answer[10]=0x30;
answer[11]=0x24;
answer[12]=0x2f;
}
void Time_INIT(void)
{
time[0]=0x30;
time[1]=0x30;
time[2]=0x3a;
time[3]=0x30;
time[4]=0x30;
time[5]=0x00;
}
void Timer0_ISR(void) interrupt 1 using 1
{
static uchar tg=0,ts=0;
TH0=(65536-40000)/256;
TL0=(65536-40000)%256;
ds++;
if(ds==50)
{
bzt=1;
ds=0;
}
if((bzt)&&(dly))
ds10++;
if((bzt)&&(sja))
sy++;
if(bzt)
{
bzt=0;
tg++;
}
if(tg==0x0a)
{
tg=0;
ts++;
}
if(ts==6)
{
ts=0;
time[4]++;
fen=1;
}
if(time[4]==0x3a)
{
time[4]=0x30;
time[3]++;
}
if(time[3]==0x36)
{
time[1]++;
time[3]=0x30;
}
if(time[1]==0x3a)
{
time[0]++;
time[1]=0x30;
}
if((time[0]==0x32)&&(time[1]==0x34))
{
time[0]=0x30;
time[1]=0x30;
}
if(fen)
{
td=strstr(stn4,time);
fen=0;
}
if(td!=NULL)
{
LED=0;
td=NULL;
digi=1;
}
if(sy>=10)
sjb=1;
if(ds10>15)
{
again=1;
operate=--operate;
}
}
void UART1_ISR(void) interrupt 20 using 3
{
static uchar cn=0,rebit=0x00;
uchar q;
rebit=SCON1&0x01;
if(rebit!=0x00)
{
rebit=0x00;
SCON1&=0xfe;
q=SBUF1;
if(q==0x29)
{
har=0;
dare[cn]=0x2f;
gdi=1;
cn=0;
}
if(har)
{
dare[cn]=q;
cn++;
}
if(q==0x28)
har=1;
}
SCON1&=0xfd;
}
void UART0_ISR(void) interrupt 4 using 2
{
static uchar last_uchar=0,dp=0,k=0;
uchar d;
if(RI0)
{
RI0=0;
d=SBUF0;
SBUF1=d;
if(d==0x2b)
tn=1;
if(tn)
{
receive[k]=d;
k++;
if(k==6)
{
fda1=strstr(receive,"+CMTI:");
if(fda1!=NULL)
tp=1;
fda1=NULL;
tn=0;
for(k=0;k<=9;k++)
receive[k]=0;
k=0;
}
}
if(tp)
{
dp++;
if(dp==8)
{
index=d;
dp=0;
tp=0;
evlt=1;
}
}
if((d==0x23)&&(rs2))
load=1;
if(load)
{
buffer[num]=d;
num++;
}
if((d==0x2a)&&(rs2))
{
readFlag=1;
load=0;
num--;
}
if((last_uchar=='O')&&(d=='K'))
{
true1=1;
}
last_uchar = d;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -