hola a todos...
estoy armando un proyecto que mostrata en un lcd o en 4 7-segmentos ya que las rpm max del motor son 3200, hasta ahora he logrado armar este codigo en picc, que se encarga de todo el proceso del calculo de las rpm ( gracias a pocher por sus comentarios en otros temas sobre esto) ahora bien, tengo en una variable llamada velocidad el calculo de las rpm en decimal, no encuentro la forma de mostrar esto en los 4 7-segmentos ya que tengo un int16 y no se me ocurre como hacer la division de los digitos para luego entrar en el proceso de los displays, de todo lo que he leido pude entender que me seria mas facil enviar toooooda la variable a un lcd ( creo que seria mas facil al lcd que a los 7-segmentos) el problema es que no tengo experiencia utilizando lcd.
OJO: este programa estaba originalmente disenado para enviar el valor de "velocidad" por puerto serial a la pc para ser manejado luego por visual basic.
PD: el programa fue realizado por pocher, xa, etc. gracias a ellos...
aqui va:
#include <16F877A.h>
#FUSES NOWDT, XT, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
int16 pulsos;
int16 interrupcion;
int16 velocidad;
Interrupcion A estoy tratando de elegir entre esta o la interrupcion B
/*#int_RTCC
void RTCC_isr()
{
pulsos=get_timer1();
interrupcion++;
if(interrupcion==100)
{
//pulsos=get_timer1();
velocidad=pulsos*60;
//printf("%lu ",pulsos);
//printf("%lu ",velocidad);
//delay_ms(1000);
interrupcion=0;
set_timer1(0);
set_rtcc(178);
}
else
{
set_rtcc(178);
set_timer1(pulsos);
} */
Interrupcion B
/*
void RTCC_isr()
{
interrupcion++;
if(interrupcion==100)
{
pulsos=get_timer1();
velocidad=pulsos*60;
// printf("%lu ",pulsos);
// printf("%lu ",velocidad);
delay_ms(2000);
interrupcion=0;
set_timer1(0);
set_rtcc(177);
}
*/
}
void main()
{
set_tris_c(0x01);
enable_interrupts(GLOBAL);
enable_interrupts(INT_RTCC);
setup_timer_0 ( RTCC_INTERNAL | RTCC_DIV_128);
set_rtcc(177); //10ms -> 10000us -> 10000/128=78 -> 255-78=177
setup_timer_1(T1_EXTERNAL | T1_DIV_BY_1);
set_timer1(0);
interrupcion=0;
while(true)
{
//aqui creo que tendria que empezar la rutina para enviar los datos al lcd o a los 7-segmentos
}
}