📄 main.c
字号:
#include <MSP430X44X.h>
#include "TC35.h"
#include "uart.h"
#include "common.h"
char RES_OK[]={'O','K'};
char data[]={"6D4E535759275B66"};//济南大学 Unicode码
char phonenumber[]={'1','5','8','6','3','7','9','8','0','4','1'};
char nRev_UART0=0;
int nTX1_Len;
char nRX1_Len;
char nRX1_Len_temp;
int nTX0_Len;
int nRX0_Len;
int nRX0_Len_temp;
char nTX0_Flag;
char nTX1_Flag;
int nSend_TX0=0;
char UART0_TX_BUF[200]; // 串口 0 的发送缓冲区
char UART0_RX_BUF[200]; // 串口 0 的接收缓冲区
char aa[]={">"};//发送时的响应标志
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗
P1DIR|=BIT0;
P1OUT&=~BIT0;
_DINT(); // 关闭中断
Init_UART0();
//打开中断
_EINT();
// TC35初始化
nTX0_Len = ATE(UART0_TX_BUF);
// 设置中断标志,进入发送中断程序
IFG1 |= UTXIFG0;
delay(10000);
nTX0_Len = CMGF(UART0_TX_BUF,0);
// 设置中断标志,进入发送中断程序
IFG1 |= UTXIFG0;
delay(10000);
nTX0_Len = CSMP(UART0_TX_BUF,8);
IFG1 |= UTXIFG0;
delay(10000);
sendSms(phonenumber,11,data,8,0);//长度是按一个字节为一个算的
P1OUT|=BIT0;
_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
}
////////////////////////////////////////
// 处理来自串口 0 的接收中断
#pragma vector=UART0RX_VECTOR
__interrupt void UART0_RX_ISR(void)
{
char chrTemp;
//接收来自的数据
UART0_RX_BUF[nRX0_Len_temp] = RXBUF0;
nRX0_Len_temp += 1;
chrTemp = UART0_RX_BUF[nRX0_Len_temp - 1];
if((chrTemp == 13) || (chrTemp == 10))
{
//接收到一帧信号
nRX0_Len = nRX0_Len_temp;
nRev_UART0 = 1;
nRX0_Len_temp = 0;
}
}
////////////////////////////////////////
// 处理来自串口 0 的发送中断
#pragma vector=UART0TX_VECTOR
__interrupt void UART0_TX_ISR(void)
{
if(nTX0_Len != 0)
{
// 表示缓冲区里的数据没有发送完
nTX0_Flag = 0;
TXBUF0 = UART0_TX_BUF[nSend_TX0];
nSend_TX0 += 1;
delay(5);
if(nSend_TX0 >= nTX0_Len)
{
//数据发送完毕
nSend_TX0 = 0;
nTX0_Len = 0;
nTX0_Flag = 1;
}
}
}
void sendSms(char pPhone[],int phonelen,char pData[],int nLen,int mode)
{
int i;
int len1;
int len2;
char buf1[10];
char buf2[100]={0};
int res;
if(mode == 1)
{
//TEXT模式
packSms_text(pPhone,phonelen,pData,nLen,
&len1,&len2,buf1,buf2);
}
else
{
//PDU模式
packSms_pdu(pPhone,phonelen,pData,nLen,
&len1,&len2,buf1,buf2);
}
//
//发送头信息
for(i = 0;i < len1;i++)
{
UART0_TX_BUF[i] = buf1[i];
}
//设置发送数据的长度
nTX0_Len = len1;
//设置中断标志,进入发送中断程序
IFG1 |= UTXIFG0;
//等待 > 响应
delay(10000);
while(1)
{
//接收到数据
if(nRev_UART0 == 1)
{
for(i = 0;i < nRX0_Len;i++)
{
buf1[i] = UART0_RX_BUF[i];
}
buf1[i]='\0';
len1 = nRX0_Len;
nRX0_Len = 0;
nRev_UART0 = 0;
break;
}
}
//判断是否是 > 响应
res = getSendResponse(buf1,aa);
if(res == 1)
{ buf2[0]=0x30;
//发送数据信息
for(i = 0;i < len2;i++)
{
UART0_TX_BUF[i] = buf2[i];
}
nTX0_Len = len2;
//设置中断标志,进入发送中断程序
IFG1 |= UTXIFG0;
}
//等待响应
//接收到数据
while(1)
{
if(nRev_UART0 == 1)
{
for(i = 0;i < nRX0_Len;i++)
{
buf1[i] = UART0_RX_BUF[i];
}
len1 = nRX0_Len;
nRX0_Len = 0;
nRev_UART0 = 0;
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -