Programación Específica > Microcontroladores
Como Ve Los Datos El Pic
Ale_la_maga:
Holita!!!!
Perdón perdón que meta la cuchara.
Es correcto al pic solo llegan binarios, ahora el problema de "letras" o números se presenta cuando se quiere respresentar en un LCD o enviar datos por el hiperterminal de windows, por ejemplo el número 1 el 2 o el 3 ya que si enviamos al LCD el 0x01 no veremos lo que esperamos para ver el 1 en un LCD deberemos enviar el 0x31 que es el hexa que representa el ascii 1, el concepto de letras y números solo es importante para la interpretación humana y su converción es simple si pensamos que queremos ver un 0 en una pantalla LCD y recibimos el numero 0 por el RS232 el pic solo debería sumarle 30 a esto es decir 30+0 =30 Ascii 0, si recibo el 0x01 y quiero ver el 1 en la pantalla LCD sumo 30+1=31 el ascii del 1 y asi todos los números para convertirlos en su valor ASCII, para diferenciar entre hexa´s que representan número y hexa´s que representan letras se puede hacer una comparación y si el hexa recibido está dentro del rango de los hexa de los números será un ascii numérico, para esto podemos hacer alguna operación de resta y mirar el bit C del Status para saber si <o >.
De esta forma es posible tambien diferenciar no solo valores ascii que representan números o letras sino tambien secuencias de comandos desde el teclado como el enter, la barra espaciadora etc, etc.
Un saludo para todos y disculpen la intromisión.
Alejandra
eliza_marti:
Holis Chicas.. :P :hola: ..Que Lindo!..porfin puedo decir nosotras..jijiji :D ..bueno..llendo al punto..la verdad es que nunca he experimentado con LCD's .pero según lo que he visto por ahi..estos tambien trabajan con ascii..es decir si mandamos una letra P..su ascii es 80..este 80 lo debes de enviar ya sea en binario, hex o decimal..pero es el 80 que se envia..mmm por ejemplo este mismo número transformado en hex es 50..50h (50h=80(ascii))....ahora..no se si alguien por ahi..que tenga a la mano un lcd pueda hacer un experimento enviando al Lcd por ejemplo una "P"...en vez de enviar el 50h..envie el 80 ... (debe funcionar igual.. :) )...por ejemplo el ascci de 1 es 49 este convertido a hex es 31 (es lo mismo decir 49 que 31h o 00x31)
Lo que dice Ale_la_maga es una forma de convertir a hex un número..pero..en realidad se lo puede enviar en cualquier formato (Ale lo ve en Hex)..lo importante es que sea el ascii
Bueno chicas..nos vemos... :hola: ..nos vemos..bye..un beso..
Huguen_aus_Tirol:
Hola a todos (chicas y chicos) :hola:
Hace poco implementé comunicación serie (RS232) entre un 18F y la PC. Siempre se envían 1 y 0, no hay otra opción... Que usemos el codigo ASCII o cualquier otro, depende del protocolo que implementemos; pero en cualquier caso el PIC vé 1 y 0, somos nosotros los que debemos decirle al PIC que significa esa combinación de 1 y 0 :)
En mi caso con el 18F (18F452) utilizé dos bancos de RAM, cada banco tiene 256 bytes; uno para buffer de recepción y el otro para buffer de transmisión. En la aplicación escribo o leo las distintas posiciones de cada banco. Entonces, según la necesidad, digo: de tal posición a tal otra, son caracteres ASCII para mostrar en el LCD; de esta otra a esta otra son valores numéricos (es decir el número hexa, nada de ASCII); entre esta y esta dirección tengo valores de los que me interesa el estado de los bits (registros, o flags, o bits de configuración, o lo que necesitemos...); y asi según lo que necesitemos.
En la aplicación no necesitaba 256 bytes, pero este era el tamaño de mi paquete de datos; los bytes sobrantes estaban ahí, pero los ignoraba. Los paquetes los hacemos del tamaño que queremos, pueden ser menos o más bytes :)
Al terminar cada lazo de mi programa principal enviaba un paquete y a continuación la PC me respondía con otro. Si no hay respuesta, se que no hay comunicación y hago lo que corresponda ;)
Algo similar hice antes, pero usando detección de dirección (9 bits de datos). Comunique varios PIC (16F y 18F), cada uno con una dirección diferente. En este caso los paquetes eran de 16 bytes, un paquete por esclavo; y estaban armados según la necesidad. Cada comunicación era atendida por el esclavo direccionado.
El maestro era un 18F452, y la comunicación RS485.
Ya que que estamos en el baile, alguien sabe donde conseguir buena información sobre Profibus????
Bueno, después de aburrirles tanto, dejen que me despida...
Saludos! :hola:
eliza_marti:
Claro Huguen_aus_Tirol.. :hola: eso es lo que yo digo.. :) ..el pic solo ve 1 s y 0 s..lo que no te entendí fue.. :huh:
--- Citar ---... Que usemos el codigo ASCII o cualquier otro, depende del protocolo que implementemos;
--- Fin de la cita ---
??.. :huh: ..a que te refieres con protocolo?..yo lo llamo a la manera en que se hace la transmisión..osea los baudios (bits por segundos), bit de parada..paridad..mmm???? yo pensaba que eran 2 cosas que no tienen nada que ver ..por ejemplo si mando un 2 a w entonces w=00000010 y para transmitirla al Pc pues esta a su vez puedo almacenarla en una variable y esta hacerla rotar bit a bit y la envio por x pin..si mando por ejemplo una "a" pues tendré que enviar su ascii 97 (o 61h) este a una varible que automaticamente la verá como un binario..(sin que yo la esté convirtiendo)..y nuevamente tendré que rotar la variable bit a bit y enviarla por el pin x de transmision..
..saluditos.. :hola:
Ale_la_maga:
Hola
En el manual del PLC S7 400 al final en la parte de "Apartados" hay información interesante sobre este bus de campo, no es mucha pero es muy puntual sobre como se acomoda la trama y protocolo en general. En los manuales de los variadores Micro Master de Siemens tambien al final hay informción sobre Profibus ya que la idea es conectarlos entre si.
Saludos
Alejandra
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa