Learn   /   Peripheral Tutorials   /   PIC16F877A

PIC16F877 timer1 code and Proteus simulation

This PIC16F877 microcontroller tutorial answers the question, " How to use timer1 of PIC16F877 and how to handle its interrupts? "

Published

At a glance

CategoryPeripheral Tutorials
PIC modelPIC16F877A
IncludesCircuit diagram · Proteus · Download files
Reading time~2 min
Jump to a section
  1. Code
  2. Downloads
  3. Quick Solutions to Questions related to PIC16F877 Timer1 tutorial:
  4. Related projects

Summary of PIC16F877 timer1 code and Proteus simulation

This tutorial explains using Timer1 and its interrupts on the PIC16F877, with example C code (HI-TECH C) and a Proteus simulation. It shows a 20 MHz crystal setup where Timer1 triggers an ISR that toggles RB0 about every 13 ms; the period can be changed in code. The article assumes basic PIC LED blinking knowledge and provides downloadable code and Proteus files.

Parts used in the PIC16F877 Timer1 tutorial:

  • PIC16F877 microcontroller
  • 20 MHz external crystal
  • Proteus simulation software (for verifying circuit and code)
  • MPLAB IDE (version used: v8.85)
  • HI-TECH C compiler (version used: v9.83)
  • LED (implied for observing RB0 toggling)
  • Downloadable project files (code and Proteus simulation)

PIC16F877 timer1

Using PIC16 simulator (Proteus) you can verify this PIC timer1 code and change it according to your needs. This code is written in C language using MPLAB with HI-TECH C compiler. You can download this code from the 'Downloads' section at the bottom of this page.

It is assumed that you know how to blink an LED with PIC16F877 microcontroller. If you don't then please read this page first, before proceeding with this article.

The following diagram (made in Proteus) shows the PIC microcontroller circuit diagram.

In this circuit, PIC16F877 is running on external crystal of 20MHz value. RB0 pin is toggled every time timer1 expires and executes it's ISR[1] code. In the above figure, it is clear that after approximately every 13msec, RB0 pin is toggled i-e timer1 expires. You can easily change this value in the code.

PIC16F877 timer1 Schematic

Code

The main function code is shown below.

Downloads

Timer1 code for PIC16F877 was compiled in MPLAB v8.85 with HI-TECH C v9.83 compiler and simulation was made in Proteus v7.10. To download code and Proteus simulation click here.

 

For more detail: PIC16F877 timer1 code and Proteus simulation

  • How is Timer1 of PIC16F877 demonstrated in the tutorial?
    Timer1 is configured to generate interrupts; its ISR toggles RB0 approximately every 13 ms as shown in the Proteus circuit and example C code.
  • Can I simulate the Timer1 example before using hardware?
    Yes, the tutorial uses Proteus to verify the PIC Timer1 code and simulation files are provided for download.
  • What compiler and IDE were used to build the Timer1 code?
    The code was compiled using HI-TECH C v9.83 in MPLAB v8.85.
  • Does the tutorial require prior PIC knowledge?
    Yes, it assumes you know how to blink an LED with PIC16F877; it recommends reading a referenced page if you do not.
  • How often does the example toggle RB0 when Timer1 expires?
    The example toggles RB0 approximately every 13 ms, and this value can be changed in the code.
  • What clock source is used in the example circuit?
    The PIC16F877 in the example runs on an external 20 MHz crystal.
  • Where can I get the example code and Proteus files?
    The article provides downloadable code and Proteus simulation files via the Downloads section and a link to download them.
Beginner Tutorials · PIC16F877A

PIC16F877 Driving LCD in 4-Bit Mode using PIC16F877 with Proteus Simulation

Introduction This microcontroller project shows how a PIC16F877 can drive an LCD display using 4-bit mode inside a Proteus simulation.The project demonstrates...

Programmers & ICSP · PIC16F877A

EPE PIC/LCD Demo using PIC16F877 with Proteus Simulation

IntroductionThe EPE PIC/LCD Demo is a classic microcontroller project that demonstrates how a PIC16F877 can fully control a PG12864F graphical LCD.Designed as...

Motors & Robotics · PIC16F877A

Efficient Sun-Following Robot: A Solar Tracker with Microcontroller Control

Abstract The impending global challenge of dwindling non-renewable fuel resources underscores the urgency of transitioning towards renewable energy alternatives like solar power....

Peripheral Tutorials · PIC18F4550

PICDEM FS USB Mass Storage Device using PIC18F4550 with Proteus Simulation

Introduction This microcontroller project demonstrates how to simulate a USB Mass Storage Device (MSD) using the PIC18F4550 in a Proteus simulation environment....

Peripheral Tutorials

Hands-On Digital I/O Lab with PIC18F46K22 Microcontroller

PIC18F46K22 Microcontroller Digital I/O specifically explores the design of simple combinational circuits using the digital I/O capabilities of the PIC18F46K22 microcontroller. Moving...

Peripheral Tutorials

Design for manufacturing and assembly: DFA&DFM

Product developers understand the challenges involved in creating a market-ready product. Even experienced designers often go through multiple prototype iterations before reaching...

Ibrar Ayyub

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough...