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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tlight_b.c

?? 時間觸發(fā)嵌入式系統(tǒng)設(shè)計模式源碼
?? C
字號:
/*------------------------------------------------------------------*-

   TLight_B.C (v1.00)

  ------------------------------------------------------------------
   
   Traffic light control program 

   Duplex version 
   - has information about bulb status on other node.


   COPYRIGHT
   ---------

   This code is from the book:

   PATTERNS FOR TIME-TRIGGERED EMBEDDED SYSTEMS by Michael J. Pont 
   [Pearson Education, 2001; ISBN: 0-201-33138-1].

   This code is copyright (c) 2001 by Michael J. Pont.
 
   See book for copyright details and other information.

-*------------------------------------------------------------------*/

#include "Main.h"
#include "TLight_B.h"
#include "Port.h"

// ------ Private constants ----------------------------------------

// Easy to change logic here
#define ON  0
#define OFF 1

// Times in each of the (four) possible light states
// (Times are in seconds - must call the update task once per second)
//
#define RED_DURATION  (10)
#define RED_AND_AMBER_DURATION  (10)

// NOTE: 
// GREEN_DURATION must equal RED_DURATION
// AMBER_DURATION must equal RED_AND_AMBER_DURATION
#define GREEN_DURATION RED_DURATION 
#define AMBER_DURATION RED_AND_AMBER_DURATION

// Must specify whether this is a MASTER or a SLAVE unit
#define MASTER_SLAVE MASTER

// ------ Public variable declarations -----------------------------

extern tByte Tick_message_data_G;  
extern tByte Ack_message_data_G;

// ------ Private variables ----------------------------------------

// The state of the system
static eLight_State Light_state_G;

// ------ Private function prototypes ------------------------------

bit TRAFFIC_LIGHTS_Check_for_Hardware_Faults(void) reentrant;
bit TRAFFIC_LIGHTS_Check_Local_Bulb(void);

/*------------------------------------------------------------------*-

  TRAFFIC_LIGHTS_Init()

  Prepare for scheduling.

-*-----------------------------------------------------------------*/
void TRAFFIC_LIGHTS_Init(void)
   {
   // Master and slave must start in opposite states
   if (MASTER_SLAVE == MASTER)
      {
      Light_state_G = RED;
      }
   else
      {
      Light_state_G = GREEN;
      }

   // Display safe output until scheduler starts
   TRAFFIC_LIGHTS_Display_Safe_Output();
   }

/*------------------------------------------------------------------*-

  TRAFFIC_LIGHTS_Update()

  Must be scheduled once per second.

-*------------------------------------------------------------------*/
void TRAFFIC_LIGHTS_Update(void)
   {
   static tWord Time_in_state;

   // Check for blown bulbs on master or slave
   TRAFFIC_LIGHTS_Check_for_Hardware_Faults();

   // This is the main update code
   switch (Light_state_G)
      {
      case RED: 
         {
         Red_light = ON;
         Amber_light = OFF;
         Green_light = OFF;

         if (++Time_in_state == RED_DURATION)
            {
            Light_state_G = RED_AMBER;
            Time_in_state = 0;
            }

         break;
         }

      case RED_AMBER: 
         {
         Red_light = ON;
         Amber_light = ON;
         Green_light = OFF;

         if (++Time_in_state == RED_AND_AMBER_DURATION)
            {
            Light_state_G = GREEN;
            Time_in_state = 0;
            }

         break;
         }

      case GREEN: 
         {
         Red_light = OFF;
         Amber_light = OFF;
         Green_light = ON;

         if (++Time_in_state == GREEN_DURATION)
            {
            Light_state_G = AMBER;
            Time_in_state = 0;
            }

         break;
         }

      case AMBER: 
         {
         Red_light = OFF;
         Amber_light = ON;
         Green_light = OFF;

         if (++Time_in_state == AMBER_DURATION)
            {
            Light_state_G = RED;
            Time_in_state = 0;
            }

         break;
         }

      case BULB_BLOWN: 
         {
         // Blown bulb detected
         // Switch all bulbs off
         // (Drivers won't be happy, but it will be clear
         //  that something is wrong)
         Red_light = OFF;
         Amber_light = OFF;
         Green_light = OFF;

         // We remain in this state until state
         // is changed manually, or system is reset
         break;
         }
      }
   }

