亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? myuart.cpp

?? RC522完整程序無需修改可放心使用
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include  "My_head.h"
#include  "MyProtocol.h"
#include  "carddef.h"
#include  "DS_addr.h"
/****************************************************/
#define   DE_RE           P3_6
#define   UARTBUF_SIZE    180
//===================================================
BYTE  code   TieUpBus_Ordors[4]={0xAA,0X55,0x55,0xAA};

BYTE  xdata  uartSbuf[UARTBUF_SIZE];
BYTE  pdata  uartRbuf[UARTBUF_SIZE];
static  BYTE  uartRbuf_count = 0;
bit   my_ti = FALSE;
bit   dowith_receive_flag = FALSE;

BYTE  idata  receive_head[4];
BYTE  receive_head_counte =0;
BYTE  receive_timer = 0;
BYTE  enble_send_count = 0;
//===================================================
void  Uart_Int(void) interrupt 4 using 2
{
   bit  no_my_data_flag= FALSE;
   register  BYTE  ch;
   if(RI)
     {
	  RI = FALSE;enble_send_count = 2;
	  ch = SBUF;
	  /**************** test ***********
      if(uartRbuf_count<UARTBUF_SIZE)
	    {
	     uartRbuf[uartRbuf_count++] = ch;
	    }
  	  if(uartRbuf_count>ORDOR_PLACE)
	    {
	     dowith_receive_flag = TRUE; //this is a test!
		}
	  /**********************************/
	  if(!receive_timer)
	    {
		 receive_timer=2;
		 receive_head_counte=0;
		}
      if(receive_timer<3)
	    {
	     receive_head[receive_head_counte]=ch;
		 if(++receive_head_counte>3)
	  	   {
            if(  (receive_head[0]!=TieUpBus_Ordors[0])
			   ||(receive_head[1]!=TieUpBus_Ordors[1])
		       ||(receive_head[2]!=TieUpBus_Ordors[2])
			   ||(receive_head[3]!=TieUpBus_Ordors[3]))
			   {
			    receive_timer=0;
				//receive_head_counte=0;
			   }
			else{
			     receive_timer=45;
				 uartRbuf_count=0;
			     //receive_head_counte=0;
				 //dowith_receive_flag = TRUE; //for test.
			    }
		   }
		 return;
		}
	  if((receive_timer<10)||(receive_timer>45))
	    {
		 receive_timer=0;
		 return;
		}
	  //=================================================================
      if(uartRbuf_count<UARTBUF_SIZE)
	    {
	     uartRbuf[uartRbuf_count++] = ch;
		 ch = uartRbuf_count-1;
	    }
	  else ch = uartRbuf_count;
	  switch(ch)
	  {
	   case  ASP_PLACE:
		     if(uartRbuf[ch] != DOWN_ASP)
			  {
				no_my_data_flag = TRUE;
			  }
			 break;
	    case TYPE_PLACE:
			 if(uartRbuf[ch] != equip_addr.ntype)
			  {
				no_my_data_flag = TRUE;
			  }
  			 //dowith_receive_flag = TRUE; //this is a test!
			 break;
		case NUMBER_PLACE1:
  		      if(uartRbuf[ch] != ((BYTE *)(&equip_addr.number_addr))[0])
			  {
				no_my_data_flag = TRUE;
			  }
			  break;
		 case NUMBER_PLACE2:
			  if(uartRbuf[ch] != ((BYTE *)(&equip_addr.number_addr))[1])
			  {
				no_my_data_flag = TRUE;
			  }
			  break;
         case DATLENGTH_PLACE:
			  if((uartRbuf[ch]<FRAMELENGTH_MIN)||(uartRbuf[ch]>FRAMELENGTH_MAX))
			  {
				no_my_data_flag = TRUE;
			  }
			  break;
		 default:
			  if((ch>ORDOR_PLACE) && (ch>=uartRbuf[DATLENGTH_PLACE]))
		 	  {
				 REN = FALSE;  //for run-time!
		         dowith_receive_flag = TRUE;
			  }
			  break;
	   }
      if(no_my_data_flag)
	   {
		 REN=FALSE;  //for run-time!
         receive_timer=1;
		 receive_head_counte=0; //MUST!!
		 //uartRbuf_count=0;
	   }
	  /********************************/
     }
   if(TI){my_ti=TI=FALSE;}
}


/*************************************************************/
/*       uart_send                                           */
/*************************************************************/
void  Uart_Putc(BYTE  ch)
{
   while(my_ti);
   SBUF = ch;
   my_ti= TRUE;
}


bit  SendStr(BYTE *ptr,int  count)  //"BYTE"  modiry to "int" by 2004-6-18
{                                   //"void"  modify "bit"  by  2004-07-08
  int  i;
  //if(count>512)return;
  Set_Timer20ms(5);
  while(enble_send_count)if(!Get_Timer20ms())return(FALSE);
  REN   = FALSE;
  DE_RE = 0;
  TB8   = 1;
  for(i=0;i<count;i++)
    {
	 //Save_My_TestData(ptr[i]);
	 Uart_Putc(ptr[i]);
	}
  delay_ms(2);//must for RS485!
  DE_RE = 1;
  REN   = TRUE;
  return(TRUE);
}


/*************************************************************/
void  UartBuf_Clear(void)
{
   BYTE   i=0;
   for(;i<UARTBUF_SIZE;i++)uartRbuf[i]=0;
   uartRbuf_count=0;
   dowith_receive_flag = FALSE;
   my_ti = FALSE;
}


void  Uart_Init(void)
{
   TR1   = 0;
   IP   |= 0X10;   // ES優先級1
   //SCON  = 0x50;   // 8位UART,波特率可變 REN=1
   SCON  = 0xF0,TB8=1;   // 9位UART,波特率可變 REN=1,摸停止位。
   TMOD &= 0x0f;   // 方式寄存器
   TMOD |= 0x20;   // T1設為自動再裝入8位計數器,或者分成2個8位計數器
   ES    = 1;      //(ES為串行口中斷允許位)
   TH1=TL1=0xFA;   // 0xfA--9600bps(22.1184Mhz)
   PCON |= 0x80;   // PCON.7為波特率加倍,PCON的其他位為掉電控制位
                   // 2004-7-21改為波特率19200
   TR1 = 1;        // TCON |= 0x40;

#if(MCU_IC==SST564)  //EXTRAM = AUXR^2;
   AUXR  &= ~0x02;   //0: Internal Expanded RAM access.
#elif(MCU_IC==SM5964)//OME = SCONF^2;
   SCONF |= 0x02;    //1: default is enable.
#endif

   DE_RE = 1;
   UartBuf_Clear();
   //delay_ms(1);
}


/*---------------------------------------------------*/
bit   close_dis_led = FALSE;
bit   Check_Uart_Event(void)
{
	 if(dowith_receive_flag)
	   {
	    PostMessage(MY_UART_EVENT,0);
        dowith_receive_flag = FALSE;
		return(TRUE);
	   }
	 if(receive_timer && !close_dis_led)
	   {
		 Dis_Comming_Led(TRUE);//0-close;1--open.
		 close_dis_led = TRUE; //for time and spi bus.
	   }
	 else if(close_dis_led)
	   {
	     Dis_Comming_Led(FALSE);//0-close;1--open.
	     close_dis_led = FALSE; //for time and spi bus.
	   }
	 return(FALSE);
}


bit  Check_BCCsum(BYTE *buf)
{
  BYTE len,BCC_sum;//ii;
  for(BCC_sum=0,len=0;len<buf[DATLENGTH_PLACE];len++)
   {
     BCC_sum ^= buf[len];
   }
  if(~BCC_sum != buf[len])return(FALSE); //CRCERR;
  return(TRUE);
}


void  Set_BCCsum(BYTE *buf,BYTE nCount)
{
    BYTE   ii;
    for(buf[nCount]=0,ii=0;ii<nCount;ii++)
	{
	  buf[nCount]^=buf[ii];
	}
	buf[nCount]=~buf[nCount];
}


BYTE  Do_Uart_Event(BYTE dat)  //這樣可以把uartSbuf節約出來?
{
   BYTE  len;//,BCC_sum;//ii;
   //while(enble_send_count);
   //SendStr(receive_head,4);
   //SendStr(uartRbuf,uartRbuf_count); //for test.
   //SendStr(&equip_addr.ntype,1);
   //SendStr((BYTE *)(&equip_addr.number_addr),2);
   //for(len=0;len<uartRbuf_count;len++)uartSbuf[len]=uartRbuf[len];
   memcpy(uartSbuf,uartRbuf,uartRbuf_count);
   len=uartRbuf_count,uartRbuf_count = 0;
   receive_timer  = 45; //for continue!
   REN = TRUE;
   if(uartSbuf[FRAMECODE_PLACE]&THELAST_FRAME)
   {
     receive_timer = 0; //for renew  the head str!
   }
   /***********this is a test!!************************
   Set_BCCsum(uartSbuf,uartSbuf[DATLENGTH_PLACE]);
   SendStr(uartSbuf,len);//REN = TRUE;
   /***************************************************/
   if(!Check_BCCsum(uartSbuf))return(FALSE);//CRCERR;
   //SendStr("OK",2);
   switch(uartSbuf[ORDOR_PLACE])
   {
	case CHECKEQUIP_ORDOR://         0x50
         Do_CheckEquip();
		 break;
	case SetNumber_ORDOR://          0x52
	     Do_SetNumber();
	     break;
	case SetConParam_ORDOR://        0X53
	     Do_SetConParam();
		 break;
	case GetConParam_ORDOR://        0x55
	     Do_GetConParam();
		 break;
	case ClearConParam_ORDOR://      0x57
	     Do_ClearConParam();
	     break;
	case SetBh_Money_ORDOR://  	     0x58
         Do_SetBh_Money();
		 break;
	case GetBh_Money_ORDOR://        0x59
         Do_GetBh_Money();
		 break;
	case SendDcpeoples_ORDOR://	     0x5A
	     Do_SendDcpeoples();
	     break;
	case SetCardClass_Para_ORDOR://  0x5C
         Do_SetCardClass_Para();
		 break;
	case GetCardClass_Para_ORDOR://  0x5D
	     Do_GetCardClass_Para();
	     break;
	case SetSystemTime_ORDOR://      0x60
	     Do_SetSystemTime();
		 break;
   	case GetSystemTime_ORDOR://      0x61
	     Do_GetSystemTime();
		 break;
	case SendCardStatus_ORDOR://     0x62 
	     //Do_SendCardStatus();
		 break;
	case SetLostCardTime_ORDOR://    0x63
	     //Do_SetLostCardTime();
		 break;
	case GetLossCardsTime_ORDOR://   0x64
	     //Do_GetLossCardsTime();
		 break;
	case GetCardStatus_ORDOR://      0x65
	     //Do_GetCardStatus();
         break;
	case ReadConData_ORDOR://        0x70
         Do_ReadConData();
		 break;
	case SetConRecode_ORDOR://       0x71
	     Do_SetConRecode();
		 break;
	case SendCardGain_ORDOR://       0x72
	     //Do_SendCardGain();
		 break;
	case GetCardGain_ORDOR://        0x73
         //Do_GetCardGain();
	     break;
	case GetConStatusInfo_ORDOR://     0x75
         Do_GetConStatusInfo();
		 break;
	case GetEquipVersionInfo_ORDOR://  0x76
         Do_GetEquipVersionInfo();
		 break;
	/**************************************/
	case GetCardLevel_ORDOR://         0x80
	     //Do_GetCardLevel();
		 break;
	case SetSeedCard_ORDOR://          0x81
	     //Do_SetSeedCard();
	     break;
	case GetUserCardInfo_ORDOR://      0x82
	     //Do_GetUserCardInfo();
		 break;
	case SetUserCardInfo_ORDOR://      0x83
         //Do_SetUserCardInfo();
		 break;
	/**************************************/
	case SetOpUserInfo_ORDOR://        0x90
	     Do_SetOpUserInfo();
		 break;
	case GetCurOpUserInfo://           0x91
	     Do_GetCurOpUserInfo();
		 break;
	case GetOpUserInfo://              0x92
	     //Do_GetOpUserInfo();
		 break;
	default:break;
   }

   dat=dat;
   return(TRUE); //len
}


