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

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

?? sms.c

?? 51單片機控制TC35I無線通信模塊的完整Keil C程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include "c8051f020.h"								// SFR declarations
//#include "gb2unicode.h"
#include "gb2unicode_char.h"
#include "math.h"
#include "sms.h"
////////////////////////////////////////////////////////////////////////////


UCHAR code ini_display[]={0xc4,0xa3,0xbf,0xe9,0xd2,0xd1,0xd5,0xfd,0xb3,0xa3,0xc6,0xf4,0xb6,0xaf,
0xa3,0xac,0xbf,0xaa,0xca,0xbc,0xb9,0xa4,0xd7,0xf7};
//**************main函數開始************
void main (void)
{  
    UCHAR i,j;
    unsigned char xdata sms_rec[200]={0};
	unsigned char Byte_Len=0;
	unsigned char String_Len=0;
	unsigned char xdata Gb_Len=0;
	unsigned char ch[]="4F60597D000A003C676867AB003E";
	unsigned char xdata rec_buffer[200]; 
	unsigned char sms_index_high,sms_index_low;
	Mcu_ini();
	led1_close();
	led2_close();
	led3_close();
	Inter_Enable();	
	Baudrate_Init();			//	init the serial port
	Serial1_Inter_Close();
	//sound module test
	Serial1_Inter_Open();
    Serial0_Inter_Close();
    //test wireless module
	sms_receive_flag=0;
	sms_index_len=0;
	for(i=0;i<SMS_MAXLENGTH;i++)
	  for(j=0;j<2;j++)
	  sms_index[i][j]='0';
	sound_ini();
	start_GSM();
	//刪除卡內所有短信
	for(i=1;i<10;i++)
    AT_cmgd('0','0'+i);
    for(i=0;i<10;i++)
    AT_cmgd('1','0'+i);
	//設置收到短信時發送CMTI
	AT_cnmi();
	Serial0_Inter_Open();
    led1_open();
    send(0xf4);
    disp_chn(ini_display,12);
    sound_send(ini_display,24);
	while(1)
	{
	if(sms_index_len>0)
	  {
	   led3_open();
	   Serial0_Inter_Close();
	   sms_index_high=sms_index[--sms_index_len][0];
       sms_index_low=sms_index[sms_index_len][1];
	   Serial0_Inter_Open();
	   Delay_1S();
	   Delay_1S();
       String_Len=AT_cmgr(sms_index_high,sms_index_low,SMS_Buffer);
	   Byte_Len=String2Bytes(SMS_Buffer, sms_rec,String_Len);
       Gb_Len=DecodeUcs2(sms_rec, rec_buffer,Byte_Len);
	   send(0xf4);
       disp_chn(rec_buffer,Gb_Len);
       sound_send(rec_buffer,Gb_Len*2);
	   AT_cmgd(sms_index_high,sms_index_low);
	   led3_close();
	  }
    }
} 

/******************************************
//MCU Initialization
Port Configuration and Oscillator set
==========================================*/
void Mcu_ini(void)
{
	unsigned char idata delay;

	OSCXCN = 0x67;					// Enable external crystal	
	WDTCN = 0xDE;					// disable watchdog timer
	WDTCN = 0xAD;
    XBR0 = 0x04;               		// Set UART0
   //  XBR0 = 0x00;   
	XBR1=0x00;                      //disable /INT0,/INT1
    XBR2 = 0x44;              		// Set UART1,Enable XBAR
    P0MDOUT = 0x05; 				// Output configuration for P0 P0.0->TX0,P0.2->TX1 Push-Pull, others Open-drain
//    P0MDOUT = 0x07; 	
    P1MDOUT = 0x00; 				// Output configuration for P1  all Open-Drain 
    P2MDOUT = 0x00; 				// Output configuration for P2  all Open-Drain
    P3MDOUT = 0x3b; 				// Output configuration for P3  P3.2(SOUND_READY),P3.6(LCD_BUSY),P3.7(LCD_REQ) Open-Drain,others Push-Pull
    P0 |= 0x0a;     				// Enable RX0,RX1
	P1 |= 0xff;
    P3 |= 0x44;     				
	delay=256;						// Delay >1 ms  before polling XTLVLD.
	while(delay--);
	while (!(OSCXCN & 0x80));		// Wait until external crystal has									// started.
	OSCICN = 0x0C;					// Switch to external oscillator
	OSCICN = 0x88;					// Disable internal oscillator; enable 
                        			// missing clock detector.
	while (!(OSCXCN & 0x80));		// Wait until external crystal has									// started.
	OSCICN = 0x08;					// Switch to external oscillator
}


/*-------------------------------------------------------------------------
Uart0 and Uart1 Initialization
Uart0 Baudrate:9600bps
Uart1 Baudrate:9600bps
=================================*/
void Baudrate_Init(void)
{
     //UART0 initialization   use timer2 as baudrate generator
     T2CON  = 0x30;      	//Set Timer2 as Baudrate Generator of UART0
     RCAP2H = 0xff;     	//Set Reload High Byte
	 RCAP2L = 0xc4;         //Set Reload Low Byte,baudrate=9600bps
     SCON0  = 0x50;      	//Set UART0 Mode 1 (1 Start Bit ,8 Data Bit ,1 Stop Bit) and Enable Receive 
     
	 //UART1 initialization   use timer4 as baudrate generator
     T4CON  = 0x30;       	//Set Timer4 Mode 2 (Auto Reload Byte)
     RCAP4H = 0xfe;			//Set Reload High Byte  
     RCAP4L = 0x20;			//Set Reload Low Byte=1200bps 
     SCON1  = 0x50;      	//Set UART1 Mode 1 (1 Start Bit ,8 Data Bit ,1 Stop Bit) and Enable Receive 
         
    //**********************  
    ET2 = 0;            	//Disable Timer2 Interrupt   
    EIE2 &= 0xfb;        	//Disable Timer4 Interrupt 
    TR2 = 1;            	//Start  Timer2
	T4CON |= 0x04;         //Start Timer4
   }  

//=================================================
//***********Interrupts Open and Close************* 
//=================================================

void Serial0_Inter_Close()
{ ES0=0; }
void Serial0_Inter_Open()
{ ES0=1; }
void Serial1_Inter_Close(void)
{ EIE2 &= 0xbf; }
void Serial1_Inter_Open(void)
{ EIE2 |= 0x4f; }
//========================
//open global interrupts
void Inter_Enable()
{
EA=1;
}

void Inter_Disable()
{
EA=0;
}
//*********************************


/*************************************************************************
GSM Program Module
***************************************************************************/
//*********************************sms函數****************************************
void	start_GSM(void)
{
	UINT idata i;
	led2_open();
//	for(i=0;i<5;i++) Delay_1S();
	power_down();
	start_tc35();
	for(i=0;i<11;i++) Delay_1S();
	AT_SEND();
	Delay_1S();
	Delay_1S();
//	Signal_test();
//	Delay_1S();
	AT_cmgf();
	Delay_1S();
	led2_close();//start complete
}

//cut off power 
void power_down(void)
{
PD=1;	//power off
Delay_1S();
//Delay_1S();
//Delay_1S();
//Delay_1S();
Delay_1S();
PD=0;
Delay_1S();//wait for module initialization
Delay_1S();
Delay_1S();
Delay_1S();
//Delay_1S();
//Delay_1S();
//Delay_1S();
}

//turn on GSM engine using Ignition line IGT
void start_tc35(void)
{
IGT=0;
Delay_1S();
Delay_1S();
IGT=1;
}

