Preface |
|
xiii | |
Acknowledgments |
|
xv | |
Background and Use of the Book |
|
xvii | |
About the Author |
|
xxiii | |
|
1 Hardware of the PIC16F648A-Based PLC |
|
|
1 | (10) |
|
|
11 | (26) |
|
2.1 Basic Software Structure |
|
|
11 | (11) |
|
2.1.1 Variable Definitions |
|
|
12 | (9) |
|
|
21 | (1) |
|
|
21 | (1) |
|
2.2 Elimination of Contact Bouncing Problem in the PIC16F648A-Based PLC |
|
|
22 | (9) |
|
2.2.1 Contact Bouncing Problem |
|
|
22 | (2) |
|
2.2.2 Understanding a Generic Single I/O Contact Debouncer |
|
|
24 | (1) |
|
2.2.3 Debouncer Macros dbncrO and dbncr1 |
|
|
25 | (6) |
|
2.3 Basic Macros of the PIC16F648A-Based PLC |
|
|
31 | (3) |
|
|
31 | (1) |
|
|
32 | (1) |
|
|
33 | (1) |
|
|
34 | (3) |
|
3 Contact and Relay-Based Macros |
|
|
37 | (30) |
|
|
38 | (1) |
|
3.2 Macro 1d_not (load not) |
|
|
39 | (1) |
|
|
40 | (1) |
|
|
41 | (1) |
|
|
42 | (1) |
|
|
42 | (2) |
|
|
44 | (2) |
|
|
46 | (1) |
|
|
47 | (1) |
|
|
47 | (2) |
|
|
49 | (1) |
|
|
49 | (2) |
|
|
51 | (2) |
|
|
53 | (1) |
|
|
54 | (2) |
|
|
56 | (1) |
|
|
57 | (1) |
|
|
58 | (1) |
|
3.19 Examples for Contact and Relay-Based Macros |
|
|
59 | (8) |
|
|
67 | (30) |
|
4.1 Macro r_edge (Rising Edge Detector) |
|
|
68 | (2) |
|
4.2 Macro f_edge (Falling Edge Detector) |
|
|
70 | (2) |
|
4.3 Macro latch1 (D Latch with Active High Enable) |
|
|
72 | (1) |
|
4.4 Macro latch0 (D Latch with Active Low Enable) |
|
|
72 | (2) |
|
4.5 Macro dff_r (Rising Edge Triggered D Flip-Flop) |
|
|
74 | (3) |
|
4.6 Macro dff_f (Falling Edge Triggered D Flip-Flop) |
|
|
77 | (3) |
|
4.7 Macro tff_r (Rising Edge Triggered T Flip-Flop) |
|
|
80 | (2) |
|
4.8 Macro tff_f (Falling Edge Triggered T Flip-Flop) |
|
|
82 | (1) |
|
4.9 Macro jkff_r (Rising Edge Triggered JK Flip-Flop) |
|
|
82 | (4) |
|
4.10 Macro jkff_f (Falling Edge Triggered JK Flip-Flop) |
|
|
86 | (2) |
|
4.11 Examples for Flip-Flop Macros |
|
|
88 | (9) |
|
|
97 | (24) |
|
|
97 | (1) |
|
5.2 Macro TON_8 (8-Bit On-Delay Timer) |
|
|
98 | (4) |
|
5.3 Off-Delay Timer (TOF) |
|
|
102 | (3) |
|
5.4 Macro TOF_8 (8-Bit Off-Delay Timer) |
|
|
105 | (2) |
|
|
107 | (1) |
|
5.6 Macro TP_8 (8-Bit Pulse Timer) |
|
|
108 | (3) |
|
5.7 Oscillator Timer (TOS) |
|
|
111 | (1) |
|
5.8 Macro TOS_8 (8-Bit Oscillator Timer) |
|
|
112 | (3) |
|
5.9 Example for Timer Macros |
|
|
115 | (6) |
|
|
121 | (22) |
|
|
121 | (2) |
|
|
123 | (1) |
|
|
124 | (2) |
|
6.4 Macro CTU_8 (8-Bit Up Counter) |
|
|
126 | (3) |
|
|
129 | (1) |
|
6.6 Macro CTD_8 (8-Bit Down Counter) |
|
|
130 | (2) |
|
6.7 Up/Down Counter (CTUD) |
|
|
132 | (1) |
|
6.8 Macro CTUD_8 (8-Bit Up/Down Counter) |
|
|
133 | (3) |
|
6.9 Examples for Counter Macros |
|
|
136 | (7) |
|
|
143 | (20) |
|
|
144 | (1) |
|
|
144 | (2) |
|
|
146 | (1) |
|
|
147 | (1) |
|
|
148 | (2) |
|
|
150 | (1) |
|
|
151 | (1) |
|
|
151 | (2) |
|
|
153 | (1) |
|
|
154 | (1) |
|
|
155 | (2) |
|
|
157 | (1) |
|
7.13 Examples for Comparison Macros |
|
|
158 | (5) |
|
|
163 | (12) |
|
|
164 | (1) |
|
|
165 | (1) |
|
|
165 | (2) |
|
|
167 | (1) |
|
|
168 | (1) |
|
|
169 | (1) |
|
8.7 Examples for Arithmetical Macros |
|
|
170 | (5) |
|
|
175 | (24) |
|
|
176 | (1) |
|
|
177 | (1) |
|
|
177 | (2) |
|
|
179 | (1) |
|
|
180 | (1) |
|
|
181 | (1) |
|
|
182 | (1) |
|
|
183 | (2) |
|
|
185 | (1) |
|
|
186 | (1) |
|
|
187 | (1) |
|
|
187 | (2) |
|
|
189 | (1) |
|
9.14 Example for Logical Macros |
|
|
190 | (9) |
|
10 Shift and Rotate Macros |
|
|
199 | (26) |
|
|
199 | (1) |
|
|
200 | (1) |
|
|
201 | (6) |
|
|
207 | (2) |
|
|
209 | (1) |
|
10.6 Examples for Shift and Rotate Macros |
|
|
210 | (15) |
|
|
225 | (18) |
|
|
225 | (1) |
|
|
226 | (1) |
|
|
227 | (1) |
|
|
228 | (4) |
|
|
232 | (1) |
|
|
233 | (1) |
|
11.7 Examples for Multiplexer Macros |
|
|
233 | (10) |
|
|
243 | (20) |
|
|
243 | (1) |
|
|
244 | (1) |
|
|
245 | (1) |
|
|
246 | (5) |
|
|
251 | (1) |
|
|
252 | (1) |
|
12.7 Examples for Demultiplexer Macros |
|
|
252 | (11) |
|
|
263 | (32) |
|
|
264 | (1) |
|
|
265 | (1) |
|
|
266 | (2) |
|
13.4 Macro decod_1_2_E_AL |
|
|
268 | (1) |
|
|
269 | (1) |
|
|
270 | (3) |
|
|
273 | (1) |
|
13.8 Macro decod_2_4_E_AL |
|
|
273 | (3) |
|
|
276 | (4) |
|
|
280 | (1) |
|
|
280 | (3) |
|
13.12 Macro decod_3_8_E_AL |
|
|
283 | (3) |
|
13.13 Examples for Decoder Macros |
|
|
286 | (9) |
|
14 Priority Encoder Macros |
|
|
295 | (24) |
|
|
296 | (2) |
|
|
298 | (2) |
|
|
300 | (3) |
|
|
303 | (1) |
|
14.5 Macro encod_dec_bcd_p |
|
|
303 | (1) |
|
14.6 Macro encod_dec_bcd_p_E |
|
|
304 | (8) |
|
14.7 Examples for Priority Encoder Macros |
|
|
312 | (7) |
|
|
319 | (18) |
|
15.1 Remotely Controlled Model Gate System |
|
|
319 | (2) |
|
15.2 Control Scenarios for the Model Gate System |
|
|
321 | (2) |
|
15.3 Solutions for the Control Scenarios |
|
|
323 | (14) |
|
15.3.1 Solution for the First Scenario |
|
|
324 | (1) |
|
15.3.2 Solution for the Second Scenario |
|
|
324 | (1) |
|
15.3.3 Solution for the Third Scenario |
|
|
325 | (1) |
|
15.3.4 Solution for the Fourth Scenario |
|
|
326 | (1) |
|
15.3.5 Solution for the Fifth Scenario |
|
|
327 | (1) |
|
15.3.6 Solution for the Sixth Scenario |
|
|
328 | (1) |
|
15.3.7 Solution for the Seventh Scenario |
|
|
329 | (1) |
|
15.3.8 Solution for the Eighth Scenario |
|
|
330 | (7) |
About the CD-ROM |
|
337 | (2) |
References |
|
339 | (2) |
Index |
|
341 | |