void   Do_CheckEquip(void)
{
    BYTE  nCount            = ASP_PLACE;
    uartSbuf[ASP_PLACE]     = UP_ASP;
	uartSbuf[TYPE_PLACE]    = equip_addr.ntype;
	uartSbuf[NUMBER_PLACE1] = ((BYTE*)&(equip_addr.number_addr))[0];
	uartSbuf[NUMBER_PLACE2] = ((BYTE*)&(equip_addr.number_addr))[1];
	//uartSbuf[DATLENGTH_PLACE]=
	//uartSbuf[FRAMECODE_PLACE]= THELAST_FRAME;//保持原來下傳的不變。
	uartSbuf[ORDOR_PLACE]    = EQUIPANSWER_ORDOR;//0x51,所有重要數據都對方需要回答
    nCount   = DATAST_PLACE;
	uartSbuf[nCount++] = Equip_CurStatus; //最近運行情況。
	uartSbuf[DATLENGTH_PLACE] = nCount;

    Set_BCCsum(uartSbuf,nCount);
    if(!SendStr(uartSbuf,nCount+1))Dis_Err(COMMERR);
}


void  Do_SetConParam(void)
{
    BYTE  nCount = ASP_PLACE;
    BYTE  dat = SUCCESS;
	if(uartSbuf[DATLENGTH_PLACE]-DATAST_PLACE<sizeof(Con_param_Info))
	{
	  dat = FORMAT_ERR;
	}
    else
    {
	  memcpy(&con_param_Info,&uartSbuf[DATAST_PLACE],sizeof(Con_param_Info));
      dat=Saveparam_To_Mem();
	}
    uartSbuf[ASP_PLACE]     = UP_ASP;
	uartSbuf[TYPE_PLACE]    = equip_addr.ntype;
	uartSbuf[NUMBER_PLACE1] = ((BYTE*)&(equip_addr.number_addr))[0];
	uartSbuf[NUMBER_PLACE2] = ((BYTE*)&(equip_addr.number_addr))[1];
	//uartSbuf[DATLENGTH_PLACE]=
	//uartSbuf[FRAMECODE_PLACE]= THELAST_FRAME;//保持原來下傳的不變。
	uartSbuf[ORDOR_PLACE]    = AckSetGet_ORDOR;
    nCount   = DATAST_PLACE;
	uartSbuf[nCount++] = dat;
	uartSbuf[DATLENGTH_PLACE] = nCount;

    Set_BCCsum(uartSbuf,nCount);
    if(!SendStr(uartSbuf,nCount+1))Dis_Err(COMMERR);

	if(dat==SUCCESS)
	{
	   //Dis_ConMode();
	   do_buzzer(BUZZER_WAIT);
	}
}


void  Do_ClearConParam(void)
{
    BYTE  nCount,dat = SUCCESS;
	if(uartSbuf[DATLENGTH_PLACE]-DATAST_PLACE != 0)
	{
	  dat = FORMAT_ERR;
	}
    else
    {
      dat=ClearConParam_From_Mem(); //恢復到初始出廠狀態。
	}
    uartSbuf[ASP_PLACE]     = UP_ASP;
	uartSbuf[TYPE_PLACE]    = equip_addr.ntype;
	uartSbuf[NUMBER_PLACE1] = ((BYTE*)&(equip_addr.number_addr))[0];
	uartSbuf[NUMBER_PLACE2] = ((BYTE*)&(equip_addr.number_addr))[1];
	//uartSbuf[DATLENGTH_PLACE]=
	//uartSbuf[FRAMECODE_PLACE]= THELAST_FRAME;//保持原來下傳的不變。
	uartSbuf[ORDOR_PLACE]    = AckSetGet_ORDOR;
    nCount   = DATAST_PLACE;
	uartSbuf[nCount++] = dat;
	uartSbuf[DATLENGTH_PLACE] = nCount;

    Set_BCCsum(uartSbuf,nCount);
    if(!SendStr(uartSbuf,nCount+1))Dis_Err(COMMERR);

	if(dat==SUCCESS)
	{
	   //Dis_ConMode();
	   do_buzzer(BUZZER_WAIT);
	}
}


