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

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

?? sci_ti2s.lst

?? 時間觸發(fā)嵌入式系統(tǒng)設(shè)計模式源碼
?? LST
字號:
C51 COMPILER V6.10  SCI_TI2S                                                               04/18/2001 16:53:01 PAGE 1   


C51 COMPILER V6.10, COMPILATION OF MODULE SCI_TI2S
OBJECT MODULE PLACED IN .\SCI_TI2S.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE .\SCI_TI2S.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*------------------------------------------------------------------*-
   2          
   3             SCI_Ti2s.c (v1.00)
   4          
   5            ------------------------------------------------------------------
   6          
   7             This is an implementation of SCI SCHEDULER (TICK) for 8051/52.
   8          
   9             --- See Chapter 26 ---
  10          
  11             *** SLAVE NODE : TICK-ONLY (DUPLEX) ***
  12             *** MASTER CHECKS FOR SLAVE ACKNOWLEDEMENTS ***
  13          
  14             *** Uses 1232 watchdog timer ***
  15          
  16             *** Both Master and Slave share the same tick rate (1 ms) ***
  17             *** - See Master code for details ***
  18          
  19          
  20             COPYRIGHT
  21             ---------
  22          
  23             This code is from the book:
  24          
  25             PATTERNS FOR TIME-TRIGGERED EMBEDDED SYSTEMS by Michael J. Pont 
  26             [Pearson Education, 2001; ISBN: 0-201-33138-1].
  27          
  28             This code is copyright (c) 2001 by Michael J. Pont.
  29           
  30             See book for copyright details and other information.
  31          
  32          -*------------------------------------------------------------------*/
  33          
  34          #include "Main.h"
  35          #include "Port.h"
  36          
  37          #include "SCI_Ti2s.h"
  38          #include "TLight_A.h"
  39          
  40          // ------ Public variable declarations -----------------------------
  41          
  42          // The array of tasks (see Sch51.c)
  43          extern sTask SCH_tasks_G[SCH_MAX_TASKS];
  44          
  45          // The error code variable (see Sch51.c)
  46          extern tByte Error_code_G;
  47          
  48          // ------ Private function prototypes ------------------------------
  49          
  50          static void SCI_TICK2_SLAVE_Enter_Safe_State(void);
  51          
  52          static void SCI_TICK2_SLAVE_Watchdog_Init(void);
  53          static void SCI_TICK2_SLAVE_Watchdog_Refresh(void) reentrant;
  54          
  55          /*------------------------------------------------------------------*-
C51 COMPILER V6.10  SCI_TI2S                                                               04/18/2001 16:53:01 PAGE 2   

  56          
  57            SCI_TICK2_SLAVE_Init()
  58          
  59            Scheduler initialisation function.  Prepares scheduler
  60            data structures and sets up timer interrupts at required rate.
  61          
  62            Must call this function before using the scheduler.  
  63          
  64          -*------------------------------------------------------------------*/
  65          void SCI_TICK2_SLAVE_Init(void) 
  66             {
  67   1         tByte i;
  68   1       
  69   1         // Sort out the tasks
  70   1         for (i = 0; i < SCH_MAX_TASKS; i++) 
  71   1            {
  72   2            SCH_Delete_Task(i);
  73   2            }
  74   1      
  75   1         // Reset the global error variable
  76   1         // - SCH_Delete_Task() will generate an error code, 
  77   1         //   (because the task array is empty)
  78   1         Error_code_G = 0;
  79   1       
  80   1         // ---------- External interrupt 0 ----------
  81   1         // The slave is driven by an interrupt input
  82   1         // The interrupt is enabled 
  83   1         // It is triggered by a falling edge at pin P3.2
  84   1         IT0 = 1;
  85   1         EX0 = 1;
  86   1      
  87   1         // Start the watchdog
  88   1         SCI_TICK2_SLAVE_Watchdog_Init();  
  89   1         }
  90          
  91          /*------------------------------------------------------------------*-
  92          
  93            SCI_TICK2_SLAVE_Start()
  94          
  95            Starts the slave scheduler, by enabling interrupts.
  96          
  97            NOTE: Usually called after all regular tasks are added,
  98            to keep the tasks synchronised.
  99          
 100            NOTE: ONLY THE SCHEDULER INTERRUPT SHOULD BE ENABLED!!! 
 101          
 102          -*------------------------------------------------------------------*/
 103          void SCI_TICK2_SLAVE_Start(void) 
 104             {
 105   1         // Place system in a safe state
 106   1         // - slave will keep returning here if master does not start
 107   1         // - or otherwise fails.
 108   1         SCI_TICK2_SLAVE_Enter_Safe_State();
 109   1      
 110   1         // Now in a safe state
 111   1         // Wait here - indefinitely - for the first tick
 112   1         // (Refresh the watchdog to avoid constant watchdog restarts)
 113   1         while (IE0 == 0)
 114   1            {
 115   2            SCI_TICK2_SLAVE_Watchdog_Refresh();
 116   2            }
 117   1      
C51 COMPILER V6.10  SCI_TI2S                                                               04/18/2001 16:53:01 PAGE 3   

 118   1         // Clear the flag
 119   1         IE0 = 0;
 120   1      
 121   1         // Start the scheduler
 122   1         EA = 1;
 123   1         }
 124          
 125          /*------------------------------------------------------------------*-
 126          
 127            SCI_TICK2_SLAVE_Update
 128          
 129            This is the scheduler ISR.  It is called at a rate 
 130            determined by the timer settings in SCI_TICK2_SLAVE_Init().
 131          
 132            This Slave is triggered by external interrupts.
 133           
 134          -*------------------------------------------------------------------*/
 135          void SCI_TICK2_SLAVE_Update(void) interrupt INTERRUPT_EXTERNAL_0  
 136             {
 137   1         tByte Index;
 138   1      
 139   1         // Feed the watchdog
 140   1         // Master will monitor this pin to check for slave activity 
 141   1         SCI_TICK2_SLAVE_Watchdog_Refresh();
 142   1      
 143   1         // Now do 'standard' scheduler updates
 144   1      
 145   1         // NOTE: calculations are in *TICKS* (not milliseconds)
 146   1         for (Index = 0; Index < SCH_MAX_TASKS; Index++)
 147   1            {
 148   2            // Check if there is a task at this location
 149   2            if (SCH_tasks_G[Index].pTask)
 150   2               {
 151   3               if (SCH_tasks_G[Index].Delay == 0)
 152   3                  {
 153   4                  // The task is due to run
 154   4                  SCH_tasks_G[Index].RunMe += 1;  // Incr. the run flag
 155   4      
 156   4                  if (SCH_tasks_G[Index].Period)
 157   4                     {
 158   5                     // Schedule this periodic task to run again
 159   5                     SCH_tasks_G[Index].Delay = SCH_tasks_G[Index].Period;
 160   5                     }
 161   4                  }
 162   3               else
 163   3                  {
 164   4                  // Not yet ready to run: just decrement the delay 
 165   4                  SCH_tasks_G[Index].Delay -= 1;
 166   4                  }
 167   3               }         
 168   2            }
 169   1         }   
 170          
 171          /*------------------------------------------------------------------*-
 172          
 173            SCI_TICK2_SLAVE_Watchdog_Init()
 174          
 175            This function sets up the watchdog timer.
 176          
 177            If the Master fails (or other error develop), 
 178            no tick messages will arrive, and the scheduler
 179            will stop.  
C51 COMPILER V6.10  SCI_TI2S                                                               04/18/2001 16:53:01 PAGE 4   

 180          
 181            To detect this situation, we have a (hardware) watchdog
 182            running in the slave.  This watchdog - which should be set to
 183            overflow at around 100ms - is used to set the system into a
 184            known (safe) state.  The slave will then wait (indefinitely)
 185            for the problem to be resolved.
 186          
 187            NOTE: The slave will not be generating Ack messages in these 
 188            circumstances.  The Master (if running) will therefore be aware
 189            that there is a problem.  
 190          
 191          -*------------------------------------------------------------------*/
 192          void SCI_TICK2_SLAVE_Watchdog_Init(void)   
 193             {
 194   1         // INIT NOT REQUIRED FOR 1232 EXTERNAL WATCHDOG
 195   1         // - May be required wwith different watchdog hardware
 196   1         //
 197   1         // Edit as required
 198   1         }
 199          
 200          
 201          /*------------------------------------------------------------------*-
 202          
 203            SCI_TICK2_SLAVE_Watchdog_Refresh()
 204          
 205            Feed the external (1232) watchdog.
 206          
 207            Timeout is between ~60 and 250 ms (hardware dependent)
 208          
 209            HARDWARE: Assumes external 1232 watchdog
 210          
 211          -*------------------------------------------------------------------*/
 212          void SCI_TICK2_SLAVE_Watchdog_Refresh(void) reentrant
 213             {
 214   1         static bit WATCHDOG_state;
 215   1      
 216   1         // Change the state of the watchdog pin
 217   1         if (WATCHDOG_state == 1)
 218   1            {
 219   2            WATCHDOG_state = 0;
 220   2            WATCHDOG_pin = 0;
 221   2            }
 222   1         else
 223   1            {
 224   2            WATCHDOG_state = 1;
 225   2            WATCHDOG_pin = 1;
 226   2            }
 227   1         }    
 228          
 229          /*------------------------------------------------------------------*-
 230          
 231            SCI_TICK2_SLAVE_Enter_Safe_State()
 232          
 233            This is the state enterted by the system when:
 234            (1) The node is powered up or reset
 235            (2) The Master node fails
 236            (3) The network has an error
 237            (4) Tick messages are delayed for any other reason
 238          
 239            Try to ensure that the system is in a 'safe' state in these 
 240            circumstances.
 241          
C51 COMPILER V6.10  SCI_TI2S                                                               04/18/2001 16:53:01 PAGE 5   

 242          -*------------------------------------------------------------------*/
 243          void SCI_TICK2_SLAVE_Enter_Safe_State(void)
 244             {
 245   1         // USER DEFINED - Edit as required
 246   1         TRAFFIC_LIGHTS_Display_Safe_Output();
 247   1         }   
 248          
 249          /*------------------------------------------------------------------*-
 250            ---- END OF FILE -------------------------------------------------
 251          -*------------------------------------------------------------------*/
 252          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    210    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品高清在线| 精品蜜桃在线看| 一区二区在线观看免费视频播放| av一区二区久久| 亚洲欧美日韩中文播放| 色婷婷久久久亚洲一区二区三区| 一区二区三区在线视频免费| 日本韩国一区二区| 日韩精品电影在线观看| 26uuu欧美| 99国产精品久久| 视频在线观看91| 精品国产凹凸成av人导航| 国产成人精品www牛牛影视| 亚洲日本在线天堂| 欧美日韩中文另类| 精品一二三四区| 国产精品国产精品国产专区不片| 欧美性色黄大片手机版| 日本在线不卡视频| 久久精品无码一区二区三区| 色天天综合久久久久综合片| 日本视频一区二区| 中文字幕av在线一区二区三区| 91麻豆免费看片| 蜜桃视频在线观看一区二区| 国产丝袜美腿一区二区三区| 色哟哟亚洲精品| 日本成人在线网站| 国产精品视频在线看| 欧美日韩国产在线播放网站| 国产一区 二区| 亚洲成人资源网| 国产欧美综合在线观看第十页| 欧美伊人久久大香线蕉综合69| 久久不见久久见中文字幕免费| 亚洲视频免费观看| 久久亚洲一级片| 欧美天天综合网| 成人综合婷婷国产精品久久免费| 亚洲成精国产精品女| 中文一区一区三区高中清不卡| 欧美日韩久久不卡| av电影一区二区| 久久99精品国产麻豆不卡| 玉足女爽爽91| 国产精品伦理一区二区| 日韩一区二区三区高清免费看看| 91一区二区三区在线播放| 国产呦精品一区二区三区网站| 亚洲成人av电影在线| 国产精品久久久久久久久免费相片 | 国产成人免费视频一区| 五月天网站亚洲| 亚洲精品五月天| 中文在线一区二区| 国产午夜一区二区三区| 欧美一区二区三级| 91福利精品视频| av电影在线观看完整版一区二区| 国产乱人伦偷精品视频免下载| 日韩国产一二三区| 亚洲综合视频网| 亚洲激情一二三区| 樱花影视一区二区| 综合中文字幕亚洲| 国产精品免费丝袜| 国产精品久久久爽爽爽麻豆色哟哟 | 日韩精品一区二区三区视频在线观看 | 色综合中文综合网| 日韩区在线观看| 欧美乱妇20p| 欧美日韩在线三级| 色哟哟国产精品免费观看| 丰满白嫩尤物一区二区| 国产一区二区美女诱惑| 久久99热99| 国产专区综合网| 久久激情五月激情| 国产麻豆一精品一av一免费| 国产综合色视频| 国内精品视频一区二区三区八戒| 精品无人码麻豆乱码1区2区| 久久国产精品72免费观看| 久久国产三级精品| 国产一区欧美日韩| 成人久久18免费网站麻豆 | 9久草视频在线视频精品| 成人爱爱电影网址| 色伊人久久综合中文字幕| 欧美视频你懂的| 欧美二区在线观看| 欧美变态tickle挠乳网站| 精品不卡在线视频| 中日韩av电影| 亚洲激情一二三区| 日韩影院免费视频| 狠狠v欧美v日韩v亚洲ⅴ| 国产999精品久久| 91丨porny丨最新| 欧美日韩成人综合在线一区二区| 日韩欧美中文字幕精品| 国产亚洲成年网址在线观看| 国产精品免费aⅴ片在线观看| 亚洲柠檬福利资源导航| 亚洲福利视频一区二区| 麻豆国产精品官网| 成人午夜av影视| 欧美色视频在线| 欧美精品一区二区三区蜜桃| 国产精品久久久久久久久晋中| 一区二区三区精品久久久| 日韩vs国产vs欧美| 成人a区在线观看| 91麻豆精品国产91久久久更新时间| 2024国产精品| 亚洲精品免费播放| 久久av中文字幕片| 在线欧美日韩精品| 久久综合久久久久88| 一区二区三区四区不卡视频| 日本不卡123| 91亚洲精品久久久蜜桃| 日韩一二三区视频| 日韩理论电影院| 久久福利视频一区二区| 在线观看91精品国产入口| 久久久精品中文字幕麻豆发布| 亚洲国产日韩a在线播放| 国产成人免费在线| 日韩三区在线观看| 夜夜嗨av一区二区三区中文字幕| 久久成人免费网站| 欧美日韩精品专区| 亚洲日本在线视频观看| 国精产品一区一区三区mba桃花 | 99国产精品99久久久久久| 日韩欧美一区二区免费| 亚洲色图视频免费播放| 国产综合色精品一区二区三区| 欧美日韩国产美女| 亚洲欧美日韩中文播放| 福利一区二区在线观看| 欧美一区二区日韩| 亚洲大片在线观看| 色婷婷av一区| 亚洲欧洲日韩在线| 国产精品伊人色| 精品国产露脸精彩对白| 人人超碰91尤物精品国产| 在线精品视频一区二区| 国产精品美女视频| 国产成人鲁色资源国产91色综| 欧美一区二区播放| 午夜欧美视频在线观看| 欧美亚洲综合另类| 一区二区三区在线观看动漫| 99久久精品免费精品国产| 久久精品视频免费| 国产精品一区二区久激情瑜伽| 欧美一区二区福利在线| 三级欧美在线一区| 欧美日本在线一区| 肉肉av福利一精品导航| 欧美色图免费看| 日韩精品久久久久久| 欧美日韩精品一区二区三区 | 91精品国产黑色紧身裤美女| 亚洲国产精品视频| 欧美日韩黄色影视| 日韩电影一区二区三区| 日韩欧美一二三区| 国产酒店精品激情| 国产日韩欧美综合一区| 夫妻av一区二区| 国产精品久久久久影院| 色综合视频在线观看| 亚洲一区二区高清| 欧美精品自拍偷拍| 精品亚洲成a人| 国产亚洲一区二区三区在线观看| 丰满放荡岳乱妇91ww| 国产精品国产自产拍在线| 色先锋资源久久综合| 一区二区在线观看免费| 91麻豆精品国产| 国产一区二区调教| 中文字幕va一区二区三区| 色视频欧美一区二区三区| 一区二区三区中文在线观看| 欧美日韩在线播| 久久99国产精品久久| 国产精品欧美久久久久无广告| 在线免费观看视频一区| 日韩电影在线一区| 国产精品沙发午睡系列990531| 91在线视频观看| 秋霞午夜鲁丝一区二区老狼| 久久久久国产精品厨房| 91久久精品一区二区二区|