📄 led_hyb.lst
字号:
C51 COMPILER V6.10 LED_HYB 04/19/2001 11:26:10 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/19/2001 11:26:10 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/19/2001 11:26:10 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 + -