亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? debug.c

?? 51單片機收發短信的程序
?? C
?? 第 1 頁 / 共 3 頁
字號:
        if(ListBuf[ii]=='L')
 	      {
	        cmgl_state=1;
  	      list_index_begin=ii;
        }
	    }
      else if(cmgl_state==1)
	    {
		    if(ListBuf[ii]==LF)
		    {
		      delay();
	   	    list_index_end=strpos(ListBuf+list_index_begin,',');
	        list_index_end=list_index_begin+list_index_end;
		      memcpy(list_indexlist+listcmdindex,ListBuf+list_index_begin+2,list_index_end-list_index_begin-2);
          listcmdindex+=list_index_end-list_index_begin-1;
		      list_indexlist[listcmdindex-1]=0;
		      listcmd_count++;                               //短信條數
		      list_PDU_begin=ii+1;                           //pdu的起始地址即LF后一字節
		      if(ListBuf[list_index_end+1]=='0')             //判斷短信是否為已讀狀態
    		    cmgl_state=2;
		      else
			      cmgl_state=0;
		    }
		  }
        else if(cmgl_state==2)                                      //處理未讀的短信
	      {
		      if(ListBuf[ii]==LF)
	   	    {
		        list_PDU_end=ii-2;
		        memcpy(PDUBuf,ListBuf+list_PDU_begin,list_PDU_end-list_PDU_begin+1);
		        PDUBuf[list_PDU_end-list_PDU_begin+1]=0;
		        PDU2SMS(PDUBuf);
	      	  Data_processing();
	          cmgl_state=0;
            wait_5s();
          }
        }
	  }
	  //delete message
	  listcmdindex=0;
	  for(j=0;j<listcmd_count;j++)
	  {
	    strcpy(CMDBuf,"AT+CMGD=");
      strcpy(CMDBuf+strlen(CMDBuf),list_indexlist+listcmdindex);
	    listcmdindex+=strlen(list_indexlist+listcmdindex)+1;
	    CMDBuf[strlen(CMDBuf)]='\r';
	    CMDBuf[strlen(CMDBuf)]=0;
	    send_string(CMDBuf);
      wait_5s();
	  }
     // state variable reset
    listcmd_count=0;
    bListEnd=0;
    listchar_count=0;
    list_index_begin=0;
    list_index_end=0;
    listcmdindex=0;
    memset(ListBuf,0,sizeof(ListBuf));
    memset(PDUBuf,0,sizeof(PDUBuf));
    memset(list_indexlist,0,sizeof(list_indexlist));
  }
}
/////////////function: 把兩ascii字節合并成一char 例如"35"變為0x35;//////////////
uchar hex2int(uchar * str)
{
    uchar  highbyte;
    uchar    lowbyte;

    highbyte = toint(str[0]);   //asii to 0x00~0x09 OR 0x0a~0xf
    lowbyte  = toint(str[1]);
    return highbyte*16+lowbyte;
}
/////////function: 把char變為字符串 例如0x36 "36"/////////////////////////////
void int2hex(uchar  num,uchar *dest)
{
    uchar   highbyte;
    uchar   lowbyte;

    highbyte = num/16;
    lowbyte  = num-highbyte*16;
    if(highbyte>9)
      dest[0]=highbyte+ALPHABASE;
    else
      dest[0]=highbyte+NUMBASE;

    if(lowbyte>9)
      dest[1]=lowbyte+ALPHABASE;
    else
      dest[1]=lowbyte+NUMBASE;

    dest[2]=0;
}
///function: PDU 7位編碼程序,將源字符串數組str轉換為手機可以識別的dest字符串 SMS->PDU///
uchar PDU7BitEncode(char * str,char  *  dest)
{
  uchar  nSrc;  // 源字符串的計數值
  uchar  nChar; // 當前正在處理的組內字符字節的序號,范圍是0-7
  uchar  nLeft; // 上一字節殘余的數據
  uchar  nSrcLength = strlen(str);
  char   * pSrc = str;
  char   * pDst = dest;
  // 計數值初始化
  nSrc = 0;
  // 將源串每8個字節分為一組,壓縮成7個字節
  // 循環該處理過程,直至源串被處理完
  // 如果分組不到8字節,也能正確處理
  while(nSrc<=nSrcLength)
  {
    // 取源字符串的計數值的最低3位
    nChar = nSrc&7;
    // 處理源串的每個字節
    if(nChar == 0)
    {
      // 組內第一個字節,只是保存起來,待處理下一個字節時使用
      nLeft = *pSrc;
    }
    else
    {
      // 組內其它字節,將其右邊部分與殘余數據相加,得到一個目標編碼字節
      uchar  temp;
	    temp  = (*pSrc<<(8-nChar))|nLeft;
	    int2hex(temp,pDst);
      // 將該字節剩下的左邊部分,作為殘余數據保存起來
      nLeft = *pSrc >> nChar;
      // 修改目標串的指針和計數值
      pDst=pDst+2;
    }
    // 修改源串的指針和計數值
    pSrc++;
    nSrc++;
  }
  *pDst=0;
	return (pDst-dest)/2;
}
///////////////function: decode PDU to SMS//////////////////////////////////////
void PDU7BitDecode(char  * str,char  * dest)
{
  int  length=strlen(str)/2;
  uchar   remainder=0;
  uchar   j=0;
  uchar   i=0;
  uchar   tt=0;
  uchar   original;
  uchar   index;
  uchar   tmp;
  for(i=0;i<length;i++)
  {
    original=hex2int(str+2*i);

		index=i%7;
    tt=(i+1)%7;
		tmp=original;
		tmp=tmp<<index;
    if(tt==0)
    {
      dest[j]=(tmp&0x7f)+remainder;
      j++;
      dest[j]=(original>>1)&0x7f;
      remainder=0;
    }
    else
    {
      dest[j]=(tmp&0x7f)+remainder;
      remainder=original>>(8-index-1);
    }

    j=j+1;
	}
	dest[sms_deliver.PDUDataLen]=0;
}
//////////////function:發送AT+CMGS命令,然后發送數據信息///////////////////////
void send_response()
{
  uchar    tmp=0;
  uchar    lenoflen,quot;
  uchar    bitcodedlen       = 0;
  tmp=strlen(sms_deliver.PDUData);
  quot=tmp/8;
  bitcodedlen=quot*7+tmp%8;                 //the length of the PDUData after compact(7->8)
   ///發送前先檢驗網絡注冊情況
      send_string("AT+COPS=0\r");  //GSM network operator is to be selected automatically
      delay_1s();
      delay_1s();
      put_string(0x80,RcvBuf); //顯示出來返回的結果
      send_string("AT+COPS?\r");  //read the status to GSM network operator
      delay_160ms();
      put_string(0x80,RcvBuf); //顯示出來返回的結果
  strcpy(CMDBuf,"AT+CMGS=");                //AT+CMGS=<數據長度>命令
  lenoflen=itoa(bitcodedlen+PhoneNumLen+2,CMDBuf+8); //PhoneNumLen+2位手機號碼 8:"AT+CMGS="八個字符
  CMDBuf[8+lenoflen]=CR;
  CMDBuf[8+lenoflen+1]=0;
  send_string(CMDBuf);                      //send command
  delay();
  encode_message();
  delay_160ms();
  send_string(SendBuf);                     //send SMS
  delay_1s();
  delay();
}
////////////////////function:convert the PDU data to SMS////////////////////////
void PDU2SMS(char  * Buf)
{
  uchar   index=0;
  delay();
  sms_deliver.SMSCLen=hex2int(Buf);
  sms_deliver.AddressType[0]=Buf[2];
  sms_deliver.AddressType[1]=Buf[3];
  sms_deliver.AddressType[2]=0;
  PDUHalf8bitDecode(Buf+4,(sms_deliver.SMSCLen-1)*2,sms_deliver.ServiceCenter);
  sms_deliver.ServiceCenter[16]=0;
  index=4+(sms_deliver.SMSCLen-1)*2;
  sms_deliver.SMSDeliver1[0]=Buf[index];
  sms_deliver.SMSDeliver1[1]=Buf[index+1];
  sms_deliver.SMSDeliver1[2]=0;
  index=index+2;
  sms_deliver.PhoneNumLen=hex2int(Buf+index);
  sms_deliver.PhoneNumType[0]=Buf[index+2];
  sms_deliver.PhoneNumType[1]=Buf[index+3];
  sms_deliver.PhoneNumType[2]=0;
  memset(sms_deliver.PhoneNumber,'\0',strlen(sms_deliver.PhoneNumber));
  PDUHalf8bitDecode(Buf+index+4,sms_deliver.PhoneNumLen,sms_deliver.PhoneNumber);
  sms_deliver.PhoneNumber[sms_deliver.PhoneNumLen]=0;
  index=index+4+sms_deliver.PhoneNumLen+1;
  sms_deliver.ProtocolFlag[0]=Buf[index];
  sms_deliver.ProtocolFlag[1]=Buf[index+1];
  sms_deliver.ProtocolFlag[2]=0;
  sms_deliver.EncodeType[0]=Buf[index+2];
  sms_deliver.EncodeType[1]=Buf[index+3];
  sms_deliver.EncodeType[2]=0;
  PDUHalf8bitDecode(Buf+index+4,14,sms_deliver.TimePost);
  sms_deliver.TimePost[14]=0;
  sms_deliver.PDUDataLen=hex2int(Buf+index+18);
  if(strcmp(sms_deliver.EncodeType,"00")==0)
    PDU7BitDecode(Buf+index+20,sms_deliver.PDUData);
  if(sms_deliver.PhoneNumLen)
    PhoneNumLen=sms_deliver.PhoneNumLen;
  delay();
}
///////////////////function: decode phone///////////////////////////////////////
void PDUHalf8bitDecode(char  * str,uchar  len,char  * dest)
{
	char   i=0;
  for(i=0;i<len;i=i+2)
	{
	  dest[i]=str[i+1];
	  dest[i+1]=str[i];
	}
	if(dest[len-1]=='F')
	  dest[len-1]=0;

}
///function:process the new SMS,check if the center phone is changed////////////
void Data_processing()
{
  delay();
  if(sms_deliver.EncodeType[1]=='0')
  {
    if(strncmp(sms_deliver.PDUData,"ABC123",6)==0)
    //正確的數據格式:密碼(ABC123)+手記號碼(8613810736479)+校驗和
    {
      if(ascii_verify(sms_deliver.PDUData))
      {
        memset(center_phone,0,sizeof(center_phone));
        strncpy(center_phone,sms_deliver.PDUData+6,sms_deliver.PDUDataLen-8);
  //    sequential_write(0x8000,PhoneNumLen+1,center_phone);    //保存上位機號碼
                                                                //(同時要保存PhoneNumLen?)
      }
      memset(sms_deliver.PDUData,0,sizeof(sms_deliver.PDUData));
    }
  }
}
///////////////////////function:string verify///////////////////////////////////
char ascii_verify(uchar  * dest)
{
  char    i      = 0;
  uchar   result = 0;
  uchar   tmp[3];
  uchar   count  = strlen(dest)-2;
  for(;i<count;i++)
  {
    result+=dest[i];
  }
  tmp[0] = dest[count];
  tmp[1] = dest[count+1];
  tmp[2] = 0;
  if(result==hex2int(tmp))
    return 1;
  else
    return 0;     //////應該是return 0
}
//////////////function:編碼形成短信,送到SendBuf中//////////////////////////////
void encode_message()
{
  char   phone[15];
  memset(SendBuf, '\0', sizeof (SendBuf));
  memset(phone, '\0', sizeof (phone));
  encode_phone(phone);  //將center_phone編碼為phone
  strcpy(SendBuf,"0891683108100005F0");
  strcpy(SendBuf+strlen(SendBuf),"11000D91");
  strcpy(SendBuf+strlen(SendBuf),phone);
  strcpy(SendBuf+strlen(SendBuf),"0000A7");
  int2hex(strlen(sms_deliver.PDUData),SendBuf+strlen(SendBuf));
  PDU7BitEncode(sms_deliver.PDUData,SendBuf+strlen(SendBuf));
  SendBuf[strlen(SendBuf)+1]=0;
  SendBuf[strlen(SendBuf)]=0x1A;
}
///////////////function:對手機號碼編碼//////////////////////////////////////////
unsigned char encode_phone(char  *dest)
{
  uchar  i,j;
  j=0;
  for(i=0;i<PhoneNumLen+1;i++)
  {
    if(j==0)
    {
      dest[i]=center_phone[i+1];
      j=1;
    }
    else
    {
      dest[i]=center_phone[i-1];
      j=0;
    }
  }
  if(PhoneNumLen%2!=0)          ///如果上位機號碼位數是奇數個
    dest[PhoneNumLen-1]='F';
  dest[PhoneNumLen+1]=0;
  return PhoneNumLen+1;
}
/////////function://功能類似于int2hex,增加到三位,并且各位都在0~9之間////////
char itoa(char  num , char  *str)
{
    uchar     hundred=num/100;
    uchar     ten=(num-hundred*100)/10;
    uchar     base=(num-hundred*100-ten*10);
    uchar     index=0;

	if(hundred!=0)
	{
    	str[index]=hundred+NUMBASE;
		index=index+1;
	}
        if(ten!=0)
	    {
        	str[index]=ten+NUMBASE;
	    	index=index+1;
	    }

    str[index]=base+NUMBASE;
    str[index+1]=0;
    return index+1;
}
/////////////////////////function:delay 5s//////////////////////////////////////
void wait_5s()
{
    uint idata i;
    char idata  j;
    for(i=0;i<5000;i++)
    {
         delay();
         for(j=0;j<14;j++)
            _nop_();
           delay();
          if(bResponsed)  //如果收到短信,跳出延時程序
            break;
    }
    bResponsed=0;
}
///////////////////////////////////////////////////////////////////////////////////////
///////////////////SFR和各全局變量、開機界面等的初發始化///////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
void startup_init()
{
  char i;
  PMR = PMR | 0x01;  //W77E58允許使用片內的1K SRAM
//  AUXR=0x01;        //EXTRAM=0:訪問物理上在內部,邏輯上在外部的RAM;
                    //ALEOFF=1:禁止ALE輸出,以降低對外界的EMI干擾
//  WDT_CONTR=0x30;      //看門狗定時71.1ms,具體設置見PDF文檔(喂狗語句應為WDT_CONTR=0x30;)
  TH1=0xfd;
  TL1=0xfd;  //串口波特率設置9600
  TMOD=0x20;          //GATE1=0; GATE0=0,C/T=0,M1=1,M0=0, 定時器工作模式選擇
  IP=0x10;  // PS=0, 串口中斷為高優先級中斷
  SCON=0x50;       // 串口工作方式選擇,異步8位,mode=10 ren1
  PCON=0x00;       // 波特率不倍增
  TR1=1;  //啟動定時器
  IE=0x90;             //EA=1;ES=1;ET1=0;EX1=1;ET0=0;EX0=0;
  P1=0x0f;             //鍵盤八條線四高四低

  display_type=0;       //0:品種界面1:價格界面2:已存信息內容
  vege_page_index=0;              //蔬菜品種頁面索引為 0
  info_page_index=0;      //已存蔬菜信息頁面索引置初值0
  info_count=0;      //已存信息條數置初值0
  vege_type[0]='\0';      //蔬菜品種置初值'\0'
  vege_type[1]='\0';      //同上
  vege_type[2]='\0';
  for(i=0;i<=4;i++)
    vege_price[i]='\0';   //蔬菜價格置初值' '
  memset(ListBuf,0,sizeof(ListBuf));
  memset(PDUBuf,0,sizeof(PDUBuf));
  memset(RcvBuf, '\0', sizeof (RcvBuf));
  memset(SendBuf, '\0', sizeof (SendBuf));
  memset(&sms_deliver ,0,sizeof(sms_deliver));
  memset(CMDBuf,0,sizeof(CMDBuf));
  memset(sms_deliver.PDUData,0,sizeof(sms_deliver.PDUData));
  strcpy(center_phone,"8613752061177");
  init_LCD();           //初始化LCD;
  put_string(0x90,"  ");        //顯示定位,如果沒有這條語句,顯示經常不對
  put_string(0x90,"初始化...");  //開機顯示的字符串
}
////////////////////////////////////////////////////////////////////////////////////////
/////////////main()函數,做所有需要初始化的工作都在main()///////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
//全部的初始化工作
main()
{
  char   i ;
  startup_init();
  for(i=0;i<3;i++)  //初始化5次,再不成功就放棄
  {
    if(i>0)  delay_1s() ;
    if(init_GSM()==0) break ;      //初始化手機模塊成功就返回0,失敗返回1;
    write_cmd(0x98);  write_data(NUMBASE+i+1) ;//在第四行第一列顯示第i次手機模塊初始化
  }
  IE=0x94;             //EA=1;ES=1;ET1=0;EX1=1;ET0=0;EX0=0;打開鍵盤中斷
  if(0)   //上位機號已設置 if( (byte_read(0x8000)=='8')&&(byte_read(0x8001=='6') )
  {
    i=0;                        //把EEPROM中讀出的號保存到center_phone
    while(1)
    {
//      center_phone[i]= byte_read(0x8000+i);
      if(center_phone[i]=='\0')  break;
      i++;
    }
  }
  else
  {
    strcpy(center_phone,"8613141199264");
//    sequential_write(0x8000,14,center_phone);    //保存上位機號碼
  }
  receive_SMS();   //接收短信
  PhoneNumLen=13;  //號碼長度暫為13  需要改
  type_screen();      //液晶顯示
  while(1)
  {
//    receive_SMS();   //接收短信
    _nop_();
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区在线观看网站| 国产精品视频你懂的| av综合在线播放| 国产电影一区在线| 国产91精品精华液一区二区三区| 久久福利视频一区二区| 美日韩一级片在线观看| 久久99精品久久久久久国产越南| 日本sm残虐另类| 麻豆精品在线看| 国产精品自拍毛片| 成年人国产精品| 在线免费观看日本欧美| 精品视频在线免费看| 日韩亚洲欧美综合| 久久久久国产精品免费免费搜索| 国产欧美日韩精品一区| 18涩涩午夜精品.www| 一区二区三区四区国产精品| 午夜激情一区二区| 黑人巨大精品欧美黑白配亚洲| 国产999精品久久| 91久久国产最好的精华液| 91精品国产欧美一区二区| 久久女同性恋中文字幕| 成人欧美一区二区三区白人| 首页国产欧美日韩丝袜| 国产成人av电影在线| 色综合久久六月婷婷中文字幕| 欧美色手机在线观看| 日韩精品一区二区三区三区免费| 中文字幕免费不卡| 午夜精品福利一区二区三区av| 国产乱国产乱300精品| 91国产精品成人| 欧美成人福利视频| 亚洲欧美日韩成人高清在线一区| 石原莉奈在线亚洲三区| 成人午夜视频免费看| 欧美日韩1234| 综合久久国产九一剧情麻豆| 蜜桃视频一区二区三区| 91色|porny| 久久久精品人体av艺术| 五月激情综合婷婷| 99精品国产视频| 久久久国产精品麻豆| 日本不卡视频一二三区| 91视频xxxx| 国产欧美一区二区精品秋霞影院| 日日夜夜免费精品视频| 色天使色偷偷av一区二区| 久久婷婷综合激情| 免费国产亚洲视频| 欧美日韩一区二区欧美激情| 亚洲手机成人高清视频| 国产99久久久精品| 久久综合久久久久88| 日韩电影一区二区三区| 欧美三级韩国三级日本三斤| 亚洲特级片在线| 成人激情小说网站| 久久精品一区八戒影视| 美女高潮久久久| 91精品国产综合久久久蜜臀粉嫩 | 色美美综合视频| 久久九九99视频| 韩国女主播一区| 精品日韩99亚洲| 蜜乳av一区二区| 日韩欧美电影一二三| 日本不卡中文字幕| 91精品一区二区三区久久久久久| 亚洲国产精品一区二区www| 91精彩视频在线| 亚洲精品免费在线| 91视频你懂的| 亚洲一区二区欧美激情| 欧美优质美女网站| 亚洲超丰满肉感bbw| 91麻豆精品在线观看| 亚洲男同性恋视频| 成人免费看黄yyy456| 欧美国产精品一区二区三区| 国产欧美日韩卡一| 国产一区二区91| 欧美视频日韩视频| 极品少妇一区二区| 亚洲成人tv网| 亚洲人成亚洲人成在线观看图片 | 2020日本不卡一区二区视频| 欧美这里有精品| caoporm超碰国产精品| 激情欧美日韩一区二区| 亚洲第一在线综合网站| 国产精品成人免费在线| 久久精品一二三| 精品捆绑美女sm三区| 91精品国产综合久久福利| 欧美亚洲国产一区二区三区va| 欧美日韩成人在线一区| 91福利在线播放| 一本色道久久综合亚洲91| gogo大胆日本视频一区| 国产永久精品大片wwwapp| 久久99国产精品免费网站| 日本不卡高清视频| 奇米精品一区二区三区在线观看| 亚洲综合在线五月| 亚洲精品视频一区二区| 亚洲另类色综合网站| 亚洲男人的天堂av| 一区二区三区欧美视频| 亚洲精品乱码久久久久久黑人| 亚洲女人的天堂| 一区二区三区欧美久久| 亚洲一区二区视频在线| 婷婷丁香久久五月婷婷| 视频一区在线视频| 久久99久久久久| 激情久久五月天| 国v精品久久久网| 99综合电影在线视频| 99视频精品全部免费在线| 91原创在线视频| 91成人免费电影| 91精品国产欧美日韩| 精品国产一区二区三区四区四| 久久一夜天堂av一区二区三区| 国产色综合一区| 成人欧美一区二区三区1314| 亚洲激情图片一区| 首页欧美精品中文字幕| 国产一区二区三区精品视频| 成人午夜看片网址| 色狠狠色噜噜噜综合网| 91精品国产综合久久精品性色| 日韩欧美国产不卡| 国产精品视频一区二区三区不卡| **网站欧美大片在线观看| 亚洲国产精品一区二区久久| 久久精品国产亚洲a| 成人午夜碰碰视频| 欧美亚洲尤物久久| 久久女同互慰一区二区三区| 亚洲欧美一区二区久久| 五月综合激情婷婷六月色窝| 国产一区二区福利视频| 一本大道综合伊人精品热热| 欧美一区二区三区免费观看视频 | 日韩一区二区三区视频在线| 国产午夜亚洲精品不卡| 一区二区三区免费网站| 久久99久国产精品黄毛片色诱| 成人黄页毛片网站| 666欧美在线视频| 中文字幕av一区二区三区高| 亚洲成人精品一区| 国产高清久久久久| 欧美日韩国产高清一区二区三区| 国产色91在线| 日韩电影一二三区| 色综合天天综合网天天狠天天 | 免费观看日韩电影| 91在线无精精品入口| 精品久久久久香蕉网| 亚洲精品久久7777| 丰满少妇在线播放bd日韩电影| 国产欧美精品一区二区色综合朱莉| 亚洲伊人伊色伊影伊综合网| 国产在线精品一区二区| 69堂亚洲精品首页| 亚洲欧美电影院| 粉嫩一区二区三区在线看| 日韩欧美你懂的| 亚洲一二三四区不卡| zzijzzij亚洲日本少妇熟睡| 26uuu欧美日本| 男人的天堂久久精品| 欧美中文字幕亚洲一区二区va在线| 国产欧美日韩麻豆91| 韩国毛片一区二区三区| 91精品国产色综合久久ai换脸 | 免费高清在线一区| 欧美午夜电影网| 亚洲日本丝袜连裤袜办公室| 成人性视频免费网站| 欧美mv和日韩mv国产网站| 日本亚洲天堂网| 在线不卡免费av| 亚洲mv在线观看| 欧美三级电影在线观看| 一区二区三区色| 一本大道综合伊人精品热热| 国产精品成人免费| av一区二区久久| 亚洲日本乱码在线观看| 91在线视频网址| 一级特黄大欧美久久久| 色婷婷av一区二区三区大白胸 |