Autor Tema: duda sintaxis en C18  (Leído 1840 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado elpeibel

  • PIC10
  • *
  • Mensajes: 32
duda sintaxis en C18
« en: 08 de Enero de 2012, 13:59:41 »
Hola estoy modificando la libreria flex_lcd para trabajar con lcds hd66712 de 4x20, en concreto el putc:

void lcd_putc(int8 c){
    switch(c){
        case '\1'   : lcd_gotoxy(1,1);        break;
        case '\2'   : lcd_gotoxy(1,2);        break;
        case '\3'   : lcd_gotoxy(1,3);        break;
        case '\4'   : lcd_gotoxy(1,4);        break;
        case '\f'   : lcd_send_byte(0,1); _delay_5ms(); break;  //Limpia la pantalla
        case '\n'   : lcd_gotoxy(1,2);        break;               //Coloca puntero en 1ª posicion de la 2ª línea
        case '\b'   : lcd_send_byte(0,0x10);  break;           //Retrocede una posición el cursor
        case '\t'   : lcd_send_byte(0,0x14);  break;           //Avanza una posición el cursor
        case '\r'   : lcd_send_byte(0,0x18);  break;           //Retrocede una posición la pantalla visible
        case '\v'   : lcd_send_byte(0,0x1C);  break;           //Avanza una posición la pantalla visible
        default     : lcd_send_byte(1,c);     break;
    }
}

pero parece que el c18 el "caracter" '\4' no lo soporta asi como el 'v' y algunos otros más...

sabéis a que es debido??

estoy buscando en google pero el \4 lo ignora....

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: duda sintaxis en C18
« Respuesta #1 en: 08 de Enero de 2012, 15:18:11 »
Hola, no entiendo porque usar secuencias de escape para todo. Si necesitas recibir un dato númerico solamente escribi el número

Código: C
  1. switch ( c )
  2. {
  3.   case 0:
  4.     ...
  5.     break;
  6.   case 1:
  7.     ...
  8.     break

Si deseas recibir el caracter 1, entonces escribilo así:

Código: C
  1. switch ( c )
  2. {
  3.   case '0':
  4.     ...
  5.     break;
  6.   case '1':
  7.     ...
  8.     break

Las secuencias de escape solo usalas para el \n, \r, etc.

Saludos !

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: duda sintaxis en C18
« Respuesta #2 en: 09 de Enero de 2012, 11:05:55 »
Hola:
     Si mal no recuerdo en las secuencias de escape si ponés un número luego de la barra significa el caracter en Ascii en notación octal y el '\4' te estaría dando otro caracter y no precisamente el 4.
y \x000 el caracter en notación hexa.
             Saludos.
                   Jukinch
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: duda sintaxis en C18
« Respuesta #3 en: 09 de Enero de 2012, 11:09:53 »
Hola,
Citar
Hola:
     Si mal no recuerdo en las secuencias de escape si ponés un número luego de la barra significa el caracter en Ascii en notación octal y el '\4' te estaría dando otro caracter y no precisamente el 4.
Es correcto lo de la notación octal, también es posible escribir en hexa \x... y el número en hexa, el único comentario es que 4 en octal es 4 en decimal.

Saludos !

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: duda sintaxis en C18
« Respuesta #4 en: 09 de Enero de 2012, 11:18:44 »
Tenés razón Richi777 con lo de decimal y octal pero el ´\4´ en Ascii es otro caracter. EOT end of transmission según la tabla.
         saludos.
               Jukinch
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes