Autor Tema: trabajar con el codigo ascii extendido en el microcontrolador  (Leído 9249 veces)

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

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
trabajar con el codigo ascii extendido en el microcontrolador
« en: 10 de Febrero de 2010, 18:22:02 »
hola, amigos del foro, bueno les cuento que he estado viendo la forma, de enviar  codigo ascci al microcontrolador, especificamente el 16f628, me reconoce perfectamente el codigo ascii normal (0-127), pero el codigo ascii extendido(128-255) los valores ya no concuerdan, alguien sabe mas o menos a que se debe, o sera que el microcontrolador todavia no reconoce el codigo ascii extendido.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: trabajar con el codigo ascii extendido en el microcontrolador
« Respuesta #1 en: 10 de Febrero de 2010, 19:06:12 »
El código ascii depende estrictamente del compilador y no del microcontrolador.

Asegúrate de que los bytes del 128 al 255 que envía tu aplicación en la PC realmente sean bytes ascii (1 byte por caracter) y no código Unicode (2 bytes por caracter).

http://en.wikipedia.org/wiki/Unicode

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re: trabajar con el codigo ascii extendido en el microcontrolador
« Respuesta #2 en: 10 de Febrero de 2010, 20:30:52 »
he visto. la tabla de el unicode y no concuerda  con lo que el pic me devuelve

yo utilizo el siguiente codigo

byte rx;
rx=getc();
printf(rx);

bueno envio el caracter ascii al microcontrolador y este me devuelve asi estoy viendo los caracteres que me generan el codigo ascii, los estoy simulando en proteus y  envio el caracter al microcontrolador por el virtual teminal, presionando alt+codigo ascci.

todavia no he encontrado la solucion.


Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re: trabajar con el codigo ascii extendido en el microcontrolador
« Respuesta #3 en: 10 de Febrero de 2010, 20:39:34 »
mmm bueno como estoy simulando el proteus, entonces dependera del proteus la codificacion

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: trabajar con el codigo ascii extendido en el microcontrolador
« Respuesta #4 en: 10 de Febrero de 2010, 22:43:31 »
Prueba con putc(rx);

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re: trabajar con el codigo ascii extendido en el microcontrolador
« Respuesta #5 en: 11 de Febrero de 2010, 11:59:19 »
pues que curioso, solo me funciona el codigo ascii estandar, el codigo ascii extendido me devuelve numeros negativos y comienza a decrecer, aqui les adjunto los valores que me genero el proteus. seguire averiguando
si probe con putc amigo migsantiago pero me devuelve el mismo valor.
estos valores quiero utilizarlo para controlar luces rgb, a sugerencia del amigo mlo



letra=€ ascii=-128
letra= ascii=-127
letra=‚ ascii=-126
letra=ƒ ascii=-125
letra=„ ascii=-124
letra=… ascii=-123
letra=† ascii=-122
letra=‡ ascii=-121
letra=ˆ ascii=-120
letra=‰ ascii=-119
letra=Š ascii=-118
letra=‹ ascii=-117
letra=Πascii=-116
letra= ascii=-115
letra=Ž ascii=-114
letra= ascii=-113
letra= ascii=-112
letra=‘ ascii=-111
letra=’ ascii=-110
letra=“ ascii=-109
letra=” ascii=-108
letra=• ascii=-107
letra=– ascii=-106
letra=— ascii=-105
letra=˜ ascii=-104
letra=™ ascii=-103
letra=š ascii=-102
letra=› ascii=-101
letra=œ ascii=-100
letra= ascii=-99
letra=ž ascii=-98
letra=Ÿ ascii=-97
letra=  ascii=-96
letra=¡ ascii=-95
letra=¢ ascii=-94
letra=£ ascii=-93
letra=¤ ascii=-92
letra=¥ ascii=-91
letra=¦ ascii=-90
letra=§ ascii=-89
letra=¨ ascii=-88
letra=© ascii=-87
letra=ª ascii=-86
letra=« ascii=-85
letra=¬ ascii=-84
letra=­ ascii=-83
letra=® ascii=-82
letra=¯ ascii=-81
letra=° ascii=-80
letra=± ascii=-79
letra=² ascii=-78
letra=³ ascii=-77
letra=´ ascii=-76
letra=µ ascii=-75
letra=¶ ascii=-74
letra=• ascii=-73
letra=¸ ascii=-72
letra=¹ ascii=-71
letra=º ascii=-70
letra=» ascii=-69
letra=¼ ascii=-68
letra=½ ascii=-67
letra=¾ ascii=-66
letra=¿ ascii=-65
letra=À ascii=-64
letra=Á ascii=-63
letra=Â ascii=-62
letra=Ã ascii=-61
letra=Ä ascii=-60
letra=Å ascii=-59
letra=Æ ascii=-58
letra=Ç ascii=-57
letra=È ascii=-56
letra=É ascii=-55
letra=Ê ascii=-54
letra=Ë ascii=-53
letra=Ì ascii=-52
letra=Í ascii=-51
letra=Î ascii=-50
letra=Ï ascii=-49
letra=Ð ascii=-48
letra=Ñ ascii=-47
letra=Ò ascii=-46
letra=Ó ascii=-45
letra=Ô ascii=-44
letra=Õ ascii=-43
letra=Ö ascii=-42
letra=× ascii=-41
letra=Ø ascii=-40
letra=Ù ascii=-39
letra=Ú ascii=-38
letra=Û ascii=-37
letra=Ü ascii=-36
letra=Ý ascii=-35
letra=Þ ascii=-34
letra=ß ascii=-33
letra=à ascii=-32
letra=á ascii=-31
letra=â ascii=-30
letra=ã ascii=-29
letra=ä ascii=-28
letra=å ascii=-27
letra=æ ascii=-26
letra=ç ascii=-25
letra=è ascii=-24
letra=é ascii=-23
letra=ê ascii=-22
letra=ë ascii=-21
letra=ì ascii=-20
letra=í ascii=-19
letra=î ascii=-18
letra=ï ascii=-17
letra=ð ascii=-16
letra=ñ ascii=-15
letra=ò ascii=-14
letra=ó ascii=-13
letra=ô ascii=-12
letra=õ ascii=-11
letra=ö ascii=-10
letra=÷ ascii=-9
letra=ø ascii=-8
letra=ù ascii=-7
letra=ú ascii=-6
letra=û ascii=-5
letra=ü ascii=-4
letra=ý ascii=-3
letra=þ ascii=-2

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re: trabajar con el codigo ascii extendido en el microcontrolador
« Respuesta #6 en: 11 de Febrero de 2010, 12:09:21 »
upps ahi me equivoque en el formato, ya lo corregi parece que estoy cerca de la solucion

