📄 main.c
字号:
#include"function.h"
#include<string.h>
/**************************************************************
** 函数名称:main
** 函数功能:主函数
** 输入参数:无
** 返回参数:无
** 调用模块:
** 全局变量:无
** 备注: 无
**************************************************************/
void main(void)
{
UINT8 CLCC_SEND_CNT, SEND_COUNT, i = 0, PAGE = 0, KB_VAL,temp,
loop, NUM = 0, LOCATION, LIST_CNT, kbBuff[1] = 0;
initCpu();
clearUartBuff();
ignitMC();
initLcd();
dispBYD();
STATUS_OK = 0;
while(!STATUS_OK)
{
// REC_FLAG = 0;
// while(!REC_FLAG); //查看信息接收是否完全
LIST_CNT = UART_COUNT;
i = 0;
i = Index_BF(UART_BUFF, LIST_CNT, sysstart);//字符匹配
if(i)
{
STATUS_OK = 1;
}
} //检查是否有SYSSTART 启动信号
STATUS_OK = 0; // 信号强弱的检测
while(!STATUS_OK)
{
clearUartBuff();
sendAtCmd(atcsq);
REC_FLAG = 0;
delayMs(20);
//while(!REC_FLAG); // 等待有OK
LIST_CNT = UART_COUNT;
i = 0;
dispIcons();
if(BUFF_FULL)
i = Index_BF(UART_BUFF, LIST_CNT, ok);
if(i)
{
REN = 0;
STATUS_OK =0X01;
temp = i - 6;
temp = UART_BUFF[temp];
if(temp == '0')
{
LIST_CNT = i - 8;
clearScreen();
dispNoCard();
}
else
LIST_CNT = i - 9;
kbBuff[0] = UART_BUFF[LIST_CNT--];
LIST_CNT = UART_BUFF[LIST_CNT];
REN = 1;
if(kbBuff[0] > 47)
{
kbBuff[0] -= 48;
// if(kbBuff[0] < 0x0a)
// {
// dispBigFontStr(0x00, 0x12, kbBuff);
i = kbBuff[0];
// }
}
else i = 0;
if(LIST_CNT > 47)
{
LIST_CNT -= 48;
kbBuff[0] = LIST_CNT;
// if(LIST_CNT < 0x0a)
// dispBigFontStr(0x00, 0x4, kbBuff); //显示信号值0-->31
}
else LIST_CNT = 0;
// if((LIST_CNT <0X0A) &&(i < 0x0a))
{
LIST_CNT = LIST_CNT*10 + i;
LIST_CNT >>= 1;
LIST_CNT /= 3;
LIST_CNT++;
if(LIST_CNT > 5)
LIST_CNT = 5;
i = 0;
while(i < LIST_CNT)
dispIcon(icon[i++]);
}
} //处理发送at+csqme的返回信息
}
delayMs(50);
clearUartBuff();
sendAtCmd(snfs);
delayMs(20);
STATUS_OK = 0;
while(!STATUS_OK)
{
clearUartBuff();
sendAtCmd(saic);
// REC_FLAG = 0;
delayMs(30);
// while(!REC_FLAG); //查看是否收到信息已经满
LIST_CNT = UART_COUNT;
i = 0;
if(BUFF_FULL)
i = Index_BF(UART_BUFF, LIST_CNT, ok);
if(i)
{
STATUS_OK = 1;
}
} //处理发送at+saic
STATUS_OK = 0;
while(!STATUS_OK)
{
delayMs(50);
clearUartBuff();
sendAtCmd(cmer);
REC_FLAG = 0;
delayMs(40);
//while(!REC_FLAG); // 等待有OK
LIST_CNT = UART_BUFF_SIZE;
i = 0;
if(BUFF_FULL)
i = Index_BF(UART_BUFF, LIST_CNT, signal);
if(i)
STATUS_OK = 1; //处理发送at+cme的返回信息
}
clearUartBuff();
CLCC_SEND_CNT = 0;
while(1)
{
/******************************************************************************
查看是否有RING 以及显示号码
******************************************************************************/
if(STATUS_FLAG)
{
STATUS_FLAG = 0;
i = 0;
LIST_CNT = UART_BUFF_SIZE;
i = Index_BF(UART_BUFF, LIST_CNT, ring);
if(i)
{
BUSY_FLAG = 1;
CALL_FLAG = CALL_IN;
if(CLCC_SEND_CNT < 1)
{
clearUartBuff();
sendAtCmd(clcc);
delayMs(40);
// while(!REC_FLAG);
LIST_CNT = UART_COUNT;
i = Index_BF(UART_BUFF, LIST_CNT, clccFlag);
if(i)
{
CLCC_SEND_CNT++;
REN = 0;
clearScreen();
i += 14;
dispComingCall();
kbBuff[0] = 0;
NUM = 0;
while(NUM < 11)
{
NUM++;
kbBuff[0] = UART_BUFF[i++] - 48;
if(kbBuff[0] < 0x0a)
{
PAGE = RAM_PAGE;
RAM_PAGE = dispBigFontStr(PAGE, X_AXIS, kbBuff);
if((RAM_PAGE != PAGE) ||(X_AXIS > 106))
{
X_AXIS =0x05;
RAM_PAGE += 3;
}
else
X_AXIS += 12;
}
}
clearUartBuff();
REN = 1;
RAM_PAGE = 0X02;
X_AXIS = 0X05;
}
}
}
}
LIST_CNT = UART_BUFF_SIZE;
// LOCATION = Index_BF(UART_BUFF,LIST_CNT,sounder);
SEND_COUNT = Index_BF(UART_BUFF,LIST_CNT,call0);
// LIST_CNT = UART_BUFF[++LOCATION];
KB_VAL = UART_BUFF[++SEND_COUNT];
if((SEND_COUNT) && (KB_VAL == '0'))
// if(((LOCATION) || (SEND_COUNT)) &&
// ((LIST_CNT == '0') || (KB_VAL == '0')))
{
BUSY_FLAG = 0;
clearScreen();
dispBYD();
CLCC_SEND_CNT = 0;
ATVTS_FLAG = 0;
CALL_FLAG = CALL_OUT;
clearUartBuff();
X_AXIS = 4;
}
else
if((SEND_COUNT) && (KB_VAL == '1') && (TALK_FLAG))
{
clearPage(0);
clearPage(1);
TALK_FLAG = 0;
dispTalking();
ATVTS_FLAG = 1;
}
if((CHECK_SIGNAL_FLAG) &&(!BUSY_FLAG)) //实时检测信号与卡
{
CHECK_SIGNAL_FLAG = 0;
STATUS_OK = 0; // 信号强弱的检测
while(!STATUS_OK)
{
clearUartBuff();
sendAtCmd(atcsq);
REC_FLAG = 0;
delayMs(20);
//while(!REC_FLAG); // 等待有OK
LIST_CNT = UART_COUNT;
i = 0;
dispIcons();
if(BUFF_FULL)
i = Index_BF(UART_BUFF, LIST_CNT, ok);
if(i)
{
REN = 0;
STATUS_OK =0X01;
temp = i - 6;
temp = UART_BUFF[temp];
if(temp == '0')
{
LIST_CNT = i - 8;
clearScreen();
dispNoCard();
}
else
LIST_CNT = i - 9;
kbBuff[0] = UART_BUFF[LIST_CNT--];
LIST_CNT = UART_BUFF[LIST_CNT];
REN = 1;
if(kbBuff[0] > 47)
{
kbBuff[0] -= 48;
// if(kbBuff[0] < 0x0a)
// {
// dispBigFontStr(0x00, 0x12, kbBuff);
i = kbBuff[0];
// }
}
else i = 0;
if(LIST_CNT > 47)
{
LIST_CNT -= 48;
kbBuff[0] = LIST_CNT;
// if(LIST_CNT < 0x0a)
// dispBigFontStr(0x00, 0x4, kbBuff); //显示信号值0-->31
}
else LIST_CNT = 0;
// if((LIST_CNT <0X0A) &&(i < 0x0a))
{
LIST_CNT = LIST_CNT*10 + i;
LIST_CNT >>= 1;
LIST_CNT /= 3;
LIST_CNT++;
if(LIST_CNT > 5)
LIST_CNT = 5;
i = 0;
while(i < LIST_CNT)
dispIcon(icon[i++]);
}
} //处理发送at+csqme的返回信息
delayMs(10);
clearUartBuff();
sendAtCmd(atscks);
delayMs(10);
i = Index_BF(UART_BUFF, UART_COUNT, scks);
if(i)
{
REN = 0;
i = i + 5;
if(UART_BUFF[i] == '0')
{
clearScreen();
dispNoCard();
}
REN = 1;
}
REN = 1;
}
clearUartBuff();
REN = 1;
} //定时检测信号强弱并显示
/******************************************************************************
键盘扫描 接电话或者打电话
******************************************************************************/
KB_VAL = 0X00;
KB_VAL = keyScan();
if(KB_VAL)
{
KB_VAL = getKeyVal(KB_VAL);
if((ATVTS_FLAG) && (KB_VAL < 12))
{
temp = numLib[KB_VAL];
LIST_CNT = 0;
while(LIST_CNT < 7)
{
SBUF = vts[LIST_CNT];
LIST_CNT++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -