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

📄 hardware_delay_50ms.lst

📁 < C语言嵌入式系统开发>>一书配套源代码,C51代码,对于51学习有很好参考意义.
💻 LST
字号:
C51 COMPILER V6.21  HARDWARE_DELAY_50MS                                                    01/23/2002 17:26:36 PAGE 1   


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

stmt level    source

   1          /*------------------------------------------------------------------*-
   2          
   3             Hardware_Delay_50ms.C (v1.00)
   4          
   5            ------------------------------------------------------------------
   6          
   7             A test program for hardware-based delays.
   8          
   9             COPYRIGHT
  10             ---------
  11          
  12             This code is associated with the book:
  13          
  14             EMBEDDED C by Michael J. Pont 
  15             [Pearson Education, 2002: ISBN: 0-201-79523-X].
  16          
  17             This code is copyright (c) 2001 by Michael J. Pont.
  18           
  19             See book for copyright details and other information.
  20          
  21          -*------------------------------------------------------------------*/
  22          
  23          #include <reg52.h>
  24          
  25          sbit LED_pin = P1^5;
  26          bit LED_state_G;
  27          
  28          void LED_FLASH_Init(void);
  29          void LED_FLASH_Change_State(void);
  30          
  31          void DELAY_HARDWARE_One_Second(void);
  32          void DELAY_HARDWARE_50ms(void);
  33          
  34          /*..................................................................*/
  35          
  36          void main(void)
  37             {
  38   1         LED_FLASH_Init();
  39   1      
  40   1         while(1) 
  41   1            {
  42   2            // Change the LED state (OFF to ON, or vice versa)
  43   2            LED_FLASH_Change_State();
  44   2      
  45   2            // Delay for approx 1000 ms
  46   2            DELAY_HARDWARE_One_Second();
  47   2            }   
  48   1         }
  49          
  50          /*------------------------------------------------------------------*-
  51          
  52            LED_FLASH_Init()
  53          
  54            Prepare for LED_Change_State() function - see below.
  55          
C51 COMPILER V6.21  HARDWARE_DELAY_50MS                                                    01/23/2002 17:26:36 PAGE 2   

  56          -*------------------------------------------------------------------*/
  57          void LED_FLASH_Init(void)
  58             {
  59   1         LED_state_G = 0;
  60   1         }
  61          
  62          
  63          /*------------------------------------------------------------------*-
  64          
  65            LED_FLASH_Change_State()
  66          
  67            Changes the state of an LED (or pulses a buzzer, etc) on a 
  68            specified port pin.
  69          
  70            Must call at twice the required flash rate: thus, for 1 Hz
  71            flash (on for 0.5 seconds, off for 0.5 seconds) must call
  72            every 0.5 seconds.
  73          
  74          -*------------------------------------------------------------------*/
  75          void LED_FLASH_Change_State(void)
  76             {
  77   1         // Change the LED from OFF to ON (or vice versa)
  78   1         if (LED_state_G == 1)
  79   1            {
  80   2            LED_state_G = 0;
  81   2            LED_pin = 0;
  82   2            }
  83   1         else
  84   1            {
  85   2            LED_state_G = 1;
  86   2            LED_pin = 1;
  87   2            }
  88   1         }
  89          
  90          /*------------------------------------------------------------------*-
  91          
  92            DELAY_HARDWARE_One_Second()
  93          
  94            Hardware delay of 1000 ms.  
  95          
  96            *** Assumes 12MHz 8051 (12 osc cycles) ***
  97          
  98          -*------------------------------------------------------------------*/
  99          void DELAY_HARDWARE_One_Second(void)
 100             {
 101   1         unsigned char d;
 102   1      
 103   1         // Call DELAY_HARDWARE_50ms() twenty times
 104   1         for (d = 0; d < 20; d++)
 105   1            {
 106   2            DELAY_HARDWARE_50ms();
 107   2            }     
 108   1         }
 109          
 110          /*------------------------------------------------------------------*-
 111          
 112            DELAY_HARDWARE_50ms()
 113          
 114            Hardware delay of 50ms.  
 115          
 116            *** Assumes 12MHz 8051 (12 osc cycles) ***
 117          
C51 COMPILER V6.21  HARDWARE_DELAY_50MS                                                    01/23/2002 17:26:36 PAGE 3   

 118          -*------------------------------------------------------------------*/
 119          void DELAY_HARDWARE_50ms(void)
 120             {
 121   1         // Configure Timer 0 as a 16-bit timer 
 122   1         TMOD &= 0xF0; // Clear all T0 bits (T1 left unchanged)
 123   1         TMOD |= 0x01; // Set required T0 bits (T1 left unchanged) 
 124   1      
 125   1         ET0 = 0;  // No interupts
 126   1      
 127   1         // Values for 50 ms delay
 128   1         TH0 = 0x3C;  // Timer 0 initial value (High Byte)
 129   1         TL0 = 0xB0;  // Timer 0 initial value (Low Byte)
 130   1      
 131   1         TF0 = 0;          // Clear overflow flag
 132   1         TR0 = 1;          // Start timer 0
 133   1      
 134   1         while (TF0 == 0); // Loop until Timer 0 overflows (TF0 == 1)
 135   1      
 136   1         TR0 = 0;          // Stop Timer 0
 137   1         }
 138          
 139          /*------------------------------------------------------------------*-
 140            ---- END OF FILE -------------------------------------------------
 141          -*------------------------------------------------------------------*/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =     68    ----
   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)

⌨️ 快捷键说明

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