Autor Tema: Usando Enable en 232  (Leído 4789 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: Usando Enable en 232
« Respuesta #15 en: 25 de Febrero de 2010, 20:35:35 »
Código: C
  1. #include <18f4550.h>
  2. #fuses NOWDT,NOPROTECT,NOLVP,INTRC_IO
  3. #use delay (clock=4M)
  4. #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, enable=pin_e2)
  5. #use standard_io (a)
  6. #use standard_io (b)
  7. #use standard_io (d)
  8. #use standard_io (e)
  9. #BYTE TRISA=0X85
  10. #BYTE PORTA=0X05
  11. #use standard_io (b)
  12. char in,dato,de,un;
  13. int i;
  14.  
  15. #int_RDA
  16. RDA_isr()
  17. {
  18.  in=getc();
  19. }
  20.  
  21. void recepcion()
  22. {
  23.   de=in&0xf0;
  24.   un=in&0x0f;
  25.       switch(de)
  26.       {
  27.          case 0x00:
  28.          output_a(0xc0);
  29.          break;
  30.          case 0x10:
  31.          output_a(0xf9);
  32.          break;
  33.          case 0x20:
  34.          output_a(0xa4);
  35.          break;
  36.          case 0x30:
  37.          output_a(0xb0);
  38.          break;
  39.          case 0x40:
  40.          output_a(0x99);
  41.          break;
  42.          case 0x50:
  43.          output_a(0x92);
  44.          break;
  45.          case 0x60:
  46.          output_a(0x82);
  47.          break;
  48.          case 0x70:
  49.          output_a(0xf8);
  50.          break;
  51.          case 0x80:
  52.          output_a(0x80);
  53.          break;
  54.          case 0x90:
  55.          output_a(0x90);
  56.          break;
  57.          }
  58.         switch(un)
  59.       {
  60.          case 0x00:
  61.          output_d(0xc0);
  62.          break;
  63.          case 0x01:
  64.          output_d(0xf9);
  65.          break;
  66.          case 0x02:
  67.          output_d(0xa4);
  68.          break;
  69.          case 0x03:
  70.          output_d(0xb0);
  71.          break;
  72.          case 0x04:
  73.          output_d(0x99);
  74.          break;
  75.          case 0x05:
  76.          output_d(0x92);
  77.          break;
  78.          case 0x06:
  79.          output_d(0x82);
  80.          break;
  81.          case 0x07:
  82.          output_d(0xf8);
  83.          break;
  84.          case 0x08:
  85.          output_d(0x80);
  86.          break;
  87.          case 0x09:
  88.          output_d(0x90);
  89.          break;
  90.            
  91.     }
  92. }
  93.  
  94. void main()
  95. {
  96.   bit_clear(TRISA,0);
  97.   port_b_pullups (true);
  98.   enable_interrupts(INT_RDA);
  99.   enable_interrupts(GLOBAL);
  100.  for(;;){
  101.    dato=input_b();
  102.    if(input(PIN_e0)==1){
  103.      putc(dato);
  104.      recepcion();
  105.      while(input(PIN_E0));  
  106.         }
  107.     }
  108. }

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Usando Enable en 232
« Respuesta #16 en: 25 de Febrero de 2010, 20:40:50 »
Prueba de la siguiente manera:

Código: C
  1. for(;;){
  2.   if(input(PIN_e0)){
  3.     putc(input_b());
  4.     recepcion();
  5.     while(input(PIN_E0));  
  6.     delay_ms(20);
  7.     }    
  8. }

No se me ocurre porque surge ese problema en la simulación, están bien configurados los baud rate?


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: Usando Enable en 232
« Respuesta #17 en: 25 de Febrero de 2010, 20:42:44 »
No se me ocurre porque surge ese problema en la simulación, están bien configurados los baud rate?
Gracias por contestar, si hambos pics estan a 9600, mas que gracias al Oscilos copio me di cuenta que enviaba dos veces el dato, pense que era el pic slave pero veo que al parecer aqui me dice que no

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Usando Enable en 232
« Respuesta #18 en: 25 de Febrero de 2010, 20:46:43 »
El segundo Dato (0x00) no es el que responde el otro PIC?
No contesto mensajes privados, las consultas en el foro

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: Usando Enable en 232
« Respuesta #19 en: 25 de Febrero de 2010, 21:35:38 »
El segundo Dato (0x00) no es el que responde el otro PIC?

no mira aqui dejo la captura.


Desconectado bmfranky

  • PIC16
  • ***
  • Mensajes: 165
    • La Tienda De Fran
Re: Usando Enable en 232
« Respuesta #20 en: 26 de Febrero de 2010, 06:04:29 »
Hola darck_khronos,podrías postear los ficheros en proteus y el firmware, para probarlos y así ayudarte a encontrar una solución.

Qreo que el problema esta en el firm del 2550;bien
Código: [Seleccionar]
#
for (;;) {
  delay_ms(100);
  dato=input_b();
  de=dato&0xf0;
  un=dato&0x0f;
  if (kbhit()){
    [color=red]printf("%c",dato);[/color]<----- Hola Chicos, esto envia una cadena de 1 caracter, y las cadenas todas terminan en /0==00h
  sin embargo en el otro firm pones un putc(), que si es correcto, revisalo y ya me dices.

  lcd_gotoxy(1,1);
    printf(lcd_putc,"recibiendo=%1c",in);
    lcd_gotoxy(1,2);
    printf(lcd_putc,"Enviando=%1c%1c",de,un); 

Por cierto,¿ en el lcd si te imprime lo correcto?
« Última modificación: 26 de Febrero de 2010, 06:14:41 por bmfranky »
Visiten La Tienda De Fran ;-) Aqui. y mi nueva Web Aqui.