Index: yc_7816/yc_7816.h
===================================================================
--- /YC3121_SDK/fw/sdk/yc_7816/yc_7816.h	(revision 570)
+++ /YC3121_SDK/fw/sdk/yc_7816/yc_7816.h	(working copy)
@@ -9,10 +9,11 @@
 #ifndef __YC_ISO7816_H__
 #define __YC_ISO7816_H__
 
-#include "..\..\core\yc3121.h"
+#include "yc3121.h"
+#include "yc_gpio.h"
 
-//#define DEBUG_7816_EMV
-//#define DEBUG_7816
+#define DEBUG_7816_EMV
+#define DEBUG_7816
 
 
 typedef struct 
@@ -27,7 +28,7 @@
 	GPIO_DEF io;
 	GPIO_DEF reset;
 	GPIO_DEF detect;
-	uint8_t detect_state;		//未插卡时，卡到位IO电平状态，高为1、低为0
+	uint8_t detect_state;		//鏈彃鍗℃椂锛屽崱鍒颁綅IO鐢靛钩鐘舵侊紝楂樹负1銆佷綆涓0
 }SCI_PIN_Def;
 
 extern SCI_PIN_Def sci_pin;
@@ -40,9 +41,10 @@
 #define 	CONTACT_CLK		    4
 #define 	SYS_CLK			    48
 
-#define 	CONTACT_RESET_L_CNT				42000*SYS_CLK/CONTACT_CLK	//(40000-45000) 复位引脚保持低电平持续时间
-#define 	CONTACT_ATR_RFB_TIME_CNT		47000*SYS_CLK/CONTACT_CLK	//42019(400-40000)	等待IC回应第一个ATR字节的最大时间
-#define 	CONTACT_ATR_RAB_TIME_CNT		(20164*SYS_CLK/CONTACT_CLK)*372	//19200etu内复位信息应答完成(TS - LAST)
+#define 	CONTACT_RESET_L_CNT				42000*SYS_CLK/CONTACT_CLK          //(40000-45000) 澶嶄綅寮曡剼淇濇寔浣庣數骞虫寔缁椂闂
+#define 	CONTACT_ATR_RFB_TIME_CNT		47000*SYS_CLK/CONTACT_CLK	       //42019(400-40000)	绛夊緟IC鍥炲簲绗竴涓狝TR瀛楄妭鐨勬渶澶ф椂闂
+#define 	CONTACT_ATR_RAB_TIME_CNT		(20164*SYS_CLK/CONTACT_CLK)*372  //19200etu鍐呭浣嶄俊鎭簲绛斿畬鎴(TS - LAST)
+
 
 #define 	ATR_SIZE_MAX                0x33
 #define	 	REC_SIZE_MAX                0x107 //5+256+2
@@ -52,7 +54,7 @@
 #define 	PROTOCOL_T0                 0
 #define 	PROTOCOL_T1                 1
 
-//错误码定义
+//閿欒鐮佸畾涔
 #define 	OK                          0
 #define 	NOK                         1
 
@@ -124,37 +126,37 @@
 #define     GET_4_BITS_H(a)            (((a) >>4)& 0x0F)
 #define     GET_4_BITS_L(a)            ((a)& 0x0F)
 
-#define  R_BLK                                 0x80      /*R-BLK的高2位*/
-#define  S_BLK                                 0xC0      /*S-BLK的高2位*/
-#define  S_RQS_MSK                             0x3F      /*S-BLK request  低6位mask*/
-#define  S_RSP_MSK                             0x23      /*S-BLK response 低6位mask*/
-#define  IFSC                                  0xFE      /*信息域size*/
-#define  HALF_FIFO                             8         /*半空*/
-#define  M_BIT                                 0x20      /*表示chain状态*/
-#define  NS_BIT                                0x40      /*I-BLK序列号位*/
-#define  NR_BIT                                0x10      /*R-BLK序列号位*/
-
-#define  ERR_PARITY                            1         /*奇偶校验错*/
-#define  ERR_CHKSUM                            2         /*校验出错*/
-#define  ERR_PCB                               4         /*协议控制字节错*/
-#define  ERR_LEN                               8         /*长度字节错*/
-#define  ERR_RELVNT_S                          16        /*有S request, 无s response*/
-#define  ERR_FF								   32		/*接收到数据长度为FF*/
-/*7816发送接收*/
+#define  R_BLK                                 0x80      /*R-BLK鐨勯珮2浣*/
+#define  S_BLK                                 0xC0      /*S-BLK鐨勯珮2浣*/
+#define  S_RQS_MSK                             0x3F      /*S-BLK request  浣6浣峬ask*/
+#define  S_RSP_MSK                             0x23      /*S-BLK response 浣6浣峬ask*/
+#define  IFSC                                  0xFE      /*淇℃伅鍩焥ize*/
+#define  HALF_FIFO                             8         /*鍗婄┖*/
+#define  M_BIT                                 0x20      /*琛ㄧずchain鐘舵*/
+#define  NS_BIT                                0x40      /*I-BLK搴忓垪鍙蜂綅*/
+#define  NR_BIT                                0x10      /*R-BLK搴忓垪鍙蜂綅*/
+
+#define  ERR_PARITY                            1         /*濂囧伓鏍￠獙閿*/
+#define  ERR_CHKSUM                            2         /*鏍￠獙鍑洪敊*/
+#define  ERR_PCB                               4         /*鍗忚鎺у埗瀛楄妭閿*/
+#define  ERR_LEN                               8         /*闀垮害瀛楄妭閿*/
+#define  ERR_RELVNT_S                          16        /*鏈塖 request, 鏃爏 response*/
+#define  ERR_FF								   32		/*鎺ユ敹鍒版暟鎹暱搴︿负FF*/
+/*7816鍙戦佹帴鏀*/
 #define RECV                                  1
 #define SEND                                  0
 #define I_BLOCK                                 0
 #define R_BLOCK                                 1
 #define S_BLOCK                                 2
-#define T_S_IFS                                 2          /*调整信息域的S-BLK*/
-#define T_S_ABORT                               3          /*打断CHAIN的S-BLK*/
-#define T_S_WTS                                 4          /*请求延长等待时的S-BLK*/
+#define T_S_IFS                                 2          /*璋冩暣淇℃伅鍩熺殑S-BLK*/
+#define T_S_ABORT                               3          /*鎵撴柇CHAIN鐨凷-BLK*/
+#define T_S_WTS                                 4          /*璇锋眰寤堕暱绛夊緟鏃剁殑S-BLK*/
 														   
-#define T1_HEAD_LEN                             3		   /*帧头长度*/
-#define ERR_SEND_CNT                            3		   /*错误重发次数*/
+#define T1_HEAD_LEN                             3		   /*甯уご闀垮害*/
+#define ERR_SEND_CNT                            3		   /*閿欒閲嶅彂娆℃暟*/
 
 
-//相关全局变量参数
+//鐩稿叧鍏ㄥ眬鍙橀噺鍙傛暟
 typedef struct
 {
     uint8_t   bIFSC;
@@ -174,22 +176,22 @@
 	uint8_t 	aRBlk[5];
 }st_T1_Parameters;
 
-//ATR等7816需要用的参数
+//ATR绛7816闇瑕佺敤鐨勫弬鏁
 typedef struct
 {
 	uint8_t bFlag;
-	uint8_t bTA1;		 						//TA1的值
-	uint8_t bTA2;								//TA2的值
-	uint8_t bTA2Flag;							//TA2是否存在标志
-	uint8_t bProlType;						//协议类型标志 0为T0  1为T1
-	uint8_t aAtr[ATR_SIZE_MAX];				//ATR缓存区
-    uint8_t aRecBuff[REC_SIZE_MAX];			//接收数据缓存区
+	uint8_t bTA1;		 						//TA1鐨勫
+	uint8_t bTA2;								//TA2鐨勫
+	uint8_t bTA2Flag;							//TA2鏄惁瀛樺湪鏍囧織
+	uint8_t bProlType;						//鍗忚绫诲瀷鏍囧織 0涓篢0  1涓篢1
+	uint8_t aAtr[ATR_SIZE_MAX];				//ATR缂撳瓨鍖
+    uint8_t aRecBuff[REC_SIZE_MAX];			//鎺ユ敹鏁版嵁缂撳瓨鍖
 }st_7816_Para;
 
 
-//跟T1有关的参数
+//璺烼1鏈夊叧鐨勫弬鏁
 extern st_T1_Parameters g_T1;
-//跟7816协议参数有关的参数
+//璺7816鍗忚鍙傛暟鏈夊叧鐨勫弬鏁
 extern st_7816_Para g_7816Para;
 
 extern unsigned int terminal_send_cwt;
@@ -203,8 +205,21 @@
 extern unsigned int terminal_rec_bwt_atr;
 extern unsigned int terminal_change_rec_bwt_num;
 
-uint16_t ISO7816_LoopBack(void);
+void atr_time_start(void);
+uint16_t ISO7816_OperateSelect(uint8_t OperateMode);
+uint16_t ISO7816_GetAtr(uint8_t *pAtr, uint8_t *pLength);
+void iso7816_deactive(void);
+uint16_t ISO7816_DisposeATR(uint8_t *pATR, uint8_t ATRLen);
+void ISO7816_config_mode_fun(void);
+uint16_t ISO7816_DisposePPS(uint8_t TA1);
+uint16_t ISO7816_TPDU_T1Send(uint8_t *pCommand, uint16_t CommandLength, uint8_t Type);
+uint16_t ISO7816_Dispose_CMD(uint8_t *pCmd, uint16_t CmdLen, uint8_t *pResp,  uint16_t *pRespLen);
+//state 0-vcard off  1-3.3 vcard   2-1.8 vcard
+void ISO7816_cold_reset(uint8_t state);
+void ISO7816_warm_reset(void);
+//鍗℃娴
 uint8_t detect_io_state(void);
+uint16_t ISO7816_LoopBack(void);
 
 #endif	/* __YC_ISO7816_H__ */
 
