Está en la página 1de 2

#include <16f628A.

h>
#fuses INTRC, NOWDT, NOPUT, NOMCLR, NOBROWNOUT, NOLVP, NOCPD, NOPROTECT
#use delay(clock=4000000)
#include <lcd_b.c>
int time0, time1;
int16 pulses0, pulses, rpm, time;
int1 rpmbit;
void rpm_get()
{
rpm=60*pulses;
if(pulses0!=pulses)
{
printf(lcd_putc,"\fRpm \n%Lu", rpm);
delay_ms(1500);
}
pulses=0;
time1=0;
}
void main()
{
set_tris_a(0x1F);
rpm=0;
time=0;
time0=0;
time1=time0;
pulses=0;
pulses0=pulses;
rpmbit=1;
lcd_init();
lcd_putc("\fBienvenido\n");
output_low(PIN_A7);
do
{
diagnostico();
if(input(PIN_A1))
{
if((input(PIN_A0))&&(rpmbit==1))
{
pulses++;
rpmbit=0;
}
if((!input(PIN_A0))&&(rpmbit==0))
{
rpmbit=1;
}
time0++;
if(time0>=250)
{
time1++;
time0=0;
if(time1>=4)
{
time0=0;
if(pulses<1)
{
lcd_putc("\frpm < 60\nO sin giro");
delay_ms(500);
}
else
{
rpm_get();
pulses0=pulses;
}
}
}
}
if(input(PIN_A2))
{
output_toggle(PIN_A7);
if(!input(PIN_A1))
{
lcd_putc("\fMotor Apagado");
}
delay_ms(500);
}
delay_ms(1);
}
while(1);
}

También podría gustarte