PIC16F877A Timer2 module and interrupt with CCS C compiler

Blink without delay using PIC16F877A Timer2 module and CCS C

Related topics:
PIC16F877A Timer0 module and interrupt with CCS C compiler
PIC16F877A Timer1 module and interrupt with CCS C compiler 
Timer2 is an 8-bit timer with a prescaler and a postscaler. It can be used as the PWM time base for the PWM mode of the CCP module(s). The TMR2 register
is readable and writable and is cleared on any device Reset.
The input clock (FOSC/4) has a prescale option of 1:1, 1:4 or 1:16, selected by control bits
T2CKPS1:T2CKPS0 (T2CON<1:0>).

The PIC16F877A Timer2 module has an 8-bit period register, PR2. Timer2 increments from 00h until it matches PR2 and then resets to 00h on the next increment cycle. PR2 is a readable and writable register. The PR2 register is initialized to FFh upon Reset.
The match output of TMR2 goes through a 4-bit postscaler (which gives a 1:1 to 1:16 scaling inclusive) to generate a TMR2 interrupt (latched in flag bit, TMR2IF (PIR1<1>)).
Timer2 can be shut-off by clearing control bit, TMR2ON (T2CON<2>), to minimize power consumption.

PIC16F877A Timer2 interrupt example:
This is a simple example which uses Timer2 interrupt to make an LED connected to RB0 blinking at a frequency of 1Hz.
pic16f877a timer2 interrupt example circuit

In this example the PIC16F877A microcontroller runs with 4MHz crystal oscillator.

PIC16F877A Timer2 interrupt example C code:
The C code below was tested with CCS C compiler version 5.051.

Reference:
PIC16F877A datasheet from Microchip

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.