PIC microcontroller
PIC is a Peripheral Interface Microcontroller which was developed in the year 1993 by the General Instruments Microcontrollers. It is controlled by software and programmed in such a way that it performs different tasks and controls a generation line. PIC microcontrollers are used in different new applications such as smart phones, audio accessories and advanced medical devices.
There are many PICs available in the market ranging from PIC16F84 to PIC16C84. These types of PICs are affordable flash PICs. Microchip has recently introduced flash chips with different types, such as 16F628, 16F877 and 18F452. The 16F877 costs twice the price of the old 16F84, but it is eight times more than the code size, with more RAM and much more I/O pins, a UART, A/D converter and a lot more features.
The PIC architecture consists of two memories: Program memory and the Data memory.
Program Memory: This is a 4K*14 memory space. It is used to store 13-bit instructions, or the program code. The program memory data is accessed by the program counter register that holds the address of the program memory. The address 0000H is used as reset memory space and 0004H is used as interrupt memory space.
Data Memory: The data memory consists of the 368 bytes of RAM and 256 bytes of EEPROM. The 368 bytes of RAM consists of multiple banks. Each bank consists of general purpose registers and special function registers.
The special function registers consists of control registers to control different operations of the chip resources like Timers, Analog to Digital Converters, Serial ports, I/O ports, etc. For example, the TRISA register whose bits can be changed to alter the input or output operations of the port A.
The general purpose registers consists of registers that are used to store temporary data and processing results of the data. These general purpose registers are each 8-bit registers.
Working Register: It consists of a memory space that stores the operands for each instruction. It also stores the results of each execution.
Status Register: The bits of the status register denote the status of the ALU (arithmetic logic unit) after every execution of the instruction. It is also used to select any one of the 4 banks of the RAM.
File Selection Register: It acts as a pointer to any other general-purpose register. It consists of a register file address, and it is used in indirect addressing.
Another general purpose register is the program-counter register, which is a 13-bit register. The 5 upper bits are used as PCLATH (Program Counter Latch) to independently function as any other register, and the lower 8-bits are used as the program counter bits. The program counter acts as a pointer to the instructions stored in the program memory.
EEPROM: It consists of 256 bytes of memory space. It is a permanent memory like ROM, but its contents can be erased and changed during the operation of the microcontroller. The contents into EEPROM can be read from or written to, using special function registers like EECON1, EECON2, EEDATA, etc.
PIC16 series consists of five ports, such as Port A, Port B, Port C, Port D and Port E.
Port A: It is a 16-bit port, which can be used as input or output port based on the status of the TRISA register.
Port B: It is an 8-bit port, which can be used as both input and output port. 4 of its bits when used as input can be changed upon interrupt signals.
Port C: It is an 8-bit port whose operation (input or output) is determined by the status of the TRISC register.
Port D: It is an 8-bit port, which apart from being an I/O port, acts as a slave port for connection to the microprocessor bus.
Port E: It is a 3-bit port that serves the additional function of the control signals to the A/D converter.
PIC microcontrollers consist of 3 timers, out of which the Timer 0 and Timer 2 are 8-bit timers and the Time-1 is a 16-bit timer, which can also be used as a counter.
The PIC Microcontroller consists of 8-channels, 10-bit Analog to Digital Converter. The operation of the A/D converter is controlled by these special function registers: ADCON0 and ADCON1. The lower bits of the converter are stored in ADRESL (8 bits), and the upper bits are stored in the ADRESH register. It requires an analog reference voltage of 5V for its operation.
Oscillators are used for timing generation. PIC microcontrollers consist of external oscillators like crystals or RC oscillators. In case of crystal oscillators, the crystal is connected between two oscillator pins, and the value of the capacitor connected to each pin determines the mode of operation of the oscillator. The different modes are low-power mode, crystal mode and the high- speed mode. In case of RC oscillators, the value of the Resistor and Capacitor determine the clock frequency. The clock frequency ranges from 30 KHz to 4 MHz.
A CCP module works in the following three modes:
Capture Mode: This mode captures the time of arrival of a signal, or in other words, captures the value of the Timer1 when the CCP pin goes high.
Compare Mode: It acts as an analog comparator that generates an output when the timer1 value reaches a certain reference value.
PWM Mode: It provides pulse width modulated output with a 10-bit resolution and programmable duty cycle.