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

📄 nemain.c

📁 典型的NOKIA短信猫程序,控制NOKIA615061105110等序列手机收发短信.
💻 C
📖 第 1 页 / 共 4 页
字号:
    else
        CLSR_1=0;
    if(RXBUF1==0x0d)
        CLSR_1=1;
    if((RxTimeLong>179))
      { 
         CLSR_1=0;
         RxInputLong=0;
         RxTimeLong=0; 
      }
    if(CLSR_1==0X02)
      {
         RxInputLong=RxTimeLong;
         RxTimeLong=0x00;
         CLSR_1=0;
         g_flag|=RXOK;
      }
 }
 
void delay_2(void)//10ms
 {
    unsigned int i;
    for (i =12000; i > 0; i--);//2000
 }  

void ReadSmg(void)
 {
    uchar i,j=0,k=0;
    if(zwr==00)
      {
	 for(i=0;i<g_RecSmgLong;i++)
	    { 
		if(i>=160) 
		   break;
		smgbuf[i]=(((g_RecSmg[k]<<(j+1))>>1)&0x7f)|(g_RecSmg[k-1]>>(8-j));
		k++;
		j++;		
		if((j%8)==0)
		  {
			j=0;
			k--;
		  }
		
	    }
	 //****设置****
	 if(((smgbuf[0]==0x2a)&&(smgbuf[1]==0x2a))||((smgbuf[0]==0x23)&&(smgbuf[1]==0x23)))
	     g_flag|=SETINPUT;
         //****查询****
         if((smgbuf[0]==0x23)&&(smgbuf[1]==0x2a))
             g_flag|=QUSTION;
      }
    else
      {
          if(zwr==0x08)
            {
	        for(i=0;i<g_RecSmgLong;i++)
	          { 
		      if(i>=160) 
		          break;
		      smgbuf[i]=g_RecSmg[i];
	          }
	        //****设置****
	        if(((smgbuf[1]==0x2a)&&(smgbuf[3]==0x2a))||((smgbuf[1]==0x23)&&(smgbuf[3]==0x23)))
	            g_flag|=SETINPUT;////设置
	        //****查询****  	
	        if((smgbuf[1]==0x23)&&(smgbuf[3]==0x2a))
                    g_flag|=QUSTION;
            }
      }
    TXBUF1='R';
    while ((UTCTL1&0x01)==0);
    if(outnum[0]%2==0)
      {
          for(k=0;k<=outnum[0]/2;k++)
            {
                TXBUF1=outnum[k+1]-(outnum[k+1]/0x10)*0x10+0x30;
                while ((UTCTL1&0x01)==0);
                TXBUF1=(outnum[k+1]/0x10)+0x30;
                while ((UTCTL1&0x01)==0);
            }
      }
    else 
      {
          for(k=0;k<=(outnum[0]/2-1);k++)
            {
                TXBUF1=outnum[k+1]-(outnum[k+1]/0x10)*0x10+0x30;
                while ((UTCTL1&0x01)==0);
                TXBUF1=(outnum[k+1]/0x10)+0x30;
                while ((UTCTL1&0x01)==0);
            }
         TXBUF1=(outnum[outnum[0]/2+1]-0xf0)+0x30;
         while ((UTCTL1&0x01)==0);  
      }    
    if(zwr==0x08)
      {
          TXBUF1='C';
          while ((UTCTL1&0x01)==0);
      }
    else
      {
          if(zwr==0x00)
            {
                TXBUF1='E';
                while ((UTCTL1&0x01)==0);
            }    
      }
    TXBUF1='>';
    while ((UTCTL1&0x01)==0);
    for(i=0;i<g_RecSmgLong;i++)
       {
	   TXBUF1=smgbuf[i];
	   while((UTCTL1&0X01)==0);
       }
    TXBUF1=0x0d;
    while ((UTCTL1&0x01)==0);
    TXBUF1=0x0a;
    while ((UTCTL1&0x01)==0);
    if( g_flag_2 & DELSIMSMS )
        DelSmg(DelNo);
    else
        DelSmg(1);  
    DelSMS_Time = 200;
    g_flag_2 &= ~FIRSTDEL;
    g_flag_2 &= ~DELSIMSMS;      
    delay_2();
    P5OUT &= ~0x02;   
 }
  
