📄 main.c
字号:
{
pBuf0[n] = i;
}
while(1) // 等待缓冲区里的数据发送完毕
{
if(nTX0_Flag == 1) break;
}
nTX0_Len = PackData(UART0_TX_BUF,pBuf0,100);
IFG1 |= UTXIFG0;// 设置中断标志,进入发送中断程序
}
// 数据已经发送完毕
Delay_ms(100);
// 发送+++命令,从传送数据状态到命令状态
nTX0_Len = DataToCommand(UART0_TX_BUF);
nComm_Command = 2;
nDial = 0;
IFG1 |= UTXIFG0; // 设置中断标志,进入发送中断程序
}//if(nComm == 1 && nDial == 1)
// 发送+++命令,从传送数据状态到命令状态
if(nComm_Command == 2)
{
Delay_ms(1000);
nTX0_Len = DataToCommand(UART0_TX_BUF);
IFG1 |= UTXIFG0; // 设置中断标志,进入发送中断程序
Delay_ms(1000);
}//if(nComm_Command == 2)
// 发送挂断命令
if(nComm_Command == 3)
{
Delay_ms(1000);
nTX0_Len = SetATH0(UART0_TX_BUF);
IFG1 |= UTXIFG0; // 设置中断标志,进入发送中断程序
Delay_ms(1000);
}//if(nComm_Command == 3)
//处理来自MODEM的响应
if(nRev_UART0 == 1)
{
nRev_UART0 = 0;
for(i = 0;i < nRX0_Len;i++) UART0_RX_Temp[i] = UART0_RX_BUF[i];
nRes_UART0 = ProcessUART0(UART0_RX_Temp,nRX0_Len);
nRX0_Len = 0;
switch(nRes_UART0)
{
case 0:
{
break;
}
case 1:
{
nDial = 1;
nBusy = 1;
break;
}
case 2:
{
break;
}
case 3:
{
if(nComm_Command == 3)
{
nBusy = 0;
nDial = 0;
nComm_Command = 0;
}
nBusy = 0;
nBusy = 0;
break;
}
case 4:
{
if(nComm_Command == 0)
{
// 0表示发送初始化命令,1表示初始化完毕
nComm_Command = 1;
nBusy = 0;
}
if(nComm_Command == 2)
{
// 2表示发送+++,3表示收到+++响应
nComm_Command = 3;
// 数据已经发送完毕
Delay_ms(1000);
// 发送ATH0命令,挂断线路
nTX0_Len = SetATH0(UART0_TX_BUF);
// 设置中断标志,进入发送中断程序
IFG1 |= UTXIFG0;
Delay_ms(1000);
break;
}
if(nComm_Command == 3)
{
nBusy = 0;
nDial = 0;
nComm_Command = 0;
nComm = 0;
// 停止给MODEM供电
for(i = 0;i < 5;i++) P2OUT &= ~(BIT0);
for(i = 300;i > 0;i--) ; // 延迟一点时间
break;
}
}
case 5: // 没有接电话线的情况
{
nBusy = 0;
nDial = 0;
nComm_Command = 1;
break;
}
case 6: // 对方挂断的情况
{
nBusy = 0;
nDial = 0;
nComm_Command = 1;
break;
}
case 7:
{
// 2表示发送+++,3表示收到+++响应
nComm_Command = 3;
// 数据已经发送完毕
Delay_ms(1000);
// 发送ATH0命令,挂断线路
nTX0_Len = SetATH0(UART0_TX_BUF);
// 设置中断标志,进入发送中断程序
IFG1 |= UTXIFG0;
Delay_ms(1000);
break;
}
case 255:
{
nBusy = 0;
break;
}
case -1:
{
nBusy = 0;
break;
}
default:
break;
}
}//if(nRev_UART0 == 1)
}
}
////////////////////////////////////////
// 处理来自串口 0 的接收中断
#if __VER__ < 200
interrupt [UART0RX_VECTOR] void UART0_RX_ISR(void)
#else
#pragma vector=UART0RX_VECTOR
__interrupt void UART0_RX_ISR(void)
#endif
{
//接收来自的数据
UART0_RX_BUF[nRX0_Len_temp] = RXBUF0;
nRX0_Len_temp += 1;
if(UART0_RX_BUF[nRX0_Len_temp - 1] == 13)
{
nRX0_Len = nRX0_Len_temp;
nRev_UART0 = 1;
nRX0_Len_temp = 0;
}
}
////////////////////////////////////////
// 处理来自串口 0 的发送中断
#if __VER__ < 200
interrupt [UART0TX_VECTOR] void UART0_TX_ISR(void)
#else
#pragma vector=UART0TX_VECTOR
__interrupt void UART0_TX_ISR(void)
#endif
{
if(nTX0_Len != 0)
{
// 表示缓冲区里的数据没有发送完
nTX0_Flag = 0;
TXBUF0 = UART0_TX_BUF[nSend_TX0];
nSend_TX0 += 1;
Delay_us(5);
if(nSend_TX0 >= nTX0_Len)
{
nSend_TX0 = 0;
nTX0_Len = 0;
nTX0_Flag = 1;
}
}
}
///////////////////////////////////////
// 处理来自串口 1 的接收中断
#if __VER__ < 200
interrupt [UART1RX_VECTOR] void UART1_RX_ISR(void)
#else
#pragma vector=UART1RX_VECTOR
__interrupt void UART1_RX_ISR(void)
#endif
{
UART1_RX_BUF[nRX1_Len_temp] = RXBUF1; //接收来自的数据
nRX1_Len_temp += 1;
if(UART1_RX_BUF[nRX1_Len_temp - 1] == 13)
{
nRX1_Len = nRX1_Len_temp;
nRev_UART1 = 1;
nRX1_Len_temp = 0;
}
}
///////////////////////////////////////
// 处理来自串口 1 的发送中断
#if __VER__ < 200
interrupt [UART1TX_VECTOR] void UART1_TX_ISR(void)
#else
#pragma vector=UART1TX_VECTOR
__interrupt void UART1_TX_ISR(void)
#endif
{
if(nTX1_Len != 0)
{
nTX1_Flag = 0; // 表示缓冲区里的数据没有发送完
TXBUF1 = UART1_TX_BUF[nSend_TX1];
nSend_TX1 += 1;
if(nSend_TX1 >= nTX1_Len)
{
nSend_TX1 = 0;
nTX1_Len = 0;
nTX1_Flag = 1;
}
}
}
///////////////////////////////////////
// 处理来自端口 1 的中断
#if __VER__ < 200
interrupt [PORT1_VECTOR] void COMM_ISR(void)
#else
#pragma vector=PORT1_VECTOR
__interrupt void COMM_ISR(void)
#endif
{
if(P1IFG & BIT5)
{
nComm = 1;
nComm_Command = 0;
P1IFG &= ~(BIT5); // 清除中断标志位
Delay_us(100);
}
}
//////////////////////////////////////////////
// 定时器中断,完成 ADC 转换
#if __VER__ < 200
interrupt [TIMERA0_VECTOR] void TimerA_ISR(void)
#else
#pragma vector=TIMERA0_VECTOR
__interrupt void TimerA_ISR(void)
#endif
{
int i;
ADC12CTL0 &= ~ENC; // 关闭转换
ADC_BUF0[nADC_Count] = ADC12MEM0; // 读出转换结果
ADC_BUF1[nADC_Count] = ADC12MEM1; // 读出转换结果
ADC_BUF2[nADC_Count] = ADC12MEM2; // 读出转换结果
ADC_BUF3[nADC_Count] = ADC12MEM3; // 读出转换结果
ADC_BUF4[nADC_Count] = ADC12MEM4; // 读出转换结果
ADC_BUF5[nADC_Count] = ADC12MEM5; // 读出转换结果
ADC_BUF6[nADC_Count] = ADC12MEM6; // 读出转换结果
ADC_BUF7[nADC_Count] = ADC12MEM7; // 读出转换结果
nADC_Count += 1;
if(nADC_Count == 30)
{
nADC_Flag = 1; //设置标志
nADC_Count = 0;
// 将数据倒向数据缓冲区
for(i = 0;i < 30;i++) ADC_BUF_Temp0[i] = ADC_BUF0[i];
for(i = 0;i < 30;i++) ADC_BUF_Temp1[i] = ADC_BUF1[i];
for(i = 0;i < 30;i++) ADC_BUF_Temp2[i] = ADC_BUF2[i];
for(i = 0;i < 30;i++) ADC_BUF_Temp3[i] = ADC_BUF3[i];
for(i = 0;i < 30;i++) ADC_BUF_Temp4[i] = ADC_BUF4[i];
for(i = 0;i < 30;i++) ADC_BUF_Temp5[i] = ADC_BUF5[i];
for(i = 0;i < 30;i++) ADC_BUF_Temp6[i] = ADC_BUF6[i];
for(i = 0;i < 30;i++) ADC_BUF_Temp7[i] = ADC_BUF7[i];
}
ADC12CTL0 |= ENC + ADC12SC; // 开启转换
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -