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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? scu_bm.lst

?? 時間觸發嵌入式系統設計模式源碼
?? LST
?? 第 1 頁 / 共 3 頁
字號:
C51 COMPILER V6.10  SCU_BM                                                                 04/19/2001 13:58:56 PAGE 1   


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

stmt level    source

   1          /*------------------------------------------------------------------*-
   2          
   3             SCU_Bm.c (v1.00)
   4          
   5            ------------------------------------------------------------------
   6          
   7             This is an implementation of SCU SCHEDULER (RS-485) for 8051/52.
   8          
   9             --- See Chapter 27 ---
  10          
  11             *** MASTER NODE ***
  12             *** CHECKS FOR SLAVE ACKNOWLEDEMENTS ***
  13             *** Includes support for tranceiver enables ***
  14          
  15             --- Assumes 12.00 MHz crystal -> 5ms tick rate ---
  16             --- Master and slave(s) share same tick rate ---
  17          
  18             --- Assumes '1232' watchdog on Master and Slave ---
  19          
  20          
  21             COPYRIGHT
  22             ---------
  23          
  24             This code is from the book:
  25          
  26             PATTERNS FOR TIME-TRIGGERED EMBEDDED SYSTEMS by Michael J. Pont 
  27             [Pearson Education, 2001; ISBN: 0-201-33138-1].
  28          
  29             This code is copyright (c) 2001 by Michael J. Pont.
  30           
  31             See book for copyright details and other information.
  32          
  33          -*------------------------------------------------------------------*/
  34          
  35          #include "Main.h"
  36          #include "Port.h"
  37          
  38          #include "SCU_Bm.H"
  39          #include "Delay_T0.h"
  40          #include "TLight_B.h"
  41          
  42          // ------ Public variable definitions ------------------------------
  43          
  44          tByte Tick_message_data_G[NUMBER_OF_SLAVES] = {'1','2'};  
  45          tByte Ack_message_data_G[NUMBER_OF_SLAVES];
  46          
  47          // ------ Public variable declarations -----------------------------
  48          
  49          // The array of tasks (see Sch51.c)
  50          extern sTask SCH_tasks_G[SCH_MAX_TASKS];
  51          
  52          // The error code variable (see Sch51.c)
  53          extern tByte Error_code_G;
  54          
  55          // ------ Private variable definitions -----------------------------
C51 COMPILER V6.10  SCU_BM                                                                 04/19/2001 13:58:56 PAGE 2   

  56          
  57          static tByte Current_slave_index_G = 0;
  58          static bit First_ack_G = 1;
  59          static bit WATCHDOG_state_G = 0;
  60          
  61          // ------ Private function prototypes ------------------------------
  62          
  63          static void SCU_B_MASTER_Reset_the_Network(void);
  64          static void SCU_B_MASTER_Shut_Down_the_Network(void);
  65          static void SCU_B_MASTER_Switch_To_Backup_Slave(const tByte);
  66          
  67          static void SCU_B_MASTER_Send_Tick_Message(const tByte);
  68          static bit  SCU_B_MASTER_Process_Ack(const tByte);
  69          
  70          static void  SCU_B_MASTER_Watchdog_Init(void);
  71          static void  SCU_B_MASTER_Watchdog_Refresh(void) reentrant;
  72          
  73          // ------ Private constants ----------------------------------------
  74          
  75          // Slave IDs may be any NON-ZERO tByte value (all must be different)
  76          // NOTE: ID 0x00 is for error handling.
  77          static const tByte MAIN_SLAVE_IDs[NUMBER_OF_SLAVES] = {0x31,0x32};
  78          static const tByte BACKUP_SLAVE_IDs[NUMBER_OF_SLAVES] = {0x31,0x32};
  79          
  80          #define NO_NETWORK_ERROR (1) 
  81          #define NETWORK_ERROR (0)
  82          
  83          // Adjust (if required) to increase interval between network resets
  84          // (in the event of sustained network error)
  85          #define SLAVE_RESET_INTERVAL 0U
  86          
  87          // ------ Private variables ----------------------------------------
  88          
  89          static tWord Slave_reset_attempts_G[NUMBER_OF_SLAVES];
  90          
  91          // See MAIN_SLAVE_IDs[] above
  92          static tByte Current_Slave_IDs_G[NUMBER_OF_SLAVES] = {0};
  93          
  94          static bit Message_byte_G = 1;
  95          
  96          /*------------------------------------------------------------------*-
  97          
  98            SCU_B_MASTER_Init_T1_T2()
  99          
 100            Scheduler initialisation function.  Prepares scheduler data 
 101            structures and sets up timer interrupts at required rate.
 102            You must call this function before using the scheduler.  
 103          
 104            BAUD_RATE - The required baud rate.
 105          
 106          -*------------------------------------------------------------------*/
 107          void SCU_B_MASTER_Init_T1_T2(const tWord BAUD_RATE) 
 108             {
 109   1         tByte Task_index;
 110   1         tByte Slave_index;
 111   1      
 112   1         // No interrupts (yet)
 113   1         EA = 0;
 114   1      
 115   1         // Start the watchdog
 116   1         SCU_B_MASTER_Watchdog_Init();
 117   1      
C51 COMPILER V6.10  SCU_BM                                                                 04/19/2001 13:58:56 PAGE 3   

 118   1         Network_error_pin = NO_NETWORK_ERROR;
 119   1      
 120   1         // Set up RS-485 tranceiver
 121   1         RS485_Rx_NOT_Enable = 0;  // Master Rec is constantly enabled
 122   1         RS485_Tx_Enable = 1;      // Master Tran is constantly enabled
 123   1      
 124   1         // ------ Set up the scheduler ----------------------------------
 125   1         // Sort out the tasks
 126   1         for (Task_index = 0; Task_index < SCH_MAX_TASKS; Task_index++) 
 127   1            {
 128   2            SCH_Delete_Task(Task_index);
 129   2            }
 130   1      
 131   1         // Reset the global error variable
 132   1         // - SCH_Delete_Task() will generate an error code, 
 133   1         //   (because the task array is empty)
 134   1         Error_code_G = 0;
 135   1      
 136   1         // We allow any combination of ID numbers in slaves
 137   1         // - but reserve ID 0x00
 138   1         for (Slave_index = 0; Slave_index < NUMBER_OF_SLAVES; Slave_index++)
 139   1            {
 140   2            Slave_reset_attempts_G[Slave_index] = 0;
 141   2            Current_Slave_IDs_G[Slave_index] = MAIN_SLAVE_IDs[Slave_index];
 142   2            }
 143   1      
 144   1         // ------ Set the baud rate (begin) -----------------------------
 145   1         PCON &= 0x7F;   // Set SMOD bit to 0 (don't double baud rates)
 146   1      
 147   1         //  Receiver enabled
 148   1         //  *9-bit data*, 1 start bit, 1 stop bit, variable baud rate (asynchronous)
 149   1         SCON = 0xD2;
 150   1      
 151   1         TMOD |= 0x20;   // T1 in mode 2, 8-bit auto reload
 152   1      
 153   1         TH1 = (256 - (tByte)((((tLong)OSC_FREQ / 100) * 3125) 
 154   1                  / ((tLong) BAUD_RATE * OSC_PER_INST * 1000)));
 155   1      
 156   1         TL1 = TH1;  
 157   1         TR1 = 1;  // Run the timer
 158   1         TI = 1;   // Send first character (dummy)
 159   1         // ------ Set the baud rate (end) -------------------------------
 160   1      
 161   1         // Serial interrupt *NOT* enabled
 162   1         ES = 0;
 163   1         // ------ Set up the serial link (end) --------------------------
 164   1      
 165   1         // ------ Set up Timer 2 (begin) --------------------------------
 166   1         // Crystal is assumed to be 12 MHz, 12 osc/increment
 167   1         //
 168   1         // The Timer 2 resolution is 0.000001 seconds (1 祍)
 169   1         // The required Timer 2 overflow is 0.005 seconds (5 ms)
 170   1         // - this takes 5000 timer ticks
 171   1         // Reload value is 65536 - 5000 = 60536 (dec) = 0xEC78
 172   1      
 173   1         T2CON = 0x04;   // load Timer 2 control register
 174   1         T2MOD = 0x00;   // load Timer 2 mode register
 175   1      
 176   1         TH2    = 0xEC;  // load timer 2 high byte
 177   1         RCAP2H = 0xEC;  // load timer 2 reload capture reg, high byte
 178   1         TL2    = 0x78;  // load timer 2 low byte
 179   1         RCAP2L = 0x78;  // load timer 2 reload capture reg, low byte
C51 COMPILER V6.10  SCU_BM                                                                 04/19/2001 13:58:56 PAGE 4   

 180   1         
 181   1         ET2   = 1;  // Timer 2 interrupt is enabled
 182   1      
 183   1         TR2   = 1;  // Start Timer 2   
 184   1         // ------ Set up Timer 2 (end) ----------------------------------
 185   1         }
 186          
 187          /*------------------------------------------------------------------*-
 188          
 189            SCU_B_MASTER_Start()
 190          
 191            Starts the scheduler, by enabling interrupts.
 192          
 193            NOTE: Usually called after all regular tasks are added,
 194            to keep the tasks synchronised.
 195          
 196            NOTE: ONLY THE SCHEDULER INTERRUPT SHOULD BE ENABLED!!! 
 197          
 198            NOTE: Delays here (2ms) assume a baud rate of at leadt 9600 baud.
 199            You will need to fine-tune this code if you opt for a lower baud
 200            rate.
 201           
 202          -*------------------------------------------------------------------*/
 203          void SCU_B_MASTER_Start(void) 
 204             {
 205   1         tByte Slave_ID;
 206   1         tByte Num_active_slaves;
 207   1         tByte Id, i;
 208   1         bit First_byte = 0;
 209   1         bit Slave_replied_correctly;
 210   1         tByte Slave_index;
 211   1      
 212   1         // Refresh the watchdog
 213   1         SCU_B_MASTER_Watchdog_Refresh();
 214   1      
 215   1         // Place system in 'safe state'
 216   1         SCU_B_MASTER_Enter_Safe_State();
 217   1      
 218   1         // Report error as we wait to start
 219   1         Network_error_pin = NETWORK_ERROR;
 220   1      
 221   1         Error_code_G = ERROR_SCH_WAITING_FOR_SLAVE_TO_ACK;
 222   1         SCH_Report_Status(); // Sch not yet running - do this manually
 223   1      
 224   1         // Pause here (3000 ms), to time-out all the slaves
 225   1         // (This is the means by which we synchronise the network)
 226   1         for (i = 0; i < 100; i++)
 227   1            {
 228   2            Hardware_Delay_T0(30);
 229   2            SCU_B_MASTER_Watchdog_Refresh();
 230   2            }     
 231   1      
 232   1         // Currently disconnected from all slaves

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合狠狠综合| 一级做a爱片久久| 日韩一区二区中文字幕| 91成人免费在线视频| 91福利在线播放| 色综合久久久久综合体| 99精品久久久久久| 成人蜜臀av电影| 97久久久精品综合88久久| 国产成人精品亚洲日本在线桃色 | 一区二区三区波多野结衣在线观看| 久久久精品国产免大香伊| 国产午夜精品在线观看| 精品日韩成人av| 欧美激情综合五月色丁香| 国产欧美一区二区精品忘忧草| 亚洲成人在线网站| 91精品久久久久久蜜臀| 欧美日韩一区二区三区高清| 欧美亚洲动漫精品| 日韩一区和二区| 久久色中文字幕| 国产精品欧美精品| 亚洲在线视频网站| 日本在线不卡视频一二三区| 久久国产精品99精品国产| 国产一区二区三区在线观看精品 | 亚洲激情中文1区| 亚洲综合av网| 日韩av不卡一区二区| 久久97超碰国产精品超碰| 国产九色精品成人porny| 成人中文字幕电影| 91成人免费网站| 欧美一区二区高清| 国产日韩欧美精品一区| 亚洲色图20p| 日韩精品五月天| 国产福利一区在线| 色婷婷综合久久久久中文 | 在线观看一区不卡| 717成人午夜免费福利电影| 精品国产乱码久久久久久蜜臀| 中文字幕乱码一区二区免费| 一区二区三区精品视频在线| 久久精品国产免费看久久精品| 丁香婷婷综合色啪| 在线精品视频免费观看| 久久综合九色综合97婷婷女人| 亚洲天堂成人在线观看| 日本中文字幕一区| 成人黄色电影在线 | 亚洲二区在线观看| 国模娜娜一区二区三区| 色哟哟一区二区在线观看| 日韩一区二区三区电影在线观看| 国产欧美精品区一区二区三区| 夜夜嗨av一区二区三区中文字幕| 久久99久久久欧美国产| 一本色道久久综合亚洲91 | 亚洲视频一区二区在线| 久久99精品网久久| 91毛片在线观看| 欧美精品一区二| 亚洲一区二区在线观看视频 | 日韩视频免费观看高清完整版在线观看| 久久久久久免费毛片精品| 午夜精品免费在线观看| 成人午夜私人影院| 日韩精品在线看片z| 亚洲人成影院在线观看| 紧缚捆绑精品一区二区| 欧美视频你懂的| 国产精品不卡在线观看| 久久国产婷婷国产香蕉| 欧美性做爰猛烈叫床潮| 欧美国产成人精品| 另类小说一区二区三区| 欧美体内she精高潮| 国产精品女主播在线观看| 国产在线麻豆精品观看| 在线电影院国产精品| 亚洲精品中文在线| av一区二区三区四区| 26uuu色噜噜精品一区| 日日噜噜夜夜狠狠视频欧美人| 99久久精品国产网站| 久久精品视频一区二区三区| 麻豆成人在线观看| 7777精品伊人久久久大香线蕉完整版| 亚洲天堂a在线| 99视频有精品| 欧美高清在线精品一区| 国产精品亚洲专一区二区三区| 欧美伦理视频网站| 国产在线看一区| 亚洲精品一区在线观看| 色天天综合色天天久久| 欧美二区在线观看| 免费av成人在线| 国产精品第一页第二页第三页| 丝袜诱惑亚洲看片| 欧美三级蜜桃2在线观看| 天天综合色天天综合| 性做久久久久久免费观看欧美| 成人av网址在线观看| 国产日韩v精品一区二区| 国产精品夜夜嗨| 日本一区二区高清| 成人av网址在线| 国产精品超碰97尤物18| 91色porny| 亚洲国产精品人人做人人爽| 欧美日韩精品一二三区| 午夜免费久久看| 日韩一区二区三区免费观看| 久久99在线观看| 久久久欧美精品sm网站| 国产精品综合二区| 国产精品福利av| 在线一区二区视频| 婷婷成人综合网| 精品国产亚洲在线| 成人免费高清在线| 一区二区三区精品视频| 欧美精选一区二区| 久久 天天综合| 国产欧美日韩亚州综合| av成人老司机| 亚洲综合一二三区| 欧美一级淫片007| 国产精品一区在线观看乱码 | 亚洲一卡二卡三卡四卡无卡久久| 91黄色免费观看| 日本成人在线一区| 久久久91精品国产一区二区精品| 成人小视频免费观看| 亚洲一区二区欧美日韩| 日韩三级.com| 懂色av中文一区二区三区| 夜夜操天天操亚洲| 日韩欧美一区二区三区在线| 国产aⅴ综合色| 一区二区三区国产精华| 日韩亚洲欧美成人一区| 高清shemale亚洲人妖| 亚洲成人先锋电影| 久久婷婷一区二区三区| 在线一区二区三区做爰视频网站| 青青草97国产精品免费观看| 国产色综合一区| 欧洲亚洲国产日韩| 极品销魂美女一区二区三区| 亚洲天堂免费在线观看视频| 欧美男同性恋视频网站| 国产成人av一区二区三区在线观看| 一区二区三区四区亚洲| 91精品免费在线观看| 99视频一区二区三区| 卡一卡二国产精品| 亚洲精品视频一区二区| 日韩欧美电影一区| 91污片在线观看| 精品一区中文字幕| 亚洲成av人在线观看| 国产婷婷色一区二区三区在线| 欧美午夜精品久久久久久超碰| 国产一区二区三区在线观看精品| 一区二区三区四区中文字幕| 久久精品一区二区三区av| 免费欧美在线视频| 国产成人精品免费一区二区| 色先锋aa成人| 欧美另类z0zxhd电影| 亚洲欧美在线aaa| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品99久久久久久宅男| proumb性欧美在线观看| 9191国产精品| 亚洲a一区二区| 国产精品原创巨作av| 床上的激情91.| 日韩一区二区免费电影| 五月综合激情日本mⅴ| 精品毛片乱码1区2区3区 | 精品一区二区久久| 亚洲精品久久久蜜桃| 中文在线一区二区| 欧美精品一区二区三区在线播放 | 国产午夜精品福利| 欧美一区二区三区在| 欧美亚洲动漫精品| 精品欧美一区二区久久| 国产成人av电影在线观看| 欧美女孩性生活视频| 日韩成人一级片| 精品久久免费看| 在线播放国产精品二区一二区四区| 色噜噜偷拍精品综合在线| 成人丝袜18视频在线观看|