void TestFlash(void)//写入号码
 {
    char *ptr;                 /* pointer to byte (8 bit)*/
    char ch;                   /* byte variable */
    IFG1=0;                    /* clear interrupt flag1 */
    DCOCTL=0X60; 
    FCTL2=0x0A542;             /* select MCLK/3 for flash timing */
    _DINT();                   /* disable all interrupts to protect CPU */
    FCTL1=FWKEY+ERASE;        /* during programming from system crash */
    FCTL3 =FWKEY; //0x0A500;           /* Lock = 0 写完一定要置1*/
    Flash_clr( (int *) FSEG_B );    
    FCTL1 =FWKEY+WRT;// 0x0A540;           /* WRT = 1 */
    ptr = (char *) FSEG_B;   
    for(ch=0;ch<=127;ch++)
        Flash_wb(ptr++,W_flash[ch]);
    FCTL1=FWKEY;
    FCTL3=FWKEY+LOCK;
    _EINT();      
 }
  
void Flash_wb( char *Data_ptr, char byte )
 {
    *Data_ptr=byte;           /* program Flash word */
 }

void Flash_clr( int *Data_ptr )
 {
    *Data_ptr=0;              /* erase Flash segment */
 }

void MbWriteSec(void)//目标号码设置及修改
 {
   
    uchar i,k;
    char *paw_m;
    k=0;
    paw_m=(char *) FSEG_B;   
    for(i=0;i<128;i++)
      {
         W_flash[i]=*paw_m;//read flash
         paw_m++;
      }   
    if(R232_or_SMS==0x88)
      {
          R232_or_SMS==0;
          for(i=0;i<(RxInputLong-4);i++)
             W_flash[i+4]=RXsmg[i+2]-0x30;
          TestFlash();
          set_ok_ok();
      }
    else
      {
          if(zwr==0x08)
            {
               for(i=0;i<(g_RecSmgLong-4)/2;i++)
                  {
                     W_flash[i+4]=smgbuf[k+5]-0x30;
                     k=k+2;
                  }
               TestFlash();
               Send_SetOk();
            }
          else 
            {
                if(zwr==0x00)    
                  {
                      for(i=0;i<g_RecSmgLong-2;i++)
                          W_flash[i+4]=smgbuf[i+2]-0x30;
                      TestFlash();
                      Send_SetOk();
                  }
            }
      }
 }
/*
void CWiteSec(void)//中文
 {
   
    uchar i,j;
    char *K_a;
    K_a=(char *) FSEG_A;  
    for(i=0;i<128;i++)
      {
           W_flash[i]=*K_a;//read flash
           K_a++;
      }    
    for(i=0;i<6;i++)
      {
          if(smgbuf[i*20+5]=='A') 
              break;
          for(j=0;j<20;j++)
              W_flash[(smgbuf[i*20+5]-0x31)*20+j] = smgbuf[i*20+4+j];
      }        
    TestFlash_1();
    Send_SetOk();
 }

void EriteSec(void)//englsih
 {
    uchar i,j;
    char *K_a;
    K_a=(char *) FSEG_A;   
    for(i=0;i<128;i++)
       {
            W_flash[i]=*K_a;//read flash
            K_a++;
       }   
    for(i=0;i<6;i++)
       {
          if(smgbuf[i*20+2]=='A')
              break;
          for(j=0;j<20;j++)
              W_flash[(smgbuf[i*20+2]-0x31)*20+j] = smgbuf[i*20+2+j];//4
       }        
    TestFlash_1();
    Send_SetOk();
 }
*/
void TestFlash_1(void)//写入中文
 {
    char *ptr;                 /* pointer to byte (8 bit)*/
    char ch;                   /* byte variable */
    IFG1=0;                    /* clear interrupt flag1 */
    FCTL2=0x0A50b;             /* select MCLK/3 for flash timing */
    _DINT();               
    FCTL1=FWKEY+ERASE;    /* disable all interrupts to protect CPU */
    FCTL3 = FWKEY;//0x0A500;           /* Lock = 0 */
    Flash_clr( (int *) FSEG_A );
    FCTL1 = FWKEY+WRT;//0x0A540;           /* WRT = 1 */
    _NOP();                    /* to get valid memory content the breakpoint */
                            /* must be set on following instruction !! */
    // === 六个中文段分别设置,先读出原来的数据 =======================================
    ptr = (char *) FSEG_A;   
    for(ch=0;ch<=127;ch++)
      Flash_wb(ptr++, W_flash[ch]);
    FCTL1=FWKEY;
    FCTL3=FWKEY+LOCK;
 
    _EINT(); 
 }
  
void EnableEnhance(void)////扩展命令允许	
 {
     uchar i;
     const uchar buf1[]= {0x1e,0x00, 0x0C, 0x40, 0x00,0x06,0x00,0x01,0x64,0x01,0x01};
     SendSync();
     for(i=0;i<sizeof(buf1);i++)
	g_Send.Buf[i]=buf1[i];
     Send6110Cmd(sizeof(buf1));			
 }
 
