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

📄 dinosaur.lst

📁 单片机C51源程序有电动恐龙
💻 LST
字号:
C51 COMPILER V6.21  DINOSAUR                                                               03/28/2006 17:44:39 PAGE 1   


C51 COMPILER V6.21, COMPILATION OF MODULE DINOSAUR
OBJECT MODULE PLACED IN Dinosaur.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Dinosaur.c OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*------------------------------------------------------------------*-
   2          
   3             Dinosaur.C (v1.00)
   4          
   5            ------------------------------------------------------------------
   6             
   7             Demonstration of multi-state (timed) architecture:
   8             Dinosaur control system.
   9          
  10             COPYRIGHT
  11             ---------
  12          
  13             This code is associated with the book:
  14          
  15             EMBEDDED C by Michael J. Pont 
  16             [Pearson Education, 2002: ISBN: 0-201-79523-X].
  17          
  18             This code is copyright (c) 2001 by Michael J. Pont.
  19           
  20             See book for copyright details and other information.
  21          
  22          -*------------------------------------------------------------------*/
  23          
  24          #include "Main.h"
  25          #include "Port.h"
  26          
  27          #include "Dinosaur.h"
  28          
  29          //#include <reg52.h>
  30          
  31          
  32          // ------ Private data type declarations ---------------------------
  33          // Possible system states
  34          typedef 
  35          enum {SLEEPING, WAKING, GROWLING, ATTACKING} eDinosaur_State;
  36          
  37          // ------ Private function prototypes ------------------------------
  38          void   DINOSAUR_Perform_Sleep_Movements(void);
  39          void DINOSAUR_Perform_Waking_Movements(void);
  40          void DINOSAUR_Growl(void);
  41          void DINOSAUR_Perform_Attack_Movements(void);
  42          
  43          // ------ Private constants ----------------------------------------
  44          // Times in each of the (four) possible states
  45          // (Times are in seconds)
  46          #define SLEEPING_DURATION 255
  47          #define WAKING_DURATION 60
  48          #define GROWLING_DURATION 40 
  49          #define ATTACKING_DURATION 120
  50          
  51          // ------ Private variables ----------------------------------------
  52          // The current state of the system
  53          static eDinosaur_State Dinosaur_state_G;
  54          
  55          // The time in the state
C51 COMPILER V6.21  DINOSAUR                                                               03/28/2006 17:44:39 PAGE 2   

  56          static tByte Time_in_state_G;
  57          
  58          // Used by sEOS
  59          static tByte Call_count_G = 0;
  60          
  61          /*------------------------------------------------------------------*-
  62          
  63            DINOSAUR_Init()
  64          
  65            Prepare for the dinosaur activity.
  66          
  67          -*------------------------------------------------------------------*/
  68          void DINOSAUR_Init(void)
  69             {
  70   1         // Initial dinosaur state
  71   1         Dinosaur_state_G = SLEEPING;  
  72   1         }
  73          
  74          
  75          /*------------------------------------------------------------------*-
  76          
  77            DINOSAUR_Update()
  78          
  79            Must be called once per second.
  80          
  81          -*------------------------------------------------------------------*/
  82          void DINOSAUR_Update(void)
  83             {
  84   1         switch (Dinosaur_state_G)
  85   1            {
  86   2            case SLEEPING: 
  87   2               {
  88   3                       // Call relevant function
  89   3                       DINOSAUR_Perform_Sleep_Movements();
  90   3      
  91   3               if (++Time_in_state_G == SLEEPING_DURATION)
  92   3                  {
  93   4                  Dinosaur_state_G = WAKING;
  94   4                  Time_in_state_G = 0;
  95   4                  }
  96   3      
  97   3               break;
  98   3               }
  99   2      
 100   2            case WAKING: 
 101   2               {
 102   3                       // Call relevant function
 103   3                       DINOSAUR_Perform_Waking_Movements();
 104   3      
 105   3               if (++Time_in_state_G == WAKING_DURATION)
 106   3                  {
 107   4                  Dinosaur_state_G = GROWLING;
 108   4                  Time_in_state_G = 0;
 109   4                  }
 110   3      
 111   3               break;
 112   3               }
 113   2      
 114   2            case GROWLING: 
 115   2               {
 116   3                       // Call relevant function
 117   3                       DINOSAUR_Growl();
C51 COMPILER V6.21  DINOSAUR                                                               03/28/2006 17:44:39 PAGE 3   

 118   3      
 119   3               if (++Time_in_state_G == GROWLING_DURATION)
 120   3                  {
 121   4                  Dinosaur_state_G = ATTACKING;
 122   4                  Time_in_state_G = 0;
 123   4                  }
 124   3      
 125   3               break;
 126   3               }
 127   2      
 128   2            case ATTACKING: 
 129   2               {
 130   3                       // Call relevant function
 131   3                       DINOSAUR_Perform_Attack_Movements();
 132   3      
 133   3               if (++Time_in_state_G == ATTACKING_DURATION)
 134   3                  {
 135   4                  Dinosaur_state_G = SLEEPING;
 136   4                  Time_in_state_G = 0;
 137   4                  }
 138   3      
 139   3               break;
 140   3               }
 141   2            }
 142   1         }
 143          
 144          /*------------------------------------------------------------------*/
 145          void DINOSAUR_Perform_Sleep_Movements(void)
 146             {
 147   1         // Demo only...
 148   1         P1 = (tByte) Dinosaur_state_G;//change data type
 149   1         P2 = Time_in_state_G; 
 150   1       
 151   1         
 152   1         }    
 153             
 154          
 155          /*------------------------------------------------------------------*/
 156          void DINOSAUR_Perform_Waking_Movements(void)
 157             {
 158   1         // Demo only...
 159   1         P1 = (tByte) Dinosaur_state_G;
 160   1         P2 = Time_in_state_G; 
 161   1         }
 162          
 163          /*------------------------------------------------------------------*/
 164          void DINOSAUR_Growl(void)
 165             {
 166   1         // Demo only...
 167   1         P1 = (tByte) Dinosaur_state_G;
 168   1         P2 = Time_in_state_G; 
 169   1         }
 170          
 171          /*------------------------------------------------------------------*/
 172          void DINOSAUR_Perform_Attack_Movements(void)
 173             {
 174   1         // Demo only...
 175   1         P1 = (tByte) Dinosaur_state_G;
 176   1         P2 = Time_in_state_G; 
 177   1         }
 178          
 179          /*------------------------------------------------------------------*-
C51 COMPILER V6.21  DINOSAUR                                                               03/28/2006 17:44:39 PAGE 4   

 180            ---- END OF FILE -------------------------------------------------
 181          -*------------------------------------------------------------------*/


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


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

⌨️ 快捷键说明

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