void  Do_GetConParam(void)
{
    BYTE  nCount = ASP_PLACE;
    uartSbuf[ASP_PLACE]     = UP_ASP;
	uartSbuf[TYPE_PLACE]    = equip_addr.ntype;
	uartSbuf[NUMBER_PLACE1] = ((BYTE*)&(equip_addr.number_addr))[0];
	uartSbuf[NUMBER_PLACE2] = ((BYTE*)&(equip_addr.number_addr))[1];
	//uartSbuf[DATLENGTH_PLACE]=
	//uartSbuf[FRAMECODE_PLACE]= THELAST_FRAME;//保持原來下傳的不變。
	uartSbuf[ORDOR_PLACE]    = AckSetGet_ORDOR;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品亚洲精品国产欧美| 久草精品在线观看| 美日韩一级片在线观看| 成人综合在线视频| 在线电影一区二区三区| 中文字幕av一区 二区| 日本一道高清亚洲日美韩| 成人综合在线网站| 精品久久国产老人久久综合| 亚洲高清免费视频| 91视频国产资源| 国产亚洲综合性久久久影院| 视频一区免费在线观看| 在线精品视频一区二区三四| 欧美国产精品中文字幕| 韩日av一区二区| 欧美精品1区2区| 亚洲一区二区三区在线播放| 波多野结衣的一区二区三区| 国产精品黄色在线观看| 国产福利一区二区三区| 精品久久久影院| 久久91精品久久久久久秒播| 91精品国产综合久久精品性色| 日韩毛片一二三区| 99精品欧美一区| 中文字幕一区日韩精品欧美| 国产成人aaaa| 国产精品卡一卡二| 成人午夜av电影| 欧美国产欧美亚州国产日韩mv天天看完整 | 一区二区三区欧美久久| 福利电影一区二区| 久久久亚洲高清| 国产一区二区三区电影在线观看| 欧美一级xxx| 日本欧美一区二区| 精品免费国产二区三区 | 欧美高清一级片在线| 一区二区三区四区不卡在线| 色综合久久88色综合天天| 国产精品天美传媒| 成人免费毛片嘿嘿连载视频| 国产精品不卡在线观看| 成人av第一页| 夜色激情一区二区| 欧美日韩另类一区| 免费在线观看一区二区三区| 精品国产91亚洲一区二区三区婷婷| 久久精品久久99精品久久| 欧美精品一区二区久久婷婷| 国产精品影音先锋| 亚洲日本在线看| 欧美日韩国产综合一区二区| 免费三级欧美电影| 国产精品嫩草影院av蜜臀| 在线观看国产一区二区| 亚洲va国产天堂va久久en| 欧美成人高清电影在线| 成人精品一区二区三区四区| 亚洲黄色尤物视频| 日韩精品一区二区在线| 成人一区二区三区在线观看 | 欧美色综合网站| 九九热在线视频观看这里只有精品| 亚洲国产高清在线| 在线电影国产精品| 丁香另类激情小说| 亚洲午夜电影在线| 国产欧美一区二区精品秋霞影院| 色婷婷av一区二区三区软件| 久久国产三级精品| 最新欧美精品一区二区三区| 欧美一区二区三区视频免费播放| 福利电影一区二区三区| 午夜精品久久久久久久久久| 久久久久久久综合日本| 欧美日韩不卡一区| 91网站最新网址| 国产在线精品免费av| 亚洲最新视频在线播放| 国产欧美日韩在线观看| 欧美一区二区视频免费观看| 99视频精品免费视频| 国产一区二区在线看| 亚洲最大的成人av| 国产精品天美传媒| 久久久一区二区三区| 欧美一区二区三区影视| 欧洲另类一二三四区| 国产91精品露脸国语对白| 秋霞国产午夜精品免费视频| 亚洲欧美日韩国产一区二区三区| 久久亚洲影视婷婷| 日韩网站在线看片你懂的| 欧美性色综合网| 日本久久电影网| av电影天堂一区二区在线 | 伦理电影国产精品| 天天综合天天做天天综合| 国产精品高清亚洲| 国产欧美日韩在线看| 久久久久久久久久美女| 欧美va亚洲va| 精品国产一区二区三区四区四| 欧美日韩dvd在线观看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 不卡av在线网| 成人高清免费观看| 成人一区在线看| 成人免费毛片aaaaa**| jizzjizzjizz欧美| 99精品一区二区三区| 本田岬高潮一区二区三区| 成人激情电影免费在线观看| 不卡一卡二卡三乱码免费网站| 国产精品99久久久久久久女警 | 26uuu亚洲综合色欧美| 精品国产乱子伦一区| 久久久久久久综合狠狠综合| 国产欧美日产一区| 中文字幕乱码久久午夜不卡| 国产女主播一区| 国产精品进线69影院| 一区二区在线免费| 污片在线观看一区二区| 蜜芽一区二区三区| 精品一区二区久久久| 国产成人av影院| 99久久国产综合精品色伊| 在线观看一区不卡| 91精品欧美一区二区三区综合在 | 亚洲免费观看高清完整版在线观看熊| 亚洲视频在线一区观看| 亚洲一区二区三区视频在线播放 | www成人在线观看| 国产精品成人在线观看| 亚洲欧美日韩中文播放| 亚洲一本大道在线| 精品一区二区免费在线观看| 9色porny自拍视频一区二区| 色一区在线观看| 日韩三级伦理片妻子的秘密按摩| 26uuu成人网一区二区三区| 国产精品免费视频观看| 亚洲成在人线免费| 国产福利一区在线| 欧美日韩欧美一区二区| 久久精品亚洲乱码伦伦中文| 亚洲午夜视频在线| 狠狠狠色丁香婷婷综合久久五月| 99久久精品一区| 日韩免费一区二区三区在线播放| 国产精品高潮呻吟久久| 蜜臀av性久久久久蜜臀aⅴ流畅| 成人免费av在线| 777亚洲妇女| 国产精品久久久久一区| 日本成人中文字幕| 色综合天天做天天爱| 久久亚洲二区三区| 亚洲国产精品天堂| 成人性生交大片免费| 欧美大片拔萝卜| 亚洲国产视频直播| 懂色av一区二区三区免费观看| 欧美视频完全免费看| 亚洲欧美综合色| 国产在线视频精品一区| 欧美日韩免费观看一区二区三区| 国产精品欧美极品| 极品少妇一区二区三区精品视频| 欧美色网一区二区| 1024成人网| 成人午夜电影久久影院| 久久综合色鬼综合色| 日韩精品久久理论片| 欧洲精品在线观看| 国产精品人妖ts系列视频| 精品一区二区免费| 日韩欧美在线综合网| 视频一区二区三区中文字幕| 在线中文字幕一区| **网站欧美大片在线观看| 国产成人99久久亚洲综合精品| 精品国产一二三| 美女脱光内衣内裤视频久久网站| 欧美在线观看视频一区二区 | 中文在线一区二区| 国产真实乱偷精品视频免| 日韩欧美视频在线| 日本视频在线一区| 91精品福利在线一区二区三区 | 色综合久久九月婷婷色综合| 国产三级精品三级| 大白屁股一区二区视频| 国产日韩综合av| 成a人片国产精品| 亚洲欧美自拍偷拍色图| 91在线精品秘密一区二区|