#include <16f877a.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#use delay(clock=4M)
#include "lcd.c"
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7)
int8 contadorIntExt=0;
int8 contadorTimer0=0;
void enviarValor(void);
#int_timer0
void funcion(){
set_timer0(100);
contadorTimer0++;
}
#int_ext
void contadorInterrupciones()
{
contadorIntExt++;
}
void main()
{
lcd_init();
printf("iniciar cuenta\r\n");
enable_interrupts(global);
enable_interrupts(int_rtcc);
setup_counters(rtcc_internal,rtcc_div_64);//preescaler
set_timer0(100);//10ms
enable_interrupts(int_ext);
ext_int_edge(H_to_L);
while(1)
{
if(contadorTimer0==25)
{
contadorTimer0=0;
enviarValor();
}
}
}
void enviarValor(void)
{
float Cuenta,velo;
cuenta=contadorIntExt++;
contadorIntExt=0;
velo=cuenta*60/25;
printf("%3.2f \n\r",velo);
lcd_gotoxy(1,1);
printf(lcd_putc,"velocidad=%3.2f",velo);
lcd_gotoxy(1,2);
printf(lcd_putc,"Nº pulsos=%3.2f",cuenta);
}
hola Rafael gracias por las sugerencias para la proxima no cometere los mismos errores y aqui te envio el progrma para el pic el lenguaje ccs y una foto del armado en proteus , esta simulacion funciona bien pero lo armo tal igual como la simulacion pero no me funciona la velocidad no se estabiliza si no que crece desde por ejemplo 50 rpm ,60,70,80......y no se detiene