estimados:
se me estan por care todas las nueces del nogal y sigo con este problema. No puedo encontrar la falla en este programa para mikroc.
La logica es similar a muchos programas los cuales investigue pero no doy en la tecla, sumado a mi novatez en el tema.
adjunto codigo, espero que me puedan ayudar. NO TOMAR EN CUENTA LOS COMENTARIOS DEL PROGRAMA
///////////////////////////
void envio1 ();
void envio2 ();
void envio3 ();
void recibo ();
void pulsos ();
unsigned int peso1,peso2,set,temp_p1,temp_p2,cntL,cntH, sel, i;
unsigned int TMR1H_old, TMR1L_old, cnt, TMR1H_NEW, TMR1L_NEW;
void interrupt()
{ // Rutina de interrupción
cnt++;
INTCON =0xa0;
tmr0=217;
// Interrupción causa el incremento de cnt por 1
}
void main()
{
ADCON1 = 0x81; // Configure analog inputs and Vref en la entrada RA3
PORTA = 0; // Reiniciar el puerto PORTA
TRISA = 0xFF; // PORTA is input
TRISB = 0x00; // Pins RB7, RB6 are outputs
//Configuro el prescaler del Timer1
T1CON.TMR1CS = 1; //modo de trabajo de tmr1 como contador de pulsos externos
T1CON.T1OSCEN = 0; //Desabilita el Oscilador externo
T1CON.T1SYNC = 1; // desabilita la sincronizacion con el reloj
T1CON.T1CKPS1 = 0;
T1CON.T1CKPS0 = 0; // Start timer1
OPTION_REG = 0x87; // Pre-escalador en 256
INTCON =0xa0;
cnt=0;
TMR1H=0;
TMR1L=0;
Usart_Init(19200);
TMR1H_old = 0;
TMR1L_old = 0;
//precarga
do {
T1CON.F0 = 1; //habilito cnt de pulsos
envio1();
//delay_ms(10);
envio2();
//delay_ms(10);
if (cnt==100)
{
TMR1H_NEW = TMR1H;
TMR1L_NEW = TMR1L;
TMR1H_old = TMR1H;
TMR1L_old = TMR1L;
TMR1H=0;
TMR1L=0;
cnt=0;}
else
{
TMR1H_NEW = TMR1H_old;
TMR1L_NEW = TMR1L_old;
}
// ENVIO DE CUENTAS TMR1
Usart_Write(TMR1H_NEW);
Usart_Write(TMR1L_NEW);
Usart_Write(cnt);
Usart_Write(TMR0);
Usart_Write (0x0A);
recibo();
PORTB = set;
} while(1);
}
void envio1()
{
peso1 = Adc_Read(0); // Get results of AD conversion
delay_us(5);
temp_p1 = ADRESH;
temp_p2 = ADRESL;
Usart_Write(temp_p1);
Usart_Write(temp_p2);
}
void envio2()
{
peso2 = Adc_Read(1); // Get results of AD conversion
delay_us(5);
temp_p1 = ADRESH;
temp_p2 = ADRESL;
Usart_Write(temp_p1);
Usart_Write(temp_p2);
}
void recibo ()
{
if (Usart_Data_Ready())
{
set = Usart_Read();
}
}