TODOPIC

Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: nostrico en 31 de Mayo de 2006, 16:01:47

Título: NECESITO TRANSMITIR DATOS POR EL PS/2 DEL TECLADO... AYUDA
Publicado por: nostrico en 31 de Mayo de 2006, 16:01:47
Saludos a los de Foro  :shock: tengo un problema con el protocolo PS/2... Necesito enviar información DESDE el PIC 16f877 AL PC por el PS/2, no alrevez, como tesis de grado para un equipo que necesita hacer eso al computador... COMO HAGO... lo que consigo en todos lados es el proyecto al revez... es decir el pic decodifica el teclado... Ayudenme gracias... :(
Título: Re: NECESITO TRANSMITIR DATOS POR EL PS/2 DEL TECLADO... AYUDA
Publicado por: RedPic en 01 de Junio de 2006, 16:17:06
Emulación Teclado PS/2 con PIC (Engañe a su PC y dele gato por liebre) (http://www.todopic.com.ar/foros/index.php?topic=11910.0)

Título: Re: NECESITO TRANSMITIR DATOS POR EL PS/2 DEL TECLADO... AYUDA
Publicado por: nostrico en 01 de Junio de 2006, 18:42:39
 :? Saludos estimado amigo... Gracias por responder... he notado y leido todo lo que remites per o lamentablemente no veo nada hecho en CCS... Voy a tener que lanzarme hacer el código... sólo quería ver si ya alguien lo a realizado... Si es asi porfavor enviame el código... Muchisimas gracias...
Título: Re: NECESITO TRANSMITIR DATOS POR EL PS/2 DEL TECLADO... AYUDA
Publicado por: aitopes en 02 de Junio de 2006, 08:36:39
Hola!
Me gusta la idea de tu proyecto, si te parece podemos encararlo juntos.
En "Emulación Teclado PS/2 con PIC (Engañe a su PC y dele gato por liebre)" se hizo el trabajo opuesto (PS/2 --> PIC) pero estaban viendo de hacer tambien la comunicacion PIC-PS/2.
Podemos "juntarnos" alla.  :)

Saludos.
Título: Re: NECESITO TRANSMITIR DATOS POR EL PS/2 DEL TECLADO... AYUDA
Publicado por: nostrico en 02 de Junio de 2006, 11:18:38
BUENO MI ESTIMADO AMIGO ACTUALMENTE ESTOY CON OTROS PROYECTOS TE PUEDO PASAR LO QUE ICE CON EL OSCILOSCOPIO Y EL PROGRAMDOR; ADEMAS DE COPIANDOME DE LO MOSTRADO EN EL FORO EN CUANTO AL DIAGRAMA DE TIEMPO... BUENO LOGRO TRANSMITIR UNA a. acuerdate de que falta tres cosas: las resistencia pull de RB1 y RB0, faltaría en el programa un calculador de paridad (no tan complicado) y faltaría hacer ujn convertidor de byte a hex que lo necesito.. perono me he sentado hacer... Bueno espero que te sirva... si lo montas como estas envía pura letras aaaaa.... Si lo terminas envíamelo a czwienczek@hotmail.com o lo puede publicar para los amigos de FORO...

#include <16f877a.h>       // Definiciones del PIC 16F876A
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT // Los Fuses de siempre
#use delay(clock=4000000) // Oscilador a 4 Mhz

#define clock PIN_B0
#define data  PIN_B1

void main()
{
delay_ms(500);
do{
output_high(clock);
output_high(data);
delay_us(40);

output_high(clock);
output_low(data);
delay_us(40);

output_low(clock);
output_low(data);
delay_us(40);

output_high(clock); ////// 0
output_low(data);
delay_us(40);

output_low(clock);
output_low(data);
delay_us(40);

output_high(clock); ////// 1
output_low(data);
delay_us(40);

output_low(clock);
output_low(data);
delay_us(40);

output_high(clock); ////// 2
output_high(data);
delay_us(40);

output_low(clock);
output_high(data);
delay_us(40);

output_high(clock); ////// 3
output_high(data);
delay_us(40);

output_low(clock);
output_high(data);
delay_us(40);

output_high(clock); ////// 4
output_high(data);
delay_us(40);

output_low(clock);
output_high(data);
delay_us(40);

output_high(clock); ////// 5
output_low(data);
delay_us(40);

output_low(clock);
output_low(data);
delay_us(40);

output_high(clock); ////// 6
output_low(data);
delay_us(40);

output_low(clock);
output_low(data);
delay_us(40);

output_high(clock); ////// 7
output_low(data);
delay_us(40);

output_low(clock);
output_low(data);
delay_us(40);

output_high(clock); ////// P
output_low(data);
delay_us(40);

output_low(clock);
output_low(data);
delay_us(40);

output_high(clock); ////// STOP
output_high(data);
delay_us(40);

output_low(clock);
output_high(data);
delay_us(40);


output_high(clock); ////// FIN
output_high(data);

delay_ms(1000);

}while(true);
}
Título: Re: NECESITO TRANSMITIR DATOS POR EL PS/2 DEL TECLADO... AYUDA
Publicado por: nostrico en 02 de Junio de 2006, 11:21:08
ADEMAS FALTA QUE TE BUSQUES Y DESARME EL CONECTOR DE UN TECLADO PS/2... y listo...
SALUDOS ENVIAME TUS RESULTADOS...

Título: Re: NECESITO TRANSMITIR DATOS POR EL PS/2 DEL TECLADO... AYUDA
Publicado por: nostrico en 05 de Junio de 2006, 10:33:18
Saludos a los amigos del foro... Ya tengo solucionado el proble... realmente no fue tan complicado como yo creía...
Título: Re: NECESITO TRANSMITIR DATOS POR EL PS/2 DEL TECLADO... AYUDA
Publicado por: kuauhtemok en 07 de Junio de 2006, 14:02:19

Por favor cuentanos mas de como pudiste resolver tu problema   :?

saludos  :-/
Título: Re: NECESITO TRANSMITIR DATOS POR EL PS/2 DEL TECLADO... AYUDA
Publicado por: nostrico en 03 de Julio de 2006, 11:57:33
AQUI LES DEJO MI PROGRAMA PARA QUE LO USEN...

#include <16f877a.h>       // Definiciones del PIC 16F876A
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT // Los Fuses de siempre
#use delay(clock=4000000) // Oscilador a 4 Mhz
#use rs232(baud=9600, xmit=PIN_B0, rcv=PIN_A0)

#define clock PIN_B0
#define data  PIN_B1
unsigned int8 valor;

unsigned char conver(unsigned char real)
{
        if (real == 'a' || real == 'A') {real = 0x1c;}
   else if (real == 'b' || real == 'B') {real = 0x32;}
   else if (real == 'c' || real == 'C') {real = 0x21;}
   else if (real == 'd' || real == 'D') {real = 0x23;}
   else if (real == 'e' || real == 'E') {real = 0x24;}
   else if (real == 'f' || real == 'F') {real = 0x2b;}
   else if (real == 'g' || real == 'G') {real = 0x34;}
   else if (real == 'h' || real == 'H') {real = 0x33;}
   else if (real == 'i' || real == 'I') {real = 0x43;}
   else if (real == 'j' || real == 'J') {real = 0x3b;}
   else if (real == 'k' || real == 'K') {real = 0x42;}
   else if (real == 'l' || real == 'L') {real = 0x4b;}
   else if (real == 'm' || real == 'M') {real = 0x3a;}
   else if (real == 'n' || real == 'N') {real = 0x31;}
   else if (real == 'o' || real == 'O') {real = 0x44;}
   else if (real == 'p' || real == 'P') {real = 0x4d;}
   else if (real == 'q' || real == 'Q') {real = 0x15;}
   else if (real == 'r' || real == 'R') {real = 0x2d;}
   else if (real == 's' || real == 'S') {real = 0x1b;}
   else if (real == 't' || real == 't') {real = 0x2c;}
   else if (real == 'u' || real == 'U') {real = 0x3c;}
   else if (real == 'v' || real == 'V') {real = 0x2a;}
   else if (real == 'w' || real == 'W') {real = 0x1d;}
   else if (real == 'x' || real == 'X') {real = 0x22;}
   else if (real == 'y' || real == 'Y') {real = 0x35;}
   else if (real == 'z' || real == 'Z') {real = 0x1a;}

//NUMEROS
   else if (real == '0') {real = 0x45;}
   else if (real == '1') {real = 0x16;}
   else if (real == '2') {real = 0x1e;}
   else if (real == '3') {real = 0x26;}
   else if (real == '4') {real = 0x25;}
   else if (real == '5') {real = 0x2e;}
   else if (real == '6') {real = 0x36;}
   else if (real == '7') {real = 0x3d;}
   else if (real == '8') {real = 0x3e;}
   else if (real == '9') {real = 0x46;}

//ENTER y TABULADOR
   else if (real == '/') {real = 0x5a;}   //ENTER
   else if (real == ' ') {real = 0x29;}   //ESPACIO
   else if (real == '>') {real = 0x0d;}   //TABULADOR
   else if (real == '<') {real = 0x66;}   //BORRADOR
   else if (real == '$') {real = 0x58;}   //TAG DE MAYUSCULA $j$ose
   else if (real == '-') {real = 0x4a;}   //-_

   else {real = 0x29;}                    //Cualquier otra cosa espacio

   return real;
}


void letras_ps2(unsigned char letra)
{
int contador;
int salida, unos=1;
boolean paridad=true;

output_high(clock);
output_high(data);
delay_us(40);

output_high(clock);
output_low(data);
delay_us(40);

output_low(clock);
output_low(data);
delay_us(40);

salida =1;
do
{
      output_high(clock);
       output_bit(data, letra&0x01);
      delay_us(40);
      output_low(clock);
       output_bit(data, letra&0x01);
      delay_us(40);

      if ((letra & 0x01) == 0x01) {unos++;}

      letra = letra>>1;
      salida++;

}while (salida <  9);


output_high(clock); ////// P
output_bit(data, unos&0x01);
delay_us(40);
output_low(clock);
output_bit(data, unos&0x01);
delay_us(40);


output_high(clock); ////// STOP
output_high(data);
delay_us(40);
output_low(clock);
output_high(data);
delay_us(40);


output_high(clock); ////// FIN
output_high(data);

delay_ms(70);
}


void main()
{
delay_ms(800);
letras_ps2(conver('$'));

do{
valor=getch();
letras_ps2(conver(valor));
}while(true);

}
:-/ NoStRiCo NoStRiCo NoStRiCo NoStRiCo NoStRiCo  :-/
Título: Re: NECESITO TRANSMITIR DATOS POR EL PS/2 DEL TECLADO... AYUDA
Publicado por: RedPic en 03 de Julio de 2006, 14:31:44
Amigo Nostrico:

Ahora le iba yo a meter mano a lo mismo que tu has realizado ....  :-/ :-/ :-/

Asi que siguiendo el espiritu del Foro voy a actuar como depredador inmisericorde y voy a fagocitar tu código en C para estudiarlo, entenderlo, rearmarlo y utilizarlo en mi Emulación Teclado PS/2 con PIC (Engañe a su PC y dele gato por liebre) (http://www.todopic.com.ar/foros/index.php?topic=11910.0)

Muchas gracias por tu aporte. Tiene muy buena pinta.  :P




Título: Re: NECESITO TRANSMITIR DATOS POR EL PS/2 DEL TECLADO... AYUDA
Publicado por: RedPic en 20 de Julio de 2006, 16:54:34
¡¡¡ Nostrico, tu código funciona a la perfección !!!

Muchas gracias .... sobre él he completado mi proyecto.

Muchas, muchas, muchas gracias.  :-/  :-/  :-/

Título: Re: NECESITO TRANSMITIR DATOS POR EL PS/2 DEL TECLADO... AYUDA
Publicado por: nostrico en 11 de Septiembre de 2006, 09:31:40
Saludos Amigos del foro... Estamos a la orden REDPIC... Estoy terminando un proyectico bien chevere a ver que te parece y colocare todos codigos...

 :-/ NOSTRICO  :-/ NOSTRICO  :-/ NOSTRICO  :-/ JGCJ  :-/
Título: Re: NECESITO TRANSMITIR DATOS POR EL PS/2 DEL TECLADO... AYUDA
Publicado por: aitopes en 11 de Septiembre de 2006, 10:03:25
Hola amigos!
En el hilo de Mikrobasic, veran que ese compiladr provee librerias (entre otras tantas) para leer teclados PS/2....
Lamento llegar tarde con la noticia, pero recien me doy cuenta. :?

Saludos.
Título: Re: NECESITO TRANSMITIR DATOS POR EL PS/2 DEL TECLADO... AYUDA
Publicado por: nostrico en 11 de Septiembre de 2006, 16:20:07
SALUDOS DE NUEVO... CUAL COMPILADOR? EL CCS? YO CREO QUE NO... ´CUAL ES ESE HILO... BUENO DE VERDAD ENTONCES TENEMOS FORMAS DE HACER ESTO... JEJEJE... DE LA MANERA DIFICIL... BELOW o DE LA MANERA FACIL COMO LO DICE EL AMIGO...

:-/ NoStRiCo  :-/ NoStRiCo  :-/
Título: Re: NECESITO TRANSMITIR DATOS POR EL PS/2 DEL TECLADO... AYUDA
Publicado por: diegocipo en 15 de Noviembre de 2006, 23:19:36
Hola a todos!! Nadie tiene el codigo para el teclado ps/2 a pic en assembler?
Título: Re: NECESITO TRANSMITIR DATOS POR EL PS/2 DEL TECLADO... AYUDA
Publicado por: tio_gil en 15 de Diciembre de 2006, 04:20:31
Hola,
una preguntita: porque no se manda el código break de las teclas?