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

📄 sy.c

📁 GSM模块发短消息测试程序
💻 C
字号:
#include "p30f6014.h"
unsigned char ATCMGF0[11]="AT+CMGF=0\x0D";
unsigned char ATCMGS0[13]="AT+CMGS=027\x0D";
unsigned char ATIPR[14]="AT+IPR=9600\x0D";
unsigned char ATCMGR0[12]="AT+CMGR=10\x0D";
unsigned char MESSAGE[58]="0011000D91685179235366F00008010C67DC518571C36C146CC46F0F\x1A";
unsigned char ATD[17]="ATD07325051667;\x0D";
unsigned char ATH[5]="ATH\x0D";
unsigned char NewRecvBuf2[100]={0};
unsigned char RecvCnt2,gsm_delay,gsm_flag;
void Uart1_Initial()   //串口初始化
 {
	 IFS0bits.U1TXIF = 0;   
	 IFS0bits.U1RXIF = 0;   
	 IPC2bits.U1TXIP = 1;     
	 IPC2bits.U1RXIP = 2;    
	 U1MODE = 0x8000;       
  	 U1STA = 0x8400;          
  	 U1BRG = 0x67;	         
  	 IEC0bits.U1TXIE = 0;   
  	 IEC0bits.U1RXIE = 1;   
 }
void U1TxStr(unsigned char *buf,unsigned char  size)   //发送程序
 {
    unsigned char i;
	for(i=0;i<size;i++)
		{
		while(U1STAbits.TRMT==0);
		IFS0bits.U1TXIF=0;
		U1TXREG=*buf;
        buf++;
		}
	
 }
void _ISR _U1RXInterrupt(void)   //中断接收程序
 {

    IFS0bits.U1RXIF = 0;  
     gsm_delay=125;	
    while( U1STAbits.URXDA == 1 )  
     {
	NewRecvBuf2[RecvCnt2] = U1RXREG;
	RecvCnt2++;
   	} 	
     	
 }

void T4_initialize()   //定时器初始化
{  
    IFS1bits.T4IF = 0;	   //Reset Timer1 interrupt flag
	TMR4 = 0x0000;		   //Clear contents of the timer register	
    T4CON = 0x0000;	       //Stops the Timer1 and reset control reg.	
	PR4 =0xfa00; 	       
	IPC5bits.T4IP = 0x05;  //Setup Timer1 interrupt for desired							
	IEC1bits.T4IE = 1;		//Enable Timer1 interrupts
	T4CONbits.TON = 1;   //启动 
}

void _ISR _T4Interrupt(void)   //中断定时
{
  
   IFS1bits.T4IF = 0;
   if(gsm_delay>0)
     {
      gsm_delay--;
      if(gsm_delay==0)
       gsm_flag=1;
    }			 
}
int main ()
 {
   unsigned char i;
   Uart1_Initial();   
   T4_initialize();  
   for (i=0;i<3;i++)
    {
     RecvCnt2=0;
     gsm_flag=0;   
     U1TxStr(ATCMGF0,10);   
     while(gsm_flag==0);
     for(i=0;i<100;i++)
    {
     if(NewRecvBuf2[i]==0x4f&&NewRecvBuf2[i+1]==0x4b)
     {
      RecvCnt2=0;
      gsm_flag=0; 
      U1TxStr(ATCMGS0,12);
      //U1TxStr(ATCMGR0,11);
      //U1TxStr(ATD,16);
      while(gsm_flag==0); 
      U1TxStr(MESSAGE,57);
      //for(i=0;i<100;i++)
      while(gsm_flag==0); 
      //if(NewRecvBuf2[i]==0x4f&&NewRecvBuf2[i+1]==0x4b) 
     break;
        } 
       }
     }
  while(1); 
 
}

⌨️ 快捷键说明

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