void uart0_send(unsigned char data_buffer[],unsigned char data_len)
{
  unsigned char i;
  SCON1 &= 0xFD;	//clear send flag
  for(i=0;i<data_len;i++)
  {
    SBUF0 = data_buffer[i];		
    while(TI0==0); 
    TI0=0;
  }
}
void AT_SEND(void)              
{
	UCHAR idata i,error_counter;
	error_counter=0;
	while(1)
	{
		TI0=0;
		RI0=0;
		for(i=0;i<5;i++)
		rec[i]=0x00;
		start_timer0();
       uart0_send(Command_At,3);
		for(i=0;i<9;i++)
		{
			while(!RI0);
			rec[i]=SBUF0;
			RI0=0;
		}
		close_timer0();

		if(rec[5]=='O'&&rec[6]=='K') break;
		else if(error_counter++<10)	Delay_1S();
				else deal_with_error();
	}
}


/***********Signal_test函數開始**********
Signal quality test
****************************/
void	Signal_test(void)
{
	UCHAR idata	i,error_counter;
	error_counter=0;
    while(1)                                           // AT+CSQ
    {
		TI0=0;
		RI0=0;
		start_timer0();
        uart0_send(Command_Csq,7);
    	for(i=0;i<28;i++)							//only receive part data (10)
    	{
      	  while(!RI0);
      	  rec[i] = SBUF0;
      	  RI0 = 0;
	    }
	    close_timer0();
       
        if(rec[15]!= '9'&& rec[16]!= '9') break;  
        else if(error_counter++<10)	Delay_1S();
				else deal_with_error();
    }
	Delay_1S();
    RI0=0;
}



/***********AT+cmgf*************
set preferred message format:text mode or PDU mode
In PDU mode, a complete SMS Message including all header information is passed
as a binary string (in hexadecimal format, so only this set of characters is allowed :
{‘0’,’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’, ‘A’, ‘B’,’C’,’D’,’E’,’F’} ). Each pair or characters is converted to
a byte (ex : ‘41’ is converted to the ASCII character ‘A’, whoes ASCII code is 0x41 or 65).
In Text mode, every commands and responses are in ASCII characters.
********************************/
void	AT_cmgf(void)
{
	UCHAR idata	i;
    while(1)                                           // AT+CSQ
    {
		TI0=0;
		RI0=0;
		/*
    	for(i=0;i<10;i++)
    	{
      	  SBUF0 = Command_Cmgf[i];
      	  while(!TI0); TI0 = 0;
    	}
    	*/
		uart0_send(Command_Cmgf,10);
  		break;
		Delay_1S();
    }
	Delay_1S();
    RI0=0;
	TI0=0;
}
/***********AT+cmgf*************
set preferred message format:text mode or PDU mode
In PDU mode, a complete SMS Message including all header information is passed
as a binary string (in hexadecimal format, so only this set of characters is allowed :
{‘0’,’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’, ‘A’, ‘B’,’C’,’D’,’E’,’F’} ). Each pair or characters is converted to
a byte (ex : ‘41’ is converted to the ASCII character ‘A’, whoes ASCII code is 0x41 or 65).
In Text mode, every commands and responses are in ASCII characters.
********************************/
/*
void	AT_cmgf(void)
{
	UCHAR idata	i,error_counter;
	error_counter=0;

    while(1)                                           // AT+CSQ
    {
		TI0=0;
		RI0=0;
		start_timer0();
    	for(i=0;i<10;i++)
    	{
      	  SBUF0 = Command_Cmgf[i];
      	  while(!TI0); TI0 = 0;
    	}    	
  			for(i=0;i<16;i++)							//only receive part data (10)
    	{
      	  while(!RI0);
      	  rec[i] = SBUF0;
      	  RI0 = 0;
	    }
	    close_timer0();
        if(rec[12]!= 'O'&& rec[13]!= 'K')break;  
        else if(error_counter++<10)	Delay_1S();
				else deal_with_error();
    }
	Delay_1S();
    RI0=0;
	TI0=0;
}
*/
/***********AT_cmgs****************************************
Send message function
After sending "CMGS" command,there will be 16 bytes received,
among which the 15th and 16th must be "0x3E"and "0x20"
***********AT+cmgs函數開始********************************/
void	AT_cmgs(void)
{
	UCHAR idata	i;
    while(1)                                           // AT+cmgs
    {
		TI0=0;
		RI0=0;
		/*
    	for(i=0;i<12;i++)
    	{
      	  SBUF0 = Command_Cmgs[i];
      	  while(!TI0); TI0 = 0;
    	}
		*/
		uart0_send(Command_Cmgs,12);
		start_timer0();
    	for(i=0;i<16;i++)							
    	{
      	  while(!RI0);
      	  rec[i] = SBUF0;
      	  RI0 = 0;
	    }
        close_timer0();
        if(rec[14]== 0x3E&& rec[15]== 0x20)
		break;  	
	//	Delay_1S();
    }

//			Delay_1S();
			for(i=0;i<50;i++);		//延時一段時間
        	RI0=0;
			TI0=0;
}

