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

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

?? scu_as.lst

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


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

stmt level    source

   1          /*------------------------------------------------------------------*-
   2          
   3             SCU_As.c (v1.00)
   4          
   5            ------------------------------------------------------------------
   6          
   7             This is an implementation of SCU SCHEDULER (LOCAL) for 8051/52.
   8             AND an implementation of SCU SCHEDULER (RS-232) for 8051/52.
   9          
  10             --- See Chapter 27 ---
  11          
  12             *** MASTER NODE ***
  13             *** CHECKS FOR SLAVE ACKNOWLEDEMENTS ***
  14             *** Local / RS-232 version (no 'enable' support) ***
  15          
  16             *** Uses 1232 watchdog timer ***
  17          
  18             *** Assumes 12 MHz osc (same as Master) ***
  19          
  20             *** Both Master and Slave share the same tick rate (5 ms) ***
  21             *** - See Master code for details ***
  22          
  23          
  24             COPYRIGHT
  25             ---------
  26          
  27             This code is from the book:
  28          
  29             PATTERNS FOR TIME-TRIGGERED EMBEDDED SYSTEMS by Michael J. Pont 
  30             [Pearson Education, 2001; ISBN: 0-201-33138-1].
  31          
  32             This code is copyright (c) 2001 by Michael J. Pont.
  33           
  34             See book for copyright details and other information.
  35          
  36          -*------------------------------------------------------------------*/
  37          
  38          #include "Main.h"
  39          #include "Port.h"
  40          
  41          #include "SCU_As.h"
  42          #include "TLight_B.h"
  43          
  44          // ------ Public variable definitions ------------------------------
  45          
  46          // Data sent from the master to this slave
  47          tByte Tick_message_data_G;
  48          
  49          // Data sent from this slave to the master 
  50          // - data may be sent on, by the master, to another slave  
  51          tByte Ack_message_data_G = '1'; 
  52          
  53          // ------ Public variable declarations -----------------------------
  54          
  55          // The array of tasks (see Sch51.c)
