MICROCONTROLLER PROGRAMMING: THE MICROCHIP PIC
1 0 THE ATOM 1 1 ISOTOPES AND IONS 1 2 STATIC ELECTRICITY 1 3 ELECTRICAL CHARGE 1 3 1 VOLTAGE 1 3 2 CURRENT 1 3 3 POWER 1 3 4 OHM'S LAW 1 4 ELECTRICAL CIRCUITS 1 4 1 TYPES OF CIRCUITS 1 5 CIRCUIT ELEMENTS 1 5 1 RESISTORS 1 5 2 REVISITING OHM'S LAW 1 5 3 RESISTORS IN SERIES AND PARALLEL 1 5 4 CAPACITORS 1 5 5 CAPACITORS IN SERIES AND IN PARALLEL 1 5 6 INDUCTORS 1 5 7 TRANSFORMERS 1 6 SEMICONDUCTORS 1 6 1 INTEGRATED CIRCUITS 1 6 2 SEMICONDUCTOR ELECTRONICS 1 6 3 P-TYPE AND N-TYPE SILICON 1 6 4 THE DIODE CHAPTER 2 - NUMBER SYSTEMS 2 0 COUNTING 2 0 1 THE TALLY SYSTEM 2 0 2 ROMAN NUMERALS 2 1 THE ORIGINS OF THE DECIMAL SYSTEM 2 1 1 NUMBER SYSTEMS FOR DIGITAL-ELECTRONICS 2 1 2 POSITIONAL CHARACTERISTICS 2 1 3 RADIX OR BASE OF A NUMBER SYSTEM 2 2 TYPES OF NUMBERS 2 2 1 WHOLE NUMBERS 2 2 2 SIGNED NUMBERS 2 2 3 RATIONAL, IRRATIONAL, AND IMAGINARY NUMBERS 2 3 RADIX REPRESENTATIONS 2 3 1 DECIMAL VERSUS BINARY NUMBERS 2 3 2 HEXADECIMAL AND OCTAL 2 4 NUMBER SYSTEM CONVERSIONS 2 4 1 BINARY-TO-ASCII-DECIMAL 2 4 2 BINARY-TO-HEXADECIMAL CONVERSION 2 4 3 DECIMAL-TO-BINARY CONVERSION CHAPTER 3 - DATA TYPES AND DATA STORAGE 3 0 ELECTRONIC-DIGITAL MACHINES 3 1 CHARACTER REPRESENTATIONS 3 1 1 ASCII 3 1 2 EBCDIC AND IBM 3 1 3 UNICODE 3 2 STORAGE AND ENCODING OF INTEGERS 3 2 1 SIGNED AND UNSIGNED REPRESENTATIONS 3 2 2 WORD SIZE 3 2 3 BYTE ORDERING 3 2 4 SIGN-MAGNITUDE REPRESENTATION 3 2 5 RADIX COMPLEMENT REPRESENTATION 3 3 ENCODING OF FRACTIONAL NUMBERS 3 3 1 FIXED-POINT REPRESENTATIONS 3 3 2 FLOATING-POINT REPRESENTATIONS 3 3 3 STANDARDIZED FLOATING-POINT REPRESENTATIONS 3 3 4 IEEE 754 SINGLE FORMAT 3 3 5 ENCODING AND DECODING FLOATING-POINT NUMBERS 3 4 BINARY-CODED DECIMALS (BCD) 3 4 1 FLOATING-POINT BCD CHAPTER 4 - DIGITAL LOGIC, ARITHMETIC, AND CONVERSIONS 4 0 MICROCONTROLLER LOGIC AND ARITHMETIC 4 0 1 CPU FLAGS 4 0 2 WORD SIZE 4 1 LOGICAL INSTRUCTIONS 4 1 1 LOGICAL AND 4 1 2 LOGICAL OR 4 1 3 LOGICAL XOR 4 1 4 LOGICAL NOT 4 2 MICROCONTROLLER ARITHMETIC 4 2 1 UNSIGNED AND TWO’S COMPLEMENT ARITHMETIC 4 2 2 OPERATIONS ON DECIMAL NUMBERS 4 3 BIT MANIPULATIONS AND AUXILIARY OPERATIONS 4 3 1 BIT SHIFT AND ROTATE 4 3 2 COMPARISON OPERATIONS 4 3 3 OTHER SUPPORT OPERATIONS 4 4 UNSIGNED BINARY ARITHMETIC 4 4 1 MULTI-BYTE UNSIGNED ADDITION 4 4 2 UNSIGNED MULTIPLICATION 4 4 3 UNSIGNED DIVISION 4 5 SIGNED BINARY ARITHMETIC 4 5 1 OVERFLOW DETECTION IN SIGNED ARITHMETIC 4 5 2 SIGN EXTENSION OPERATIONS 4 5 3 MULTI-BYTE SIGNED OPERATIONS 4 6 DATA FORMAT CONVERSIONS 4 6 1 BCD DIGITS TO ASCII DECIMAL 4 6 2 UNSIGNED BINARY TO ASCII DECIMAL DIGITS 4 6 3 ASCII DECIMAL STRING TO UNSIGNED BINARY 4 6 4 UNSIGNED BINARY TO ASCII HEXADECIMAL DIGITS 4 6 6 SIGNED NUMERICAL CONVERSIONS CHAPTER 5 - CIRCUITS AND LOGIC GATES 5 0 DIGITAL CIRCUITS 5 1 THE DIODE REVISITED 5 1 1 THE LIGHT-EMITTING DIODE (LED) 5 2 THE TRANSISTOR 5 2 1 BIPOLAR TRANSISTOR 5 2 2 MOS TRANSISTOR 5 3 LOGIC GATES 5 4 TRANSISTOR-TRANSISTOR LOGIC 5 4 1 INVERTER GATES 5 4 2 THE AND GATE 5 4 3 THE NAND GATE 5 4 4 THE OR GATE 5 4 5 THE NOR GATE 5 4 6 POSITIVE AND NEGATIVE LOGIC 5 4 7 THE XOR GATE 5 4 8 SCHMITT TRIGGER INVERTER 5 5 OTHER TTL LOGIC FAMILIES 5 6 CMOS LOGIC GATES CHAPTER 6 - CIRCUIT COMPONENTS 6 0 POWER SUPPLIES 6 1 CLOCKED LOGIC AND FLIP-FLOPS 6 1 1 THE RS FLIP-FLOP 6 1 2 CLOCKED RS FLIP-FLOP 6 1 3 THE D FLIP-FLOP 6 1 4 THE EDGE-TRIGGERED D FLIP-FLOP 6 1 5 PRESET AND CLEAR SIGNALS 6 1 6 D FLIP-FLOP WAVEFORM ACTION 6 1 7 FLIP-FLOP APPLICATIONS 6 2 CLOCKS 6 2 1 CLOCK WAVEFORMS 6 2 2 THE TTL CLOCK 6 2 3 THE 555 TIMER 6 2 4 MICROCONTROLLER CLOCKS 6 3 FREQUENCY DIVIDERS AND COUNTERS 6 3 1 FREQUENCY DIVIDERS 6 3 2 THE JK FLIP-FLOP COUNTER 6 3 3 RIPPLE COUNTERS 6 3 4 DECODING GATES 6 3 5 SYNCHRONOUS COUNTERS 6 3 6 COUNTER ICS 6 3 7 SHIFT REGISTERS 6 4 MULTIPLEXERS AND DEMULTIPLEXERS 6 4 1 MULTIPLEXERS 6 4 2 DEMULTIPLEXERS 6 4 3 MULTIPLEXER AND DEMULTIPLEXER ICS 6 5 INPUT DEVICES 6 5 1 SWITCHES 6 5 2 SWITCH CONTACT BOUNCE 6 5 3 KEYPADS 6 6 OUTPUT DEVICES 6 6 1 SEVEN-SEGMENT LED 6 6 2 LIQUID CRYSTAL DISPLAYS 6 6 3 LCD TECHNOLOGIES CHAPTER 7 - THE MICROCHIP PIC 7 0 THE PICMICRO MICROCONTROLLER 7 0 1 PROGRAMMING THE PIC PIC PROGRAMMERS DEVELOPMENT BOARDS 7 0 2 PROTOTYPING THE PIC CIRCUIT 7 1 PIC ARCHITECTURE 7 1 1 BASELINE PIC FAMILY PIC10 DEVICES PIC12 DEVICES PIC14 DEVICES 7 1 2 MID-RANGE PIC FAMILY PIC16 DEVICES 7 1 3 HIGH-PERFORMANCE PIC FAMILY PIC18 DEVICES CHAPTER 8 - MID-RANGE PIC ARCHITECTURE 8 0 PROCESSOR ARCHITECTURE AND DESIGN 8 0 1 HARVARD ARCHITECTURE 8 0 2 RISC CPU DESIGN 8 0 3 SINGLE-WORD INSTRUCTIONS 8 0 4 INSTRUCTION FORMAT 8 0 5 MID-RANGE DEVICE VERSIONS 8 1 THE MID-RANGE CORE FEATURES 8 1 1 OSCILLATOR 8 1 2 SYSTEM RESET 8 1 3 INTERRUPTS 8 2 MID-RANGE CPU AND INSTRUCTION SET 8 2 1 MID-RANGE INSTRUCTION SET 8 2 2 STATUS AND OPTION REGISTERS 8 3 EEPROM DATA STORAGE 8 3 1 EEPROM IN MID-RANGE PICS 8 4 DATA MEMORY ORGANIZATION 8 4 1 THE W REGISTER 8 4 2 THE DATA REGISTERS MEMORY BANKS THE SFRS THE GPRS 8 4 3 INDIRECT ADDRESSING 8 5 MID-RANGE I/O AND PERIPHERAL MODULES 8 5 1 I/O PORTS 8 5 2 TIMER MODULES 8 5 3 CAPTURE-AND-COMPARE MODULE 8 5 4 MASTER SYNCHRONOUS SERIAL PORT (MSSP) MODULE 8 5 5 USART MODULE 8 5 6 A/D MODULE CHAPTER 9 - PIC PROGRAMMING: TOOLS AND TECHNIQUES 9 0 MICROCHIP’S MPLAB 9 0 1 EMBEDDED SYSTEMS 9 1 INTEGRATED DEVELOPMENT ENVIRONMENT 9 1 1 INSTALLING MPLAB 9 1 2 CREATING THE PROJECT 9 1 3 PROJECT BUILD OPTIONS 9 1 4 BUILDING THE PROJECT 9 2 SIMULATORS AND DEBUGGERS 9 2 1 MPLAB SIM 9 2 2 MPLAB HARDWARE DEBUGGERS 9 2 3 A “QUICK-AND-DIRTY” DEBUGGER 9 3 PROGRAMMERS 9 4 ENGINEERING PIC SOFTWARE 9 4 1 USING PROGRAM COMMENTS PROGRAM HEADER COMMENTED BANNERS COMMENTED BITMAPS 9 4 2 DEFINING DATA ELEMENTS THE CBLOCK DIRECTIVE 9 4 3 BANKING TECHNIQUES THE BANKSEL DIRECTIVE BANK SELECTION MACROS DEPRECATED BANKING INSTRUCTIONS 9 4 4 PROCESSOR AND CONFIGURATION CONTROLS CONFIGURATION BITS 9 4 5 NAMING CONVENTIONS 9 4 6 ERRORLEVEL DIRECTIVE 9 5 PSEUDO INSTRUCTIONS CHAPTER 10 - PROGRAMMING ESSENTIALS: INPUT AND OUTPUT 10 0 16F84A PROGRAMMING TEMPLATE 10 1 INTRODUCING THE 16F84A 10 1 1 TEMPLATE CIRCUIT FOR 16F84A 10 1 2 POWER SUPPLIES VOLTAGE REGULATOR 10 1 3 COMPARISONS IN PIC PROGRAMMING THE INFAMOUS PIC CARRY FLAG 10 2 SIMPLE CIRCUITS AND PROGRAMS 10 2 1 A SINGLE LED CIRCUIT LED FLASHER PROGRAM 10 2 2 LED/PUSHBUTTON CIRCUIT 10 2 3 MULTIPLE LED CIRCUIT 10 3 PROGRAMMING THE SEVEN-SEGMENT LED 10 4 A DEMONSTRATION BOARD 10 4 1 PCB IMAGES FOR DEMO BOARD 10 4 2 TESTDEMO1 PROGRAM CHAPTER 11 - INTERRUPTS 11 0 1 THE INTERRUPT CONTROL REGISTER 11 0 2 THE OPTION REGISTER 11 1 INTERRUPT SOURCES 11 1 1 PORT-B EXTERNAL INTERRUPT 11 1 2 TIMER0 INTERRUPT 11 1 3 PORT-B LINE CHANGE INTERRUPT MULTIPLE EXTERNAL INTERRUPTS 11 1 4 EEPROM DATA WRITE INTERRUPT 11 2 INTERRUPT HANDLERS 11 2 1 CONTEXT SAVING OPERATIONS SAVING W AND STATUS REGISTERS 11 3 INTERRUPT PROGRAMMING 11 3 1 PROGRAMMING THE EXTERNAL INTERRUPT RB0 INTERRUPT INITIALIZATION RB0 INTERRUPT SERVICE ROUTINE 11 3 2 WAKEUP FROM SLEEP USING THE RB0 INTERRUPT THE SLEEPDEMO PROGRAM 11 3 3 PORT-B BITS 4-7 STATUS CHANGE INTERRUPT RB4-7 INTERRUPT INITIALIZATION RB4-7 CHANGE INTERRUPT SERVICE ROUTINE 11 4 SAMPLE PROGRAMS 11 4 1 THE RB0INT PROGRAM 11 4 2 THE SLEEPDEMO PROGRAM 11 4 3 THE RB4TO7INT PROGRAM CHAPTER 12 - TIMERS AND COUNTERS 12 0 THE 16F84 TIMER0 MODULE 12 0 1 TIMER0 OPERATION TIMER0 INTERRUPT TIMER0 PRESCALER 12 1 1 LONG DELAY LOOPS HOW ACCURATE THE DELAY? THE BLACK-AMMERMAN METHOD 12 2 TIMER0 AS A COUNTER 12 3 TIMER0 PROGRAMMING 12 3 1 PROGRAMMING A COUNTER A TIMER/COUNTER TEST CIRCUIT THE TMR0COUNTER PROGRAM 12 3 2 TIMER0 AS A SIMPLE DELAY TIMER 12 3 3 MEASURED TIME LAPSE INTERRUPT-DRIVEN TIMER 12 4 THE WATCHDOG TIMER 12 4 1 WATCHDOG TIMER PROGRAMMING 12 5 SAMPLE PROGRAMS 12 5 1 THE TMR0COUNTER PROGRAM THE TIMER0 PROGRAM 12 5 3 THE LAPSETIMER PROGRAM 12 5 4 THE LAPSETMRINT PROGRAM CHAPTER 13 - LCD INTERFACING AND PROGRAMMING 13 0 LCD FEATURES AND ARCHITECTURE 13 0 1 LCD FUNCTIONS AND COMPONENTS INTERNAL REGISTERS BUSY FLAG ADDRESS COUNTER DISPLAY DATA RAM (DDRAM) CHARACTER GENERATOR ROM (CGROM) CHARACTER GENERATOR RAM (CGRAM) TIMING GENERATION CIRCUIT LIQUID CRYSTAL DISPLAY DRIVER CIRCUIT CURSOR/BLINK CONTROL CIRCUIT 13 0 2 CONNECTIVITY AND PIN-OUT 13 1 1 BUSY FLAG OR TIMED DELAY OPTIONS 13 1 2 CONTRAST CONTROL 13 1 3 DISPLAY BACKLIGHT 13 1 4 DISPLAY MEMORY MAPPING 13 2 HD44780 INSTRUCTION SET 13 2 1 INSTRUCTION SET OVERVIEW CLEARING THE DISPLAY RETURN HOME ENTRY MODE SET DISPLAY AND CURSOR ON/OFF CURSOR/DISPLAY SHIFT FUNCTION SET SET CGRAM ADDRESS SET DDRAM ADDRESS READ BUSY FLAG AND ADDRESS REGISTER WRITE DATA READ DATA 13 2 2 A 16F84 8-BIT DATA MODE CIRCUIT 13 3 LCD PROGRAMMING 13 3 1 DEFINING CONSTANTS AND VARIABLES USING MPLAB DATA DIRECTIVES 13 3 2 LCD INITIALIZATION FUNCTION SET COMMAND DISPLAY OFF DISPLAY AND CURSOR ON SET ENTRY MODE CURSOR AND DISPLAY SHIFT CLEAR DISPLAY 13 3 3 AUXILIARY OPERATIONS TIME DELAY ROUTINE PULSING THE E LINE READING THE BUSY FLAG BIT MERGING OPERATIONS 13 3 4 TEXT DATA STORAGE AND DISPLAY GENERATING AND STORING A TEXT STRING DISPLAYING THE TEXT STRING 13 3 5 DATA COMPRESSION TECHNIQUES 4-BIT DATA TRANSFER MODE MASTER/SLAVE SYSTEMS 13 4 SAMPLE PROGRAMS 13 4 2 LCDTEST2 PROGRAM 13 4 3 LCDTEST3 PROGRAM CHAPTER 14 - COMMUNICATIONS 14 0 PIC COMMUNICATIONS OVERVIEW 14 1 SERIAL DATA TRANSMISSION 14 1 1 ASYNCHRONOUS SERIAL TRANSMISSION 14 1 2 SYNCHRONOUS SERIAL TRANSMISSION 14 1 3 PIC SERIAL COMMUNICATIONS 14 1 4 THE RS-232-C STANDARD ESSENTIAL CONCEPTS THE SERIAL BIT STREAM PARITY TESTING CONNECTORS AND WIRING THE NULL MODEM THE NULL MODEM CABLE 14 1 5 THE EIA-485 STANDARD EIA-485 IN PIC-BASED SYSTEMS 14 2 PARALLEL DATA TRANSMISSION 14 2 1 PIC PARALLEL SLAVE PORT (PSP) 14 3 PIC “FREE-STYLE” SERIAL PROGRAMMING 14 3 1 PIC-TO-PIC SERIAL COMMUNICATIONS PIC-TO-PIC SERIAL COMMUNICATIONS CIRCUITS PIC-TO-PIC SERIAL COMMUNICATIONS PROGRAMS 14 3 2 PROGRAM USING SHIFT REGISTER ICS THE 74HC165 PARALLEL-TO-SERIAL SHIFT REGISTER 74HC164 SERIAL-TO-PARALLEL SHIFT REGISTER 14 4 PIC PROTOCOL-BASED SERIAL PROGRAMMING THE RS-232-C TRANSCEIVER IC PIC TO PC COMMUNICATIONS AN RS-232-C TTY BOARD A 16F84A UART EMULATION AN LCD SCROLLING ROUTINE 14 4 2 RS-232-C COMMUNICATIONS ON THE 16F87X THE 16F87X USART MODULE THE USART BAUD RATE GENERATOR 16F87X USART ASYNCHRONOUS TRANSMITTER 16F87X USART ASYNCHRONOUS RECEIVER PIC-TO-PC RS-232-C COMMUNICATIONS CIRCUIT 16F877 PIC INITIALIZATION CODE USART RECEIVE AND TRANSMIT ROUTINES THE USART RECEIVE INTERRUPT 14 5 SAMPLE PROGRAMS 14 5 1 SERIALSND PROGRAM 14 5 2 SERIALRCV PROGRAM 14 5 3 SERIAL6465 PROGRAM 14 5 4 TTYUSART PROGRAM 14 5 5 SERCOMLCD PROGRAM 14 5 6 SERINTLCD PROGRAM CHAPTER 15 - DATA EEPROM PROGRAMMING 15 0 PIC INTERNAL EEPROM MEMORY 16F84 EEPROM DATA MEMORY WRITE 16F84 EEPROM DEMONSTRATION PROGRAM 15 0 2 EEPROM PROGRAMMING ON THE 16F87X READING EEPROM DATA MEMORY ON THE 16F87X WRITING TO EEPROM DATA MEMORY IN THE 16F87X GFR ACCESS ISSUE IN THE 16F87X 15 0 3 16F87X EEPROM CIRCUIT AND PROGRAM 15 1 EEPROM DEVICES AND INTERFACES 15 1 1 THE I2C SERIAL INTERFACE 15 1 2 I2C COMMUNICATIONS 15 1 3 EEPROM COMMUNICATIONS CONDITIONS 15 1 4 EEPROM WRITE OPERATION 15 1 5 EEPROM READ OPERATION 15 1 6 I2C EEPROM DEVICES 15 1 7 PIC MASTER SYNCHRONOUS SERIAL PORT (MSSP) MSSP IN MASTER MODE IC2 INITIALIZATION PROCEDURE I2C WRITE BYTE PROCEDURE I2C READ BYTE PROCEDURE 15 2 SAMPLE PROGRAMS 15 2 1 EECOUNTER PROGRAM 15 2 2 SER2EEP PROGRAM 15 2 3 I2CEEP PROGRAM CHAPTER 16 - ANALOG TO DIGITAL AND REALTIME CLOCKS A/D CONVERTERS 16 0 1 CONVERTER RESOLUTION 16 0 2 ADC IMPLEMENTATION 16 1 A/D INTEGRATED CIRCUITS 16 1 1 ADC0331 SAMPLE CIRCUIT AND PROGRAM 16 2 PIC ON-BOARD A/D HARDWARE 16 2 1 A/D MODULE ON THE 16F87X THE ADCON0 REGISTER THE ADCON1 REGISTER SLEEP MODE OPERATION 16 2 2 A/D MODULE SAMPLE CIRCUIT AND PROGRAM 16 3 REALTIME CLOCKS 16 3 1 THE NJU6355 REALTIME CLOCK 16 3 2 RTC DEMONSTRATION CIRCUIT AND PROGRAM BCD CONVERSION PROCEDURES 16 4 SAMPLE PROGRAMS 16 4 1 ADF84 PROGRAM 16 4 2 A2DINLCD PROGRAM 16 4 3 RTC2LCD PROGRAM