⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 我自己做的一个手柄机的程序
💻 C
📖 第 1 页 / 共 2 页
字号:
#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 + -