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

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

?? cheshi.c

?? GSM MCU 開發板
?? C
?? 第 1 頁 / 共 3 頁
字號:
#include <cheshi.h>
uchar data int_case;	//中斷標志
#define MAX_TM   90         // AT指收發數組最大緩沖
#define MAX_T  60
uchar idata uart_buff[MAX_TM]; //通信程序中的緩沖
uchar idata send_count,receive_count;    //發送與接收 數組指針
data uchar AT_Command_Type;		//當前發送的命令類型
data uchar AT_Command_Status;		//命令發出以后的返回參數
uchar idata para_temp[MAX_T];     //多用臨時用
uchar data read_tmp;             ///讀電話本號參數
uchar data num_tmp1;			///讀短信號碼參數
uchar data TMP_BUF;         // 萬用 值
uchar data sms_tmp;			///短信處理參數代碼
uchar idata TEL_temp[20];   //存對方號碼,
#define IO_OUT			P3_6  ///蜂鳴器
uchar data system_server ;    //系統狀態
//多用值一般不用于多級
uchar tmp_i,tmp_j ;
//---定時用-----------
uint  data timercount;		//50MS定時器,
uchar data timer_1S_cnt;
uchar data timer_10S_cnt;
uchar data timer_S_cnt;
//--------------------
uchar idata LED_P0;
uchar data ring_cnt;    //振鈴用
uchar idata PT2272_BUF;//存儲用
uchar bdata PT2272_TMP;  //無線控制
sbit PT2272_D0=   PT2272_TMP^0;
sbit PT2272_D1=   PT2272_TMP^1;
sbit PT2272_D2=   PT2272_TMP^2;
sbit PT2272_D3=   PT2272_TMP^3;
sbit PT2272_VT=   PT2272_TMP^4;
//位變量
bit TC35_bit  ;
bit ring_bit  ;  // 電話呼入 2
bit PT2272_BIT;   //315M-是否連結到設備上

bit txd_rxd_bit;    //接收正確的指令中斷
bit at_send_bit;    //發送允許


// 中斷 IO 模擬腳
bit io_p00_bit;
bit io_p01_bit;
bit io_p02_bit;
bit io_p03_bit;
bit io_p04_bit;
bit io_p05_bit;
bit io_p06_bit;
bit io_p07_bit;
// IO設置開啟與關閉
bit io_p00_on;
bit io_p01_on;
bit io_p02_on;
bit io_p03_on;
bit io_p04_on;
bit io_p05_on;
bit io_p06_on;
bit io_p07_on;


 //uchar Read_Call_ID(void);

 //硬件處理
void int_p02() // 發短中文短信前設置。 P0.2燈閃,同時蜂鳴器長叫一聲
{
     LED_INT2=1; BELL=0;
     for(tmp_i=0;tmp_i<8;tmp_i++)    //燈閃三下
     {  timercount=0;  while(timercount<10) watch_dog_clear;
     	LED_INT2=~LED_INT2;
     }
     BELL=1; LED_INT2=0; io_p02_on=1;

      read_tmp=0x31;  TMP_BUF=0;    //讀電話本1
   	  PHONE_RD(); para_temp[TMP_BUF++]=0x0d;para_temp[TMP_BUF++]=0x00;
   	  TMP_BUF=0;   // 將讀出的電話號碼轉存起來,做發送對方號碼
   	  do{
   	       TEL_temp[TMP_BUF]=para_temp[TMP_BUF];  TMP_BUF++;
   	    }while( TMP_BUF<=18);
      sms_tmp=smss_para;   //回中文短信
      send_sms(); //調用發短信

}

//硬件處理
void int_p03() // 發短中文短信前設置。 P0.2燈閃,同時蜂鳴器長叫一聲
{
     LED_INT2=1; BELL=0;
     for(tmp_i=0;tmp_i<8;tmp_i++)    //燈閃三下
     {  timercount=0;  while(timercount<10) watch_dog_clear;
     	LED_INT2=~LED_INT2;
     }
     BELL=1; LED_INT2=0; io_p02_on=1;

      read_tmp=0x31;  TMP_BUF=0;    //讀電話本1
   	  PHONE_RD(); para_temp[TMP_BUF++]=0x0d;para_temp[TMP_BUF++]=0x00;
   	  TMP_BUF=0;   // 將讀出的電話號碼轉存起來,做發送對方號碼
   	  do{
   	       TEL_temp[TMP_BUF]=para_temp[TMP_BUF];  TMP_BUF++;
   	    }while( TMP_BUF<=18);
      sms_tmp=smss_tel;//英文短信回
      send_sms();       //  //調用發短信

}

//------------------------
//----------------------
//--定時器中斷位,是整個程序的心跳,如果停止,程序會死機
void  Int_Timer0(void) interrupt 1 using 3
{
         TH0 = 0xB8;
		 TL0 = 0x00; //20ms的時鐘基準
    watch_dog_clear;
   timer_1S_cnt++;   timercount++;
   if(timer_1S_cnt==50)    //20×50=1000MS  =1S
    { timer_10S_cnt++; timer_1S_cnt=0;
      timer_S_cnt++;
 	  LED_INT0=~LED_INT0;

    }                              //1秒=1000毫秒
    if(timer_10S_cnt==10)   //10S
    {
	   timer_10S_cnt=0;

	}

  //---------硬件中斷處理---------------------------------------------------------------------
   //-------P2.7-D0,P2.6-D1,P2.5-D2,P2.4-D3,    P2.3-VT-315M有信號中斷,----------------------------
   //如果有PT2272接入 P2接入口會為低,P2.3-P2.7=0;
    P2=0xff;
    PT2272_BUF= P2&0x0F;     //加VT就是0xf1
    if(PT2272_BUF==0)  //狀態檢測
    {    PT2272_BIT=1; //可以進行中斷
    }

    else if(((PT2272_BUF>0)&&((PT2272_BUF&0x0f)!=0x0f))&&PT2272_BIT==1) //這種方法只用于PT2272-M4的芯片
    {   PT2272_TMP= PT2272_BUF;
    	PT2272_BIT=0;
    }
    //---------------------------

    IO_P25=1;        //外部中斷 P25口
	if((io_p00_bit!=IO_P25))
	{
		if(IO_P25==0)
		{ io_p00_on=0;
		}

		io_p00_bit=IO_P25;
	}
    IO_P24=1;        //外部中斷 P24口
	if((io_p02_bit!=IO_P24))
	{
		if(IO_P24==0)
		{ io_p02_on=0;
		}

		io_p02_bit=IO_P24;
	}
	IO_P35=1;        //外部中斷 P35口
	if((io_p03_bit!=IO_P35))
	{
		if(IO_P35==0)
		{ io_p03_on=0;
		}

		io_p03_bit=IO_P35;
	}

  //---------------------------------------------------------------------------------

}
/*****************************************************************************
 *                   TC35 的命令列表,與中斷服務程序                          *
 *****************************************************************************/
void  Int_Uart(void) interrupt 4 using 3  //串口的中斷程序
{
	if(TI)//數據模式與命令方式共用
	{
    		TI=0;

			if(send_count>=MAX_TM-5)  send_count=0;   //不在超過最大值

			if((uart_buff[send_count]==0)) //應該檢測命令結束代碼,檢測到時結束通信
			{
                	at_send_bit=1;  ////接收允許
                	send_count=0xff; // 發送指針 達到是大值
                	uart_buff[0]=0;		//清除接收緩沖區
                	receive_count=0;
                	 return;
            }
			else
			{   if(uart_buff[send_count]<=0xB0)
				  SBUF=uart_buff[send_count++];

                   if((uart_buff[send_count]==0)) //應該檢測命令結束代碼,檢測到時結束通信
					{ at_send_bit=1; //接收允許
                	 send_count=0xff;
                	 uart_buff[0]=0;		//清除接收緩沖區
                	 receive_count=0;    return;
             		}
			}


    	receive_count=0;
    }

	else
	if(RI) //命令方式
		{
        	RI=0;
        	if(at_send_bit==0)      return; //如果在發送時,不能接收
        	if((send_count==0xff)&&(receive_count<MAX_TM-3))//沒有發送時才能進行接收
        	{	//所有的命令返回都是處于 0x0A [Result] 0x0D 之間,其他命令,不會出現這種情況
                uart_buff[receive_count++]=SBUF;
        	}
        	 else
        	 {   receive_count=0;
       			 return;
       		 }
		  if(receive_count>=MAX_TM-3)
       		{
       			if(AT_Command_Type==SMS_CMGR)    receive_count=0;

         		else
		   		 {	receive_count=0;
		   	 		AT_Command_Status=COMMAND_OK;
        			return;
				 }
			     receive_count=0;
 			}

       	if((receive_count==2)&&(uart_buff[1]==0x0d))//沒有包含為其他信息的命令返回
       		{//接收到一個命令回應,可能為,0-OK  1-CONNECT 2-RING 3-NO CARRIER 4-ERROR
       			//只返回OK

       			if(uart_buff[0]=='0')
       			{ AT_Command_Status=COMMAND_OK;  //txd_rxd_bit=1;
       			}
       			if(uart_buff[0]=='2')    //電話呼入
       			{    ring_bit=1;  ring_cnt++;
       				 AT_Command_Status=COMMAND_OK;  //txd_rxd_bit=1;
       				 ES=1;			//設置發送指針
     				 receive_count=0;
	  				 send_count=0xff;
       			}
       			else if(uart_buff[0]=='4'||uart_buff[0]=='3') //錯誤指令和 無法接通
       		    {  AT_Command_Status=COMMAND_ERROR;}
       			else AT_Command_Status=COMMAND_UNKNOW;
  				 txd_rxd_bit=1; //接收成功

       			 uart_buff[receive_count]=0;   //receive_count=2 ;
       			 return;
		    }

   		else if(((receive_count>=3)
   		       &&uart_buff[receive_count-1]==0x0d)
   			   &&(uart_buff[receive_count-3]==0x0a)
   		       &&((uart_buff[receive_count-2]=='0')))

   		    {  ///可能是包含為其他信息的命令返回
        		  uart_buff[receive_count]=0;//RECEIV OK ANSWER, with some message
                  AT_Command_Status=COMMAND_OK;
                  txd_rxd_bit=1;

        	}

         else if((AT_Command_Type==SMS_CMGS||AT_Command_Type==AT_COMMAND)&&uart_buff[2]=='>')
        	{	AT_Command_Status=COMMAND_OK;    txd_rxd_bit=1;
        		return;
        	}


	}//End of if(RI)
}
/*********************************************************************
 *                  C51中字符串函數的擴充                            *
 *********************************************************************/

uchar strsearch(uchar *ptr2)//查字符串*ptr2在*ptr1中的位置
//本函數是用來檢查字符串*ptr2是否完全包含在*ptr1中
//返回:  0  沒有找到
//       1-255 從第N個字符開始相同
{
//、	uchar max_length;
	uchar i,j,k;
	uchar flag;
	if(ptr2[0]==0) return(0);
	flag=0;
	for(i=0,j=0;i<MAX_TM-2;i++)
	{
        if(uart_buff[i]==ptr2[j])
        {//第一個字符相同
        	for(k=i;k<MAX_TM-2;k++,j++)
        	{
        		if(ptr2[j]==0)//比較正確
        			return(i+1);               //返回值是整數,不含0
        		if(uart_buff[k]!=ptr2[j]) break;
        	}
        	j=0;
        }
	}
	return(0);
}
//=============================================================================
//                  話機被叫程序
//=============================================================================
//=============================================================================
//                  話機被叫程序
//=============================================================================
uchar Read_Call_ID(void)//讀出來電顯示的號碼
//正確  TRUE
//錯誤  FALSE
//號碼  string_temp[0..16],最多顯示前16位
//呼叫方式 stringt_temp[20]
{
	uchar i,j,r;

	Send_AT_Command(CALL_ID);//+CLCC:1,1,4,0,0,"02138950224",129
	//	語音呼入

	//string_temp[0]=0;
	//string_temp[20]=0;  //讀來電顯示出錯時設為1
	if(receive_count<15) return(FALSE);
	uart_buff[receive_count]=0;
	 ring_bit=0;

      ES=1;			//設置發送指針
      receive_count=0;
	  send_count=0xff;
	  RI=0 ;
	j=0;
//	i=strsearch(uart_buff,"CLCC");//查第一個CLCC
    i=strsearch("CLCC");//查第一個CLCC
	if(i==0) return(FALSE);
	j=j+i;
	for(r=0;r<9;r++)
	{
	if(uart_buff[j]==',')   break;
	else  j=j+1;
   }
	if(r>=9) return(FALSE);
	j=j+1;
	for(r=0;r<4;r++)
	{
		if(uart_buff[j]==',')    break;
		else  j=j+1;
    }
	if(r>=4) return(FALSE);
	j=j+1;
	//檢查是否為來話呼叫
	if(uart_buff[j]!='4') return(FALSE);
	for(r=0;r<4;r++)
	{
	if(uart_buff[j]==',')    break;
	else  j=j+1;
    }
	if(r>=4) return(FALSE);
	j=j+1;
//	string_temp[20]=uart_buff[j];//讀出呼叫類型
	//只要能讀出呼叫類型就認為正確
   //	i=strsearch(&uart_buff[j],"\x22");//查第一個"號
   	for(r=0;r<6;r++)
	{
	if(uart_buff[j]=='\x22')   break;
	else  j=j+1;
    }

	if(r>=6)
		return(FALSE);
   	j=j+1;
   i=j;
   //	i=strsearch(&uart_buff[j],"\x22");//查第二個"號
   	for(r=0;r<20;r++)
	{
	if(uart_buff[j]=='\x22')   break;
	else  j=j+1;
   }
   	if(i<=2) return(FALSE);//沒有來電號碼
   	for(r=0;r<22;r++)
	{
       para_temp[r+2]=uart_buff[i++];
	   if(uart_buff[i]=='\x22')
	   { para_temp[r+3]=0x0d;para_temp[r+4]=0x00;uart_buff[i++]=0x0d;uart_buff[i++]=0; break;}

	 }
     uart_buff[i++]=0;uart_buff[i++]=0;
   	return(TRUE);
}