el formato correcto seria
printf("letra=%c ascii=%u\n\r",i,i);

el anterior que utilize es
printf("letra=%c ascii=%d\n\r",i,i);

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re: trabajar con el codigo ascii extendido en el microcontrolador
« Respuesta #7 en: 11 de Febrero de 2010, 12:33:01 »
pues, he generado el codigo ascii en el microcontrolador y lo he enviado a la PC, he comparado los caracteres generado con el codigo ascii y con el codigo ascii extendido, pues son iguales, no hay problema.

pero cuando envio desde la pc, ahi esta la cuestion

por ejemplo envio el codigo asccii 199 y me devuelve otro valor(195) por eso no concuerdan los valores

Desconectado bmfranky

  • PIC16
  • ***
  • Mensajes: 165
    • La Tienda De Fran
Re: trabajar con el codigo ascii extendido en el microcontrolador
« Respuesta #8 en: 11 de Febrero de 2010, 15:28:56 »
Hola micronet3 , si estas utilizando css, ¿tuviste en cuenta que para el compilador todas las variables char , son por defecto, unsigned, de 0 a 127 y despues se vuelven negativas?. chequealo y después me comentas. :mrgreen:
Visiten La Tienda De Fran ;-) Aqui. y mi nueva Web Aqui.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: trabajar con el codigo ascii extendido en el microcontrolador
« Respuesta #9 en: 11 de Febrero de 2010, 17:46:50 »
Hola micronet3 , si estas utilizando css, ¿tuviste en cuenta que para el compilador todas las variables char , son por defecto, unsigned, de 0 a 127 y despues se vuelven negativas?. chequealo y después me comentas. :mrgreen:

Cuidado, en CCS un char equivale a un unsigned int8.

http://img521.imageshack.us/img521/1408/dibujoyy.png

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re: trabajar con el codigo ascii extendido en el microcontrolador
« Respuesta #10 en: 11 de Febrero de 2010, 18:19:14 »
si por ejemplo si le pongo el formato: printf("%d\n\r",i); efecticvamente llega hasta 128 y despues comienza a decrecer, pero:
cuando le doy el formato printf("%u\n\r",i); entonces si llega a contar hasta 255,


Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re: trabajar con el codigo ascii extendido en el microcontrolador
« Respuesta #11 en: 11 de Febrero de 2010, 18:25:10 »
que sea de tipo unsigned int8 quiere decir que puede contar de 0 a 255.

utilizando la siguiente codificación en la rutina de interrupcion del usart

#int_rda
void int_usart()
{
char rx;
rx=getc();
printf("%u",rx);
buffer[CaracteresRecibidos]=rx;
if(rx==13)
ComandoRecibido=true;
else
CaracteresRecibidos=CaracteresRecibidos+1;
}



cuando envio el codigo ascii 198, este me devuelve el valor de 227. la incongnita es porque me devuelve un valor distinto si solo le estoy diciendo que me regrese el caracter ascii que le he enviado?

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re: trabajar con el codigo ascii extendido en el microcontrolador
« Respuesta #12 en: 11 de Febrero de 2010, 18:26:34 »
migsantiago si he probado con putc y me pasa lo mismo, ahora le he puesto printf para ver el codigo ascii y de esa manera comprobar.
saludos

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: trabajar con el codigo ascii extendido en el microcontrolador
« Respuesta #13 en: 11 de Febrero de 2010, 18:46:33 »
cuando envio el codigo ascii 198, este me devuelve el valor de 227. la incongnita es porque me devuelve un valor distinto si solo le estoy diciendo que me regrese el caracter ascii que le he enviado?


Pues entonces tendrás que revisar qué está enviando tu aplicación en Windows. Usa la hyperterminal con eco (pin rx y tx de tu pc puenteados) para ver qué está enviándose.

Desconectado bmfranky

  • PIC16
  • ***
  • Mensajes: 165
    • La Tienda De Fran
Re: trabajar con el codigo ascii extendido en el microcontrolador
« Respuesta #14 en: 12 de Febrero de 2010, 05:14:59 »
Perdonad , chicos , es que en el manual que yo leí, ponía, que no se comportaba como el c standar , y asignaba al char el valor signed int. =0->127->-1->-127.
Perdonad la confusión... :(
Visiten La Tienda De Fran ;-) Aqui. y mi nueva Web Aqui.