void main(void){
TRISB=0;
i=0; //
i1=0; //
i2=0; //
i3=0; //
// i1=49;i2=10,i3=89,i4=77;
CloseUSART();
PORTBbits.RB0=0;
PORTBbits.RB2=0;
//PORTBbits.RB1=0;
while(BusyUSART());
Delay10KTCYx(255);
PORTBbits.RB2=1;
//for(a=0;a<10;a++)
{
//Delay10KTCYx(255);
}
//Delay10KTCYx(255);
//Delay10KTCYx(255);
//Delay10KTCYx(255);
//Delay10KTCYx(255);
/* while(1)
{
printf("dale");
Delay10KTCYx(255);
Delay10KTCYx(255);
}*/
while(1)
{
h1=0;
h2=0;
OpenUSART(USART_TX_INT_OFF &USART_RX_INT_OFF &USART_ASYNCH_MODE &USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH, 25);
while(BusyUSART());
getsUSART(r1,9);
for(i2=0;i2!='\n';i2++)
{
if(r1[i2]==',')
{
for (p=0;p<i2;p++)
{
pas1[p]=r1[p];pas1[4]='\0';
}
}
}
for(i2=0;i2!='\n';i2++)if(r1[i2]==',')
i3=i2+1;
//printf("\r\n%d\r\n",i3);
for (p1=i3;p1<10;p1++)
{
pas2[p1-i3]=r1[p1];
}
if (newpaso1==1013)
{
PORTBbits.RB1=1;
}
r1[9]='\0';
pap1=newpaso1-oldpaso1;
oldpaso1=newpaso1;
pap2=newpaso2-oldpaso2;
oldpaso2=newpaso2;
//HASTA ACA FUNCIONA BIEN(ciclo while se repite)
INTCONbits.PEIE=1;
INTCONbits.GIE=1;
if (pap1>pap2)
{
k=(200*pap1/pap2);
tmr3=((-k/(0.2*2))+65536);
tmr1=((-200/(0.2*2))+65536);
}
if (pap2>pap1)
{
k=(200*pap2/pap1);
tmr1=((-k/(0.2*2))+65536);
tmr3=((-200/(0.2*2))+65536);
}
OpenTimer1( TIMER_INT_ON & T1_16BIT_RW & T1_SOURCE_INT & T1_PS_1_2 & T1_OSC1EN_ON & T1_SYNC_EXT_ON );
OpenTimer3( TIMER_INT_ON & T3_16BIT_RW & T3_SOURCE_INT & T3_PS_1_2 & T3_SYNC_EXT_ON );
WriteTimer1(tmr1);
WriteTimer3(tmr3);
while(h1<pap2*2 && h2<pap1*2);
INTCONbits.PEIE=0;
INTCONbits.GIE=0;
}
}
INTERRUPCIONES
void interrupt interrupcionDeAlta(void)
{
if(PIR1bits.TMR1IF==1 && h2<pap1*2)
{
PIR1bits.TMR1IF=0;
LATBbits.LATB3=!LATBbits.LATB3;
WriteTimer1(tmr1);
h2++;
}
if( PIR2bits.TMR3IF==1 && h1<pap2*2 )
{
PIR2bits.TMR3IF=0;
LATBbits.LATB4=!LATBbits.LATB4;
WriteTimer3(tmr3);
h1++;
}
}