C51 COMPILER V6.10  SCU_AS                                                                 04/19/2001 13:53:37 PAGE 2   

  56          extern sTask SCH_tasks_G[SCH_MAX_TASKS];
  57          
  58          // The error code variable (see Sch51.c)
  59          extern tByte Error_code_G;
  60          
  61          // ------ Private function prototypes ------------------------------
  62          
  63          static void  SCU_A_SLAVE_Enter_Safe_State(void);
  64          
  65          static void  SCU_A_SLAVE_Send_Ack_Message_To_Master(void);
  66          static tByte SCU_A_SLAVE_Process_Tick_Message(void);
  67          
  68          static void  SCU_A_SLAVE_Watchdog_Init(void);
  69          static void  SCU_A_SLAVE_Watchdog_Refresh(void) reentrant;
  70          
  71          
  72          // ------ Private constants ----------------------------------------
  73          
  74          // Each slave must have a unique non-zero ID 
  75          #define SLAVE_ID 0x31
  76          
  77          #define NO_NETWORK_ERROR (1) 
  78          #define NETWORK_ERROR (0)
  79          
  80          // ------ Private variables ----------------------------------------
  81          
  82          static bit Message_byte_G;
  83          static bit WATCHDOG_state_G = 0;
  84          static tByte Message_ID_G = 0;
  85          
  86          
  87          /*------------------------------------------------------------------*-
  88            SCU_A_SLAVE_Init_T1()
  89          
  90            Scheduler initialisation function.  Prepares scheduler
  91            data structures and sets up timer interrupts at required rate.
  92            Must call this function before using the scheduler.  
  93           
  94            BAUD_RATE - The required baud rate
  95          
  96          -*------------------------------------------------------------------*/
  97          void SCU_A_SLAVE_Init_T1(const tWord BAUD_RATE) 
  98             {
  99   1         tByte i;
 100   1      
 101   1         // Sort out the tasks
 102   1         for (i = 0; i < SCH_MAX_TASKS; i++) 
 103   1            {
 104   2            SCH_Delete_Task(i);
 105   2            }
 106   1      
 107   1         // Reset the global error variable
 108   1         // - SCH_Delete_Task() will generate an error code, 
 109   1         //   (because the task array is empty)
 110   1         Error_code_G = 0;
 111   1      
 112   1         // Set the network error pin (reset when tick message received)
 113   1         Network_error_pin = NETWORK_ERROR;
 114   1      
 115   1         // Ready for first tick message
 116   1         Message_byte_G = 1;
 117   1       
C51 COMPILER V6.10  SCU_AS                                                                 04/19/2001 13:53:37 PAGE 3   

 118   1         // ------ Set the baud rate (begin) -----------------------------
 119   1         PCON &= 0x7F;   // Set SMOD bit to 0 (don't double baud rates)
 120   1      
 121   1         //  receiver enabled
 122   1         //  9-bit data, 1 start bit, 1 stop bit, variable baud rate (asynchronous)
 123   1         SCON = 0xD2;
 124   1      
 125   1         TMOD |= 0x20;   // T1 in mode 2, 8-bit auto reload
 126   1      
 127   1         TH1 = (256 - (tByte)((((tLong)OSC_FREQ / 100) * 3125) 
 128   1                  / ((tLong) BAUD_RATE * OSC_PER_INST * 1000)));
 129   1      
 130   1         TL1 = TH1;  
 131   1         TR1 = 1;  // Run the timer
 132   1         TI = 1;   // Send first character (dummy)
 133   1      
 134   1         // ------ Set the baud rate (end) -------------------------------
 135   1      
 136   1         // Interrupt enabled
 137   1         // (Both receiving and SENDING a byte will generate a serial interrupt)
 138   1         // Global interrupts not yet enabled.
 139   1         ES = 1;
 140   1      
 141   1         // Start the watchdog
 142   1         SCU_A_SLAVE_Watchdog_Init();  
 143   1         }
 144          
 145          /*------------------------------------------------------------------*-
 146            SCU_A_SLAVE_Start()
 147          
 148            Starts the slave scheduler, by enabling interrupts.
 149          
 150            NOTE: Usually called after all regular tasks are added,
 151            to keep the tasks synchronised.
 152          
 153            NOTE: ONLY THE SCHEDULER INTERRUPT SHOULD BE ENABLED!!! 
 154          
 155          -*------------------------------------------------------------------*/
 156          void SCU_A_SLAVE_Start(void) 
 157             {
 158   1         tByte Command = 0;
 159   1         tByte Message_byte;
 160   1         tByte Count = 0;
 161   1         bit Slave_started = 0;
 162   1      
 163   1         // Disable interrupts 
 164   1         EA = 0;
 165   1      
 166   1         // We can be at this point because:
 167   1         // 1. The network has just been powered up
 168   1         // 2. An error has occurred in the Master, and it is not generating ticks
 169   1         // 3. The network has been damaged and no ticks are being received by this slave
 170   1         //
 171   1         // Try to make sure the system is in a safe state...
 172   1         SCU_A_SLAVE_Enter_Safe_State();
 173   1      
 174   1         // NOTE: Interrupts are disabled here
 175   1         Count = 0;
 176   1      
 177   1         Error_code_G = ERROR_SCH_WAITING_FOR_START_COMMAND_FROM_MASTER;
 178   1         SCH_Report_Status(); // Sch not yet running - do this manually
 179   1      
C51 COMPILER V6.10  SCU_AS                                                                 04/19/2001 13:53:37 PAGE 4   

 180   1         // Now wait (indefinitely) for appropriate signals from the master
 181   1         do {
 182   2            // Wait for tick messages (byte 1), all bits set to 0, to be received 
 183   2            do {
 184   3               SCU_A_SLAVE_Watchdog_Refresh(); // Must keep feeding the watchdog
 185   3               } while (RI == 0);  
 186   2      
 187   2            Message_byte = (tByte) SBUF; 
 188   2            RI = 0;
 189   2      
 190   2            // Must get two ID messages in a row...
 191   2            // (with command bit)
 192   2            // Ack each one
 193   2            if ((Message_byte == (tByte) SLAVE_ID) && (RB8 == 1))
 194   2               {
 195   3               Count++;
 196   3      
 197   3               // Received message for this slave - send ack
 198   3               TI = 0;                                            
 199   3               TB8 = 1; // Set command bit
 200   3               SBUF = (tByte) SLAVE_ID; 
 201   3               }
 202   2            else
 203   2               {
 204   3               Count = 0;
 205   3               }
 206   2            } while (Count < 2);
 207   1      
 208   1         // Start the scheduler
 209   1         EA = 1;
 210   1         }
 211          
 212          /*------------------------------------------------------------------*-
 213          
 214            SCU_A_SLAVE_Update
 215          
 216            This is the scheduler ISR.  It is called at a rate 
 217            determined by the timer settings in SCU_A_SLAVE_Init().
 218          
 219            This Slave is triggered by USART interrupts.
 220           
 221          -*------------------------------------------------------------------*/
 222          void SCU_A_SLAVE_Update(void) interrupt INTERRUPT_UART_Rx_Tx  
 223             {
 224   1         tByte Index;
 225   1      
 226   1         if (RI == 1) // Must check this. 
 227   1            {
 228   2            // Default
 229   2            Network_error_pin = NO_NETWORK_ERROR;
 230   2      
 231   2            // Two-byte messages are sent (Ack) and received (Tick)
 232   2            // - it takes two sched ticks to process each message
 233   2            //
 234   2            // Keep track of the current byte
 235   2            if (Message_byte_G == 0)
 236   2               {
 237   3               Message_byte_G = 1;
 238   3               }
 239   2            else
 240   2               {
 241   3               Message_byte_G = 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品国产欧美| 欧美日产国产精品| 欧美久久久久久久久| 久久久美女毛片| 五月天亚洲精品| 色综合欧美在线| 国产日韩欧美精品在线| 亚洲第一精品在线| aaa亚洲精品| 中文字幕av免费专区久久| 日韩高清不卡一区二区三区| 91社区在线播放| 国产调教视频一区| 韩国av一区二区三区| 91精品国产福利| 亚洲va天堂va国产va久| 色综合久久中文字幕综合网| 国产精品人成在线观看免费| 久久99精品国产麻豆不卡| 欧美久久高跟鞋激| 亚洲国产一区二区三区青草影视| 成人美女在线观看| 国产精品美女视频| 成人美女视频在线看| 日本一区二区三区在线不卡| 精品综合久久久久久8888| 日韩亚洲欧美高清| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美丝袜丝交足nylons| 亚洲日本韩国一区| 91国偷自产一区二区使用方法| 亚洲乱码日产精品bd | 国产精品视频免费| 国产激情一区二区三区| 久久综合色播五月| 国产精品88av| 中文字幕av一区二区三区高 | aaa国产一区| 亚洲免费观看视频| 在线观看av不卡| 性做久久久久久免费观看| 欧美日韩的一区二区| 日韩电影免费在线| 日韩精品一区二区在线| 国产精品一线二线三线| 日本一区二区动态图| 91香蕉视频mp4| 亚洲在线观看免费| 日韩美女视频在线| 国产大陆精品国产| 国产精品电影院| 在线观看免费成人| 久久狠狠亚洲综合| 中文字幕中文字幕在线一区 | 欧美一区二区三级| 国产成人午夜视频| 亚洲精品五月天| 日韩视频在线你懂得| 国产精品亚洲视频| 亚洲黄色片在线观看| 91麻豆精品国产91久久久久久 | 久久精品无码一区二区三区| av一区二区三区| 午夜av一区二区| 欧美精品一区二区高清在线观看| 丁香婷婷综合色啪| 亚洲bt欧美bt精品| 中文字幕第一页久久| 欧美日韩情趣电影| 国产成人一区二区精品非洲| 一区二区三区在线视频观看| 日韩视频免费直播| 色狠狠综合天天综合综合| 久久精品国产免费| 一区二区理论电影在线观看| 日韩午夜小视频| 91成人在线观看喷潮| 国产在线精品免费av| 亚洲五月六月丁香激情| 久久女同互慰一区二区三区| 欧美伊人精品成人久久综合97| 国产精品综合一区二区三区| 亚洲成av人片在线观看无码| 国产精品久久777777| 欧美一区二区三区人| 色综合久久综合网欧美综合网| 激情图片小说一区| 天堂成人免费av电影一区| 亚洲视频一区二区在线观看| 精品国产精品网麻豆系列| 欧美色偷偷大香| 99re热这里只有精品免费视频| 麻豆一区二区99久久久久| 夜夜精品视频一区二区| 国产精品色婷婷| 精品国产免费人成在线观看| 91精品国产乱码久久蜜臀| 欧美午夜一区二区三区| 95精品视频在线| 成人精品视频一区二区三区尤物| 六月丁香综合在线视频| 亚洲成av人片在线观看无码| 亚洲精品成a人| 椎名由奈av一区二区三区| 国产欧美视频在线观看| 欧美精品一区二区三区四区| 欧美电影免费观看高清完整版在线观看 | 午夜影院在线观看欧美| 亚洲欧美影音先锋| 亚洲人成网站精品片在线观看| 中文字幕乱码亚洲精品一区| 久久先锋影音av| 久久精品男人的天堂| 国产三级三级三级精品8ⅰ区| 欧美va亚洲va国产综合| 日韩视频一区二区| 精品国产一区二区在线观看| 精品国产乱码久久久久久影片| 欧美电视剧免费观看| 久久一日本道色综合| 国产婷婷色一区二区三区在线| 国产视频一区二区三区在线观看| 亚洲女厕所小便bbb| 一区二区视频免费在线观看| 一区二区不卡在线播放 | 亚洲男人的天堂在线观看| 国产精品不卡视频| 一个色综合网站| 午夜精品久久久| 91丨九色丨黑人外教| 91国产福利在线| 91精品国产综合久久久久久久| 337p亚洲精品色噜噜噜| 久久午夜色播影院免费高清| 自拍偷拍亚洲综合| 日韩黄色一级片| 久久99久久99小草精品免视看| 懂色中文一区二区在线播放| 91色乱码一区二区三区| 欧美精品一二三| 久久精品免视看| 一区二区三区欧美在线观看| 麻豆国产91在线播放| 成人网页在线观看| 欧美日韩国产免费| 亚洲国产精品精华液ab| 亚洲精品国产成人久久av盗摄 | 国产夫妻精品视频| 日本韩国精品在线| 欧美电影免费观看高清完整版在线 | 精品日韩欧美在线| 中文字幕一区二区三区视频| 亚洲综合丁香婷婷六月香| 另类小说欧美激情| 色综合夜色一区| 精品国产乱码久久久久久免费| 亚洲三级视频在线观看| 狠狠色综合日日| 欧美性大战久久久久久久 | 亚洲欧美中日韩| 欧美aaa在线| 色婷婷香蕉在线一区二区| 日韩欧美综合在线| 亚洲一区二区三区四区的| 国产精品一区二区久久不卡| 欧美高清视频在线高清观看mv色露露十八| 2023国产精华国产精品| 亚洲综合精品自拍| a级高清视频欧美日韩| 日韩免费观看高清完整版 | 美女视频黄免费的久久| 色婷婷亚洲精品| 国产欧美在线观看一区| 蜜桃av一区二区| 欧美视频一区二区三区四区 | 亚洲国产三级在线| 99久久er热在这里只有精品15| 久久综合色鬼综合色| 男男视频亚洲欧美| 欧美日韩免费电影| 一区二区三区视频在线观看| 成人app网站| 国产亚洲一本大道中文在线| 免费在线观看不卡| 69堂成人精品免费视频| 午夜视黄欧洲亚洲| 91久久线看在观草草青青| 国产精品久久久久久久久图文区 | 国产视频一区在线播放| 卡一卡二国产精品| 91精品国产91综合久久蜜臀| 亚洲国产精品一区二区www在线| 91丨porny丨首页| 17c精品麻豆一区二区免费| 成人激情文学综合网| 国产精品美女久久久久久久久久久 | 成人免费观看av| 日本一区二区免费在线观看视频| 国产一区二三区| 欧美精品一区二区在线观看|