Index: yc_ssc.c
===================================================================
--- /YC3121_SDK/fw/sdk/yc_ssc.c	(revision 602)
+++ /YC3121_SDK/fw/sdk/yc_ssc.c	(working copy)
@@ -30,7 +30,8 @@
 	
 	ssc_temp = lpm_read(LPM_SENSOR);
 	
-	ssc_temp |= Interval << SHIELDING_CHECKFRQ_BIT;
+	ssc_temp &= ~(uint32_t)((uint32_t)0x3 << SHIELDING_CHECKFRQ_BIT);
+	ssc_temp |= (uint32_t)((uint32_t)Interval << SHIELDING_CHECKFRQ_BIT);
 	
 	lpm_write(LPM_SENSOR, ssc_temp);
 }
@@ -87,7 +88,11 @@
 	
 	ssc_temp = lpm_read(LPM_SENSOR);
 	
-	ssc_temp &= ~(0xFF << SHIELDING_PORT_PULLUP_BIT);
+	ssc_temp &= ~((uint32_t)((uint32_t)0xFF << SHIELDING_PORT_PULLUP_BIT)|\
+	              (uint32_t)((uint32_t)0xF << SHIELDING_PORT_ENABLE_BIT) |\
+	              (uint32_t)((uint32_t)0xF << SHIELDING_PORT_MODE_BIT)   |\
+	              (uint32_t)((uint32_t)0x3 << SHIELDING_GLITCHTIME_DEALY_BIT) |\
+				  (uint32_t)((uint32_t)0x3 << SHIELDING_PU_HOLDTIME_BIT));
 	ssc_temp |= TAMPER_InitStruct->TAMPER_Port_mode     << SHIELDING_PORT_MODE_BIT;         //shielding type
 	ssc_temp |= TAMPER_InitStruct->TAMPER_Port_PullUp   << SHIELDING_PORT_PULLUP_BIT;       //pull up
 	ssc_temp |= TAMPER_InitStruct->TAMPER_Port_Enable   << SHIELDING_PORT_ENABLE_BIT;       //shielding enable
@@ -108,11 +113,11 @@
 	
 	if (NewState == ENABLE)
 	{
-		ssc_temp |= SENSOR_Port << SHIELDING_PORT_ENABLE_BIT;
+		ssc_temp |= (uint32_t)SENSOR_Port << SHIELDING_PORT_ENABLE_BIT;
 	}
 	else if (NewState == DISABLE)
 	{
-		ssc_temp &= ~(SENSOR_Port << SHIELDING_PORT_ENABLE_BIT);
+		ssc_temp &= ~((uint32_t)SENSOR_Port << SHIELDING_PORT_ENABLE_BIT);
 	}
 	
 	lpm_write(LPM_SENSOR, ssc_temp);
@@ -154,11 +159,11 @@
 	
 	if (NewState == ENABLE)
 	{
-		ssc_temp |= sensor;
+		ssc_temp |= (uint32_t)sensor;
 	}
 	else if (NewState == DISABLE)
 	{
-		ssc_temp &= ~sensor;
+		ssc_temp &= ~(uint32_t)sensor;
 	}
 	
 	lpm_write(LPM_SENSOR, ssc_temp);
@@ -170,30 +175,30 @@
 		
 		if (LPM_BAT_VDT12L_ENABLE & sensor)
 		{
-			ssc_temp |= (1 << ANALOG_BAT12L_BIT);
+			ssc_temp |= ((uint32_t)1 << ANALOG_BAT12L_BIT);
 		}
 		if ((LPM_BAT_VDT33H_ENABLE | LPM_BAT_VDT33L_ENABLE) & sensor)
 		{
-			ssc_temp |= (1 << ANALOG_BATV33HL_BIT);
+			ssc_temp |= ((uint32_t)1 << ANALOG_BATV33HL_BIT);
 		}
 		if ((LPM_TEMPERATURE_40_ENABLE | LPM_TEMPERATURE_120_ENABLE) & sensor)
 		{
-			ssc_temp |= (1 << ANALOG_TEMPRATURE_BIT);
+			ssc_temp |= ((uint32_t)1 << ANALOG_TEMPRATURE_BIT);
 		}
 	}
 	else if (NewState == DISABLE)
 	{
 		if (LPM_BAT_VDT12L_ENABLE & sensor)
 		{
-			ssc_temp &= ~(1 << ANALOG_BAT12L_BIT);
+			ssc_temp &= ~((uint32_t)1 << ANALOG_BAT12L_BIT);
 		}
 		if ((LPM_BAT_VDT33H_ENABLE |LPM_BAT_VDT33L_ENABLE) & sensor)
 		{
-			ssc_temp &= ~(1 << ANALOG_BATV33HL_BIT);
+			ssc_temp &= ~((uint32_t)1 << ANALOG_BATV33HL_BIT);
 		}
 		if ((LPM_TEMPERATURE_40_ENABLE|LPM_TEMPERATURE_120_ENABLE) & sensor)
 		{
-			ssc_temp &= ~(1 << ANALOG_TEMPRATURE_BIT);
+			ssc_temp &= ~((uint32_t)1 << ANALOG_TEMPRATURE_BIT);
 		}
 	}
 
@@ -252,9 +257,14 @@
 
 void SSC_LPMClearStatusBit(void)
 {
+	uint32_t ssc_temp;
 	lpm_write(LPM_CLR_INTR,0x6c);
-	SSC_LPMSheildingAlarmEnable(DISABLE);
-	SSC_LPMSheildingAlarmEnable(ENABLE);
+	ssc_temp = lpm_read(LPM_SENSOR);
+	if(ssc_temp & (((uint32_t)1) << SHIELDING_ALARM_EN_BIT))
+	{
+			SSC_LPMSheildingAlarmEnable(DISABLE);
+			SSC_LPMSheildingAlarmEnable(ENABLE);
+	}
 }
 
 void SSC_SecureCmd(uint32_t SSC_secsure, FunctionalState NewState)

