TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: Enner en 04 de Junio de 2013, 08:05:10
-
Hola,
Me gustaria saber si en Proton hay algun comando o función, que yo le introduzca una letra "H" y que me diga el número en decimal "72".
En Bascom por ejemplo existe el comando "ASC".
Action (ASC)
Assigns a numeric variable with the ASCII value of the first character of a string.
Var = ASC(String)
Var = Target numeric variable that is assigned (Integer).
String = String variable or constant from which to retrieve the ASCII value(String).
Saludos.
-
No trabajo en Proton pero esto es común a los lenguajes:
Es más simple que todo eso:
Declaramos la variable “carácter” como entera sin signo.
Hacemos carácter = “H”, pues ya está, la variable carácter ya contiene el número del código ASCII, esto quiere decir que no se trabaja con el grafico “H” (esto ocuparía mucha memoria), a la hora de compilar el compilador sustituye el grafico “H” por su equivalente a código ASCII. Si en el entorno que trabajas te permite ver los valores de los registros observaras que la variable “carácter” tiene el código ASCII de “H”, en el caso que no te lo permita, pues imprimes la variable ya sea en un lcd, hyperterminal, etc. Y para enviar una variable a algún periférico que permita representación grafica normalmente se puede realizar de dos formas:
1 Se le indica al comando de salida que la variable se visualice en forma de grafico, por lo que se mostrara el grafico asociado al código ASCII.
2 Se le indica que queremos ver el número que contiene la variable, que en este caso corresponde con el código ASCII.
De todas maneras tiene que quedar bien claro que el programa siempre maneja el numero del código ASCII, nunca el grafico asociado. En la mayoria de los casos el periférico es el que se encarga de buscar el grafico asociado al código en su memoria, poque esto ahorra memoria de programa del microcontrolador.
-
Hola dogflu66
Gracias por responder..
Despues de mirar el manual ya encontre el comando.
En este caso es el comando "VAL"
---------------------------------------------------------------------
Syntax
Variable = Val (Array Variable, Modifier)
Overview
Convert a Byte Array or String containing Decimal, Hex, or Binary numeric text into it's integer
equivalent.
Array Variable is a byte array or string containing the alphanumeric digits to convert and terminated
by a null (i.e. value 0).
Modifier can be Hex, Dec, or Bin. To convert a Hex string, use the Hex modifier, for Binary,
use the Bin modifier, for Decimal use the Dec modifier.
Variable is a variable that will contain the converted value. Floating point characters and variables
cannot be converted, and will be rounded down to the nearest integer value.
Saludos.
-
Felicidades por resolverlo por tu cuenta. Es totalmente cierto, para pasar un tipo string a entero se utiliza la función del sistema Val.
De todas maneras por lo que observo está claro que no me he hecho entender, cuando se trabaja con string de solo un carácter no es necesario definirlos como string ya que el string más pequeño que solo contiene un código ascii ocupa siempre dos Bytes. Lo que se hace es trabajar con enteros cortos que solo ocupan 1Byte y no precisan de hacer conversiones.
Ejemplo:
String se declara como entero corto.
String = “H” es lo mismo que String = 72.
Cuando el compilador se encuentra String = “H” lo sustituye de forma automática por esta otra String = 72.
Cuando se declara la variable como string o cadena, la variable de cadena más corta ocupa dos bytes:
String = “H” por lo que el compilador lo cambia por String = (Byte1 = 72, Byte0 = 0).
Byte0 = 0 es la terminación de la cadena todo String termina con el código Ascii 0 también llamado “null”.
Por ejemplo si se suman dos String (concatenación de cadenas) de un solo carácter el resultante es un String que ocupa 3bytes:
String1 = “H” (Byte1 = 72, Byte0 = 0)
String2 = “h” (Byte1 = 104, Byte0 = 0)
String3 = String1 + String2
String3 = (Byte2 = 72, Byte1 = 104, Byte0 = 0).
Se puede observar que el Byte0 del String1 se ignora.
Y esto es igual que escribir:
String3 = "Hh"
-
Hola dogflu66,
Si te entendí a la primera pero para no extenderme en el tema.... lo puedo declarar de estas dos maneras..:
Dim Texto [16] As Byte
o
Dim Texto As String * 16
Saludos.
-
Hace tiempo que no uso el proton pero casi pondría la mano en el fuego al decir que la función Val lo que hace es convertir un valor escrito con caracteres a su valor numérico, a ver si me explico
mivariable=VAL "123" - nos pondrá el valor 123 en la variable mivariable y el "123" a la derecha de la función VAL sería un array de texto
no se si me he explicado
Saludos: MarquesSalsero ( aunque de salsero ya poco )