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

📄 stccoinboxnew.c

📁 投币按摩椅驱动程序
💻 C
📖 第 1 页 / 共 5 页
字号:

	//////////////////////////////////////////////
	else
	{
		if(nKeyProcessStep2 == 1)
	{	
			nKeyLowLevel2Counter++;
			nKeyHighLevel2Counter = 0;
			if(nKeyLowLevel2Counter>=KeyMaxLowLevel)
			{ 
				nKeyProcessStep2 =2;
				nKeyLowLevel2Counter =KeyMaxLowLevel;
				bKeyPermit = TRUE;
				bEtime=0; 
			}
		}
	if(nKeyProcessStep2 == 2)nKeyProcessStep2 = 0;

	}	
 }
/////////////////////////////////////////////////////////////
	if(bCoinReceiveA == 1)      //上电处理//&&(bKeyCoin==0)
	{
		nHigh_CheckCoinCounter++;
		nLow_CheckCoinCounter = 0;
		if(nHigh_CheckCoinCounter>= MaxHighLevel)
		{
			nCheckLevelStep = 1;
		
			nHigh_CheckCoinCounter = MaxHighLevel;
		}
			bPulseSecondCount=1;
			//nPulseDelayTime=0;
	}
	else
	{/*
		if(bPulseSecondCount)
				{
					nPulseTime[nPulseSort++]=nPulseDelayTime;
					if(nPulseSort>=2)nPulseSort=0;
					bPulseSecondCount=0;
					bPulseFirstCount=1;				
				 if(nPulseDelayTime<500){bGsmLed=0;bCoin_Permit=0;nPulseDelayTime=0;}
		    else {bGsmLed=1;bCoin_Permit=1;nPulseDelayTime=0;}//nSpareMoney++;
		    if(nPulseDelayTime>2000){bGsmLed=1;bPulseFirstCount=0;nPulseDelayTime=0;}		 			
				}	
				*/
		if(nCheckLevelStep == 1)
		{
			nLow_CheckCoinCounter++;
			nHigh_CheckCoinCounter = 0;
			if(nLow_CheckCoinCounter>= MaxLowLevel)
			{		    								  		  	
			  nCheckLevelStep =2;
			  bKeyCoin=1;
			  if(nLow_CheckCoinCounter >= MaxLowLevel){nLow_CheckCoinCounter=MaxLowLevel;}///////  ////
                          
			}
		}
	}
	
	
	if((bPassWordPermit)||(bSetPassWordPermit))PassWordDelay++;
	else PassWordDelay=0;
// if(Delay_ms)Delay_ms--;
//ET0=1;
}	
////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////
void Send (void)
{
  TI=0;  
 ////////////////////////////////////////////////////////
 switch(T_Status)
 {
  case 0: bRest=0;bTxd0_SendPermit=0;bSetState=0;bSendCommand=0; break; 
  case 1: if(Init_BackTime>=16)
          {Senddata1 = 0x35; Senddata2 = backtime[Init_BackTime-16];}
          else{Senddata1=0x34; Senddata2 = backtime[Init_BackTime];}
          bTxd0_SendPermit=1; SendTime=0; bGetCommand=0; bAckCommand=0; break;  
  case 2: if(bGetCommand==1){T_Status=6; SendTime=0; bTxd0_SendPermit=0;break;}
          if(SendTime>500){T_Status=1;bTxd0_SendPermit=0;SendTime=0;break;}
          else{T_Status=2;bTxd0_SendPermit=0;break;}
  case 3: if(SendTime>5000){Senddata1=0x38;Senddata2=0x30;bTxd0_SendPermit=1;break;}
          else{bTxd0_SendPermit=0;break;}
  case 4: Senddata1=0x36;Senddata2=0x30;bTxd0_SendPermit=1;bSetState=0;bRest=1;bSendCommand=0;break; 
  case 5: if(bSetState==1){T_Status=7; SendTime=0; bTxd0_SendPermit=0;break;}
          if(SendTime>500){T_Status=4;bTxd0_SendPermit=0;SendTime=0;break;}
          else{T_Status=5;bTxd0_SendPermit=0;break;}
  case 7: if(bSendCommand==1)
          {T_Status=0;bTxd0_SendPermit=0;SendTime=0;bSendCommand=0;bERR=0;bRun = Off;break;}
          if(SendTime>=32000){bTxd0_SendPermit=0;bRun = Off;SendTime=32000; bERR=1;break;}   //E //r
          else{T_Status=7;bTxd0_SendPermit=0;break;}
  case 6: if(bAckCommand==1)
          {T_Status=3;bTxd0_SendPermit=0;bAckCommand=0;SendTime=0; break;}  
          if(SendTime>=18000){T_Status=3;SendTime=0; bTxd0_SendPermit=0; break;}   //E //r
          else{T_Status=6;bTxd0_SendPermit=0;break;}
  default: bTxd0_SendPermit=0; break; 
  }
// else{T_Status=0;bTxd0_SendPermit=0;Transmit_Point=6;}
 ////////////////////////////////////////////////////////
 if(bTxd0_SendPermit==1)
 {
  switch(Transmit_Point)
     {
      case 0: SBUF= SOI;Transmit_Point++;break;
      case 1: SBUF= DATAH;Transmit_Point++;break;
      case 2: SBUF= DATAL;Transmit_Point++;break;
      case 3: SBUF= Senddata1;Transmit_Point++;break;
      case 4: SBUF= Senddata2;Transmit_Point++;break;
      case 5: SBUF= EOI;Transmit_Point++;break;
      default:Transmit_Point=6;if((Senddata1==0x34)||(Senddata1==0x35)){T_Status=2;}
                  if(Senddata1==0x38)
                    { 
                     T_Status=3;
                     if(SendTime>5000){SendTime=0;}
                    }
                  if(Senddata1==0x36){T_Status=5;}
                      bTxd0_SendPermit=0;break;
      }
  }
}
/////////////////////////////////////////////////////////
void Receive(void)
{
RI=0;
 switch (R_Status)
 {     
  case 0: if(SBUF==SOI){R_Status=1;break;}
          else{R_Status=0;break;}
  case 1: if(SBUF==GETH){R_Status=2;break;} 
          else{R_Status=0;break;}      
  case 2: if(SBUF==GETL){R_Status=3;Rxd0_DataLength=0;break;} 
          if(SBUF==M_AckCommand){R_Status=5;Rxd0_DataLength=0;break;}  /// 
          if(SBUF==M_SetState){R_Status=7;Rxd0_DataLength=0;break;}
          else{R_Status=0;break;} 
  case 3: if(SBUF==EOI){R_Status=0;Rxd0_DataLength=0;Transmit_Point=0;Send();break;}
          Rxd0_DataLength++; 
          if(Rxd0_DataLength>21){R_Status=0;Rxd0_DataLength=0;break;}
          else{R_Status=3;break;}
  case 5: if(SBUF==DATAACK){R_Status=6;Transmit_Point=0;break;} 
          else{R_Status=0;break;}  
  case 6: 
          if(SBUF==M_GetCommand)   
          {bGetCommand=1; R_Status=0;break;} 
          if(SBUF==M_SetState)  
          {
          bSetState=1;
          R_Status=0;
          break;
          }
          if(SBUF==M_AckCommand)  
          {
           bAckCommand=1; 
           R_Status=0;
           break;
           } 
          if(SBUF==S_SendCommand)  {bSendCommand=1; R_Status=0;break;}
          if(SBUF==EOI){R_Status=0;break;Rxd0_DataLength=0;}
          Rxd0_DataLength++;
          if(Rxd0_DataLength>21){R_Status=0;Rxd0_DataLength=0;break;}
          break;
 case 7: Rxd0_RecBuffer[Rxd0_DataLength]=SBUF;
          if(Rxd0_RecBuffer[Rxd0_DataLength]==EOI)
          {
          	R_Status=0;
          	Rxd0_DataLength=0;
          	bLcdDisplayChange=TRUE;
          	break;
          }
          Rxd0_DataLength++; 
          if(Rxd0_DataLength>21){R_Status=0;Rxd0_DataLength=0;break;}
          else{R_Status=7;break;}
  }
  ReceiveTime=0x0000;
  }                
/////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
void CommRX() interrupt 4 using 3  
{
if(TI==1){Send();}
if(RI==1){Receive();}
}
////////////////////////////////////////////////////////////////////////
Timer1() interrupt 3 using 3
{ 
 F_TM=1;  
}
void Rxd0_RecProcss(void)
{
 for(Transmit_Point=0;Transmit_Point<21;Transmit_Point++)
 {
	if((Rxd0_RecBuffer[Transmit_Point] >= 0x30) && (Rxd0_RecBuffer[Transmit_Point] <= 0x39)) Rxd0_RecBuffer[Transmit_Point] -= 0x30 ;
	else if((Rxd0_RecBuffer[Transmit_Point] >= 0x41) && (Rxd0_RecBuffer[Transmit_Point] <= 0x46)) Rxd0_RecBuffer[Transmit_Point] -= 0x37 ;
	else Rxd0_RecBuffer[Transmit_Point] -= 0x57 ;
  }
 /* 
  for(Transmit_Point=0;Transmit_Point<11;Transmit_Point++)
  {	
  	(Lcddis[Transmit_Point]&=LcddisMask[Transmit_Point]) ;//| ((Rxd0_RecBuffer[2*Transmit_Point]<<4)|Rxd0_RecBuffer[2*Transmit_Point+1]) ;
  }
 */
 Lcddis[1]&=LcddisMask[1];
 Lcddis[2]&=LcddisMask[2];
 Lcddis[3]&=LcddisMask[3];
 Lcddis[10]&=LcddisMask[10]; 
Lcddis[1]|=(Rxd0_RecBuffer[0]<<4)&0xf0;//(Rxd0_RecBuffer[0]<<4)&0xff;
Lcddis[2]=((Rxd0_RecBuffer[2]<<4)|Rxd0_RecBuffer[3]);
Lcddis[3]=((Rxd0_RecBuffer[4]<<4)|Rxd0_RecBuffer[5]);
Lcddis[3]|=0x80;
Lcddis[10]=((Rxd0_RecBuffer[6]<<4)|Rxd0_RecBuffer[7]);
Lcddis[10]|=0x08;
 /*
Lcddis[1]=((Rxd0_RecBuffer[0]<<4)|Rxd0_RecBuffer[1]);//(Rxd0_RecBuffer[0]<<4)&0xff;//
Lcddis[2]=((Rxd0_RecBuffer[2]<<4)|Rxd0_RecBuffer[3]);//Rxd0_RecBuffer[1];//
Lcddis[3]=((Rxd0_RecBuffer[4]<<4)|Rxd0_RecBuffer[5]);//Rxd0_RecBuffer[2];//
Lcddis[3]|=0x80;
Lcddis[10]=((Rxd0_RecBuffer[6]<<4)|Rxd0_RecBuffer[7]);//Rxd0_RecBuffer[3];//
Lcddis[10]|=0x08;
*/
  if(T_Status!=0)
  {
  //Lcddis[1]|=0xf0;
  //Lcddis[2]=0xff;
  //Lcddis[3]=0xff;
 // Lcddis[10]=0xff;
  }
  //Lcddis[8]|=Lcddis[8];
  //Lcddis[9]|=Lcddis[9];
 /////////////////////////////////////////
}
///////////////////////////////////////////////////////////////
//xt
void Init_BaudRate0()
{
  ES=0;
  SCON=0X50;
	T2CON=0x30;  //用定时器2做串口1的波特率发生器
	RCAP2H=0xff;   // 11.0592M晶振下,baud rate=57600 
	RCAP2L=0xfa;
	TH2=0xff;   // 11.0592M晶振下,baud rate=57600 
	TL2=0xfa;
  PS=1;//串口中断优先
	//TR0 = 1;
	TR2=1;
	ES=1;
	// EA=1;
}
   //串口1的设置
  
