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

📄 led_hyb.lst

📁 时间触发嵌入式系统设计模式:使用8051系列微控制器开发可靠应用
💻 LST
字号:
C51 COMPILER V6.10  LED_HYB                                                                04/18/2001 14:03:47 PAGE 1   


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

stmt level    source

   1          /*------------------------------------------------------------------*-
   2          
   3             LED_Hyb.C (v1.00)
   4          
   5            ------------------------------------------------------------------
   6             
   7             Simple 'Flash LED' test function for HYBRID scheduler.
   8          
   9             *** With lock mechanism ***
  10          
  11          
  12             COPYRIGHT
  13             ---------
  14          
  15             This code is from the book:
  16          
  17             PATTERNS FOR TIME-TRIGGERED EMBEDDED SYSTEMS by Michael J. Pont 
  18             [Pearson Education, 2001; ISBN: 0-201-33138-1].
  19          
  20             This code is copyright (c) 2001 by Michael J. Pont.
  21           
  22             See book for copyright details and other information.
  23          
  24          -*------------------------------------------------------------------*/
  25          
  26          #include "Main.h"
  27          #include "Port.H"
  28          
  29          #include "LED_Hyb.h"
  30          #include "Delay_T0.h"
  31          
  32          // ------ Private constants -----------------------------------------
  33          
  34          // For the lock mechanism
  35          #define LOCKED 1
  36          #define UNLOCKED 0
  37          
  38          // ------ Private variable definitions ------------------------------
  39          
  40          static bit LED_short_state_G;
  41          
  42          // The lock flag
  43          static bit LED_lock_G = UNLOCKED;
  44          
  45          /*------------------------------------------------------------------*-
  46          
  47            LED_Flash_Init()
  48          
  49            - Prepare to flash LEDs.
  50          
  51          -*------------------------------------------------------------------*/
  52          void LED_Short_Init(void)
  53             {
  54   1         LED_short_state_G = 0;
  55   1         LED_long_port = 0xAA;
C51 COMPILER V6.10  LED_HYB                                                                04/18/2001 14:03:47 PAGE 2   

  56   1         LED_lock_G = UNLOCKED;
  57   1         }
  58          
  59          
  60          /*------------------------------------------------------------------*-
  61          
  62            LED_Short_Update()
  63          
  64            Flashes an LED (or pulses a buzzer, etc) on a specified port pin.
  65          
  66            Must schedule at twice the required flash rate: thus, for 1 Hz
  67            flash (on for 0.5 seconds, off for 0.5 seconds) must schedule
  68            at 2 Hz.
  69          
  70          -*------------------------------------------------------------------*/
  71          void LED_Short_Update(void)
  72             {
  73   1         // The port has a lock
  74   1         // If it is locked, we simply return
  75   1         if (LED_lock_G == LOCKED)
  76   1            {
  77   2            return;
  78   2            }
  79   1      
  80   1         // Port is free - lock it
  81   1         LED_lock_G = LOCKED;
  82   1      
  83   1         // Change the LED from OFF to ON (or vice versa)
  84   1         if (LED_short_state_G == 1)
  85   1            {
  86   2            LED_short_state_G = 0;
  87   2            LED_short_pin = 0;
  88   2            }
  89   1         else
  90   1            {
  91   2            LED_short_state_G = 1;
  92   2            LED_short_pin = 1;
  93   2            }
  94   1      
  95   1         // Unlock the port
  96   1         LED_lock_G = UNLOCKED;
  97   1         }
  98          
  99          /*------------------------------------------------------------------*-
 100          
 101            LED_Long_Update()
 102          
 103            Demo 'long' task (10 second duration).
 104          
 105          -*------------------------------------------------------------------*/
 106          void LED_Long_Update(void)
 107             {
 108   1         tByte i;
 109   1      
 110   1         // The port has a lock
 111   1         // If it is locked, we simply return
 112   1         if (LED_lock_G == LOCKED)
 113   1            {
 114   2            return;
 115   2            }
 116   1      
 117   1         // Port is free - lock it
C51 COMPILER V6.10  LED_HYB                                                                04/18/2001 14:03:47 PAGE 3   

 118   1         LED_lock_G = LOCKED;
 119   1      
 120   1         for (i = 0; i < 5; i++)
 121   1             {
 122   2             LED_long_port = 0x0F;
 123   2             Hardware_Delay_T0(1000);
 124   2             LED_long_port = 0xF0;
 125   2             Hardware_Delay_T0(1000);
 126   2             }
 127   1      
 128   1         // Unlock the port
 129   1         LED_lock_G = UNLOCKED;
 130   1         }
 131          
 132          /*------------------------------------------------------------------*-
 133            ---- END OF FILE -------------------------------------------------
 134          -*------------------------------------------------------------------*/


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


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

⌨️ 快捷键说明

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