Autor Tema: Se puede convertir de ascii a decimal ?  (Leído 22301 veces)

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

Desconectado pikman

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 679
RE: Se puede convertir de ascii a decimal ?
« Respuesta #15 en: 27 de Mayo de 2004, 11:56:00 »
OK, pues lo que sucede es sencillo, tu variable duty esta definida como entero de 8 bits y el compilador la convierte en forma automatica, la desventaja de lo que estas haciendo es que solo podras ingresar 1 digito, y no de 0 a 1023 como lo permite el modulo CCP,

saludos

ARIEL
saludos
PikMan

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Se puede convertir de ascii a decimal ?
« Respuesta #16 en: 27 de Mayo de 2004, 12:36:00 »
El máximo Duty que vas a conseguir es con el entero 9.

Según la frecuencia que has elegido para el PWM:

Dutymín=0.25us (entero 1)

Dutymáx=51us (entero 255)

Desconectado badtzdizzy

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 234
RE: Se puede convertir de ascii a decimal ?
« Respuesta #17 en: 27 de Mayo de 2004, 13:57:00 »
Que podría hacer entonces para poder tener control desde el numero 0 hasta el 255 ?  Tendría que mapear en el pic para conseguir estos valores ?  Gracias por sus consejos

Lo que yo uso en visual es esto:

Chr Function
     

Returns aString containing the character associated with the specifiedcharacter code.

Syntax

Chr(charcode)

The required charcodeargument is aLong that identifies a character.

Remarks

Numbers from 0 – 31 are the same as standard, nonprintableASCII codes. For example, Chr(10) returns a linefeed character. The normal range for charcode is 0 – 255. However, onDBCS systems, the actual range for charcode is -32768 to 65535.

Note   The ChrB function is used with byte data contained in a String. Instead of returning a character, which may be one or two bytes, ChrB always returns a single byte. The ChrW function returns a String containing theUnicode character except on platforms where Unicode is not supported, in which case, the behavior is identical to the Chr function.


Entonces segun yo pues le mando al pic el ascii de los valores entre 0 y 255 y entonces el pic me los interpreta como enteros tambien de 0 a 255

Desconectado pikman

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 679
RE: Se puede convertir de ascii a decimal ?
« Respuesta #18 en: 27 de Mayo de 2004, 22:13:00 »
Bueno, es que me parece que no interpretaste lo que que espuse ademas pocher te envio un provado, si implementas en tu rutina mi ejemplo, podras introducir no solo un entero de 8 bit si no que puedes usar una word y asi extender el valor hasta 1023 como maximo, no te compliques con el VB, envia los tres o cuatro digitos desde VB guardalos en una cadena y luego lo conviertes al un entero, al contrario de lo que dice un colega mas arriba, usando C es mas facil resolver esto que desde VB,

saludos

ARIEL
saludos
PikMan

Desconectado badtzdizzy

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 234
RE: Se puede convertir de ascii a decimal ?
« Respuesta #19 en: 28 de Mayo de 2004, 09:49:00 »
okey, lo hago y les aviso que tal salió. GRACIAS a todos

Desconectado kruskal

  • PIC16
  • ***
  • Mensajes: 108
RE: Se puede convertir de ascii a decimal ?
« Respuesta #20 en: 28 de Mayo de 2004, 20:09:00 »
La solucion es sencilla, para aprovechar la variacion que permite el PWM1 de 0  1023 tienes ocupar una sencilla regla de tres. Como cada caracter es un valor por ejemplo A es en decimal 65 (0x41) y Z es 90 (0x5A), aplica una sencilla regla de tres asignando a Z o A el valor 1023.

me parece que vas a controlar con caracters el PWM por lo que utilizar la funcion Atoi es inutil.


Salud2

kruskal@hotmail.com

Desconectado badtzdizzy

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 234
RE: Se puede convertir de ascii a decimal ?
« Respuesta #21 en: 31 de Mayo de 2004, 11:21:00 »
Hola

Pues hice los cambios y el programa quedó, solo tengo un pequeño problemita y es que al momento de enviar el dato pues se enciende el led pero a los pocos segundos y a veces hasta en menos tiempo se apaga hasta que vuelvo a presionar el boton para enviar el dato. Esto no sucedía cuando enviaba caracteres. Así que no se si se deba a que se vacíe el buffer y llegue un cero. De antemano gracias por la ayuda.
El código de C quedó como me lo mandaron y al de visual solo tuve que cambiar esta línea

MSComm1.Output = Chr(duty)

por esta otra

MSComm1.Output = CStr(duty) & vbCr

Desconectado badtzdizzy

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 234
RE: Se puede convertir de ascii a decimal ?
« Respuesta #22 en: 31 de Mayo de 2004, 12:05:00 »
Pues leyendo el manual CCS C, encontré que al final de leer la cadena se manda un cero. ¿Será por eso que se apaga el led? Por favor aclarenme esa duda.

¿ Acaso será mejor hacer la recepción mediante un ciclo ? si es así cómo le podría hacer porque la verdad no se ni por donde.

De antemano gracias

Desconectado Xa2

  • PIC12
  • **
  • Mensajes: 58
RE: Se puede convertir de ascii a decimal ?
« Respuesta #23 en: 16 de Junio de 2004, 14:37:00 »
Buenas foreros!!
Y como hago para una vez obtenido el duty, poder mandar al PC numeros decimales??es decir, como se pasaria de entero a ASCII??? hay alguna funcion especifica??
Saludos y gracias!!!

PD: La siguiente funcion se podria hacer??
dutyreal=(duty*60)/100
Decirme si podria ser por favor!!! Hasta pronto!!

Desconectado badtzdizzy

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 234
RE: Se puede convertir de ascii a decimal ?
« Respuesta #24 en: 17 de Junio de 2004, 14:23:00 »
Pues yo hice la prueba y si tu mandas directamente un valor entero a través del pin de transmisión del pic, al llegar al visual solo ejecutas el comando Asc y te lo convierte al valor que tu enviaste originalmente. Por ejemplo: mandas el 10 en el pic, entonces el visual recibiría el ascii de ese valor, por lo que tu tendrías que hacer lo siguiente:

dato=Asc(MSComm1.input)

que te estaría guardando ya el valor convertido en entero en la variable dato. Espero no haberte confundido mas.

Desconectado Xa2

  • PIC12
  • **
  • Mensajes: 58
RE: Se puede convertir de ascii a decimal ?
« Respuesta #25 en: 18 de Junio de 2004, 12:21:00 »
Muchas Gracias, pero mi duda para poder visualizarlo en el hiperterminal, aunque luego se programaría con Visual BAsic, entonces, si que me valdria tu consejo!!
Gracias de nuevo y saludos!!!

Desconectado al303576

  • PIC10
  • *
  • Mensajes: 8
RE: Se puede convertir de ascii a decimal ?
« Respuesta #26 en: 19 de Junio de 2004, 17:30:00 »
Pues en ralidad es sencillo ... (en asm)
Como sabes los caracteres ascii de los numeros (0 al 9 ) estan codificados en binario ....mmmmm de una foma muy facil paraconbertir a numero
para convertir un caracter ascii a numeor solo limino los 3 bit mas significativos .... esto lo puedes hacer con una operacion AND con los bits menos sinificativos,.....
que enredo...
mejo deja lo escribo
Codigo:

b="1" ;
a=b"00001111"
b =a and b


y listo lla tienes el numero del codigo ascii
el codigo de aribita no esta ni en c ni en asm solo es para ilustrar eh!!
en asm quedaria como sigue
Codigo:

movlw b"00001111"
andwf ascii,f   ;ascii es el dato que queires convertir


saludillos
see you later .... may be je je


 

anything