📄 hardware_delay_50ms.lst
字号:
C51 COMPILER V7.07 HARDWARE_DELAY_50MS 06/16/2006 15:10:40 PAGE 1
C51 COMPILER V7.07, 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 TABS(3)
stmt level source
1 /*------------------------------------------------------------------*-
2 Hardware_Delay_50ms.C (v1.00)
3 ------------------------------------------------------------------*/
4
5 #include <reg52.h>
6
7 sbit LED_pin = P1^0;
8 bit LED_state_G;
9
10 void LED_FLASH_Init(void);
11 void LED_FLASH_Change_State(void);
12
13 void DELAY_HARDWARE_One_Second(void);
14 void DELAY_HARDWARE_50ms(void);
15
16 void main(void)
17 {
18 1 LED_FLASH_Init();
19 1
20 1 while(1)
21 1 {
22 2 LED_FLASH_Change_State(); // Change the LED state (OFF to ON, or vice versa)
23 2 DELAY_HARDWARE_One_Second(); // Delay for approx 1000 ms
24 2 }
25 1 }
26
27 /*----------------------------------------------------------------
28 LED_FLASH_Init()
29 Prepare for LED_Change_State() function - see below.
30 ------------------------------------------------------------------*/
31 void LED_FLASH_Init(void)
32 {
33 1 LED_state_G = 0;
34 1 }
35
36 /*------------------------------------------------------------------*-
37 LED_FLASH_Change_State()
38 Changes the state of an LED (or pulses a buzzer, etc) on a
39 specified port pin.
40
41 Must call at twice the required flash rate: thus, for 1 Hz
42 flash (on for 0.5 seconds, off for 0.5 seconds) must call
43 every 0.5 seconds.
44
45 -*------------------------------------------------------------------*/
46 void LED_FLASH_Change_State(void)
47 {
48 1 // Change the LED from OFF to ON (or vice versa)
49 1 if (LED_state_G == 1)
50 1 {
51 2 LED_state_G = 0;
52 2 LED_pin = 0;
53 2 }
54 1 else
55 1 {
C51 COMPILER V7.07 HARDWARE_DELAY_50MS 06/16/2006 15:10:40 PAGE 2
56 2 LED_state_G = 1;
57 2 LED_pin = 1;
58 2 }
59 1 }
60
61 /*******************************************
62 DELAY_HARDWARE_One_Second()
63 Hardware delay of 1000 ms. *** Assumes 12MHz 8051 (12 osc cycles) ***
64 ********************************************/
65
66 void DELAY_HARDWARE_One_Second(void)
67 {
68 1 unsigned char d;
69 1
70 1 for (d = 0; d < 10; d++) // Call DELAY_HARDWARE_50ms() twenty times
71 1 {
72 2 DELAY_HARDWARE_50ms();
73 2 }
74 1 }
75
76 /*******************************************
77 DELAY_HARDWARE_50ms()
78 Hardware delay of 50ms.
79 *** Assumes 12MHz 8051 (12 osc cycles) ***
80 ********************************************/
81 void DELAY_HARDWARE_50ms(void)
82 { // Configure Timer 0 as a 16-bit timer
83 1 TMOD &= 0xF0; // Clear all T0 bits (T1 left unchanged)
84 1 TMOD |= 0x01; // Set required T0 bits (T1 left unchanged)
85 1
86 1 ET0 = 0; // No interupts
87 1
88 1 // Values for 50 ms delay
89 1 TH0 = 0x3C; // Timer 0 initial value (High Byte)
90 1 TL0 = 0xB0; // Timer 0 initial value (Low Byte)
91 1
92 1 TF0 = 0; // Clear overflow flag
93 1 TR0 = 1; // Start timer 0
94 1
95 1 while (TF0 == 0); // Loop until Timer 0 overflows (TF0 == 1)
96 1
97 1 TR0 = 0; // Stop Timer 0
98 1 }
99
100
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 + -