//***********AT+cmgs函數結束*************
//========sms有關的函數結束===================

//發送GSMhead[],Phone_number,GSM_set[],GSM_sms[],0x1A;
//***********SEND_sms函數開始*************
void	SEND_sms(void)
{
	 UCHAR idata	i;
 //   while(1)                                           
    {
		TI0=0;
		RI0=0;
		//send GSMhead(12 bytes)
    	for(i=0;i<12;i++)
    	{
      	  SBUF0 = GSMhead[i];
      	  while(!TI0); TI0 = 0;
      	}
        //send phone number(12 bytes)
		for(i=0;i<12;i++)
    	{
     	  SBUF0 = Center_number[i];
      	  while(!TI0); 
		  TI0 = 0;
      	}
        //send GSM_set(6 bytes)
		for(i=0;i<6;i++)
    	{
      	  SBUF0 = GSM_set[i];
      	  while(!TI0); TI0 = 0;
      	}
		//send sms contents(26 bytes)
		for(i=0;i<26;i++)
    	{
      	  SBUF0 = GSM_sms[i];
      	  while(!TI0); TI0 = 0;
      	}
        //send end bytes:0x1A
		SBUF0=0x1A;
		while(!TI0); TI0 = 0;	//發送信息結束
/*
    	for(i=0;i<75;i++)						
    	{
      	  while(!RI0);
      	  rec[i] = SBUF0;
      	  RI0 = 0;
	    }
   		 if(rec[72]== 'O'&& rec[73]== 'K')break;  
*/	
        Delay_1S();

    }


//			Delay_1S();
			for(i=0;i<255;i++);		//延時一段時間
        	RI0=0;
			TI0=0;
}


//***********SEND_sms函數結束*************

void    AT_cnmi(void)
{
	 UCHAR idata i,error_counter;
     error_counter=0;
	 Serial0_Inter_Close();
	 while(1)
	 {
    	TI0=0;
		RI0=0;
        uart0_send(Command_Cnmi,18);
		start_timer0();
    	for(i=0;i<24;i++)							//only receive part data (10)
    	{
      	  while(!RI0);
      	  rec[i] = SBUF0;
      	  RI0 = 0;
	    }
	    close_timer0();
       
        if(rec[20]== 'O'&& rec[21]== 'K') break;  
        else if(error_counter++<10)	Delay_1S();
				else deal_with_error();
       }
	Serial0_Inter_Open();
	Delay_1S();
    RI0=0;
}