Index: yc_7816/yc_7816.c
===================================================================
--- /YC3121_SDK/fw/sdk/yc_7816/yc_7816.c	(revision 570)
+++ /YC3121_SDK/fw/sdk/yc_7816/yc_7816.c	(working copy)
@@ -9,9 +9,9 @@
 #include"string.h"
 
 #include "yc_7816.h"
-#include"..\..\core\system.h"
-#include "..\yc_timer.h"
-#include "..\yc_exti.h"
+#include "system.h"
+#include "yc_timer.h"
+#include "yc_exti.h"
 #include "yc_7816_T1.h"
 #include "yc_7816_T0.h"
 
@@ -25,14 +25,14 @@
 unsigned int terminal_change_rec_bwt_num = 0;
 
 
-unsigned char atr_cwt_valid_flag = 0;	//接收复位信息时，如果未收到第一个字节之前cwt标志置一，此标志此时无效
+unsigned char atr_cwt_valid_flag = 0;	//鎺ユ敹澶嶄綅淇℃伅鏃讹紝濡傛灉鏈敹鍒扮涓涓瓧鑺備箣鍓峜wt鏍囧織缃竴锛屾鏍囧織姝ゆ椂鏃犳晥
 
 volatile unsigned int time0_cnt_last = 0;
 volatile unsigned int time0_cnt_new = 0;
 
-volatile unsigned char contact_atr_reset_l_flag = 0;			//复位IO保持低电平到时间标志
-volatile unsigned char contact_atr_rfb_overtime_falg = 0;		//ICC 回应第一个字节超时标志
-volatile unsigned char contact_atr_rab_overtime_falg = 0;		//ICC 回应所有字节超时标志
+volatile unsigned char contact_atr_reset_l_flag = 0;			//澶嶄綅IO淇濇寔浣庣數骞冲埌鏃堕棿鏍囧織
+volatile unsigned char contact_atr_rfb_overtime_falg = 0;		//ICC 鍥炲簲绗竴涓瓧鑺傝秴鏃舵爣蹇
+volatile unsigned char contact_atr_rab_overtime_falg = 0;		//ICC 鍥炲簲鎵鏈夊瓧鑺傝秴鏃舵爣蹇
 
 
 uint16_t fi_table[16] = {372, 372, 558, 744, 1116, 1488, 1860, 0,
@@ -40,11 +40,11 @@
 uint16_t di_table[16] = {0, 1, 2, 4, 8, 16, 32, 64,
                             12, 20, 0, 0, 0, 0, 0, 0};
 
-//跟T1有关的参数
+//璺烼1鏈夊叧鐨勫弬鏁
 st_T1_Parameters g_T1;
-//跟7816协议参数有关的参数
+//璺7816鍗忚鍙傛暟鏈夊叧鐨勫弬鏁
 st_7816_Para g_7816Para;
-//sci接口引脚定义
+//sci鎺ュ彛寮曡剼瀹氫箟
 SCI_PIN_Def sci_pin;
 
 uint8_t get_io_num(uint8_t gpio_group, uint16_t pin)
@@ -68,7 +68,7 @@
 
 uint8_t detect_io_state(void)
 {
-	return GPIO_ReadInputDataBit(sci_pin.detect.gpio_group, sci_pin.detect.gpio_pin);
+	return GPIO_ReadInputDataBit((GPIO_TypeDef)sci_pin.detect.gpio_group, sci_pin.detect.gpio_pin);
 }
 
 unsigned char crad_in_io_filter(void)
@@ -127,9 +127,9 @@
 	enable_clock(CLKCLS_TIM);
 	
 	TIM_struct.period=num;
-	TIM_struct.TIMx=0;
+	TIM_struct.TIMx=(TIM_NumTypeDef)0;
 	TIM_Init(&TIM_struct);
-	TIM_Cmd(0,ENABLE);
+	TIM_Cmd((TIM_NumTypeDef)0,ENABLE);
 }
 
 void atr_time_start(void)
@@ -210,7 +210,7 @@
 	return OK;
 }
 
-void ISO7816_cold_reset(void)
+void ISO7816_cold_reset(uint8_t state)
 {
 	PWM_InitTypeDef PWM_struct;
 	uint32_t period;
@@ -252,7 +252,7 @@
 	vcard_control(ISO7816_VCC_0V);
 
 	//enable power
-	vcard_control(ISO7816_VCC_3_3V);
+	vcard_control(state);
 
 	//enable clk
 	period=5;	//clk 4mhz 2
@@ -291,7 +291,7 @@
 	SCI7816_CTRL |= 0x03;	//clear tx/rx fifo
 	SCI7816_STAT |= 0X124;	//clear tx/rx retry error
 	
-	//config sci7816 tmode bit=1 实现ATR发送字节校验位错误时只要判断出检验错误即可，不需要将IO拉低
+	//config sci7816 tmode bit=1 瀹炵幇ATR鍙戦佸瓧鑺傛牎楠屼綅閿欒鏃跺彧瑕佸垽鏂嚭妫楠岄敊璇嵆鍙紝涓嶉渶瑕佸皢IO鎷変綆
 	SCI7816_MODE = (4 | 0 << SCICFG_ETU_SEL | 1 << SCICFG_MASTER | 3 << SCICFG_MCLK_SEL\
 					| 1 << SCICFG_BGTEN | 1 << SCICFG_CWTEN | 1 << SCICFG_EDCEN | 1 << SCICFG_IO_EN) | 1 << SCICFG_TMODE;
 	
@@ -324,7 +324,7 @@
 	SCI7816_CTRL |= 0x03;	//clear tx/rx fifo
 	SCI7816_STAT |= 0X124;	//clear tx/rx retry error
 
-	//config sci7816 tmode bit=1 实现ATR发送字节校验位错误时只要判断出检验错误即可，不需要将IO拉低
+	//config sci7816 tmode bit=1 瀹炵幇ATR鍙戦佸瓧鑺傛牎楠屼綅閿欒鏃跺彧瑕佸垽鏂嚭妫楠岄敊璇嵆鍙紝涓嶉渶瑕佸皢IO鎷変綆
 	SCI7816_MODE = (4 | 0 << SCICFG_ETU_SEL | 1 << SCICFG_MASTER | 3 << SCICFG_MCLK_SEL\
 					| 1 << SCICFG_BGTEN | 1 << SCICFG_CWTEN | 1 << SCICFG_EDCEN | 1 << SCICFG_IO_EN) | 1 << SCICFG_TMODE;
 	
@@ -386,11 +386,11 @@
     {
     	if(pAtr[0] == 0x23)
 	    {	
-			SCI7816_MODE &= ~(1<<SCICFG_BIT_ORDER);		//正向卡片
+			SCI7816_MODE &= ~(1<<SCICFG_BIT_ORDER);		//姝ｅ悜鍗＄墖
 	    }
 		else if (pAtr[0] == 0x03)
 		{
-			SCI7816_MODE |= (1<<SCICFG_BIT_ORDER);		//反向卡片
+			SCI7816_MODE |= (1<<SCICFG_BIT_ORDER);		//鍙嶅悜鍗＄墖
 		}
 		else
 		{
@@ -440,11 +440,11 @@
                 g_7816Para.bProlType = pAtr[Len] & 0x0F;                
                 if(1 < g_7816Para.bProlType)
                 {
-                    //如果协议大于1，默认为0
+                    //濡傛灉鍗忚澶т簬1锛岄粯璁や负0
                     g_7816Para.bProlType = 0;
                 }
             }
-            //TD2存在，并且值为1 或 E
+            //TD2瀛樺湪锛屽苟涓斿间负1 鎴 E
             if(TDn == 2) /*&& (((pAtr[Len] & 0x0F) == 1) || ((pAtr[Len] & 0x0F) == 14))*/
             {
                 TD2Flag = 1;
@@ -458,7 +458,7 @@
         }
     }
 
-    //如果协议没有修改，默认为0
+    //濡傛灉鍗忚娌℃湁淇敼锛岄粯璁や负0
     if(g_7816Para.bProlType == 0xff)
     {
         g_7816Para.bProlType = 0;       
@@ -494,7 +494,7 @@
 
     *pLength = Len;
     
-    //判断Rx Fifo 中是否还有数据，如果有的话，直接Warmrest
+    //鍒ゆ柇Rx Fifo 涓槸鍚﹁繕鏈夋暟鎹紝濡傛灉鏈夌殑璇濓紝鐩存帴Warmrest
     delay_ms(2);
     i = 3;
 	ret = 0;
@@ -526,7 +526,7 @@
     uint8_t TD1_N = 0 ,TD1_Flag = 0;
     uint8_t tmpCWI,tmpBWI;
 
-    //IFSC 默认值32
+    //IFSC 榛樿鍊32
     g_T1.bIFSC = 32;
     g_7816Para.bFlag &= (~BIT0);
     if((pATR == NULL) || (ATRLen < 3) || (ATRLen > ATR_SIZE_MAX))
@@ -547,10 +547,10 @@
 
 		if((g_7816Para.bTA1 != 0x11) && (g_7816Para.bTA1 != 0x12) && (g_7816Para.bTA1 != 0x13))
 		{
-		  	//不发PPS
+		  	//涓嶅彂PPS
 		  	//return ISO7816_ATR_TA1_ERROR;
 		}
-		/*tmpTimer = 10086;   //默认9600 + 480
+		/*tmpTimer = 10086;   //榛樿9600 + 480
 		if((g_7816Para.bTA1&0xF) > 1)
 		{
 		    tmpTimer *= di_table[g_7816Para.bTA1&0xF];    // * DI
@@ -561,9 +561,9 @@
 		    }
 		}
 
-        //多加2个ETU
+        //澶氬姞2涓狤TU
         tmpTimer += 20;
-        //如果没有超限，设置WT时间
+        //濡傛灉娌℃湁瓒呴檺锛岃缃甒T鏃堕棿
 		terminal_rec_cwt = tmpTimer;
 
 		#ifdef DEBUG_7816
@@ -575,7 +575,7 @@
     //TB1
     if((tmpTDx & BIT5) != 0)
     {   
-        //如果是冷复位，必须要有TB1,并且值为0   
+        //濡傛灉鏄喎澶嶄綅锛屽繀椤昏鏈塗B1,骞朵笖鍊间负0   
         if(((g_7816Para.bFlag & BIT1) == 0) && (pATR[offset]) != 0)
         {
             return ISO7816_ATR_TB1_ERROR;           
@@ -584,7 +584,7 @@
     }
     else
     {
-        //如果是冷复位，必须要有TB1
+        //濡傛灉鏄喎澶嶄綅锛屽繀椤昏鏈塗B1
         if((g_7816Para.bFlag & BIT1) == 0)
         {
             return ISO7816_ATR_TB1_ERROR;           
@@ -609,7 +609,7 @@
 		{
 			terminal_send_cwt=pATR[offset]+12;
 		}
-        //保存N值，后面会用到
+        //淇濆瓨N鍊硷紝鍚庨潰浼氱敤鍒
         TC1_N = pATR[offset];
         //TC1_Flag = 1;
         offset++;
@@ -631,7 +631,7 @@
     //TD1
     if((tmpTDx & BIT7) != 0)
     {
-        //只支持T=0  T=1        
+        //鍙敮鎸乀=0  T=1        
         TD1_N = pATR[offset];
         if((TD1_N & 0x0F) == 1)
         {
@@ -674,9 +674,9 @@
 				    }
 				}
 
-		        //多加2个ETU
+		        //澶氬姞2涓狤TU
 		        tmpTimer += 20;
-		        //如果没有超限，设置WT时间
+		        //濡傛灉娌℃湁瓒呴檺锛岃缃甒T鏃堕棿
 				terminal_rec_cwt = tmpTimer;
 			}
         }
@@ -695,20 +695,20 @@
         {   
             if(g_7816Para.bProlType == PROTOCOL_T0)
             {
-                //如果TC2存在的话，TC2专用于T=0协议。
+                //濡傛灉TC2瀛樺湪鐨勮瘽锛孴C2涓撶敤浜嶵=0鍗忚銆
                 //if(g_7816Para.bTA2Flag && ((g_7816Para.bTA2&0x0F)!=0))
                 {
                 //    return ISO7816_ATR_TC2_ERROR;   
                 }
                     
-                //TC2只支持10
+                //TC2鍙敮鎸10
                 if(10 != pATR[offset])
                 {
                     return ISO7816_ATR_TC2_ERROR;       
                 }
                 else
                 {
-                    tmpTimer = 960 *  pATR[offset] + 480;   //默认9600 + 480
+                    tmpTimer = 960 *  pATR[offset] + 480;   //榛樿9600 + 480
                     if(g_7816Para.bFlag & BIT0 )
                     {
                         tmpTimer *= di_table[g_7816Para.bTA1&0xF];    // * DI
@@ -724,7 +724,7 @@
         //TD2
         if((tmpTDx & BIT7) != 0)
         {
-            //TD1指明了T=1协议，TD2不支持 T=1的话报错。
+            //TD1鎸囨槑浜員=1鍗忚锛孴D2涓嶆敮鎸 T=1鐨勮瘽鎶ラ敊銆
             if( TD1_Flag )
             {
                 if((pATR[offset] & 0x0f) != 1)
@@ -732,7 +732,7 @@
                     return ISO7816_ATR_TD2_ERROR;
                 }           
             }
-            //支持T=1
+            //鏀寔T=1
             else if(((pATR[offset] & 0x0f) != 1) && ((pATR[offset] & 0x0f) != 14))
             {
                 return ISO7816_ATR_ERROR;           
@@ -756,7 +756,7 @@
             {
                 return ISO7816_ATR_TA3_ERROR;               
             }
-            //设置卡片最大数据长度
+            //璁剧疆鍗＄墖鏈澶ф暟鎹暱搴
             g_T1.bIFSC = pATR[offset];
             offset++;
         }
@@ -775,7 +775,7 @@
 	            {
 	                return ISO7816_ATR_TB3_ERROR;
 	            }
-	            //2的CWI次幂
+	            //2鐨凜WI娆″箓
 	            tmpLen = 1;
 	            while(tmpCWI > 0)
 	            {
@@ -787,7 +787,7 @@
 	                return ISO7816_ATR_TB3_ERROR;
 	            }
 
-	            //设置CWI  BWI
+	            //璁剧疆CWI  BWI
 	            tmpLen = 0;
 	            if((g_7816Para.bFlag & BIT0) != 0)
 	            {
@@ -837,7 +837,7 @@
         //TC3
         if((tmpTDx & BIT6) != 0)
         {       
-            //TC3只支持0
+            //TC3鍙敮鎸0
             if(0 != pATR[offset])
             {
                 return ISO7816_ATR_TC3_ERROR;       
@@ -847,7 +847,7 @@
     }
     else
     {
-        //如果是T1协议，没有TB3，则需要复位操作
+        //濡傛灉鏄疶1鍗忚锛屾病鏈塗B3锛屽垯闇瑕佸浣嶆搷浣
         if(g_7816Para.bProlType == 1)
         {
             return ISO7816_ATR_TB3_ERROR;
@@ -868,16 +868,16 @@
                 return ISO7816_CARD_STUTES_ERROR;
             }
 			
-            ISO7816_cold_reset();
+            ISO7816_cold_reset(1);
 
-            //表示冷复位
+            //琛ㄧず鍐峰浣
             g_7816Para.bFlag &= (~BIT1);
             break;
         case ISO7816_WARM_RESET:
 			
             ISO7816_warm_reset();
 
-            //表示热复位
+            //琛ㄧず鐑浣
             g_7816Para.bFlag |= BIT1;
             break;
         case ISO7816_DEACTIVE_CARD:
@@ -927,7 +927,7 @@
 		}
     }
     
-    //设置通讯速率寄存器
+    //璁剧疆閫氳閫熺巼瀵勫瓨鍣
     SCI7816_ETU = f;
 	
     return OK;    
@@ -949,7 +949,7 @@
 
     if(PROTOCOL_T0 == g_7816Para.bProlType)
     {
-        //处理61xx 6cxx  也可以返回给上层应用处理
+        //澶勭悊61xx 6cxx  涔熷彲浠ヨ繑鍥炵粰涓婂眰搴旂敤澶勭悊
         if((g_7816Para.bFlag & BIT2) != 0)  //T0 Process
         {
             memcpy(tmpCMDBuf,pCmd,5);
@@ -1073,16 +1073,16 @@
 #if 1
 		/*if(KEY1_IO_STATE)
 		{
-			delay_ms(30000);				 //30秒测试流程
+			delay_ms(30000);				 //30绉掓祴璇曟祦绋
 		}
 		else
 		{
-			delay_ms(5000); 			 //5秒
+			delay_ms(5000); 			 //5绉
 		}*/
-	delay_ms(3000); 			 //5秒
+	delay_ms(3000); 			 //5绉
 #endif
 
-    //激活卡片
+    //婵娲诲崱鐗
     Ret = ISO7816_OperateSelect(ISO7816_ACTIVE_CARD);
     if(Ret == ISO7816_CARD_STUTES_ERROR)
     {
@@ -1090,10 +1090,10 @@
     }
 	
 TOWarmResetCard:
-    //接收复位信息
+    //鎺ユ敹澶嶄綅淇℃伅
     Ret = ISO7816_GetAtr(&g_7816Para.aAtr[1], &ATRLen);
 
-	//清除atr相关计算器 
+	//娓呴櫎atr鐩稿叧璁＄畻鍣 
     if(OK != Ret)
     {
         if((ISO7816_ATR_LEN_ERROR == Ret))
@@ -1118,12 +1118,12 @@
     g_7816Para.aAtr[0] = ATRLen;
 	delay_ms(50);
 
-    //自动发送C0
+    //鑷姩鍙戦丆0
     g_7816Para.bFlag |= BIT2;
 	memset(&g_T1.bIFSC, 0, sizeof(g_T1));
 
 	g_T1.bIFSC = 32;
-    //ATR数据处理
+    //ATR鏁版嵁澶勭悊
     Ret = ISO7816_DisposeATR(&g_7816Para.aAtr[1], ATRLen);
     if(OK != Ret)
     {
@@ -1159,7 +1159,7 @@
 	MyPrintf("reset ok\n");
     #endif
 
-    //处理PPS
+    //澶勭悊PPS
     if((g_7816Para.bFlag & BIT0) == 1)
     {
         if(g_7816Para.bTA1 != 0x11)
@@ -1181,7 +1181,7 @@
     if(g_7816Para.bProlType == PROTOCOL_T1)
     {
         uint8_t TmpCmd[5];
-        //设置IFSD
+        //璁剧疆IFSD
         g_T1.bIFSD = 254;
         TmpCmd[0] = 254;
 
@@ -1251,7 +1251,5 @@
 
     memcpy(ApduCmd,SELECT_PSE,20);
     SendLen= 20;
-    goto TOSendCMD ;
-    
+    goto TOSendCMD ;    
 }
-
Index: yc_7816/yc_7816_T0.c
===================================================================
--- /YC3121_SDK/fw/sdk/yc_7816/yc_7816_T0.c	(revision 570)
+++ /YC3121_SDK/fw/sdk/yc_7816/yc_7816_T0.c	(working copy)
@@ -1,7 +1,7 @@
-#include"string.h"
-#include "..\..\core\yc3121.h"
+#include "string.h"
+#include "yc3121.h"
 #include "yc_7816.h"
-
+#include "yc_timer.h"
 
 uint16_t ISO7816_RecBytes(uint8_t *RxBuf, uint16_t RxLen)
 {
@@ -24,7 +24,7 @@
         {
             return ISO7816_REC_TIMEOUT;
         }
-        if (SCI7816_STAT & 0x04)    			//出错次数到上限
+        if (SCI7816_STAT & 0x04)    			//鍑洪敊娆℃暟鍒颁笂闄
         {
             return ISO7816_ERR_NUM_OVER;
         }
@@ -69,11 +69,11 @@
 	    SCI7816_CWT = terminal_send_cwt;
 		while(SCI7816_STAT & 8)
 		{
-			if (SCI7816_STAT & 0x20)			//出错次数到上限  
+			if (SCI7816_STAT & 0x20)			//鍑洪敊娆℃暟鍒颁笂闄  
 	        {				
 	        	SCI7816_CTRL |= 0x03;	//clear tx/rx fifo
 				SCI7816_STAT |= 0X24;	//clear tx/rx retry error				
-	            //直接下电
+	            //鐩存帴涓嬬數
 	            return ISO7816_ERR_NUM_OVER;
 	        }
 			
@@ -124,22 +124,22 @@
     ret = ISO7816_SendBytes_T0(pCommand, 5);
     COMPARE_RETURN(ret);
     
-    //接收过程字节
+    //鎺ユ敹杩囩▼瀛楄妭
     pResponse[tmpRecLen] = ISO7816_NULL_T0;
     do
     { 
         ret = ISO7816_RecBytes(&pResponse[tmpRecLen], 1); 
         COMPARE_RETURN(ret);    
-    }while(pResponse[tmpRecLen] == ISO7816_NULL_T0);   //如果是60的话等待       
+    }while(pResponse[tmpRecLen] == ISO7816_NULL_T0);   //濡傛灉鏄60鐨勮瘽绛夊緟       
 
     sw1 = pResponse[0];    
     p3 = pCommand[4];
     tmpSendOffset = 5;
     
-    //过程字节判断  
+    //杩囩▼瀛楄妭鍒ゆ柇  
     do
     {
-        //错误码或执行正确
+        //閿欒鐮佹垨鎵ц姝ｇ‘
         if( (0x60 == (sw1 & 0xF0)) || (0x90 == (sw1 & 0xF0)) )
         {
             tmpRecLen++;
@@ -149,7 +149,7 @@
                 return ret;
             }
 
-            //错误码 
+            //閿欒鐮 
             g_7816Para.bFlag |= BIT3;
 
             *pResponseLength = tmpRecLen;
@@ -171,7 +171,7 @@
                 COMPARE_RETURN(ret);
     
                 pResponse[tmpRecLen] = ISO7816_NULL_T0;
-                //如果是60 则等待接收字节
+                //濡傛灉鏄60 鍒欑瓑寰呮帴鏀跺瓧鑺
                 do
                 {
                     ret = ISO7816_RecBytes(&pResponse[tmpRecLen], 1);
@@ -185,7 +185,7 @@
                 return  OK;
             }
         }
-		else if (sw1 == (uint8_t)(~Ins)) //如果是INS的补码
+		else if (sw1 == (uint8_t)(~Ins)) //濡傛灉鏄疘NS鐨勮ˉ鐮
         {
             
             if(5 == CommandLength)
@@ -199,7 +199,7 @@
                     return  OK;         
                 }
                 
-                //再次接收过程字节
+                //鍐嶆鎺ユ敹杩囩▼瀛楄妭
                 ret = ISO7816_RecBytes(&pResponse[tmpRecLen], 1);
                 COMPARE_RETURN(ret);                                
                 
@@ -210,13 +210,13 @@
             {
                 if(p3)
                 {
-                    //如果是INS的补码，一个字节一个字节传送
+                    //濡傛灉鏄疘NS鐨勮ˉ鐮侊紝涓涓瓧鑺備竴涓瓧鑺備紶閫
                     ret = ISO7816_SendBytes_T0(pCommand + tmpSendOffset, 1);
                     COMPARE_RETURN(ret);
                     tmpSendOffset++; 
                     p3--;
                     
-                    //接收过程字节
+                    //鎺ユ敹杩囩▼瀛楄妭
                     do
                     {
                         ret = ISO7816_RecBytes(&pResponse[tmpRecLen], 1);
@@ -229,7 +229,7 @@
                 }
 				else
                 {
-                    //接收过程字节
+                    //鎺ユ敹杩囩▼瀛楄妭
                     do
                     {
                         ret = ISO7816_RecBytes(&pResponse[tmpRecLen], 1);
Index: yc_7816/yc_7816_T1.c
===================================================================
--- /YC3121_SDK/fw/sdk/yc_7816/yc_7816_T1.c	(revision 570)
+++ /YC3121_SDK/fw/sdk/yc_7816/yc_7816_T1.c	(working copy)
@@ -1,8 +1,8 @@
-#include"string.h"
-#include "..\..\core\yc3121.h"
+#include "string.h"
+#include "yc3121.h"
 #include "yc_7816.h"
 #include "yc_7816_t0.h"
-
+#include "yc_timer.h"
 
 uint16_t ISO7816_CalcLRC(uint8_t *pBuff, uint16_t I_Len, uint8_t *pLRC)
 {
@@ -159,7 +159,7 @@
 
     ISO7816_CalcLRC(pHead, 3, &Lrc1);
 
-    //发送数据
+    //鍙戦佹暟鎹
     if(I_Len != 0)
     {
     	ISO7816_CalcLRC(pBuff, I_Len, &Lrc2);
@@ -182,7 +182,7 @@
 		while (!(SCI7816_STAT & 0x40));			//bgt
     }
     
-    //发送数据
+    //鍙戦佹暟鎹
     ret = ISO7816_SendBytes_T1(pAddr, sendLen, 1);
     COMPARE_RETURN(ret);
     
@@ -229,7 +229,7 @@
         return ISO7816_DATALEN_ERR;
     }
 
-    RemainLen = RxBuf[T1_HEAD_LEN - 1] + 1; //信息域 + LRC
+    RemainLen = RxBuf[T1_HEAD_LEN - 1] + 1; //淇℃伅鍩 + LRC
     ret = ISO7816_RecBlock_DATA(RxBuf + T1_HEAD_LEN, RemainLen);
     if(ret != OK)
     {
@@ -271,7 +271,7 @@
             return Ret;
         }
 
-        //判断长度
+        //鍒ゆ柇闀垮害
         if((pProlg[2] > g_T1.bIFSD) || (pProlg[2] == 0))
         {
 			if (pProlg[2] == 0xff)
@@ -348,7 +348,7 @@
             return Ret;
         }
 
-        //判断长度
+        //鍒ゆ柇闀垮害
         if(0 == (pProlg[1] & 0x1))
         {
             if(pProlg[2] > 0)
@@ -416,9 +416,9 @@
             }
             else
             {
-                //接收数据
+                //鎺ユ敹鏁版嵁
                 Ret = ISO7816_RecBlock_Soft(g_7816Para.aRecBuff, &tmpRecLen);
-                //如果校验错误，则直接跳过检查
+                //濡傛灉鏍￠獙閿欒锛屽垯鐩存帴璺宠繃妫鏌
                 if(Ret == OK)
                 {
                     Ret = ISO7816_T1_Is_Blk_Valid(g_7816Para.aRecBuff, RECV);
@@ -436,14 +436,14 @@
                     return Ret;
                 }
 
-                //恢复WTX
+                //鎭㈠WTX
                 if(SWTXFlag == 1)
                 {
                     terminal_rec_bwt = terminal_rec_bwt_atr;
                     SWTXFlag = 0;
                 }
 
-                /*无效则发R/S*/
+                /*鏃犳晥鍒欏彂R/S*/
                 if(Ret != 0)
                 {					
                     g_T1.bErrCnt++;
@@ -605,7 +605,7 @@
                 else if((g_7816Para.aRecBuff[1] & 0x3F) == 3) 
                 {
                     SWTXFlag = 1;
-                    //设置等待时间
+                    //璁剧疆绛夊緟鏃堕棿
 					terminal_change_rec_bwt_num = terminal_rec_bwt_atr * g_7816Para.aRecBuff[3];
 					terminal_rec_bwt = terminal_change_rec_bwt_num;
 
@@ -707,19 +707,19 @@
         return ISO7816_PARA_ERROR;
     }
     
-    //初始化化
+    //鍒濆鍖栧寲
     if(Type == I_BLOCK)
     {
         prolHead[0] = 0;  //nad
         prolHead[1] = 0;  //pcd
         
-        //设置序号 bNum 为BIT6
+        //璁剧疆搴忓彿 bNum 涓築IT6
         prolHead[1] ^= g_T1.bNum;
         
-        //计算I块长度
+        //璁＄畻I鍧楅暱搴
         if(g_T1.bIFSC < CmdLen)
         {
-            //需要连接
+            //闇瑕佽繛鎺
             prolHead[1] |= BIT5;
             prolHead[2] = g_T1.bIFSC;
             CmdLen -= g_T1.bIFSC;
@@ -738,7 +738,7 @@
     }
 
     g_T1.bFlgSBSnd = 0;
-    //发送数据
+    //鍙戦佹暟鎹
     while(1)
     {
         if(Type < S_BLOCK)
@@ -814,7 +814,7 @@
                 return Ret;
             }
 
-            //恢复WTX
+            //鎭㈠WTX
             if(SWTXFlag == 1)
             {
                 terminal_rec_bwt = terminal_rec_bwt_atr;
@@ -884,7 +884,7 @@
             {
                 SWTXFlag = 1;
 
-				//设置等待时间
+				//璁剧疆绛夊緟鏃堕棿
 				terminal_change_rec_bwt_num = terminal_rec_bwt_atr * g_7816Para.aRecBuff[3];
 				terminal_rec_bwt = terminal_change_rec_bwt_num;
 				#ifdef DEBUG_7816
@@ -916,7 +916,7 @@
             {
                 r_cnt = 0;
                 r_chain_cnt++;
-                if((g_7816Para.aRecBuff[1] & NR_BIT) == (g_T1.bNum >> 2))  /*nr!=ns, 对方请求下一个frame*/
+                if((g_7816Para.aRecBuff[1] & NR_BIT) == (g_T1.bNum >> 2))  /*nr!=ns, 瀵规柟璇锋眰涓嬩竴涓猣rame*/
                 {
                     r_chain_cnt = 0;
 

