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

📄 wnt10.c

📁 基于MST-G240128点阵液晶的 状态机机制 人机界面四级滚屏菜单 源代码 ,带时间片机制模拟操作系统
💻 C
📖 第 1 页 / 共 5 页
字号:
         if( ExPwrCurrSTA == 0 )  // External Power On.
		 {
            SW4 = ~MP0PwrOn;      // Refresh OT160 Charging Control I/O.
            SW5 = ~MP1PwrOn;      // Refresh OT190 Charging Control I/O.
            SW6 = ~MP2PwrOn;      // Refresh CDMA  Charging Control I/O.
		    BattCurrSTA = 0;      // Battary Normal.
            if( AlmStaVld == 1 )
              ExPwrOnTimCNT++;
            if( ExPwrOnTimCNT >= 30 )
			{
               SW7 = 1;                 // Battary Charge Enabled,Begin of Charging...
               BattChgSTA = 1;          // Battary Charging Now.
			   ExPwrOnTimCNT = 0;
			   ExPwrNrlVldCNT = 0;
			   ExPwrAlmVldCNT = 0;
			   ExPwrOffAlm = 0;         //  
 		       AlmDATA[6] = MCU_ALARM;  // ExPwr Off Alarm.
               AlmDATA[6] = AlmDATA[6] & 0x07;
  		       AlmDatReady = 1;         // Alarm Frame Ready Flag.
			   AlmStaVld = 0;
	           ExPwrOffAlmEvt = 0;      // RST Alarm Event Flag. 
			}
            if( BattSamEvt == 1 )
			{
               if( BattVolt > BATT_MAX )  // Process Battary Charge DATA.
               { 
                  BattChgSTA = 0;         // Battary Charge Over.
			      PwrLedOn = 255;
				  PwrLedOff = 255;
			   }
			   if( BattVolt < BATT_MID )  //
 	             BattChgSTA = 1;          // Battary Need Charge. 
			   if( BattVolt < BATT_ERR )  // *******************
 	             BattChgSTA = 0;          // Battary Charge Circuit Error.
               BattSamEvt = 0;            //
		    } 
		 }
         else                             // External Power Off.
  	     {
            SW4 = 1;                      // OT160 Charging Disabled(MTD2955).
            SW5 = 1;                      // OT190 Charging Disabled(MTD2955).
            SW6 = 1;                      // CDMA  Charging Disabled(MTD2955).
            SW7 = 0;                      // STOP  Charging.
            PwrLedOn = 1;
			if( SysStandby == 0 )
			  PwrLedOff = 2;
			else
			  PwrLedOff = 6;
			BattChgSTA = 0;               // Non-Charging.
			ExPwrOnTimCNT = 0;
            if( BattSamEvt == 1 )
			{
               if( BattVolt < BATT_MIN )  // 
                 BattCurrSTA = 1;         // Battary Low Voltage.
               BattSamEvt = 0; 
			}
	     }
         if( BattChgSTA == 1 )            // Battary Need Charging.
         {
            PwrLedOn = 5;
			PwrLedOff = 10;
		    if( ( SecCNT % BATT_CHG_IVL ) == 0 )       
              SW7 = ~SW7;                 // STOP Backup Battary Charge / BatChgIVL S.
	     }
         /**************************************************************
         ***  External Power STATUS  Changed ***
         **************************************************************/
		 if( ExPwrCurrSTA != ExPwrLastSTA ) // ExPwrSTATUS Changed ?
		 {	    
		    ExPwrStaChg = 1;                // ExPwrSTATUS Changed.
		    if( ExPwrCurrSTA == 0 )         // External Power On (Off To On).
               ExPwrNrlVldCNT++;            // Normal Valid Counter Increase 1. 
		    else                            // External Power Off (On To Off).
               ExPwrAlmVldCNT++;            // Alarm  Valid Counter Increase 1. 
		 }
         else                               // ExPwrSTATUS Not Changed.
         {
	        ExPwrAlmVldCNT = 0;             // RST ExPwr Alarm  Valid Counter.
	        ExPwrNrlVldCNT = 0;             // RST ExPwr Normal Valid Counter.
         }
         /**************************************************************
         ***  Backup Battary STATUS Changed  ***
         **************************************************************/
		 if( BattCurrSTA != BattLastSTA )   // Battary STSTUS Changed ?
		 {	    
		    BattStaChg = 1;                 // Battary STSTUS Changed.
		    if( BattCurrSTA == 0 )          // Battary High (Low To High).
               BattNrlVldCNT++;             // Normal Valid Counter Increase 1. 
		    else                            // Battary Low (High To Low).
               BattAlmVldCNT++;             // Alarm  Valid Counter Increase 1. 
		 }
         else                               // Battary STSTUS Not Changed.
         {
	        BattAlmVldCNT = 0;              // RST Battary Alarm  Valid Counter.
	        BattNrlVldCNT = 0;              // RST Battary Normal Valid Counter.
         }
         /**************************************************************
         ***  Temperature FAN & Alarm  ***
         **************************************************************/
         if( TempSamEvt == 1 )
		 {
			if( SysTemp > TEMP_MAX )
              TempCurrSTA = 1;              // Temp OverHigh.
			else if( SysTemp < TEMP_MIN )
              TempCurrSTA = 1;              // Temp OverLow.
            else
              TempCurrSTA = 0;              // Temp Normal.	    
	        if( SysTemp >= TEMP_FAN_OPEN )  // Enable  FANS ?
              SW8 = 0;                      // Enable  Fans' Power(MTD2955).
	        if( SysTemp <  TEMP_FAN_STOP )  // Disable FANS ?
              SW8 = 1;                      // Disable Fans' Power(MTD2955).	
			TempSamEvt = 0;
         }
		 if( TempCurrSTA != TempLastSTA )   // Temp STATUS Changed ?
		 {	    
		    TempStaChg = 1;                 // Temp STATUS Changed.
		    if( TempCurrSTA == 0 )          // Temp Normal (Over To Normal).
              TempNrlVldCNT++;              // Temp Normal Valid Counting. 
		    else                            // Temp Alarm  (Normal To Over).
              TempAlmVldCNT++;              // Temp Alarm  Valid Counting.. 
		 }
         else                               // Temp STATUS Not Changed.
         {
	        TempAlmVldCNT = 0;              // RST Temp Alarm  Valid Counter.
	        TempNrlVldCNT = 0;              // RST Temp Normal Valid Counter.
         }
         /**************************************************************
         ***  ADC0 Idle & System Normal Operating  ***
         **************************************************************/
		 ucTMP = MCU_STATUS & 0x07;
         if( ( SysStandby == 0 ) && ( ucTMP == 0 ) )
		 {                               // Normal Operating & ADC0 Idle. 
            /******************************************
            ***  (0)Measure Backup Battary Voltage  ***
            ******************************************/
            if( SW7 == 0 )               // Measure Battary Voltage when Non-Charging.
			{ 
	           ADC0_CH_Setting(0x04);    // Battary Charge(CH4) ADC Begin.                  
               AD0INT = 0;               //
               AD0BUSY = 1;              // Start ADC0    
               while( AD0INT == 0 );     // Wait for Convert Over
               BattVolt = ADC0H;         // Backup Battary Voltage.
               if( BattSamEvt == 0 )
                 BattSamEvt = 1;         // Set Battary Voltage Sampling Over Flag.
            }
            /******************************************
            ***  (1)Measure System Temperature  ***
            ******************************************/
	        ADC0_CH_Setting(0x0f);          // Temperature(CH9) ADC Begin.
            AD0INT = 0;                     //
            AD0BUSY = 1;                    // Start ADC0.    
            while( AD0INT == 0 );           // Wait for Convert Over.
            AdcDatBuff.ucVAR[0] = ADC0H;    // Temperature High Byte.
            AdcDatBuff.ucVAR[1] = ADC0L;    // Temperature Low  Byte. 
            AdcDatBuff.uiVAR = AdcDatBuff.uiVAR >> 6;  // Left Justified 12-Bit Trans into 10-Bit.
            SysTemp = AdcDatBuff.uiVAR - TEMP_REF;     // Temp = uiTMP/1.21 + 50 - Tmcu;		
            if( TempSamEvt == 0 )
              TempSamEvt = 1;               // Set Temperature Sampling Over Flag.
            /******************************************
            ***  (2)Measure External Power Voltage  ***
            ******************************************/
	        ADC0_CH_Setting(0x03);   // External Power Voltage(CH3) ADC Begin.                  
            AD0INT = 0;              //
            AD0BUSY = 1;             // Start ADC0   
            while( AD0INT == 0 );    // Wait for Convert Over
            ExPwrVolt = ADC0H;       // External Power Voltage.
  	     }	 
         if( CurrTxVocChNum <= 2 )   // Current UpLoad: CHn ( n = 0/1/2 ).      
		   VocChnDatTxTimCNT++;      // Voice Record DATA UpLoad Time Counting.
         else
		   VocChnDatTxTimCNT = 0;
         /**************************************************************
         ***  MCU STATUS CHANGED FRAME : No3  ***
         **************************************************************/
	     if( MCU_STATUS != MCULastSTA )
	     {
            if( StaDatReady == 0 )
		    { 
	           StaDATA[6] = MCU_STATUS;
 	           MCULastSTA = MCU_STATUS;      // Refresh MCU STATUS Record. 
		       StaDatReady = 1;
            }  
	     }    
		 if( RecChnTxDly == 1 )
		   RecChnTxDlyCNT++;
         SecFlag = 0;                // RST Second TimOut flag.
      }
      /**************************************************************
      ***  MINUTE FLAG VALID ***
      **************************************************************/
      if( MinFlag )                  // Minute TimOut flag Valid.
      {
	     MinCNT++;
         SysDATA[6]  = SysTemp;      // .
	     SysDATA[7]  = ExPwrVolt;    // .
	     SysDATA[8]  = BattVolt;     // .
	     SysDATA[9]  = MCU_Ex386_STATUS & 0x1f; // .
         SysDATA[10] = McuTxCNT;     // MCU TX Frame Counting.
	     SysDATA[11] = RxAckCNT;     // 386Ex ACK Counting.
	     SysDATA[12] = 0;            // Voice CH0 Record Counting.
	     SysDATA[13] = 0;            // Voice CH1 Record Counting.
	     SysDATA[14] = 0;            // Voice CH2 Record Counting.
         SysDatReady = 1;            // System Status Data Frame Ready To Send.

         ucTMP = McuTxCNT - RxAckCNT;
         ucTMP = 1;                  // ?????????????????????????. 
		 if( ucTMP > 5 )
		 {
            SysStandby = 1;          //
            Ex386RST = 1;            // 
            nRST386 = 0;             // Reset the Ex386.
 		    DmS(10);                 // delay 10mS.
   			nRST386 = 1;             // 386Ex Normal Operation.
		    D1S(250);
		 } 
         McuTxCNT = 0;               // MCU TX Frame Counting every minute.
         RxAckCNT = 0;               // 386Ex Ack Counting every minute.
         /**************************************************************
         ***  HOUR FLAG VALID  ***
         **************************************************************/
		 if( MinCNT >= 60 )
		 {
	        SysDATA[12] = VocCh0RecTimCNT;   // Voice CH0 Record Counting.
	        SysDATA[13] = VocCh1RecTimCNT;   // Voice CH1 Record Counting.
	        SysDATA[14] = VocCh2RecTimCNT;   // Voice CH2 Record Counting.

            VocCh0RecTimCNT  = 0;            // Voice Record 0 Counting every hour.
            VocCh1RecTimCNT  = 0;            // Voice Record 1 Counting every hour.
            VocCh2RecTimCNT  = 0;            // Voice Record 2 Counting every hour.
		 }
         MinFlag = 0;                        // RST Minute TimOut flag.
      }
	  /**************************************************************
      ***  External Power On/Off  ***
      **************************************************************/
	  if( ExPwrStaChg )                        // ExPwr STATUS Changed.
	  {	    
		 if( ExPwrCurrSTA == 0 )               // External Power On (Off To On).
		 {
            if( ExPwrNrlVldCNT >= ExPwrNrlVldTim )       
            {                                  // External Power On Valid. 
               ExPwrLastSTA = ExPwrCurrSTA;    // Save Current ExPwr STATUS.
		       ExPwrNrlVldCNT = 0;             // RST ExPwr Normal Valid Counter.
			   PwrCtrl(1);                     // To Power On Ex386.
               PwrLedOn = 255;
			   PwrLedOff = 255;
               SysStandby = 0;                 // System Normal Operating. 
		    }
		 }
		 else                                  // External Power Off (On To Off).
		 {
            PwrLedOn = 1;
	        PwrLedOff = 2;               
            if( ExPwrOffAlmEvt == 0 )
			{
               if( ExPwrAlmVldCNT >= ExPwrAlmVldTim )       
               {                               // ExPwr Off Alarm Valid.
			      ExPwrOffAlm = 1;             //  
 		          AlmDATA[6] = MCU_ALARM;      // ExPwr Off Alarm.
                  AlmDATA[6] = AlmDATA[6] & 0x07;
  		          AlmDatReady = 1;             // Alarm Frame Ready Flag.
			      ExPwrOffAlmEvt = 1;          // Alarm Done. 
                  AlmStaVld = 1;               // Alarm STATUS. 
		       }
            }
            if( ExPwrAlmVldCNT >= ExPwrOffShutDown )       
            {                                  // ExPwrOff PwrOff: 15min.
//             BattLastSTA = BattCurrSTA;      // Save Current Battary STATUS.
			   BattAlmVldCNT = 0;              // RST Battary Alarm Valid Counter.
               LowBattAlmEvt = 0;              // RST LowBatt Alarm Event Flag.

               ExPwrLastSTA = ExPwrCurrSTA;    // Save Current ExPwr STATUS.
			   ExPwrAlmVldCNT = 0;             // RST ExPwrChg Counter.
			   ExPwrOffAlmEvt = 0;             // 

//             TempLastSTA = TempCurrSTA;      // Save Current Temp STATUS.
			   TempAlmVldCNT = 0;              // RST OverTemp Alarm Valid Counter.
   		       OverTempAlmEvt = 0;             // RST Temp Alarm Event Flag.

               ExPwrChgCNT = 0;                // RST Power Change Status Counter.
               BattAlmVldCNT = 0;              // RST Battary Alarm  Valid Counter.
               BattNrlVldCNT = 0;              // RST Battary Normal Valid Counter.
               TempAlmVldCNT = 0;              // RST Temp Alarm  Valid Counter.
               TempNrlVldCNT = 0;              // RST Temp Normal Valid Counter.
               ExPwrAlmVldCNT = 0;             // RST ExPwr Alarm  Valid Counter.
               ExPwrNrlVldCNT = 0;             // RST ExPwr Normal Valid Counter.

			   Ex386PwrDwn = 0; 

⌨️ 快捷键说明

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