void Enable_R(void)////工程模式	
 {
     uchar i;//1E 00 0c  40 00 06 00 01 7E f3 01 43 
     const uchar buf1[]= {0x1e,0x00, 0x0C, 0x40, 0x00,0x06,0x00,0x01,0x7e,0xf3,0x01};
     SendSync();
     for(i=0;i<sizeof(buf1);i++)
	g_Send.Buf[i]=buf1[i];
     Send6110Cmd(sizeof(buf1));			
 }

void Rlacid(void)////读基站代码
 {
     uchar i;
     const uchar buf1[]= {0x1e,0x00, 0x0C, 0x40, 0x00,0x06,0x00,0x01,0x7e,0x0b,0x01};
     SendSync();
     for(i=0;i<sizeof(buf1);i++)
	g_Send.Buf[i]=buf1[i];
     Send6110Cmd(sizeof(buf1));			
 }
/* 
void MpWriteSec(void)//设置报警电话
 {
    uchar i,k;
    char *paw_m;
    k=0;
    paw_m=(char *) FSEG_B;   
    for(i=0;i<128;i++)
      {
          W_flash[i]=*paw_m;//read flash
          paw_m++;
      }
    if(zwr==0x08)
      {
          for(i=0;i<g_RecSmgLong;i++)
            {
                W_flash[i+80]=smgbuf[k+13];
                k=k+2;
            }
          W_flash[((g_RecSmgLong-12)/2)+80]=0x41;
          TestFlash();
          Send_SetOk();
      }
    if(zwr==0x00)    
      {
          for(i=0;i<g_RecSmgLong;i++)
              W_flash[i+80]=smgbuf[i+6];
          W_flash[g_RecSmgLong-6+80]=0x41;
          TestFlash();
          Send_SetOk();
      }
 }     
*/
interrupt[TIMERB0_VECTOR] void Timer0_232(void)
 {
    RxCls++;
    if(RxCls == 2)
      {
          RxCls=0;
          RxTimeLong=0;
      }
    
    DelSMS_Time++;
    if( (!(g_flag_2 & FIRSTDEL) && (DelSMS_Time >= 800)) || ((g_flag_2 & FIRSTDEL) && (DelSMS_Time >= 12000)) )
    {
        DelSMS_Time = 0;
        g_flag_2 |= QUERYSMS;
    }
    
    PhoneOff_Time++;
    if( PhoneOff_Time >= 1200 )
    {
        PhoneOff_Time = 0;
        g_flag_2 |= QUERYSTA;
    }
 }
/*
interrupt[PORT2_VECTOR] void PORT22_TS (void)//输入中断,6个
 {
      P2IFG=0x00;    
      if(g_flag&IOINPUT)
         return;
      pin_pin=P2IN;
      g_flag|=IOINPUT; 
 }
 
void IOinput(void)/////////////xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 {
      uchar TL;
      char *K_C;
      if((pin_pin&0X01)==0X01)//第一路p2.0
         { 
             K_C=(char*)0x1080;
             for(TL=0;TL<20;TL++)
                {
                    buf[TL]=*K_C;          
                    K_C++;
                }
             K_C=(char*)0x1080;
             if((*K_C)==0X00)
                C_or_E=0x10;//中文方式发
             else
                C_or_E=0x01;//英文方式发
             g_flag_2|=IOINPUTOK;
         }     
      else if((pin_pin&0X02)==0X02)
         {
             K_C=(char*)0x1094;
             for(TL=0;TL<20;TL++)
                {
                    buf[TL]=*K_C;          
                    K_C++;
                }
             K_C=(char*)0x1094;
             if((*K_C)==0X00)
                C_or_E=0x10;//中文方式发
             else
                C_or_E=0x01;//英文方式发
             g_flag_2|=IOINPUTOK;
         }     
      else if((pin_pin&0X04)==0X04)
         {
             K_C=(char*)0x10A8;
             for(TL=0;TL<20;TL++)
                {
                     buf[TL]=*K_C;          
                     K_C++;
                }
             K_C=(char*)0x10A8;
             if((*K_C)==0X00)
                 C_or_E=0x10;//中文方式发
             else
                 C_or_E=0x01;//英文方式发
             g_flag_2|=IOINPUTOK;
         }     
      else if ((pin_pin&0X08)==0X08)
         {
             K_C=(char*)0x10BC;
             for(TL=0;TL<20;TL++)                             
                {
                      buf[TL]=*K_C;          
                      K_C++;
                }
             K_C=(char*)0x10BC;
             if((*K_C)==0X00)
                 C_or_E=0x10;//中文方式发
             else
                 C_or_E=0x01;//英文方式

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -