📄 main.c
字号:
#include <MSP430X14X.h>
#include "modem.h"
#include "uart.h"
#include "process.h"
#include "const.h"
#include "sm.h"
#include "ad_init.h"
//定义全局变量
static char nComm;
int *pFlash;
//定义串口操作变量
char nRev_UART0; // 串口 0 的接收标志
char nRev_UART1; // 串口 1 的接收标志
char UART0_TX_BUF[112]; // 串口 0 的发送缓冲区
char UART0_RX_BUF[20]; // 串口 0 的接收缓冲区
char UART1_TX_BUF[112]; // 串口 1 的发送缓冲区
char UART1_RX_BUF[50]; // 串口 1 的接收缓冲区
char pBuf0[512];
static int nTX1_Len;
static char nRX1_Len;
char nRX1_Len_temp;
static int nTX0_Len;
static int nRX0_Len;
int nRX0_Len_temp;
static char nTX0_Flag;
static char nTX1_Flag;
int nSend_TX0;
int nSend_TX1;
static char nComm_Command;
char nBusy;
char nDial;
// 模拟采集变量
int nADC_Flag;
int nADC_Count;
// 模拟采集缓冲区
int ADC_BUF_Temp0[30];
int ADC_BUF0[30];
int ADC_BUF_Temp1[30];
int ADC_BUF1[30];
int ADC_BUF_Temp2[30];
int ADC_BUF2[30];
int ADC_BUF_Temp3[30];
int ADC_BUF3[30];
int ADC_BUF_Temp4[30];
int ADC_BUF4[30];
int ADC_BUF_Temp5[30];
int ADC_BUF5[30];
int ADC_BUF_Temp6[30];
int ADC_BUF6[30];
int ADC_BUF_Temp7[30];
int ADC_BUF7[30];
void main(void)
{
int i;
int n;
int nTemp;
char nRes_UART1;
char nRes_UART0;
char PhoneNumber[8];
char UART1_RX_Temp[50];
char UART0_RX_Temp[30];
char nPhoneOK;
int nPhone;
long row;
WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗
_DINT(); // 关闭中断
nBusy = 0;
nDial = 0;
nComm_Command = 0;
nSend_TX1 = 0;
nSend_TX0 = 0;
nTX1_Flag = 0;
nTX0_Flag = 0;
nTX0_Len = 0;
nTX1_Len = 0;
nRX1_Len = 0;
nRX0_Len = 0;
nRev_UART1 = 0;
nRev_UART0 = 0;
nComm = 0;
/////////////////////////////////
// 初始化
Init_CLK();
Init_Process();
Init_UART0();
Init_UART1();
Init_TimerA(4000);
_EINT(); // 打开中断
// 读配置信息
nPhone = ReadPhoneNum(PhoneNumber);
// 等待配置信息
if(nPhone == 2)
{
for(;;)
{
if(nRev_UART1 == 1)
{
nRev_UART1 = 0;
for(i = 0;i < nRX1_Len;i++)
UART1_RX_Temp[i] = UART1_RX_BUF[i];
nRes_UART1 = ProcessUART1(UART1_RX_Temp,nRX1_Len);
switch(nRes_UART1)
{
case 0:
{
SetOK(UART1_TX_BUF,&nTX1_Len);
nRX1_Len = 0;
IFG2 |= UTXIFG1; // 设置中断标志,进入发送中断程序
break;
}
case 1:
{
QueryPhone(UART1_TX_BUF,&nTX1_Len);
nRX1_Len = 0;
IFG2 |= UTXIFG1; // 设置中断标志,进入发送中断程序
break;
}
case 2:
{
nTemp = 0;
nTemp = SetPhone(UART1_RX_Temp);
if(nTemp == 1)
{
SetOK(UART1_TX_BUF,&nTX1_Len);
nPhone = (char)(UART1_RX_Temp[12] - 0x30);
for(i = 0;i < 8;i++)
PhoneNumber[i] = UART1_RX_Temp[13 + i];
nPhoneOK = 1;
}
else
{
SetError(UART1_TX_BUF,&nTX1_Len);
}
nRX1_Len = 0;
IFG2 |= UTXIFG1; // 设置中断标志,进入发送中断程序
break;
}
default:break;
}
}
if(nPhoneOK == 1) break;
}
}
row = 1;
for(;;)
{
//进行存储处理
if(nADC_Flag == 1)
{
nADC_Flag = 0;
n = 0;
//1通道
//通道号
pBuf0[0] = 1;
for(i = 0;i < 30;i++)
{
//高字节
pBuf0[2 * i] = ADC_BUF_Temp0[i] / 256;
//低字节
pBuf0[2 * i + 1] = (ADC_BUF_Temp0[i] & 0xFF);
}
//通道结束标志
pBuf0[61] = 0xaa;
n += 62;
//2通道
pBuf0[n + 0] = 1;
for(i = 0;i < 30;i++)
{
//高字节
pBuf0[n + 2 * i] = ADC_BUF_Temp1[i] / 256;
//低字节
pBuf0[n + 2 * i + 1] = (ADC_BUF_Temp1[i] & 0xFF);
}
//通道结束标志
pBuf0[n + 61] = 0xaa;
n += 62;
//3通道
pBuf0[n + 0] = 1;
for(i = 0;i < 30;i++)
{
//高字节
pBuf0[n + 2 * i] = ADC_BUF_Temp2[i] / 256;
//低字节
pBuf0[n + 2 * i + 1] = (ADC_BUF_Temp2[i] & 0xFF);
}
//通道结束标志
pBuf0[n + 61] = 0xaa;
n += 62;
//4通道
pBuf0[n + 0] = 1;
for(i = 0;i < 30;i++)
{
//高字节
pBuf0[n + 2 * i] = ADC_BUF_Temp3[i] / 256;
//低字节
pBuf0[n + 2 * i + 1] = (ADC_BUF_Temp3[i] & 0xFF);
}
//通道结束标志
pBuf0[n + 61] = 0xaa;
n += 62;
//5通道
pBuf0[n + 0] = 1;
for(i = 0;i < 30;i++)
{
//高字节
pBuf0[n + 2 * i] = ADC_BUF_Temp4[i] / 256;
//低字节
pBuf0[n + 2 * i + 1] = (ADC_BUF_Temp4[i] & 0xFF);
}
//通道结束标志
pBuf0[n + 61] = 0xaa;
n += 62;
//6通道
pBuf0[n + 0] = 1;
for(i = 0;i < 30;i++)
{
//高字节
pBuf0[n + 2 * i] = ADC_BUF_Temp5[i] / 256;
//低字节
pBuf0[n + 2 * i + 1] = (ADC_BUF_Temp5[i] & 0xFF);
}
//通道结束标志
pBuf0[n + 61] = 0xaa;
n += 62;
//7通道
pBuf0[n + 0] = 1;
for(i = 0;i < 30;i++)
{
//高字节
pBuf0[n + 2 * i] = ADC_BUF_Temp6[i] / 256;
//低字节
pBuf0[n + 2 * i + 1] = (ADC_BUF_Temp6[i] & 0xFF);
}
//通道结束标志
pBuf0[n + 61] = 0xaa;
n += 62;
//8通道
pBuf0[n + 0] = 1;
for(i = 0;i < 30;i++)
{
//高字节
pBuf0[n + 2 * i] = ADC_BUF_Temp7[i] / 256;
//低字节
pBuf0[n + 2 * i + 1] = (ADC_BUF_Temp7[i] & 0xFF);
}
//通道结束标志
pBuf0[n + 61] = 0xaa;
n += 62;
}
//写入数据
if(row >= 10000) row = 1;
PageWrite(0,row,pBuf0);
row += 1;
//进行通信处理
//首先初始化MODEM
if(nComm == 1 && nComm_Command == 0 && nBusy == 0)
{
// 将p1.0设置成高电平
P2OUT |= BIT0;
for(i = 0;i < 3;i++)
{
nTX0_Len = ModemInit(UART0_TX_BUF);
nBusy = 1;
IFG1 |= UTXIFG0; // 设置中断标志,进入发送中断程序
Delay_ms(500);
}
}//if(nComm == 1 && nComm_Command == 0 && nBusy == 0)
// 拨号
if(nComm == 1 && nDial == 0 && nComm_Command == 1 && nBusy == 0)
{
nBusy = 1;
nTX0_Len = SetPhoneNum(UART0_TX_BUF,nPhone,PhoneNumber);
IFG1 |= UTXIFG0; // 设置中断标志,进入发送中断程序
}//if(nComm == 1 && nDial == 0 && nComm_Command == 1 && nBusy == 0)
// 往MODEM传送数据
if(nComm == 1 && nDial == 1)
{
for(i = 0;i < 50;i++)
{
for(n = 0;n < 100;n++)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -