Muutke küpsiste eelistusi

E-raamat: Embedded Systems Circuits and Programming

(Eastern Florida State College, USA), (Brevard Public Schools, USA)
  • Formaat: 891 pages
  • Ilmumisaeg: 19-Dec-2017
  • Kirjastus: CRC Press Inc
  • ISBN-13: 9781439879313
Teised raamatud teemal:
  • Formaat - PDF+DRM
  • Hind: 136,50 €*
  • * hind on lõplik, st. muud allahindlused enam ei rakendu
  • Lisa ostukorvi
  • Lisa soovinimekirja
  • See e-raamat on mõeldud ainult isiklikuks kasutamiseks. E-raamatuid ei saa tagastada.
  • Formaat: 891 pages
  • Ilmumisaeg: 19-Dec-2017
  • Kirjastus: CRC Press Inc
  • ISBN-13: 9781439879313
Teised raamatud teemal:

DRM piirangud

  • Kopeerimine (copy/paste):

    ei ole lubatud

  • Printimine:

    ei ole lubatud

  • Kasutamine:

    Digitaalõiguste kaitse (DRM)
    Kirjastus on väljastanud selle e-raamatu krüpteeritud kujul, mis tähendab, et selle lugemiseks peate installeerima spetsiaalse tarkvara. Samuti peate looma endale  Adobe ID Rohkem infot siin. E-raamatut saab lugeda 1 kasutaja ning alla laadida kuni 6'de seadmesse (kõik autoriseeritud sama Adobe ID-ga).

    Vajalik tarkvara
    Mobiilsetes seadmetes (telefon või tahvelarvuti) lugemiseks peate installeerima selle tasuta rakenduse: PocketBook Reader (iOS / Android)

    PC või Mac seadmes lugemiseks peate installima Adobe Digital Editionsi (Seeon tasuta rakendus spetsiaalselt e-raamatute lugemiseks. Seda ei tohi segamini ajada Adober Reader'iga, mis tõenäoliselt on juba teie arvutisse installeeritud )

    Seda e-raamatut ei saa lugeda Amazon Kindle's. 

This text is a practical reference for engineers designing systems and boards for devices that contain digital components and controls. Emphasis is on the use of off-the-shelf components such as input/output devices, integrated circuits, motors, and programmable microcontrollers; the development of circuit prototypes and implementation and fabrication; the use of electronic design programs, software utilities, and other tools; sample circuits ready for use; and the selection and programming of suitable microcontrollers for particular uses. The affiliations of authors Julio Sanchez and Maria P. Canton are not stated. Annotation ©2012 Book News, Inc., Portland, OR (booknews.com)

During the development of an engineered product, developers often need to create an embedded system—a prototype—that demonstrates the operation/function of the device and proves its viability. Offering practical tools for the development and prototyping phases, Embedded Systems Circuits and Programming provides a tutorial on microcontroller programming and the basics of embedded design.

The book focuses on several development tools and resources:

  • Standard and off-the-shelf components, such as input/output devices, integrated circuits, motors, and programmable microcontrollers
  • The implementation of circuit prototypes via breadboards, the in-house fabrication of test-time printed circuit boards (PCBs), and the finalization by the manufactured board
  • Electronic design programs and software utilities for creating PCBs
  • Sample circuits that can be used as part of the targeted embedded system
  • The selection and programming of microcontrollers in the circuit

For those working in electrical, electronic, computer, and software engineering, this hands-on guide helps you successfully develop systems and boards that contain digital and analog components and controls. The text includes easy-to-follow sample circuits and their corresponding programs, enabling you to use them in your own work. For critical circuits, the authors provide tested PCB files. Software, code, and other materials are available at www.crcpress.com.

Arvustused

"I was very positively impressed by this book. It may serve as self-contained design compendium giving suitable technical background, technical documentation of Microchip 16-bit microcontrollers and plenty of design examples. The book may be strongly recommended for academic courses in digital design. It may also be helpful for designers in industry." Antoni Michalski (Warszawa), Zentralblatt MATH, 1251 1

Preface xix
Chapter 1 Real-Time Computing
1(6)
1.0 Defining the Embedded System
1(1)
1.1 Embedded Systems History
2(1)
1.2 Hardware Complexity
2(2)
1.2.1 Processor
3(1)
1.2.2 Microcontrollers
3(1)
1.2.3 Hardware and Software
3(1)
1.3 Execution in Real-Time
4(3)
1.3.1 Hard and Soft Real-Time Systems
5(2)
Chapter 2 Circuit Fundamentals
7(10)
2.1 Electrical Circuit
7(1)
2.2 Circuit Concepts and Components
8(1)
2.3 Digital Electronics
9(1)
2.4 Diode
10(3)
2.4.1 Light-Emitting Diode (LED)
12(1)
2.5 Transistors
13(4)
2.5.1 Bipolar Transistor
13(2)
2.5.2 MOS Transistor
15(2)
Chapter 3 Logic Gates and Circuit Components
17(24)
3.1 Logic Gates
17(1)
3.2 Power Supplies
18(1)
3.3 Clocked Logic and Flip-Flops
19(7)
3.3.1 RS Flip-Flop
19(1)
3.3.2 Clocked Circuits
20(1)
3.3.3 D Flip-Flop
21(2)
3.3.4 Edge-Triggered D Flip-Flop
23(1)
3.3.5 Preset and Clear Signals
23(1)
3.3.6 D Flip-Flop Waveform Action
24(1)
3.3.7 Flip-Flop Applications
25(1)
3.4 Digital Clocks
26(3)
3.4.1 Clock Waveforms
26(1)
3.4.2 TTL Clock
27(1)
3.4.3 555 Timer
28(1)
3.4.4 Microcontroller Clocks
29(1)
3.5 Counters and Frequency Dividers
29(8)
3.5.1 Frequency Dividers
30(1)
3.5.2 JK Flip-Flop Counter
30(1)
3.5.3 Ripple Counters
31(1)
3.5.4 Decoding Gates
32(1)
3.5.5 Synchronous Counters
33(2)
3.5.6 Counter ICs
35(1)
3.5.7 Shift Registers
36(1)
3.6 Multiplexers and Demultiplexers
37(4)
3.6.1 Multiplexers
38(1)
3.6.2 Demultiplexers
39(1)
3.6.3 Multiplexer and Demultiplexer ICs
40(1)
Chapter 4 Input and Output Devices
41(10)
4.1 Obtaining Input
41(1)
4.2 Switches
41(4)
4.2.1 Switch Contact Bounce
43(1)
4.2.2 Keypads
44(1)
4.3 Output Devices
45(6)
4.3.1 Seven-Segment LED
45(2)
4.3.2 Liquid Crystal Displays
47(1)
4.3.3 LCD Technologies
48(3)
Chapter 5 From Circuit Schematics to PCB
51(20)
5.1 Circuit Diagram
51(2)
5.1.1 Symbols
52(1)
5.1.2 Tools for Electronic Circuit Design
53(1)
5.2 Circuit Board Design
53(2)
5.2.1 Board Design Standards
54(1)
5.2.2 Gerber File Format
54(1)
5.3 Developing the Circuit Prototype
55(5)
5.3.1 Breadboard
56(2)
Limitations of Breadboards
58(1)
Breadboarding Tools and Techniques
58(1)
5.3.2 Wire-Wrapping
59(1)
5.3.3 Perfboards
60(1)
5.4 Printed Circuit Boards
60(2)
5.4.1 PCB Layers
61(1)
5.4.2 PCB Connectors
62(1)
5.5 Making Your Own PCB
62(4)
5.5.1 Drawing the CPB Circuit
63(2)
5.5.2 Printing the PCB
65(1)
5.5.3 Transferring the PCB Image
65(1)
5.5.4 Etching the Board
65(1)
5.5.5 Finishing the Board
66(1)
5.5.6 Backside Image
66(1)
5.6 Surface-Mount Components
66(2)
5.6.1 SMT Adapters
67(1)
5.6.2 Soldering SMT Components
68(1)
5.7 Troubleshooting the Circuit Board
68(3)
5.7.1 Circuit Testing Tools
69(2)
Chapter 6 Introducing the Microcontroller
71(12)
6.1 A Computer on a Chip
71(1)
6.2 PICMicro Microcontroller
72(3)
6.2.1 Programming the PIC
73(1)
Development Boards
74(1)
6.2.2 Prototyping a PIC Circuit
75(1)
6.3 PIC Architecture
75(8)
6.3.1 Baseline PIC Family
75(1)
PIC10 Devices
75(1)
PIC12 Devices
76(2)
PIC14 Devices
78(1)
6.3.2 Mid-Range PIC Family
79(1)
PIC16 Devices
79(1)
6.3.3 High-Performance PIC Family
79(1)
PIC18 Devices
80(3)
Chapter 7 Architecture and Instruction Set
83(24)
7.1 Mid-Range PIC Architecture
83(4)
7.1.1 Harvard Architecture
83(1)
7.1.2 CISC versus RISC
84(1)
7.1.3 Single-Word Instructions
85(1)
7.1.4 Instruction Format
86(1)
7.1.5 Mid-Range Device Versions
87(1)
7.1.6 Arithmetic-Logic Unit
87(1)
7.2 Data Memory Organization
87(6)
7.2.1 w Register
87(1)
7.2.2 Data Registers
88(1)
Memory Banks
88(1)
SFRs
88(3)
GPRs
91(2)
7.2.3 Indirect Addressing
93(1)
7.3 Mid-Range I/O and Peripherals
93(4)
7.3.1 Ports
94(1)
7.3.2 Timers
95(1)
7.3.3 Capture and Compare Module
95(1)
7.3.4 Master Synchronous Serial Port
96(1)
7.3.5 USART Module
96(1)
7.3.6 A/D Module
96(1)
7.4 Mid-Range PIC Core Features
97(4)
7.4.1 Oscillator
97(1)
7.4.2 System Reset
98(2)
7.4.3 Interrupts
100(1)
7.5 Mid-Range Instruction Set
101(3)
7.5.1 STATUS and OPTION Registers
102(2)
7.6 EEPROM Data Storage
104(3)
7.6.1 EEPROM in Mid-Range PICs
105(2)
Chapter 8 Embedded Systems Programming
107(26)
8.1 Assembly versus High-Level Languages
107(1)
8.1.2 Embedded Systems
107(1)
8.2 Integrated Development Environment
108(7)
8.2.1 Installing MPLAB
109(2)
8.2.2 MPLAB Project
111(1)
8.2.3 Project Build Options
112(2)
8.2.4 Building the Project
114(1)
8.2.5 Quickbuild Option
114(1)
8.3 Simulators and Debuggers
115(4)
8.3.1 MPLAB SIM
115(2)
8.3.2 MPLAB Hardware Debuggers
117(2)
8.3.3 Improvised Debugger
119(1)
8.4 Programmers
119(1)
8.5 Engineering PIC Software
120(11)
8.5.1 Using Program Comments
120(1)
Program Header
121(1)
Commented Banners
122(1)
Commented Bitmaps
123(1)
8.5.2 Defining Data Elements
123(1)
cblock Directive
124(1)
8.5.3 Banking Techniques
124(1)
banksel Directive
125(1)
Bank Selection Macros
125(1)
Deprecated Banking Instructions
126(1)
8.5.4 Processor and Configuration Controls
126(1)
Configuration Bits
127(1)
8.5.5 Naming Conventions
128(3)
8.5.6 Errorlevel Directive
131(1)
8.6 Pseudo Instructions
131(2)
Chapter 9 I/O Circuits and Programs
133(20)
9.1 Simple Input and Output
133(1)
9.1.1 16F84A Programming Template
133(1)
9.2 Template Circuits
134(2)
9.2.1 MCLR and Oscillator Template
135(1)
9.2.2 Power Supplies
135(1)
Voltage Regulator
136(1)
9.3 Simple Circuits and Programs
136(10)
9.3.1 Single LED Circuit
137(2)
LED Flasher Program
139(2)
9.3.2 LED/Pushbutton Circuit
141(2)
9.3.3 Multiple LED Circuit
143(3)
9.4 Seven-Segment LED
146(1)
9.5 I/O Demo Board
147(4)
9.5.1 TestDemo1 Program
148(3)
9.6 Comparisons in PIC Programming
151(2)
9.6.1 PIC Carry Flag
152(1)
Chapter 10 PIC Interrupt System
153(30)
10.1 Interrupts
153(2)
10.1.1 16F84 Interrupts
153(1)
10.1.2 Interrupt Control Register
153(1)
10.1.3 OPTION Register
154(1)
10.2 Interrupt Sources
155(4)
10.2.1 Port B External Interrupt
156(1)
10.2.2 TimerO Interrupt
156(1)
10.2.3 Port B Line Change Interrupt
157(2)
Multiple External Interrupts
159(1)
10.2.4 EEPROM Data Write Interrupt
159(1)
10.3 Developing the Interrupt Handler
159(2)
10.3.1 Context Saving Operations
160(1)
Saving W and STATUS Registers
160(1)
10.4 Interrupt Programming
161(9)
10.4.1 Programming the External Interrupt
161(1)
RBO Interrupt Initialization
162(1)
RBO ISR
163(1)
10.4.2 Wake-Up from SLEEP Using the RBO Interrupt
164(1)
SleepDemo Program
165(1)
10.4.3 Port B Bits 4-7 Status Change Interrupt
166(1)
RB4-7 Interrupt Initialization
166(2)
RB4-7 Change ISR
168(2)
10.5 Sample Programs
170(1)
10.6 Demonstration Programs
171(12)
10.6.1 RBOInt Program
171(4)
10.6.2 SleepDemo Program
175(2)
10.6.3 RB4to7Int Program
177(6)
Chapter 11 Timers and Counters
183(34)
11.1 Controlling the Time Lapse
183(3)
11.1.1 16F84 TimerO Module
183(1)
11.1.2 TimerO Operation
184(1)
TimerO Interrupt
185(1)
TimerO Prescaler
185(1)
11.2 Delays Using TimerO
186(2)
11.2.1 Long Delay Loops
187(1)
How Accurate Is the Delay?
188(1)
11.3 TimerO as a Counter
188(1)
11.4 TimerO Programming
189(12)
11.4.1 Programming a Counter
190(1)
Timer/Counter Test Circuit
190(1)
TimerCounter Program
191(1)
Code Details
191(1)
11.4.2 TimerO as a Delay Timer
192(1)
Delay Timer Circuit
192(1)
11.4.3 DelayTimer Program
193(1)
Code Details
193(1)
11.4.4 Variable Time Lapse
194(1)
11.4.5 Variable Lapse Timer Program
195(1)
Code Details
195(3)
11.4.6 Interrupt-Driven Timer
198(1)
11.4.7 TimerInt Program
198(1)
Code Details
198(3)
11.5 Watchdog Timer
201(1)
11.5.1 Watchdog Timer Programming
202(1)
11.6 Demonstration Programs
202(15)
11.6.1 TmrOCounter program
202(3)
11.6.2 TimerO Program
205(2)
11.6.3 LapseTimer Program
207(4)
11.6.4 LapseTmrInt Program
211(6)
Chapter 12 LCD Hardware and Programming
217(34)
12.1 Liquid Crystal Display
217(4)
12.1.1 LCD Features and Architecture
217(1)
12.1.2 LCD Functions and Components
218(1)
Internal Registers
218(1)
Busy Flag
218(1)
Address Counter
218(1)
Display Data RAM (DDRAM)
218(1)
Character Generator ROM (CGROM)
218(1)
Character Generator RAM (CGRAM)
219(1)
Timing Generation Circuit
219(1)
Liquid Crystal Display Driver Circuit
220(1)
Cursor/Blink Control Circuit
220(1)
12.1.3 Connectivity and Pin-Out
220(1)
12.2 Interfacing with the HD44780
221(4)
12.2.1 Busy Flag or Timed Delay Options
222(1)
12.2.2 Contrast Control
223(1)
12.2.3 Display Backlight
223(1)
12.2.4 Display Memory Mapping
223(2)
12.3 HD44780 Instruction Set
225(4)
12.3.1 Instruction Set Overview
225(1)
Clearing the Display
225(1)
Return Home
226(1)
Entry Mode Set
226(1)
Display and Cursor ON/OFF
226(1)
Cursor/Display Shift
226(1)
Function Set
227(1)
Set CGRAM Address
227(1)
Set DDRAM Address
227(1)
Read Busy Flag and Address Register
227(1)
Write Data
227(1)
Read Data
228(1)
12.3.2 A 16F84 8-Bit Data Mode Circuit
228(1)
12.4 LCD Programming
229(19)
12.4.1 Defining Constants and Variables
229(2)
Using MPLAB Data Directives
231(1)
12.4.2 LCD Initialization
232(1)
Function Set Command
232(1)
Display Off
233(1)
Display and Cursor On
233(1)
Set Entry Mode
234(1)
Cursor and Display Shift
234(1)
Clear Display
235(1)
12.4.3 Auxiliary Operations
235(1)
Time Delay Routine
235(2)
Pulsing the E Line
237(1)
Reading the Busy Flag
237(1)
Bit Merging Operations
238(2)
12.4.4 Text Data Storage and Display
240(1)
Generating and Storing a Text String
241(2)
Displaying the Text String
243(1)
12.4.5 Data Compression Techniques
244(1)
4-Bit Data Transfer Mode
244(2)
Master/Slave Systems
246(2)
12.5 Sample Programs
248(3)
Chapter 13 Analog-to-Digital and Real-Time Clocks
251(70)
13.1 Clocks and the Digital Revolution
251(1)
13.2 A/D Converters
252(2)
13.2.1 Converter Resolution
252(1)
13.2.2 ADC Implementation
253(1)
13.3 A/D Integrated Circuits
254(3)
13.3.1 ADC0331 Sample Circuit and Program
255(2)
13.4 PIC Onboard A/D Hardware
257(9)
13.4.1 A/D Module on the 16F87x
257(1)
ADCONO Register
258(3)
ADCON1 Register
261(1)
SLEEP Mode Operation
262(1)
13.4.2 A/D Module Sample Circuit and Program
262(4)
13.5 Real-Time Clocks
266(10)
13.5.1 NJU6355 Real-Time Clock
266(2)
13.5.2 RTC Demonstration Circuit and Program
268(5)
BCD Conversion Procedures
273(3)
13.6 Demonstration Programs
276(45)
13.6.1 ADF84 Program
276(12)
13.6.2 A2DinLCD Program
288(15)
13.6.3 RTC2LCD Program
303(18)
Chapter 14 Data EEPROM
321(58)
14.1 EEPROM Programming
321(1)
14.1.1 Data EEPROM
321(1)
14.2 EEPROM Programming
322(2)
14.2.1 Reading EEPROM Data
323(1)
14.2.2 EEPROM Data Memory Write
323(1)
14.3 EEPROM Programming Application
324(5)
14.3.1 EECounter Program
324(1)
Code Details
324(5)
14.4 Demonstration Programs
329(50)
14.4.1 EECounter Program
329(12)
14.4.2 Ser2EEP Program
341(17)
14.4.3 I2CEEP Program
358(21)
Chapter 15 Stepper Motors
379(10)
15.1 Description and Operation
379(5)
15.1.1 Stepper Motor Types
381(1)
Variable Reluctance
381(1)
Permanent Magnet
381(1)
Hybrid
381(1)
15.1.2 Unipolar Stepper Motors
382(1)
15.1.3 Determining Unipolar and Bipolar Wiring
383(1)
Four-Wire Motor
383(1)
Six-Wire Unipolar Motor
383(1)
Five-Wire Unipolar
383(1)
15.1.4 Bipolar Stepper Motors
384(1)
15.2 Stepper Motor Controls
384(5)
15.2.1 Stepping Modes
385(1)
Wave Drive Mode
385(1)
Full Step Mode
386(1)
Half Step Mode
387(1)
Microstepping
387(2)
Chapter 16 Stepper Motor Circuit Components
389(14)
16.1 Circuit Elements
389(1)
16.1.1 Input, Output, and Feedback
390(1)
16.2 Translator
390(1)
16.2.1 PIC Microcontroller as a Translator
390(1)
16.3 Translator/Drivers
391(4)
16.3.1 UCN 5804
391(1)
16.3.2 L297
392(2)
16.3.3 EDE1204
394(1)
16.3.4 SLA7060 and SLA7024
394(1)
16.4 Power Driver
395(5)
16.4.1 Unipolar Drivers
395(1)
PIC Microcontroller as a Driver
395(1)
ULN2803A
395(1)
TIP 120
396(1)
16.4.2 Bipolar Drivers
397(1)
16.4.3 Transistorized H Bridge
397(1)
Snubber Diodes
398(1)
16.4.4 H Bridge ICs
399(1)
L293D
399(1)
L298
400(1)
16.5 Modules in Circuit Schematics
400(3)
16.5.1 Example 16F84 Translator Modules
401(2)
Chapter 17 Unipolar Motor Circuits and Programs
403(64)
17.1 Stepper Motor Control Circuits
403(2)
17.1.1 Stepper Motor Circuit Schematic Conventions
403(2)
17.2 Motor Speed Control
405(2)
17.2.1 Speed Control from Digital Input
405(1)
17.2.2 Analog Input Speed Control
406(1)
17.3 Unipolar Motor Control Circuits
407(20)
17.3.1 Matching Circuit to Motor Power
407(1)
17.3.2 16F84 Unipolar Circuit
408(1)
Sample Program SMU_PIC16F84.asm
408(3)
17.3.3 5804 Unipolar Circuit
411(2)
Sample Program SMU_5804.asm
413(2)
Generating the Motor Pulses
415(1)
Interrupt-Driven Motor Pulsing
416(3)
17.3.4 16F686 PIC Circuit
419(1)
17.3.5 16F686 Programming
419(2)
Sample Program SMU_PIC16F684.asm
421(3)
Sample Program SMU_PIC16F684_INT.asm
424(1)
17.3.6 Stepper Motor Position Control
424(1)
Sample Program SMU_POSITION.asm
425(2)
17.4 Demonstration Programs
427(40)
17.4.1 SMB_297_293D.asm
427(4)
17.4.2 SMU_PIC16F84.asm Program
431(5)
17.4.3 SMU_5804.asm
436(5)
17.4.4 SMU_5804_INT.asm
441(7)
17.4.5 SMU_PIC16F684.asm
448(5)
17.4.6 SMU_PIC16F684_INT.asm
453(7)
17.4.7 SMU_POSITION.asm
460(7)
Chapter 18 Constant-Voltage Bipolar Motor Controls
467(20)
18.1 Unipolar versus Bipolar
467(1)
18.1.1 Bipolar Drive Circuits
467(1)
18.2 Simple, L293 Bipolar Circuit
468(3)
18.2.1 L297- and L293-Based Circuit
471(1)
18.2.2 Minimal L297- and L298-based Circuit
471(1)
18.3 Demonstration Programs
471(16)
18.3.1 SMB_L293D.asm
473(5)
18.3.2 SMB_297_293D.asm
478(4)
18.3.3 SMB_297_298.asm
482(5)
Chapter 19 Advanced Motor Controls
487(56)
19.1 Choppers and Microstepping
487(1)
19.2 Chopper Circuit Fundamentals
487(3)
19.3 L297/298 Chopper Circuit
490(2)
19.3.1 Setting the Reference Voltage
491(1)
19.4 A Chopper-Based Demo Board
492(2)
19.4.1 Motor Circuit Power Requirements
492(2)
19.4.2 Chopper Demo Program
494(1)
19.5 Microstepping
494(6)
19.5.1 Microstepping Fundamentals
497(1)
Microstepping Theory
497(2)
Pulse Width Modulation (PWM)
499(1)
19.6 Programming PWM
500(8)
19.6.1 CCP Module
500(2)
19.6.2 PWM Circuit and Software
502(3)
19.6.3 Microstepping by PWM
505(1)
19.6.4 Microstepping Sample Program
506(2)
19.7 Microstepping ICs
508(6)
19.7.1 Allegro 3955 IC
508(2)
19.7.2 3955-Based Circuit
510(2)
19.7.3 3955 Motor Driver Program
512(2)
19.8 Demonstration Programs
514(29)
19.8.1 PWM_DEMO_873.asm
514(4)
19.8.2 PIC_Chopper.asm
518(4)
19.8.3 PWM_Micstep.asm
522(8)
19.8.4 PIC873_3955.asm
530(13)
Chapter 20 Communications
543(120)
20.1 PIC Communications Overview
543(1)
20.2 Serial Data Transmission
544(10)
20.2.1 Asynchronous Serial Transmission
544(2)
20.2.2 Synchronous Serial Transmission
546(1)
20.2.3 PIC Serial Communications
546(1)
20.2.4 RS-232-C Standard
547(1)
Essential Concepts
548(1)
Serial Bit Stream
549(1)
Parity Testing
549(1)
Connectors and Wiring
550(1)
Null Modem
550(1)
Null Modem Cable
551(2)
20.2.5 EIA-485 Standard
553(1)
EIA-485 in PIC-based Systems
554(1)
20.3 Parallel Data Transmission
554(1)
20.3.1 PIC Parallel Slave Port (PSP)
555(1)
20.4 PIC "Free-Style" Serial Programming
555(15)
20.4.1 PIC-to-PIC Serial Communications
556(1)
PIC-to-PIC Serial Communications Circuits
556(2)
PIC-to-PIC Serial Communications Programs
558(6)
20.4.2 Program Using Shift Register ICs
564(1)
74HC165 Parallel-to-Serial Shift Register
565(3)
74HC164 Serial-to-Parallel Shift Register
568(2)
20.5 PIC Protocol-Based Serial Programming
570(23)
20.5.1 RS-232-C Communications on the 16F84
570(1)
RS-232-C Transceiver IC
571(1)
PIC-to-PC Communications
572(1)
RS-232-C TTY Board
572(1)
16F84A UART Emulation
573(2)
LCD Scrolling Routine
575(4)
20.5.2 RS-232-C Communications on the 16F87x
579(1)
16F87x USART Module
580(1)
USART Baud Rate Generator
580(3)
16F87x USART Asynchronous Transmitter
583(1)
16F87x USART Asynchronous Receiver
584(1)
PIC-to-PC RS-232-C Communications Circuit
585(1)
16F877 PIC Initialization Code
585(4)
USART Receive and Transmit Routines
589(1)
USART Receive Interrupt
590(3)
20.6 Demonstration Programs
593(70)
20.6.1 SerialSnd Program
593(6)
20.6.2 SerialRcv Program
599(5)
20.6.3 Serial6465 Program
604(5)
20.6.4 TTYUsart Program
609(15)
20.6.5 SerComLCD Program
624(18)
20.6.6 SerlntLCD Program
642(21)
Appendix A Resistor Color Codes
663(2)
Appendix B Essential Electronics
665(18)
B.1 Atom
665(1)
B.2 Isotopes and Ions
666(1)
B.3 Static Electricity
667(1)
B.4 Electrical Charge
668(2)
B.4.1 Voltage
668(1)
B.4.2 Current
668(1)
B.4.3 Power
669(1)
B.4.4 Ohm's Law
669(1)
B.5 Electrical Circuits
670(2)
B.5.1 Types of Circuits
670(2)
B.6 Circuit Elements
672(7)
B.6.1 Resistors
673(1)
B.6.2 Revisiting Ohm's Law
673(1)
B.6.3 Resistors in Series and Parallel
674(2)
B.6.4 Capacitors
676(1)
B.6.5 Capacitors in Series and in Parallel
677(1)
B.6.6 Inductors
678(1)
B.6.7 Transformers
679(1)
B.7 Semiconductors
679(4)
B.7.1 Integrated Circuits
680(1)
B.7.2 Semiconductor Electronics
680(1)
B.7.3 P-Type and N-Type Silicon
681(1)
B.7.4 Diode
681(2)
Appendix C Numeric Data
683(14)
C.1 Numbers in Computing
683(1)
C.1.1 Counting
683(1)
C.1.2 Tally System
683(1)
C.1.3 Roman Numerals
684(1)
C.2 Origins of the Decimal System
684(3)
C.2.1 Number Systems for Digital-Electronics
686(1)
C.2.2 Positional Characteristics
686(1)
C.2.3 Radix or Base of a Number System
687(1)
C.3 Types of Numbers
687(2)
C.3.1 Whole Numbers
688(1)
C.3.2 Signed Numbers
688(1)
C.3.3 Rational, Irrational, and Imaginary Numbers
688(1)
C.4 Radix Representations
689(2)
C.4.1 Decimal versus Binary Numbers
689(1)
C.4.2 Hexadecimal and Octal
690(1)
C.5 Number System Conversions
691(6)
C.5.1 Binary-to-ASCII-Decimal
692(1)
C.5.2 Binary-to-Hexadecimal Conversion
693(1)
C.5.3 Decimal-to-Binary Conversion
693(4)
Appendix D Character Data
697(22)
D.1 Character Representations
697(1)
D.1.1 Electronic-Digital Machines
697(1)
D.2 Character Representations
697(4)
D.2.1 ASCII
698(2)
D.2.2 EBCDIC and IBM
700(1)
D.2.3 Unicode
700(1)
D.3 Storage and Encoding of Integers
701(7)
D.3.1 Signed and Unsigned Representations
701(1)
D.3.2 Word Size
702(1)
D.3.3 Byte Ordering
703(1)
D.4.4 Sign-Magnitude Representation
704(1)
D.3.5 Radix Complement Representation
705(3)
D.4 Encoding of Fractional Numbers
708(7)
D.4.1 Fixed-Point Representations
709(1)
D.4.2 Floating-Point Representations
710(1)
D.4.3 Standardized Floating-Point Representations
711(1)
D.4.4 IEEE 754 Single Format
712(2)
D.4.5 Encoding and Decoding Floating-Point Numbers
714(1)
D.5 Binary-Coded Decimals (BCD)
715(4)
D.5.1 Floating-Point BCD
716(3)
Appendix E Digital Arithmetic and Conversions
719(20)
E.1 Microcontroller Arithmetic
719(1)
E.2 Unsigned and Two's Complement Arithmetic
719(4)
E.2.1 Operations on Decimal Numbers
721(2)
E.3 Bit Manipulations and Auxiliary Operations
723(2)
E.3.1 Bit Shift and Rotate
723(1)
E.3.2 Comparison Operations
724(1)
E.3.3 Other Support Operations
724(1)
E.4 Unsigned Binary Arithmetic
725(4)
E.4.1 Multi-Byte Unsigned Addition
725(1)
E.4.2 Unsigned Multiplication
726(2)
E.4.3 Unsigned Division
728(1)
E.5 Signed Binary Arithmetic
729(4)
E.5.1 Overflow Detection in Signed Arithmetic
730(2)
E.5.2 Sign Extension Operations
732(1)
E.5.3 Multi-Byte Signed Operations
732(1)
E.6 Data Format Conversions
733(6)
E.6.1 BCD Digits to ASCII Decimal
733(1)
E.6.2 Unsigned Binary to ASCII Decimal Digits
734(1)
E.6.3 ASCII Decimal String to Unsigned Binary
734(2)
E.6.4 Unsigned Binary to ASCII Hexadecimal Digits
736(1)
E.6.5 Signed Numerical Conversions
736(3)
Appendix F Mid-Range Instruction Set
739(38)
Appendix G Printed Circuit Boards
777(10)
G.1 Introduction
777(1)
G.2 Printed Circuit Boards (PCBs)
777(1)
G.3 Parts Lists
778(1)
G.4 Building Your Own Circuit Boards
779(6)
G.4.1 Tools and Materials
779(1)
G.4.2 Single-Sided Demo Board
780(1)
G.4.3 PCB Images for Demo Board
780(2)
Drawing the Circuit Diagram
782(1)
Printing the PCB Diagram
783(1)
Selecting the Paper
783(1)
Transferring the PCB Image
784(1)
Etching the Board
784(1)
Finishing the Board
784(1)
Component-Side Image
784(1)
G.5 Caveats
785(2)
Appendix H Additional Code
787(76)
Index 863
Julio Sanchez is a professor emeritus of computer science at Minnesota State University. He is the author of over twenty-five books, with many translated into Chinese, Indonesian, Japanese, Korean, and Polish.

Maria P. Canton is the co-author of over twenty books, with many translated into Chinese, Indonesian, Japanese, Korean, and Polish. She earned a Ph.D. in computer science from North Dakota State University.