/*------------------------------------------------------------------*-

  TRAFFIC_LIGHTS_Check_for_Hardware_Faults()

  Tests for and reports errors.

-*------------------------------------------------------------------*/
bit TRAFFIC_LIGHTS_Check_for_Hardware_Faults(void) reentrant
   {
   tByte Return = RETURN_NORMAL;

   // Check the status of the other node
   if (MASTER_SLAVE == MASTER) 
      {
      // This is a master unit
      // - check the status of the slave unit
      if (Ack_message_data_G == RETURN_ERROR)
         {
         // A bulb has blown on the SLAVE unit
         Light_state_G = BULB_BLOWN;
         Return = RETURN_ERROR;
         }
      }
   else
      {
      // This is a slave unit
      // - check the status of the master unit
      if (Tick_message_data_G == RETURN_ERROR)
         {
         // A bulb has blown on the MASTER unit
         Light_state_G = BULB_BLOWN;
         Return = RETURN_ERROR;
         }
      }

   // We check the local bulb status every time
   if (TRAFFIC_LIGHTS_Check_Local_Bulb() == RETURN_ERROR)
      {
      Light_state_G = BULB_BLOWN;

      // Must report this to the other node!
      if (MASTER_SLAVE == MASTER)
         {
         Tick_message_data_G = RETURN_ERROR; 
         }
      else
         {
         Ack_message_data_G = RETURN_ERROR; 
         }

      Return = RETURN_ERROR;
      }

   return (bit) Return;
   }

/*------------------------------------------------------------------*-

  TRAFFIC_LIGHTS_Check_Local_Bulb()

  Check the status of the local bulbs (DUMMY FUNCTION HERE)

-*------------------------------------------------------------------*/
bit TRAFFIC_LIGHTS_Check_Local_Bulb(void)
    {
    // This dummy function confirms the bulbs are OK
    //
    // - See Chapter 32 for complete version of this function.
    return RETURN_NORMAL;
    }

/*------------------------------------------------------------------*-

  TRAFFIC_LIGHTS_Display_Safe_Output()

  Used in the event of system failure, etc.

-*------------------------------------------------------------------*/
void TRAFFIC_LIGHTS_Display_Safe_Output(void)
   {
   if (TRAFFIC_LIGHTS_Check_for_Hardware_Faults() == RETURN_NORMAL)
      {
      // Bulbs are OK on both nodes
      // - best thing to do is to display STOP
      Red_light = ON;
      Amber_light = OFF;
      Green_light = OFF;
      }
   else
      {
      // At least one bulb has blown 
      // - best thing we can do is extinguish all bulbs
      Red_light = OFF;
      Amber_light = OFF;
      Green_light = OFF;
      } 
   }

