1. Basics of PIC Microcontrollers
Q1: What is a PIC microcontroller?
A:
PIC (Peripheral Interface Controller) is a family of microcontrollers developed by Microchip Technology. It is widely used in embedded systems due to its low power consumption, RISC architecture, and built-in peripherals like timers, UART, ADC, etc.
Q2: What are the key features of PIC microcontrollers?
A:
- RISC architecture (Reduced Instruction Set Computing).
- Harvard architecture (separate memory for instructions and data).
- Built-in peripherals (ADC, UART, I2C, SPI, Timers).
- Low power consumption (Sleep and Idle modes).
- Flash memory for program storage (EEPROM for data storage).
- Wide operating voltage range (2V–5.5V).
2. PIC Architecture & Memory
Q3: Explain the architecture of a PIC microcontroller.
A:
PIC follows a Harvard architecture with separate instruction and data buses. It includes:
- Program Memory (Flash/ROM): Stores program code.
- Data Memory (RAM & EEPROM): Stores runtime data and permanent data.
- ALU (Arithmetic Logic Unit): Handles arithmetic and logical operations.
- General Purpose Registers (GPRs): Temporary storage.
- Special Function Registers (SFRs): Control registers for peripherals like ADC, UART.
Q4: What are the different types of PIC microcontrollers?
A:
PIC microcontrollers are categorized based on bus width:
- 8-bit PIC (PIC10, PIC12, PIC16, PIC18) → Small applications.
- 16-bit PIC (PIC24, dsPIC33) → Medium complexity applications.
- 32-bit PIC (PIC32) → High-performance applications.
Q5: What is the difference between PIC16F and PIC18F series?
Feature | PIC16F Series | PIC18F Series |
---|---|---|
Instruction Set | 14-bit | 16-bit |
Performance | Moderate | Higher |
Flash Memory | Less | More |
RAM | Less | More |
Applications | Basic tasks | Complex systems |
3. Programming & Peripherals
Q6: How do you program a PIC microcontroller?
A:
- Write the code in Embedded C or Assembly.
- Use MPLAB X IDE & XC8/XC16/XC32 compiler.
- Compile and generate a .hex file.
- Use a PIC programmer (e.g., PICkit 3/4) to flash the program into the microcontroller.
- Debug using MPLAB X debugger or ICD (In-Circuit Debugger).
Q7: What are the types of memory in PIC microcontrollers?
A:
- Flash Memory – Stores program code.
- RAM (Data Memory) – Temporary storage for runtime data.
- EEPROM – Stores non-volatile data (e.g., user settings).
Q8: What are GPIO pins? How are they controlled?
A:
GPIO (General-Purpose Input/Output) pins are used to interface external devices.
To control GPIOs in PIC16F877A:
TRISB = 0x00; // Configure PORTB as output
PORTB = 0xFF; // Set all PORTB pins HIGH
- TRISx Register: Configures direction (0 = Output, 1 = Input).
- PORTx Register: Controls output state.
4. Timers & Interrupts
Q9: How does a Timer work in PIC microcontrollers?
A:
A timer is a hardware counter that increments at a fixed rate. It is used for delays, PWM, and scheduling tasks.
Example: Configuring Timer0 in PIC16F877A
T0CON = 0b10000111; // Enable Timer0, Prescaler 1:256
while(INTCONbits.TMR0IF == 0); // Wait for Timer Overflow
INTCONbits.TMR0IF = 0; // Clear Interrupt Flag
- T0CON – Timer0 control register.
- TMR0IF – Overflow flag (set when timer overflows).
Q10: What are interrupts in PIC? How are they handled?
A:
Interrupts pause normal execution to handle urgent tasks.
Example: External Interrupt on RB0/INT0 (PIC16F877A)
void __interrupt() ISR() {
if (INTCONbits.INTF) { // Check if INT0 triggered
PORTB ^= 0xFF; // Toggle LED
INTCONbits.INTF = 0; // Clear interrupt flag
}
}
- Global Interrupt Enable (GIE) – Enables all interrupts.
- Peripheral Interrupt Enable (PEIE) – Enables peripheral interrupts.
- INTF flag – Set when interrupt occurs.
5. Communication Protocols
Q11: Explain I2C protocol in PIC microcontrollers.
A:
I2C (Inter-Integrated Circuit) is a two-wire protocol (SCL & SDA) used for communication between devices.
Example: Writing data to an I2C device
I2C_Start(); // Start condition
I2C_Write(0x50); // Send slave address
I2C_Write(0xA5); // Send data byte
I2C_Stop(); // Stop condition
Q12: What is the difference between I2C, SPI, and UART?
Feature | I2C | SPI | UART |
---|---|---|---|
Wires | 2 | 4 | 2 |
Speed | Medium | Fast | Medium |
Complexity | Moderate | High | Low |
Use Cases | Sensors, EEPROM | SD Cards, Displays | Serial communication |
Q13: How is UART communication implemented in PIC?
A:
UART (Universal Asynchronous Receiver/Transmitter) is used for serial communication.
Example: Transmitting data over UART
TXSTA = 0x24; // Transmit enabled, 8-bit mode
RCSTA = 0x90; // Serial port enabled
SPBRG = 25; // Baud rate setting for 9600
TXREG = 'A'; // Transmit character 'A'
6. ADC & PWM
Q14: How does ADC work in PIC?
A:
An ADC (Analog-to-Digital Converter) converts an analog signal to digital.
Example: Reading an analog value on RA0
ADCON0 = 0x41; // Select channel AN0, enable ADC
ADCON1 = 0x80; // Set conversion clock
GO_nDONE = 1; // Start conversion
while(GO_nDONE); // Wait for conversion
int value = ADRESH; // Read high byte
Q15: How is PWM implemented in PIC?
A:
PWM (Pulse Width Modulation) is used for motor control, LED dimming, etc.
Example: Generating PWM signal using CCP module
CCP1CON = 0x0C; // Set PWM mode
PR2 = 255; // Set PWM period
CCPR1L = 127; // Set duty cycle (50%)
T2CON = 0x04; // Start Timer2
These are some of the most commonly asked PIC microcontroller interview questions. Do you need more details on any topic or sample projects? 😊