//+CMGR: 3,,20
unsigned char AT_cmgr(unsigned char index_high,unsigned char index_low,unsigned char buffer[])
{
  	UCHAR idata	i;
	UCHAR byte_length=0;
	UCHAR length;
	UCHAR temp;
		TI0=0;
		RI0=0;
		  if(index_high=='0')
		    byte_length=82;
		  else
		    byte_length=83;
		Serial0_Inter_Close();
		uart0_send(Command_Cmgr,8);
		if(index_high!='0')
		  {
        SBUF0 =index_high;
      	while(!TI0); TI0 = 0;
          }
        SBUF0 =index_low;
      	while(!TI0); TI0 = 0;
		SBUF0 ='\r';
        while(!TI0); TI0 = 0;
        start_timer0();
        for(i=0;i<byte_length;i++)
		  {
		    while(!RI0);
      	  temp = SBUF0;
      	  RI0 = 0;
		  }
		  //接收兩個字節的短信長度字符
		  //短信長度高位
	      while(!RI0);
      	  temp = SBUF0;
      	  RI0 = 0; 
          if((temp>='0')&&(temp<='9'))
		    length=(temp-'0')<<4;
		  else
		    length=(temp-'A'+10)<<4;
		  //短信長度低位
		  while(!RI0);
      	  temp = SBUF0;
      	  RI0 = 0; 
          if((temp>='0')&&(temp<='9'))
		    length|=(temp-'0');
		  else
		    length|=(temp-'A'+10);
			//length*2個短信內容字符
		  for(i=0;i<length*2;i++)
		    {
			  while(!RI0);
		    buffer[i]=SBUF0;
			  RI0=0;
			}
		  for(i=0;i<8;i++)
		    {
			  while(!RI0);
		       temp=SBUF0;
			  RI0=0;			  
			}
		close_timer0();
	Serial0_Inter_Open();
	Delay_1S();
    RI0=0;
	TI0=0;
    return length*2;
}



