Salut
maintenant si je vais le décodage pour la transmission de mon signal mon programme d’émetteur sera le suivant:
unsigned char location=0;
void main()
{
UART1_Init(9600);
Delay_ms(100);
trisb=0b00011111; //portb sortie pwm
portb=0;
PWM1_Init(38000);
Pwm1_Set_Duty(255);
PWM1_Start();
while(1)
{
if (UART1_Data_Ready()==1 )
{ location = UART1_Read();
uart1_write(location); }
if (portb.f2==1)
if (location ='1')
{
PWM1_Set_Duty(0) ;
delay_ms(1020);
PWM1_Set_Duty(0) ;
delay_ms(1020);
PWM1_Set_Duty(0) ;
delay_ms(1020);
PWM1_Set_Duty(127) ;
delay_ms(1020);
PWM1_Stop();
}
else if (location ='2')
{
PWM1_Set_Duty(0) ;
delay_us(1020);
PWM1_Set_Duty(0) ;
delay_us(1020);
PWM1_Set_Duty(127) ;
delay_us(1020);
PWM1_Set_Duty(0) ;
delay_us(1020);
PWM1_Stop();
}
else if (location ='3')
{
PWM1_Set_Duty(0) ;
delay_us(1020);
PWM1_Set_Duty(0) ;
delay_us(1020);
PWM1_Set_Duty(127);
delay_us(1020);
PWM1_Set_Duty(127) ;
delay_us(1020);
PWM1_Stop();
}
else if (location ='4')
{
PWM1_Set_Duty(0) ;
delay_us(1020);
PWM1_Set_Duty(127) ;
delay_us(1020);
PWM1_Set_Duty(0) ;
delay_us(1020);
PWM1_Set_Duty(0) ;
delay_ms(1020);
PWM1_Stop();
}
else if (location ='5')
{
PWM1_Set_Duty(0) ;
delay_us(1020);
PWM1_Set_Duty(127) ;
delay_us(1020);
PWM1_Set_Duty(0) ;
delay_us(1020);
PWM1_Set_Duty(127) ;
delay_us(1020);
PWM1_Stop();
}
else if (location ='6')
{
PWM1_Set_Duty(0) ;
delay_us(1020);
PWM1_Set_Duty(127) ;
delay_us(1020);
PWM1_Set_Duty(127);
delay_us(1020);
PWM1_Set_Duty(0) ;
delay_ms(1020);
PWM1_Stop();
}
else if (location ='7')
{
PWM1_Set_Duty(0) ;
delay_us(1020);
PWM1_Set_Duty(127) ;
delay_us(1020);
PWM1_Set_Duty(127) ;
delay_us(1020);
PWM1_Set_Duty(127);
delay_us(1020);
PWM1_Stop();
}
else if (location ='8')
{
PWM1_Set_Duty(127) ;
delay_us(1020);
PWM1_Set_Duty(0);
delay_us(1020);
PWM1_Set_Duty(0);
delay_us(1020);
PWM1_Set_Duty(0);
delay_us(1020);
PWM1_Stop();
}
else if (location ='9')
{
PWM1_Set_Duty(127);
delay_us(1020);
PWM1_Set_Duty(0) ;
delay_us(1020);
PWM1_Set_Duty(0);
delay_us(1020);
PWM1_Set_Duty(127) ;
delay_us(1020);
PWM1_Stop();
}
else if (portb.f2==0);
{
pwm1_set_duty(0) ;
}
}
}
maintenant je me visualise le signal pwm et la caractère aussi [
imageshack.us]
pour le récepteur mon code est le suivant
unsigned char location;
int a,b,r,d;
void main()
{
trisb=0xff;
portb=0;
while (1)
{
if (portb.f7==0){
delay_us(300);
a=portb.f0;
delay_us(600);
b=portb.f0 ;
delay_us(600);
r=portb.f0;
delay_us(600);
d=portb.f0;
delay_us(600); }
if (a==0 && b==0 && r==0&& d==1 )
{ location ='1';
}
else if(a==0 && b==0 && r==1&& d==0)
{ location='2';
}
else if (a==0 && b==0 && r==1 && d==1)
{ location='3';
}
else if (a==0 && b==1 && r==0 && d==0)
{ location='4';
}
else if(a==0 && b==1 && r==0 && d ==1)
{ location='5';
}
else if(a==0 && b==1 && r==1 && d==0)
{ location='6';
}
else if(a==0 && b==1 && r==1 && d==1 )
{ location='7';
}
else if(a==1 && b==0 && r==0 && d==0)
{ location='8';
}
else if(a==1 && b==0 && r==0 && d==1 )
{ location='9';
} }}
mais je ne visualise rien coté récepteur !!! j'ai relié ma sortie de tsop au port b .dois je relier a Rx ??
d'ou vient le problème ??
ici une copie sur la visualisation [
imageshack.us]
quelle solution dois je choisir ? émission et réception sans décodage ou bien avec décodage ? et pourquoi la reception ne marcha pas??
Merci D'avance pour votre aide
)
Aurevoir