hola gente.
he estado trabajando con el movimiento de 3 servos a la misma vez y con angulo diferente
por medio de interrupciones y transmision serial.estoy recibiendo un 1 por la transmision, pero ningun servo se mueve ni nada ocurre,mientras si decido moverlos uno por uno(main) si se mueven este es el codigo...agradesco sus opiniones
	
	
	
		
gracias
				
			he estado trabajando con el movimiento de 3 servos a la misma vez y con angulo diferente
por medio de interrupciones y transmision serial.estoy recibiendo un 1 por la transmision, pero ningun servo se mueve ni nada ocurre,mientras si decido moverlos uno por uno(main) si se mueven este es el codigo...agradesco sus opiniones
		Código:
	
	#include<p18f4550.h>
#include<delays.h>
//#include <xlcd.h>
int aaa,bbb,a1,a2;
/*void DelayFor18TCY(){Delay10TCYx(2);}
void DelayPORXLCD(){Delay1KTCYx(15);}
void DelayXLCD(){Delay1KTCYx(5);}*/
void interrupcion1(void);
void interrupcion2(void);
#pragma code intalta=0x08
void intalta(void){
_asm goto interrupcion1 _endasm
}
#pragma code
#pragma interrupt interrupcion1
void interrupcion1(void){
RCREG=aaa;
if (aaa=1){
    for(a1=0; a1<100; a1++){
if (a1==1){
a1=a1+1;
} else {
a1=a1;
}
      PORTDbits.RD0=1;Delay10TCYx(100+a1);
      PORTDbits.RD0=0;Delay100TCYx(200-a1);
     // Delay10KTCYx(500);
  }
}
INTCONbits.RBIF=0;
}
#pragma code intbaja=0x18
void intbaja(void){
_asm goto interrupcion2 _endasm
}
#pragma code
#pragma interrupt interrupcion2
void interrupcion2(void){
RCREG==bbb;
if (bbb=1){
    for( a2=0; a2<50; a2++){
if (a2==1){
a2=a2+1;
} else {
a2=a2;
}
      PORTDbits.RD0=1;Delay10TCYx(100+a2);
      PORTDbits.RD0=0;Delay100TCYx(200-a2);
     // Delay10KTCYx(500);
  }
}
PIR1bits.ADIF=0;
}
/*void lcd1(int);
void lcd2(int);
void lcd3(int);*/
int x=0,y=0,z=0;
void main()
{
	int a0=0,b0=0,c0=0;
	double a=0.0,b=0.0,c=0.0;
	int aa=0.0,bb=0.0,cc=0.0;
	TRISB=0;
	TRISC=128;//128 192
	TRISD=0;
	PORTD=0;
	TXSTA=36;
	RCSTA=176;
	BAUDCON=0;//8
	SPBRG=25;//103
    RCONbits.IPEN = 1;
    IPR1bits.ADIP=0;
    PIE1bits.ADIE=1;
    INTCON=200;
    INTCON2bits.RBIP = 1;
    INTCON2bits.RBPU = 0;
	/*OpenXLCD(FOUR_BIT & LINES_5X7);
	WriteCmdXLCD(1);
	SetDDRamAddr(0x00);
	putrsXLCD(" Te1:");
	SetDDRamAddr(0x40);
	putrsXLCD(" Te2:");
	SetDDRamAddr(0x4A);
*/
	while(1)
	{
		//PORTDbits.RD4=1;
		//Delay1KTCYx(1);
		//PORTDbits.RD4=0;
		//Delay1KTCYx(1);
		if(RCREG==200)
		{
		Delay1KTCYx(50);//50mseg
		a0=RCREG;
		a=(a0/18.0)*10.0;
		aa=(100+a);
		PORTDbits.RD0=1;
		Delay10TCYx(aa);
		PORTDbits.RD0=0;
		Delay100TCYx(200.0-aa);
		//lcd1(a0);
		}
		if(RCREG==220)
		{
		Delay1KTCYx(50);//50mseg
		b0=RCREG;
		b=(b0/18.0)*10.0;
		bb=(100+b);
		PORTDbits.RD1=1;
		Delay10TCYx(bb);
		PORTDbits.RD1=0;
		Delay100TCYx(200.0-bb);
		//lcd2(b0);
		}
		if(RCREG==240)
		{
		Delay1KTCYx(50);//50mseg
		c0=RCREG;
		c=(c0/18.0)*10.0;
		cc=(100+c);
		PORTDbits.RD2=1;
		Delay10TCYx(cc);
		PORTDbits.RD2=0;
		Delay100TCYx(200.0-cc);
		//lcd3(c0);
		}
	}
}
/*void lcd1(int n)
	{
		x=n/100;
		y=(n/10)%10;
		z=n%10;
		SetDDRamAddr(0x05);
		WriteDataXLCD(0x30+x);
		WriteDataXLCD(0x30+y);
		WriteDataXLCD(0x30+z);
	}
void lcd2(int n)
	{
		x=n/100;
		y=(n/10)%10;
		z=n%10;
		SetDDRamAddr(0x45);
		WriteDataXLCD(0x30+x);
		WriteDataXLCD(0x30+y);
		WriteDataXLCD(0x30+z);
	}
void lcd3(int n)
	{
		x=n/100;
		y=(n/10)%10;
		z=n%10;
		SetDDRamAddr(0x4D);
		WriteDataXLCD(0x30+x);
		WriteDataXLCD(0x30+y);
		WriteDataXLCD(0x30+z);
	}
*/ 
   
				 
						 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		