void    AT_cmgd(unsigned char index_high,unsigned char index_low)
{
  	UCHAR idata i,error_counter;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美少妇一区二区| 亚洲欧美偷拍另类a∨色屁股| 亚洲bt欧美bt精品777| 色狠狠一区二区三区香蕉| 亚洲视频在线一区二区| 色综合久久六月婷婷中文字幕| 中文字幕一区av| 在线观看亚洲精品视频| 天天综合网 天天综合色| 欧美一级免费大片| 狠狠色丁香婷婷综合久久片| 精品奇米国产一区二区三区| 国产精品影视在线| 亚洲人成亚洲人成在线观看图片| 欧美性生活大片视频| 裸体歌舞表演一区二区| 国产午夜精品久久久久久免费视 | 亚洲一级二级三级| 91超碰这里只有精品国产| 久久爱www久久做| 国产精品入口麻豆九色| 欧美综合天天夜夜久久| 久久91精品国产91久久小草 | 国产成人精品亚洲午夜麻豆| 国产精品久久久久久久浪潮网站| 91黄色在线观看| 精品系列免费在线观看| 综合自拍亚洲综合图不卡区| 欧美绝品在线观看成人午夜影视| 国产在线一区观看| 夜夜揉揉日日人人青青一国产精品| 欧美精品少妇一区二区三区| 福利一区福利二区| 亚欧色一区w666天堂| 欧美激情一区三区| 欧美精品久久天天躁| 成人美女视频在线观看| 人人爽香蕉精品| 亚洲欧美另类久久久精品| 欧美成人video| 欧洲精品在线观看| 国产精品一二三| 日韩影院免费视频| 亚洲欧洲99久久| 欧美电影免费观看高清完整版在线 | 欧美日韩黄色一区二区| 国产91精品在线观看| 日韩激情中文字幕| 亚洲色图欧美偷拍| 欧美激情资源网| 欧美精品一区二区三区视频 | 欧美日韩黄视频| 91香蕉国产在线观看软件| 久久精品国产精品青草| 亚洲成人av一区二区| 中文字幕亚洲不卡| 久久精品在线免费观看| 日韩欧美色综合| 欧美日韩免费高清一区色橹橹 | 91麻豆国产福利精品| 国产精品99久久久| 久久精品国产精品亚洲精品| 亚洲国产综合视频在线观看| **网站欧美大片在线观看| 国产欧美一区二区三区在线老狼 | 欧美日韩精品电影| 欧美综合欧美视频| 色香蕉成人二区免费| 成人黄色一级视频| 成人一级片网址| 国产不卡高清在线观看视频| 韩国中文字幕2020精品| 美国三级日本三级久久99| 日韩国产欧美三级| 日本不卡一区二区| 日韩电影免费在线| 蜜桃精品在线观看| 蜜桃免费网站一区二区三区| 美女视频网站久久| 久久精品99国产精品日本| 蜜臀av一区二区在线免费观看| 婷婷综合五月天| 热久久国产精品| 蜜臀av一区二区三区| 极品瑜伽女神91| 国产精品99久久久| jizz一区二区| 欧洲生活片亚洲生活在线观看| 欧美亚洲一区二区在线| 欧美日韩精品一区二区天天拍小说| 一本高清dvd不卡在线观看| 色国产精品一区在线观看| 色88888久久久久久影院按摩 | 成人教育av在线| 91网站最新地址| 欧美日韩一级片在线观看| 91精品一区二区三区在线观看| 欧美一区二区视频在线观看| 欧美精品一区二区三区蜜桃视频| 精品久久久久久久久久久久久久久| 久久综合久久鬼色中文字| 国产精品私人影院| 亚洲综合图片区| 久久超级碰视频| 丰满少妇在线播放bd日韩电影| 99精品欧美一区二区三区小说 | 国产成人精品免费| 91麻豆视频网站| 日韩亚洲欧美一区| 国产欧美日韩综合精品一区二区| 国产精品毛片高清在线完整版| 伊人开心综合网| 蜜臀va亚洲va欧美va天堂| 成人av在线播放网址| 欧美午夜影院一区| 久久日一线二线三线suv| 亚洲 欧美综合在线网络| 美女在线观看视频一区二区| av中文字幕不卡| 7777精品伊人久久久大香线蕉经典版下载 | 免费成人av资源网| av一区二区三区| 精品日韩欧美在线| 亚洲欧美色图小说| 国产在线精品视频| 欧美在线观看视频一区二区三区| 日韩精品在线一区二区| 亚洲视频综合在线| 国产一区二区三区av电影 | 毛片av中文字幕一区二区| 99视频在线精品| 日韩你懂的在线播放| 一区二区在线观看av| 国产精品18久久久久| 欧美日韩国产片| 日韩理论在线观看| 国产精品1区2区3区在线观看| 欧美撒尿777hd撒尿| 国产精品久久久久久福利一牛影视 | 欧美精品一卡二卡| 日韩理论电影院| 国产精品一级二级三级| 欧美一区二区三区在线视频| 日韩一区在线免费观看| 国产一区二区三区四区在线观看| 欧美三级韩国三级日本一级| 国产精品―色哟哟| 国产一区欧美一区| 日韩欧美一级特黄在线播放| 亚洲电影第三页| 色诱视频网站一区| 中文字幕一区二区三区视频| 国产福利精品导航| 精品国产一区二区三区不卡| 日本人妖一区二区| 欧美亚洲高清一区二区三区不卡| 国产精品国产三级国产aⅴ原创 | 日本韩国精品在线| 国产精品久久久久久亚洲毛片| 国产精品一二一区| 久久精品男人的天堂| 韩国av一区二区| 久久这里只有精品视频网| 狠狠狠色丁香婷婷综合激情| 欧美日韩国产高清一区| 亚洲国产一区二区视频| 欧美性大战久久久久久久蜜臀 | 日本aⅴ免费视频一区二区三区| 欧美在线视频日韩| 一区二区三区欧美亚洲| 色欧美日韩亚洲| 一区二区三区.www| 欧美日韩黄色一区二区| 青青草原综合久久大伊人精品优势| 欧美天天综合网| 日本欧美一区二区三区| 欧美一二三区在线| 激情国产一区二区| 国产视频一区二区在线| 成人一区在线看| 亚洲欧美一区二区久久 | 久久99精品一区二区三区| 精品少妇一区二区| 国产高清不卡一区| 亚洲人成小说网站色在线 | 国产一区久久久| 精品国产区一区| 成人在线综合网| **欧美大码日韩| 91精品国产综合久久久久久漫画 | 亚洲不卡一区二区三区| 欧美一区二区免费观在线| 国产美女一区二区三区| 国产精品全国免费观看高清| 一本到一区二区三区| 琪琪一区二区三区| 国产欧美一区二区精品性色超碰| 97久久精品人人做人人爽| 午夜久久久影院| 国产日本一区二区|