Autor Tema: control remoto con protocolo NEC  (Leído 3682 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado ECHA

  • PIC10
  • *
  • Mensajes: 14
control remoto con protocolo NEC
« en: 29 de Abril de 2011, 11:34:51 »
buenas, he realizado un pequeño programa que permita enviar por infrarrojo 5 comandos diferentes pero al compilarlo me da error y no entiendo por que??? si me pueden ayudar lo agradecería mucho

#include <16f877a.h>
#fuses XT
#FUSES NOWDT
#FUSES NOPROTECT
#use delay(clock=4000000)
#define IR_CHUP  0x59A616E9
#define IR_CHDW   0x59A615EA
#define IR_VOLUP  0x59A614EB
#define IR_VOLDW  0x59A613EC
#define IR_POWER  0x59A610EF

void ir_send(int32 code);

Void main()
{
   setup_ccp1(CCP_PWM);
   set_pwm1_duty(0);
   setup_timer_2(T2_DIV_BY_1,26,1);

while (true)
{
   if(input(PIN_D0))
   ir_send(IR_CHUP);
      while (input(PIN_D0))
      {
      delay_us(50000);
      set_pwm1_duty(13);
      delay_us(9000);
      set_pwm1_duty(0);
      delay_us(2250);
      }
   if(input(PIN_D1))
   ir_send(IR_CHDW);
      while (input(PIN_D1))
      {
      delay_us(50000);
      set_pwm1_duty(13);
      delay_us(9000);
      set_pwm1_duty(0);
      delay_us(2250);
      }
   if(input(PIN_D2))
   ir_send(IR_VOLUP);
      while (input(PIN_D2))
      {
      delay_us(50000);
      set_pwm1_duty(13);
      delay_us(9000);
      set_pwm1_duty(0);
      delay_us(2250);
      }
   if(input(PIN_D3))
   ir_send(IR_VOLDW);
      while (input(PIN_D3))
      {
      delay_us(50000);
      set_pwm1_duty(13);
      delay_us(9000);
      set_pwm1_duty(0);
      delay_us(2250);
      }
   if(input(PIN_D4))
   ir_send(IR_POWER);
      while (input(PIN_D4))
      {
      delay_us(50000);
      set_pwm1_duty(13);
      delay_us(9000);
      set_pwm1_duty(0);
      delay_us(2250);
      }
}

void ir_send(unsigned int32 code)
{
   unsigned char i = 0;
   disable_interrupts(GLOBAL);
  
   // Envío el START
   set_pwm1_duty(13);
   delay_us(9000);
  
   set_pwm1_duty(0);
   delay_us(4500);

   // Voy desgranando el código
   while (i < 32) {
      #bit first=code.31
      
      // Transmitimos un 1
      if (first) {
         set_pwm1_duty(13);
         delay_us(560);
         set_pwm1_duty(0);
         delay_us(1690);  
      }
      
      // Transmitimos un 0
      else {
         set_pwm1_duty(13);
         delay_us(560);  
         set_pwm1_duty(0);
         delay_us(560);  
      }
      
      code <<= 1;
      i++;
   }

   // Bit de parada
   set_pwm1_duty(13);
   delay_us(560);  
   set_pwm1_duty(0);
  
   enable_interrupts(GLOBAL);
}


Estos son mis errores:
Executing: "C:\Program files\Picc\CCSC.exe" +FM "test.c" #__DEBUG=1 +ICD +DF +LN +T +A +M +Z +Y=9 +EA  #__16F628A=TRUE
***
Error 51 "test.c" Line 75(1,5): A numeric expression must appear here
***
Error 12 "test.c" Line 92(7,10): Undefined identifier
***
Error 51 "test.c" Line 100(7,11): A numeric expression must appear here
***
Error 12 "test.c" Line 107(12,16): Undefined identifier   code
      4 Errors,  0 Warnings.
« Última modificación: 29 de Abril de 2011, 11:37:29 por ECHA »

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: control remoto con protocolo NEC
« Respuesta #1 en: 29 de Abril de 2011, 12:41:45 »
Hola ECHA, te hace falta cerrar la llave de la función main() {  }

Saludos!

Desconectado ECHA

  • PIC10
  • *
  • Mensajes: 14
Re: control remoto con protocolo NEC
« Respuesta #2 en: 29 de Abril de 2011, 12:43:58 »
siiii gracias no me di cuenta

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: control remoto con protocolo NEC
« Respuesta #3 en: 29 de Abril de 2011, 13:24:05 »
Hola ECHA, me alegra que lo solucionaras.  Como cometario te quería preguntar si te has dado cuenta que en la primera línea de error que muestras hace referencia a un PIC16F628A y el el encabezado de tu código figura un PIC16F877A?

Saludos!

Desconectado ECHA

  • PIC10
  • *
  • Mensajes: 14
Re: control remoto con protocolo NEC
« Respuesta #4 en: 29 de Abril de 2011, 18:15:41 »
Hola ECHA, me alegra que lo solucionaras.  Como cometario te quería preguntar si te has dado cuenta que en la primera línea de error que muestras hace referencia a un PIC16F628A y el el encabezado de tu código figura un PIC16F877A?

Saludos!

no me di cuenta con razon no me daba la simulación dejame seguir probando...yo coloco el pic 16f877a pero me toma ese nose porque???

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: control remoto con protocolo NEC
« Respuesta #5 en: 29 de Abril de 2011, 18:19:58 »
En que IDE estás compilando el programa, Mplab o CCS?

Saludos!

Desconectado ECHA

  • PIC10
  • *
  • Mensajes: 14
Re: control remoto con protocolo NEC
« Respuesta #6 en: 01 de Mayo de 2011, 22:15:30 »
En que IDE estás compilando el programa, Mplab o CCS?

Saludos!

Saludos,

disculpa por no contestarte el mismo día...en el mplab donde hago las simulaciones con el analizador logico...le di el pograma a un compañero para que lo corriera en mplab y mostraba el pic correcto, no tengo idea por que el mio genera ese detalle.

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: control remoto con protocolo NEC
« Respuesta #7 en: 01 de Mayo de 2011, 22:21:53 »
Hola ECHA, si trabajas en Mplab, posiblemente te falta configurar el PIC.  Menú -> Configure -> Select Device... -> Device: PIC16F877A

Saludos!

Desconectado ECHA

  • PIC10
  • *
  • Mensajes: 14
Re: control remoto con protocolo NEC
« Respuesta #8 en: 02 de Mayo de 2011, 12:52:57 »
Hola ECHA, si trabajas en Mplab, posiblemente te falta configurar el PIC.  Menú -> Configure -> Select Device... -> Device: PIC16F877A

Saludos!

Listo gracias me funciono...ahora me falta decodificar las teclas del control

#define IR_CHUP  0x59A616E9
#define IR_CHDW   0x59A615EA
#define IR_VOLUP  0x59A614EB
#define IR_VOLDW  0x59A613EC
#define IR_POWER  0x59A610EF

yo coloque estos valores de manera aleatoria segun el protocolo nec...tengo un osciloscopio pero no logro ver correctamente los pulsos.