How to Interface Digital-Inputs with PIC16F

Digital-Inputs Interfacing With PIC16F877A Slicker

Tags: Interfacing DigitalInputs, Interfacing digitalInputs with PIC16F877A, C Program to switch functions using PIC16F, Circuit Diagram to Interface Switch with PIC16F877A, Interfacing switches with pic16f,
Overall rating
PIC16F/18F Slicker Board

The PIC16F/18F Slicker board is specifically designed to help students to master the required skills in the area of embedded systems. The kit is designed in such way that all the possible features of the microcontroller will be easily used by the students. The kit supports in system programming (ISP) which is done through USB port.

Microchip’s PIC (PIC16F877A), PIC16F/18F Slicker Kit is proposed to smooth the progress of developing and debugging of various designs encompassing of High speed 8-bit Microcontrollers.


A switch is an electrical component that can break an electrical circuit, interrupting the current or diverting it from one conductor to another. A switch may be directly manipulated by a human as a control signal to a system, or to control power flow in a circuit.

Interfacing Digital-Inputs

Fig. 1 shows how to interface the switch to microcontroller. A simple switch has an open state and closed state. However, a microcontroller needs to see a definite high or low voltage level at a digital input. A switch requires a pull-up or pull-down resistor to produce a definite high or low voltage when it is open or closed. A resistor placed between a digital input and the supply voltage is called a "pull-up" resistor because it normally pulls the pin's voltage up to the supply.


Fig. 1 Interfacing Digital-Inputs

Interfacing digital-Inputs with PIC16F877A

We now want to control the LED by using switches (Digital-Inputs) in PIC16F/18F Slicker Board. It works by turning ON a LED & then turning it OFF when switch is going to LOW or HIGH.

The PIC16F/18F Slicker board has eight numbers of point LEDs, connected with I/O Port lines (PORTB.0 – PORTB.7) to make port pins high. Eight switches, connected with I/O port lines PORTC are used to control eight LEDs.

Pin Assignment with PIC16F877A



Slide Switch

PIC16F/18F Lines






*Connect PORTB with J14 (Digi-

Input) via FRC Cable


*Place Jumper between Middle

and GND pin of J13 (Digi-Input)


*Connect PORTC with JP3 (LED

section) via FRC cable

Turn ON and OFF the DIP

switch SW22 and see the

changes in LED’s
















Circuit Diagram to Interface Switch with PIC16F877A


Source Code

The Interfacing switch with PIC16F877A program is very simple and straight forward, that controls led by using switches when it going LOW or HIGH.

C Program to switch functions using PIC16F


Title : Program to Blink LEDs controlling by switches




#include<pic.h>      // Define PIC Registers


//Select HS oscillator, Enable (PWRTE,BOREN),

//Disable (CPD,CP,WDTEN,In-circuit Debugger)

void DelayMs(unsigned int);

void main()



   nRBPU=0;          // Enable weak internal Pull-Ups

   TRISB=0xFF;       // PORTB Configured as I/P

   TRISC=0x00;       // PORTC configured as O/P






      PORTC=PORTB;   // Move the input to output




void DelayMs(unsigned int Ms)


   int delay_cnst;




      for(delay_cnst = 0;delay_cnst <220;delay_cnst++);






To compile the above C code you need the Mplab software & Hi-Tech Compiler. They must be properly set up and a project with correct settings must be created in order to compile the code. To compile the above code, the C file must be added to the project.

In Mplab, you want to develop or debug the project without any hardware setup. You must compile the code for generating HEX file. In debugging Mode, you want to check the port output without PIC16F/18F Slicker Board.

The PICKIT2 software is used to download the hex file into your microcontroller IC PIC16F877A through USB port.

Testing the Digital-Inputs with PIC16F877A

Give +12V power supply to PIC16F/18F Slicker Board; the switches are connected with the PIC16F/18F Slicker Board. Check the LED’s & switches are working or not.

If you are not reading any output signal in LED, then you just check the jumper connections. Otherwise you just check the code with debugging mode in Mplab.

If you want to see more details about debugging just see the videos in below link.

General Information

Join the World's Largest Technical Community

we respect your privacy.