HI guys here i am using pic16f877a microcontroller to generate 5 second delay using timer1
// CONFIG
#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = OFF // Brown-out Reset Enable bit (BOR disabled)
#pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.
#include <xc.h>
#define _XTAL_FREQ 20000000
void timer1isr();
void delay(int a);
int main()
{
TRISD=0X00;
while(1)
{
PORTD=0Xff;
delay(5);//delay for 5 seconds;
PORTD=0X00;
delay(5);
}
}
void timer1isr()//for creating 1 second delay;
{
int i;
TMR1ON=0X01;
for(i=0;i<82;i++) {
TMR1H=TMR1L=0;
while(!TMR1IF);
TMR1IF=0;
}
}
void delay(int a)
{
int j=0;
for (j=0;j<=a-1;j++)
{
timer1isr();
}
}