📄 sy.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 + -