This PIC16F877A microcontroller tutorial answers the question,
β How to use timer0 of PIC16F877A and how to handle its interrupts? β
Using PIC16 simulator (Proteus) you can verify this PIC timer0 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 PIC16F877A 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, PIC16F877A is running on external crystal of 20MHz value. RB0 pin is toggled every time timer0 expires and executes itβs ISR[1]Β code. In the above figure, it is clear that after approximately every 100usec, RB0 pin is toggled i-e timer0 expires. You can easily change this value in the code.
Code
The main function code is shown below.
Main function for timer0 of PIC16F877A |
In the main function, firstly TRISB0 is made zero to make RB0 pin an output pin, also RB0 pin is made zero. After that,Β InitTimer0()Β function is called which initializes timer0. Rest of the work is done in timer0 interrupt service routine. Every time timer0 expires RB0 pin is toggled.
The code used to initialize timer0 is shown below.
InitTimer0 function code for PIC16F877A |
Timer0 interrupt service routine code is shown below.
Timer0 interrupt service routine |
This is just an example code for timer0 of PIC16F877A microcontroller. You can modify it to fulfill your circuit requirements.
For more detail: PIC16F877A timer0 code + Proteus simulation