#include "msp430x14x.h"
#define KEYSend (char)(P2IN&BIT0)
#define KEYPage (char)(P2IN&BIT1)
void GsmSend(void);
void UART0_Init (void);
void DelayNS (unsigned int dly);
void Delay(unsigned long t);
unsigned char AT[]="AT\r"; //握手信号//3Chars
unsigned char ATCMGF[]="AT+CMGF=1\r"; //text格式//10Chars
unsigned char ATCMGS[]="AT+CMGS=\"13709294197\"\r"; //手机号//22Chars//请填入对方的手机号(何金奎13679120179)
unsigned char ATD[]="ATD15877444876\r";
unsigned char Data[]="time191512data080705L092.1548H1548.1544NE"; //24Chars
unsigned char uTmp;
/////////////////////////////////////////////////
void Delay(unsigned long t)//@Proteus示波器测出62.7us/1
{
unsigned long i, j;
for(i=0; i<t; i++)
for(j=0; j<500; j++);
}
//////////////////////////////////////////////////////////
void DelayNS (unsigned int dly)//示波器测出7.5ms/1
{
unsigned int i;
for ( ; dly>0; dly--)
for (i=0; i<2000; i++);
}
/////////////////////////////////////////////////////////////////
void UART0_Init (void)
{
ME1 |= UTXE0 + URXE0;
UCTL0 = CHAR;
UTCTL0 = SSEL0;
UBR00 = 0x03;
UBR10 = 0x00;
UMCTL0 = 0x4A;
UCTL0 &= ~SWRST;
IE1 |= URXIE0;
P3SEL = 0x30;
P3DIR = 0x10;
}
/*
*********************************************************************************************************
** 函数名称 :UART0()
** 函数功能 :串口0接收中断服务程序
** 入口参数 :无
** 出口参数 :无
*********************************************************************************************************
*/
#pragma vector=UART0RX_VECTOR //串口0的接收中断
__interrupt void UART0_RX_ISR(void)
{
uTmp = RXBUF0;//接收
//while ((IFG1&UTXIFG0)==0);
// TXBUF0=uTmp;
P1OUT^=0x02;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
void GsmSend(void)
{
unsigned char i;
if (KEYSend)
{
DelayNS(2);//15ms
if (KEYSend)
{
while(KEYSend);
for(i=0;i<3;i++)//握手
{
TXBUF0=AT[i];
while ((IFG1&UTXIFG0)==0); // 等待数据发送完毕
}
//while(flag==0); //不能while(!flag);???
DelayNS(50);
for(i=0;i<10;i++)//数据格式
{
TXBUF0=ATCMGF[i];
while ((IFG1&UTXIFG0)==0); // 等待数据发送完毕
}
DelayNS(50);
for(i=0;i<22;i++)//握手
{
TXBUF0=ATCMGS[i];
while ((IFG1&UTXIFG0)==0);
//DelayNS(3);
}
while(!(IFG1 & URXIFG0));
DelayNS(100);
for(i = 0;i <20;i++)
{
TXBUF0 =Data[i];
while(!(IFG1 & UTXIFG0));
}
TXBUF0=0x1a;
while(!(IFG1 & UTXIFG0));
P1OUT ^=0x01;
}
}
}
void main(void)
{
P1OUT=0xff;
P1DIR=0x03;
P2DIR=0xff;
P2DIR&=~BIT0;
P2DIR&=~BIT1;
WDTCTL = WDTPW + WDTHOLD;
UART0_Init(); // 串口初始化
_EINT();
DelayNS(50);//等待GPS信息
while (1)
{
GsmSend();//按键发送//KEY1
}
}
评论0