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

📄 gsm-at-ok.c

📁 这是一个关于单片机于GSM模块握手通信的,发送其它AT指令相同
💻 C
字号:
#include <at89x55.h>
#include <string.h>
#include <stdio.h>

bit  sendbiao;    //定义发送完成标志
bit  jie1;
bit  jie2;
bit  jie3;
bit  ok;
unsigned  char code at[]={"AT"};
unsigned  char data  c;
unsigned  char data  p;
unsigned char data jiec;//接收区计数器
unsigned char xdata buf1[140];
unsigned char xdata buf2[140];
unsigned char xdata buf3[100];
unsigned int data chua_c;// 串口接收总字节数

unsigned char inbuf1[INBUF_LEN];
unsigned char checksum,count3;
bit           read_flag=0;

unsigned  char idata  atback[80];

       /*定义函数*/
void  delay(int);   //延时函数
void  start(void);  //初始化函数

void  chuan();

void  main()
{
unsigned int data maaa;
       int i;
	   
     start();
         
	   for(i>0;i<100;i++)
	   {
    
              while(sendbiao==1);
	      	       
			    atback[0]=0;
			   	strcpy(atback,at);
				strcat(atback,Enter);
				c=strlen(atback);
				p=0;
				SBUF=atback[p];
				p++;
				sendbiao=1;
				
                jiec=0;
                jie1=0;	


for(maaa=0;maaa<10000;maaa++)
	{

			if(jie1==1)
			{
			  if (buf1[0]=='O' && buf1[1]=='K' )//OK
					{
						workled=0;
					}
					 else
		               {
		                   alarm=1;
		               }
		
		
					 jiec=0;
				 jie1=0;      
		                
			}



	}

delay(5000);		
               
		
						
      }
    
             
              
}


void   start(void)
{ 
          /* SCON   Bit    7      6     5    4    3    2   1   0
                         SM0/FE  SM1   SM2  REN  TB8  RB8  TI  RI

          T2CON   Bit    7      6     5    4     3      2     1      0
                        TF2    EXF2  RCLK TCLK  EXEN2  TR2   C/T2  CP/RL2  */

      /* T2CON=0x34;         //0011,0100,由T2作为波特率发生器

       RCAP2H=0xFF;        //时钟11.0592MHZ,
       RCAP2L=0xDB;        //9600波特率
       ES=0;                   //禁止串口中断
       SCON=0X50;              //0101,0000  8位数据位,无奇偶校验
       T2CON=0x34;             //0011,0100,由T2作为波特率发生器

       RCAP2H=0xFF;            //时钟11.0592MHZ,
       RCAP2L=0xDB;            //9600波特率   
       ES=1;                  //允许串口中断  */
     
    sendbiao=0; 
	
	SCON  = 0x50;       //SCON: serail mode 1, 8-bit UART, enable ucvr 
    TMOD |= 0x20;       //TMOD: timer 1, mode 2, 8-bit reload 
    PCON |= 0x80;       //SMOD=1; 
    TH1   = 0xF4;       //Baud:4800  fosc=11.0592MHz 
    IE   |= 0x90;       //Enable Serial Interrupt 
    TR1   = 1;          // timer 1 run 


}  


void  delay(int j)
{
      int i;
      for(;j>0;j--)
	  {
	      for(i=0;i<124;i++)
		  {;}
	  }
}
 


void chuan() interrupt 4
{
	if(TI==1)
	{TI=0;
		if(p>=c)
			{
			sendbiao=0;
			}
		else
			{
				SBUF=atback[p];
				p++;
		   }
         }

	else
	{RI=0;
		  
		   if(jie1==0)
         {
				if(SBUF==0X0A)
					{
						 		
				
						jie1=1;
						 jiec=0;
					}
			   else if(jiec>139)
			   		{    jie1=1;
						 jiec=0;
					}
				else
					{
				
						buf1[jiec]=SBUF;
						jiec++;
						chua_c++;
					}
			
			}
		  
			else if(jie2==0)
			{
				if(SBUF==0X0A)
					{
						jie2=1;
						jiec=0;
					}

				   else if(jiec>140)
			   		{  jie2=1;
						 jiec=0;
					}
				else
					{
						buf2[jiec]=SBUF;
						jiec++;chua_c++;
					}
		
			}
			else if(jie3==0)
  			{
				if(SBUF==0X0A)
					{
						jie3=1;
						jiec=0;
					}

				   else if(jiec>99)
			   		{  jie3=1;
						 jiec=0;
					}

				else
					{
						buf1[jiec]=SBUF;
						jiec++;chua_c++;
					}

                 }
		   	}

}




⌨️ 快捷键说明

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