/*------------------------------------------------------------------*-
  ---- END OF FILE -------------------------------------------------
-*------------------------------------------------------------------*/

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品国产第一综合99久久| 欧美久久久久久久久| 欧美激情中文不卡| 欧美日韩aaaaa| 精品国产免费人成在线观看| 欧美一级黄色片| 国产欧美日韩视频一区二区| 欧洲一区二区av| 日本韩国一区二区三区视频| 国产精品盗摄一区二区三区| 国产精品国产成人国产三级 | 99热这里都是精品| 99国产精品国产精品久久| 欧美成人精品1314www| 欧美日韩成人综合天天影院| 国产精品护士白丝一区av| 午夜电影一区二区三区| 丁香五精品蜜臀久久久久99网站 | 一区二区三国产精华液| 久久超碰97人人做人人爱| 一本一道久久a久久精品 | 欧美日韩精品免费| 精品国产精品网麻豆系列| 狠狠色狠狠色综合日日91app| 国产成人免费视频| 久久综合视频网| 成人爱爱电影网址| 久久久三级国产网站| 蜜臀精品一区二区三区在线观看| 韩国午夜理伦三级不卡影院| bt欧美亚洲午夜电影天堂| 日本一区二区三区免费乱视频| 午夜精品福利在线| 成人高清免费观看| 欧美精品自拍偷拍动漫精品| 亚洲在线一区二区三区| 国产成都精品91一区二区三 | 国产欧美视频在线观看| 91精品国产综合久久婷婷香蕉| 欧美激情自拍偷拍| 日韩中文字幕麻豆| 午夜亚洲国产au精品一区二区 | 粉嫩一区二区三区性色av| 国产一区二区三区蝌蚪| 久久亚洲私人国产精品va媚药| 久久美女艺术照精彩视频福利播放 | 亚洲免费观看高清完整版在线观看| 麻豆精品新av中文字幕| 欧美大黄免费观看| 亚洲国产成人av| 欧美日韩久久久久久| 国产jizzjizz一区二区| 亚洲成人免费影院| 91精品国产aⅴ一区二区| 蜜桃传媒麻豆第一区在线观看| 欧美精品一区二区三区高清aⅴ | 天天影视色香欲综合网老头| 欧美日韩国产乱码电影| 综合色中文字幕| 亚洲国产高清aⅴ视频| 日韩精品亚洲一区| 欧美一级午夜免费电影| 北条麻妃国产九九精品视频| 日韩理论片网站| 欧美喷水一区二区| 成人免费毛片嘿嘿连载视频| 三级精品在线观看| 欧美国产日韩一二三区| 欧美日韩国产小视频在线观看| 蜜桃精品视频在线| 亚洲人吸女人奶水| 日韩一二三四区| 不卡一区中文字幕| 日韩一区二区免费在线电影 | 九色porny丨国产精品| 日韩欧美aaaaaa| 色综合久久中文字幕| 久久超级碰视频| 亚洲一二三四在线| 精品国产伦一区二区三区观看方式| 日韩一区二区影院| 99精品欧美一区二区蜜桃免费| 国产精品成人午夜| 91精品国产综合久久国产大片| 国产盗摄女厕一区二区三区| 一区二区三区在线视频观看58| 在线观看亚洲a| 久久久久国产精品人| 成人永久免费视频| 日日骚欧美日韩| 99免费精品在线观看| 国产精品国模大尺度视频| 色先锋资源久久综合| 欧洲精品一区二区| 国产乱码精品一品二品| 激情综合色综合久久| 久久综合九色综合欧美98| 在线免费一区三区| 亚洲最大成人网4388xx| 久久久久久一二三区| 欧美一区二区三区影视| 久久99精品网久久| 久久先锋影音av鲁色资源| 91同城在线观看| 国产麻豆精品theporn| 国产美女精品在线| 国产精品影视在线| 亚洲综合在线免费观看| 91精品国产欧美日韩| 国产一区二区三区四区五区入口| 日韩av网站免费在线| 99久久国产免费看| 91丝袜美腿高跟国产极品老师 | 亚洲国产裸拍裸体视频在线观看乱了| 精品免费视频.| 91麻豆精品91久久久久同性| 另类的小说在线视频另类成人小视频在线| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 国产精品成人一区二区艾草| 欧美日韩国产一区| 欧美二区三区的天堂| 精品无码三级在线观看视频| 蜜桃av一区二区三区| 日韩欧美卡一卡二| 成人丝袜视频网| 精品国产凹凸成av人网站| 久久爱另类一区二区小说| 91色porny蝌蚪| 伊人开心综合网| 日韩成人精品在线观看| 久久欧美一区二区| 国产精品视频第一区| 中文字幕中文字幕一区| 色哟哟精品一区| 99久久免费精品| 欧美午夜不卡视频| 日韩免费福利电影在线观看| 欧美妇女性影城| 丝袜亚洲另类丝袜在线| 亚洲中国最大av网站| 一区二区三区四区亚洲| 久久精品国产色蜜蜜麻豆| 极品销魂美女一区二区三区| 丝袜诱惑亚洲看片| 亚洲精品日韩一| 亚洲一区在线看| 91麻豆精东视频| 一区二区三区四区激情| 国产一区久久久| 一区二区不卡在线播放| 国产亚洲精久久久久久| 久久久777精品电影网影网| 蜜臀av国产精品久久久久 | 99综合影院在线| 不卡的av在线播放| 国产一区二区三区不卡在线观看| 久久精品国产亚洲高清剧情介绍 | 国产一区日韩二区欧美三区| 国产呦精品一区二区三区网站| 国产一区久久久| 在线免费观看日韩欧美| 91精品国产综合久久精品麻豆| 日韩免费观看高清完整版| 精品久久五月天| 亚洲免费毛片网站| 久久99久久久久| 91污片在线观看| 欧美一级在线视频| 一区二区三区四区视频精品免费 | 精品少妇一区二区三区日产乱码| 日韩美女主播在线视频一区二区三区 | www.日韩av| 亚洲视频在线观看三级| 国产一区二区三区视频在线播放| 日韩欧美国产小视频| 日韩av在线发布| 久久久午夜电影| 日本道免费精品一区二区三区| 亚洲免费视频成人| 日韩三级精品电影久久久 | 99在线精品免费| 国产精品毛片久久久久久久| 亚洲国产精品精华液ab| 强制捆绑调教一区二区| 欧美午夜精品久久久久久孕妇| 亚洲欧美自拍偷拍色图| www.亚洲精品| 亚洲日本在线天堂| 99re热这里只有精品免费视频| 91精品欧美一区二区三区综合在 | 在线观看www91| 日本在线播放一区二区三区| 日韩欧美激情在线| 国产成人啪午夜精品网站男同| 中国av一区二区三区| 色婷婷久久一区二区三区麻豆| 香港成人在线视频| 久久久精品影视| 精品久久一区二区| 日本欧美韩国一区三区|