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

📄 gsm.c

📁 GSMTCi35短信发送程序。MCU是PIC
💻 C
字号:
#include  <pic.h> 
#define uchar unsigned char
//typedef unsigned char uchar;
//**************************************************GSM指令定义****************************************************************/
uchar const cm0[]="AT\r\n";
uchar const cm1[]="ATE0\r\n";          //ATE0关闭回显,我还不回白什么是回显??
uchar const cm2[]="AT+CMGF=0\r\n";        //AT+CMGF=0  采用PDU格式,长度11
uchar const cm3[]="AT+CNMI=2,2,0,0,1\r\n";    //AT+CNMI=2,2,0,0,1   设置接收显示
uchar       cmcd[] = "AT+CMGS=20";  //AT+CMGS=143, PDU数据串长度为143  温度值两位 xxx  长度11
uchar const cmhh[]="\r\n";
uchar const cmlt[]="0891683110101705F01100";      //短信中心号码及设置联通  22
uchar const cmyd[]="0891683108501305F01100";      //短信中心号码及设置移动  22
uchar       cmnr[]="0008A7064F60597DFF01";        //发送的内容长度为128=80H
uchar       cmdf[]="0B8151895223554"; //对方手机号码   18
uchar const end=0x1a;                        //短信结束标志->
uchar buffer[30];
//bit  send_gsm_flag=0,en_gsm=1;

//********************************************延时程序********************************************************************/
void delayms(unsigned int x,unsigned int y)		//延时ms级的程序,延时时间为:(3*y+4)*x+10=?
{
 unsigned char z;
 do{
   z=y;
//   do{;}while(--z);
    while(--z);		//此句与上一句等效!
   }while(--x);
 asm("nop");
}

void delayus(unsigned char x)				//延时us级的程序,延时时间为:3*x+9=?
{
 unsigned char d;
 d=x;
 while(--d){;}
 asm("nop");
}
//*****************************************************UART初始化************************************************************/





void usart_init()
{
	TRISC6=0;	//RC6:TX为发送口
	TRISC7=1;	//RC7:RX为接收口
    SYNC=0;//异步方式
    BRGH=1;//高波特率
    TXEN=1;//使能串行发送
	//TXSTA=0x24;	//使能发送,高波特率异步方式
	RCSTA=0x90;	//串口使能,连续接收
    SPBRG=0x19;	//设置波特率9600
}	
	
  
/*********************************************************************************************************************
*UART串口发送函数
*函数名:void tx_dat(uchar len,uchar stemp[])
*说明:通过串口发送数据串
************************************************************************************************************************/
void tx_dat(uchar len,uchar const stemp[])   
{
   uchar i=0;
   TXEN=1;//打开串行发送
	for(i=0;i<len;i++)
 	 {
	    TXIE=0;//串行中断允许控制位,发送中断关闭
        RCIE=0;//接收中断关闭	
    	
		TXREG=stemp[i];
        
        
       delayms(50,10);
       }
      TXEN=0;//关闭串行发送
}

/***********************************************************************
*UART串口发送函数
*函数名:void send_one_byte(uchar tx_data)
*说明:通过串口发送字节数据
*************************************************************************/
void send_one_byte(uchar tx_data)
{   TXEN=1;
	TXIE=0;//串行中断允许控制位,发送中断关闭
    RCIE=0;//接收中断关闭	
	TXREG=tx_data;
	while(TXIF==0);
    delayms(50,10);
    TXEN=0;
}

/*void convert(uchar const cm[])  //从ROM到RAM的转换函数
{uchar i;

for(i=0;cm[i]!=0x00;i++)
buffer[i]=cm[i];
}
*/

/*******************************************************************
*GSM初始化程序
*函数名:void gsm_initial()
*说明:初始化GSM
*************************************************************************/
void gsm_initial()
{ 
  
    
	tx_dat(4,cm0);   //AT\r\n   长度4
    
    	
   delayms(10000,10000);

	tx_dat(6,cm1);   //ATE0\r\n   长度6关闭回显
	
   delayms(10000,10000);

	tx_dat(11,cm2);   //AT+CMGF=0\r\n  长度11

   delayms(10000,10000);

	tx_dat(19,cm3);   //AT+CNMI=2,2,0,0,1  长度19
	delayms(10000,10000);

}

/***********************************************************************
*向GSM发送数据函数
*函数名:void send_to_gsm()
*说明:向GSM发送含有温度数据的短息数据
*************************************************************************/
void send_to_gsm()
{//	uchar b20_num,j;
/*	if(changenumber_flag==1)
	{
		for(j=0;j<11;j++)
		read_eeprom[j]=ISP_READ(0x28,0x00+j);   //读取EEPROM
		ISP_DISABLE();    //关闭ISP功能
		change_mobilenumber();//更改手机号码
	}
*/
	tx_dat(10,cmcd);      //AT+CMGS=, PDU数据串长度为  温度值两位 xx  长度11/10

	tx_dat(2,cmhh);      //\r\n
    delayms(10000,10000);        //进行延时

   	tx_dat(22,cmyd);      //短信中心号码及设置联通或移动  22
   	tx_dat(16,cmdf);	    //对方手机号码   18
   	tx_dat(20,cmnr);		//00080006发送的内容长度为192=c0
    send_one_byte(end);		//短信结束标志->

    tx_dat(2,cmhh);      //\r\n

}

main()
{di();
usart_init();
gsm_initial();
send_to_gsm();
while(1);
}



















⌨️ 快捷键说明

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