void Init_BaudRate1()
   {   // ES=0;
        TMOD = 0x21;
	      TH1=(256-96); //9600bps 就是 1000000/9600=104.167微秒 执行的timer是
// 104.167*11.0592/12= 96 
        TL1=TH1;
        PCON=0X80;
        //PS=1;
        TR1=0; //在发送或接收才开始使用
        TF1=0; 
        ET1=1;//Enable interrupt
        //SCON=0X50;	
				EA  = 1;  //EA = 1;			
   }
/*
uchar Ascii_to_Hex(uchar str)
{ 
	uchar temp1,temp2;
	temp1=((str/10)&0x0f)<<4;
	temp2=(str%10)&0x0f;
	temp1+=temp2;
 return temp1;
}
*/
/*
uchar Hex_to_Ascii(uchar str)
{ 
	uchar temp1,temp2;
	temp1=((str&0xf0)>>4)*10;
	temp2=(str&0x0f);
	temp1+=temp2;
 return temp1;
}
*/
/*
 //单片机串口1发送Gsm信息
/////////////////////function: send string////////////////////////////////////////
void GsmSend(uchar  * str)
{
  uchar  nCnt=0;
  uchar  len=strlen(str);
	for(nCnt=0;nCnt<len;nCnt++) PSendChar(str[nCnt]);
  
 // for(nCnt=0;nCnt<len;nCnt++)PSendChar(*str++);
}
*/
/*
uchar sendAtcommad(char *atstr)
{
//    uint xdata nCnt;
	uchar xdata value=0;

    memset(TXD1_Buffer,0,sizeof(TXD1_Buffer));
// 	TXD1_SendWrite=TXD1_SendRead=0;
    GsmSend(atstr);
  return 0;   
}
 */
/*
uchar find_OK_ERROR()
{

  char nCnt;
  for(nCnt=0;nCnt<140;nCnt++)
  {
    if(RcvBuf[nCnt]==0) return 2;
    if(strncmp(RcvBuf+nCnt,"OK",2)==0)  return 0;
    else if(strncmp(RcvBuf+nCnt,"ERROR",5)==0)  return 1;
  }
 
 return 1;// return 3;
}
*/
/////////////手机模块初始化函数///////////////////////////////////////////////////////////
//cut off power 
/*
void power_down(void)
{
PD=1;	//power off
bStartTC35iPermit=1;
while(bStartTC35iPermit)bGsmLed =0;
 PD=0;
 bGsmLed =1;
}
*/
//turn on GSM engine using Ignition line IGT
void start_tc35(void)
{
IGT=0;
bDelay20mS=1;
while(bDelay20mS)bGsmLed =0;
IGT=1;
bStartTC35iPermit=1;
while(bStartTC35iPermit){bGsmLed =0;WDR();}  //  
IGT=0;
bGsmLed =1;
//bStartTC35iPermit=1;
//while(bStartTC35iPermit);
}
/*
void AT_Send(void)              
{
	uchar xdata nCnt;//,error_counter
	//error_counter=0;
	
	//while(1)
	//{
	for(nCnt=0;nCnt<3;nCnt++) PSendChar(Command_At[nCnt]);
     //  GsmSend(Command_At);
		//for(nCnt=0;nCnt<9;nCnt++)	
		// RXD1_Buffer[nCnt]=PGetChar();
//		if(RXD1_Buffer[5]=='O'&&RXD1_Buffer[6]=='K') break;
	//	else if(error_counter++<10)	Delay_1S();
			//	else deal_with_error();
	//}
	
}
*/
/***********AT+cmgf*************
set preferred message format:text mode or PDU mode
In PDU mode, a complete SMS Message including all header information is passed
as a binary string (in hexadecimal format, so only this set of characters is allowed :
{‘0’,’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’, ‘A’, ‘B’,’C’,’D’,’E’,’F’} ). Each pair or characters is converted to
a byte (ex : ‘41’ is converted to the ASCII character ‘A’, whoes ASCII code is 0x41 or 65).
In Text mode, every commands and responses are in ASCII characters.
********************************/
/*
void	AT_cmgf(void)
{ uchar nCnt;
	
	for(nCnt=0;nCnt<10;nCnt++) PSendChar(Command_Cmgf[nCnt]);
  //GsmSend(Command_Cmgf);
}
void AT_cops(void)
{  uchar nCnt;
	for(nCnt=0;nCnt<10;nCnt++) PSendChar(Command_cops[nCnt]);
}
void AT_ateo(void)
{  uchar nCnt;
	for(nCnt=0;nCnt<5;nCnt++) PSendChar(Command_ateo[nCnt]);
}

void AT_cmee(void)
{	 uchar nCnt;
	for(nCnt=0;nCnt<10;nCnt++) PSendChar(Command_cmee[nCnt]);
}
*/
void start_GSM()
 {
 
	//power_down();
	start_tc35();
	//for(nCnt=0;nCnt<11;nCnt++) Delay_1S();
	//AT_Send();
//  delay_160ms();
	//AT_cmgf();
	// delay_160ms();
//	AT_cops();
	// delay_160ms();
//	AT_ateo();
 //PSendChar("AT+COPS=0\r");  //GSM network operator is to be selected automatically
	//delay_160ms();
	//AT_cmee();
//	delay_160ms();
	//led2_close();//start complete
// return 0;
 }
/*
void AT_cmgd(uchar index_high,uchar index_low)
{
  	uchar idata nCnt;
  	uchar byte_length=0;
  	bit high_flag=(index_low!='0');
	 high_flag=(index_high!='0');
		 if(high_flag)
		    byte_length=17;
		  else
		    byte_length=16;
	 for(nCnt=0;nCnt<8;nCnt++) PSendChar(Command_Cmgd[nCnt]);	    
		//GsmSend(Command_Cmgd);
        if(high_flag)		 
        PSendChar(index_high);         
        PSendChar(index_low);      	
      	PSendChar('\r');      	
delay_160ms();
}
*/
void    AT_cnmi(void)
{  uchar nCnt;
	for(nCnt=0;nCnt<18;nCnt++) PSendChar(Command_Cnmi[nCnt]); 
}

void GSM_Tansmit_WorkRecord()
  {  uchar nCnt=0;
  uchar temp;
    for(nCnt=0;nCnt<10;nCnt++) PSendChar(Command_Cmgf[nCnt]);
       bStartTC35iPermit=1;
      while(bStartTC35iPermit){WDT_CONTR=0x34;bGsmLed =0;}
      bGsmLed =1;
    for(nCnt=0;nCnt<8;nCnt++) PSendChar(Command_Cmgs[nCnt]);
     for(nCnt=0;nCnt<15;nCnt++)
     {// if(SmsMangerCenterCode[nCnt]!=0x0d)
     	 PSendChar(SmsMangerCenterCode[nCnt]);
     	// else return;
     }  
      bStartTC35iPermit=1;
      while(bStartTC35iPermit){WDT_CONTR=0x34;bGsmLed =0;}
      bGsmLed =1;
     PSendChar(';');
     PSendChar('5');
     PSendChar(',');
    // P8563_gettime();
      temp=(uchar)g8563_Store[6];//年
    	temp=(((temp>>4)&0x0f)+0x30);
    	PSendChar(temp);
    	temp=(uchar)g8563_Store[6]&0x0f;
    	temp+=0x30;
    	PSendChar(temp);
    	temp=(uchar)g8563_Store[5];//月
    	temp=(((temp>>4)&0x0f)+0x30);
    	PSendChar(temp);
    	temp=(uchar)g8563_Store[5]&0x0f;
    	temp+=0x30;
    	PSendChar(temp);    
    	temp=(uchar)g8563_Store[3];//日
    	temp=(((temp>>4)&0x0f)+0x30);
    	PSendChar(temp);
    	temp=(uchar)g8563_Store[3]&0x0f;
    	temp+=0x30;
    	PSendChar(temp); 
    	temp=(uchar)g8563_Store[2];//小时
    	temp=(((temp>>4)&0x0f)+0x30);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -