A digital electronics lab project built around the PIC16F84A microcontroller, covering bit manipulation on I/O ports, reading digital inputs, and implementing a small combinational logic system in C.
- Proteus — schematic capture and circuit simulation (PIC16F84A behavior, switches, LEDs).
- MPLAB X IDE — project creation, C source editing, and build configuration (config bits, compiler settings).
- MPLAB XC8 Compiler — C compiler used to build the firmware (
.hexoutput). - MPLAB IPE (Integrated Programming Environment) — used alongside MPLAB X for programming/verification workflows.
- MPLAB Extensions for VS Code — an alternative to MPLAB X IDE for building the same project directly from VS Code (same underlying XC8 toolchain).
- PIC16F84A — 8-bit microcontroller, the core of every exercise in this project.
- Pull-down resistors (4.7kΩ) — used on each switch input (PORTA) to guarantee a defined logic
0when the switch is open, avoiding floating input pins. - Pull-up resistor (4.7kΩ) on MCLR — required so the PIC stays out of reset during normal operation.
- Series resistors (270Ω) — placed in series with each LED to limit current and protect both the LED and the microcontroller output pin.
- Red LEDs — used as the visual output for every exercise (port state, inverted bits, or logic equation results).
The project is split into three exercises, each in its own subfolder with a slightly different context (I/O configuration and goal):
.
├── exo1/
│ ├── README.md
│ ├── main.c
│ └── screenshots/
│ └── exo1.png
├── exo2/
│ ├── README.md
│ ├── main.c
│ └── screenshots/
│ └── exo2.png
└── exo3/
├── README.md
├── main.c
└── screenshots/
└── exo3.png
Each subfolder README describes the specific context of that exercise and shows its schematic.
Note: Exercise 1 does not yet have its own dedicated circuit. It currently reuses the circuit originally built for Exercise 2 (5 switches on PORTA, 8 LEDs on PORTB) rather than a minimal setup tailored to its own requirements. Not ideal, but functional — a dedicated schematic may be added later.