void ring_auto()   //自動監聽  當有電話呼入,只有車主電話可以監聽,別的電話會自動掛機
{   uchar i=0;
	 ring_bit=0;
	 ring_cnt=1;
	 LED_INT6=0;
     timercount=0;
     i=0;

          		if(Read_Call_ID())    //讀來電顯示
              	{  	 ring_cnt=0;
              		timer_S_cnt=0; while(timer_S_cnt<6) watch_dog_clear;
                    if(ring_cnt>=1)
              		 { ring_cnt=0;  Send_AT_Command(PICK_UP);
   				   	  	ES=1;			//設置發送指針
    					receive_count=0;
					    send_count=0xff;
    					uart_buff[0]=0;
						 RI=0 ;
    					AT_Command_Status=COMMAND_WAIT;	//設置接收成功標志
   				   	 	while((AT_Command_Status==COMMAND_WAIT))  watch_dog_clear;
   				   	 }
                     Send_AT_Command(HOOKOFF);
					 ring_bit=0;
					 ring_cnt=0;
					 LED_INT6=1;
					return;

              	}
              	else   { LED_INT6=1; return;   }



       LED_INT6=1;
}
//----------------------------------------------
//---------這里進行中斷查詢如果有中斷馬上處理----------------------
uchar P2_INIT()

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
最新热久久免费视频| 国产精品久久久久影视| 久久综合九色综合欧美就去吻| 国产三级一区二区| 亚洲成a人片综合在线| 成人国产精品免费观看| 欧美一区二区私人影院日本| 国产精品久久久久影院亚瑟| 久久99最新地址| 欧美精品xxxxbbbb| 最新欧美精品一区二区三区| 国产suv精品一区二区6| 精品久久久久99| 丝瓜av网站精品一区二区 | 成人欧美一区二区三区| 国产高清成人在线| 欧美成人a∨高清免费观看| 香蕉久久一区二区不卡无毒影院| 一区在线观看免费| 国产精品中文字幕一区二区三区| 5858s免费视频成人| 亚洲韩国精品一区| 91豆麻精品91久久久久久| 中文字幕免费不卡| 国产老妇另类xxxxx| 精品99一区二区三区| 麻豆精品精品国产自在97香蕉| 欧美三级一区二区| 亚洲国产精品视频| 欧美无人高清视频在线观看| 亚洲精品视频一区| 91极品视觉盛宴| 亚洲午夜久久久久久久久电影网 | 亚洲精品一区二区三区在线观看| 欧美日韩和欧美的一区二区| 欧美国产日本视频| 久久精品国产色蜜蜜麻豆| 欧美日韩中文字幕精品| 亚洲精品久久久久久国产精华液| 91丨国产丨九色丨pron| 亚洲男人的天堂av| 欧美午夜宅男影院| 亚洲国产成人porn| 欧美一区午夜精品| 亚洲一区二区中文在线| 91麻豆swag| 一区二区在线免费观看| 欧美色电影在线| 男人的j进女人的j一区| www国产精品av| 成人精品小蝌蚪| 国产精品天天摸av网| 自拍av一区二区三区| 亚洲欧美日韩久久| 亚洲欧洲av在线| 欧美三级欧美一级| 蜜桃一区二区三区在线| 精品久久一区二区三区| 国产精品123区| 亚洲精品一二三| 日韩亚洲欧美中文三级| 国产高清亚洲一区| 亚洲精品少妇30p| 91精品国产综合久久蜜臀 | 日韩精品资源二区在线| 韩国欧美一区二区| 最好看的中文字幕久久| 91麻豆精品91久久久久同性| 国产美女久久久久| 亚洲精品免费视频| 久久一二三国产| 日韩欧美国产1| 麻豆成人综合网| 欧美另类久久久品| 国产成人夜色高潮福利影视| 亚洲综合色噜噜狠狠| 精品国产百合女同互慰| 一本一道综合狠狠老| 日本vs亚洲vs韩国一区三区 | 欧洲在线/亚洲| 国产一区视频在线看| 亚洲免费av高清| 精品成a人在线观看| 欧美艳星brazzers| 大桥未久av一区二区三区中文| 亚洲一线二线三线久久久| 精品国产91亚洲一区二区三区婷婷| 不卡的av中国片| 九九久久精品视频| 亚洲成a人v欧美综合天堂下载| 中文字幕成人网| 日韩欧美不卡一区| 91成人免费在线视频| 高清在线成人网| 日韩成人一区二区| 国产精品一区在线观看乱码 | 欧美亚洲精品一区| 91在线porny国产在线看| 国产真实乱子伦精品视频| 天堂午夜影视日韩欧美一区二区| 国产精品国产三级国产| 久久精品欧美日韩| 欧美精品一区二区三区一线天视频| 欧美日韩国产片| 欧美视频三区在线播放| 色婷婷av一区二区三区大白胸| 国产精品一线二线三线精华| 精品无人码麻豆乱码1区2区| 视频精品一区二区| 亚洲成av人片| 亚洲图片有声小说| 亚洲一区二区五区| 亚洲综合免费观看高清在线观看| 日韩毛片视频在线看| 国产精品网站在线播放| 国产精品视频在线看| 国产精品青草综合久久久久99| 久久精品视频在线看| 日韩国产欧美在线播放| 国产精品久久毛片av大全日韩| 在线精品亚洲一区二区不卡| 一区二区三区在线播| 日韩一区二区三区电影| 日韩欧美亚洲国产精品字幕久久久| 在线视频欧美精品| 欧美日韩中字一区| 欧美丰满一区二区免费视频| 欧美人与性动xxxx| 欧美sm美女调教| 久久久久99精品一区| 欧美经典一区二区| 亚洲欧美另类小说| 天堂av在线一区| 紧缚奴在线一区二区三区| 国产精品1区2区3区| caoporn国产精品| 在线一区二区视频| 91精品在线免费| 国产色婷婷亚洲99精品小说| 亚洲欧美另类久久久精品2019| 亚洲午夜国产一区99re久久| 秋霞影院一区二区| 国产二区国产一区在线观看| 日本美女一区二区三区视频| 久久久九九九九| 7878成人国产在线观看| 久久中文字幕电影| 中文字幕一区二区视频| 亚洲成人av福利| 国产精品一区二区无线| 91视频在线观看免费| 日韩一级片网站| 亚洲欧洲综合另类| 久久国产精品露脸对白| 色综合久久中文综合久久97| 欧美二区三区的天堂| 亚洲国产经典视频| 天天色 色综合| 成人深夜福利app| 91麻豆精品国产91久久久资源速度 | 亚洲欧美日韩国产成人精品影院| 国产91精品免费| 91精品国产综合久久久久久久久久 | 91麻豆精品国产91久久久| 欧美一级欧美一级在线播放| 中文字幕欧美激情| 亚洲成人tv网| 成人高清视频免费观看| 欧美日韩国产首页在线观看| 久久久久88色偷偷免费| 日韩精品免费视频人成| proumb性欧美在线观看| 欧美一级欧美一级在线播放| 亚洲欧美日韩一区二区 | 国产精品美女久久福利网站| 五月天激情综合网| 99re这里只有精品首页| 精品国产1区2区3区| 亚洲一区二区中文在线| 波多野结衣中文一区| 欧美电影免费观看高清完整版在线 | 国产精品美女久久久久久久网站| 亚洲视频在线一区观看| 精品在线免费观看| 678五月天丁香亚洲综合网| 最新日韩在线视频| 成人午夜激情视频| 欧美精品一区在线观看| 欧美a级理论片| 在线播放一区二区三区| 亚洲成人资源网| 色综合久久久久综合体桃花网| 国产亚洲欧美色| 蜜桃91丨九色丨蝌蚪91桃色| 欧美精品一级二级| 亚洲v中文字幕| 欧美四级电影网| 亚洲综合男人的天堂| 欧美影院午夜播放| 亚洲一区视频在线观看视频|