⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tc39i.c

📁 单片机用的是c8051f020
💻 C
📖 第 1 页 / 共 2 页
字号:
         {
             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 + -