TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Alejandro en 10 de Junio de 2009, 22:33:28

Título: Como declarar constantes?
Publicado por: Alejandro en 10 de Junio de 2009, 22:33:28
Hola, me van a disculapar pero recien estoy haciendo mis pininos con el CCS y no se como hacer lo siguiente:

Cuando declaro esta constante char:

Citar
const char buffer_tx[]="HOLA MUNDO";

fuera del main(),  no logro enviar estos datos por el puerto serie, pero cuando declaro estas constantes de la siguiente forma:

Citar
buffer_tx[0]="H";
buffer_tx[1]="O";
buffer_tx[2]="L";
buffer_tx[3]="A";
buffer_tx[4]=" ";
buffer_tx[5]="M";
buffer_tx[6]="U";
buffer_tx[7]="N";
buffer_tx[8]="D";
buffer_tx[9]="O";

 y dentro del main() todo funciona OK, cual es mi error, yo pieso que la manera correcta de declarar constantes es como la primera forma, alguien me podria aclarar esta duda?
Título: Re: Como declarar constantes?
Publicado por: gera en 10 de Junio de 2009, 22:59:55
No deberias tener problemas. Es mas, la segunda forma no deberia ser valida, ya q estas tratando de meter dos caracteres en el lugar de uno. Q funcion estas usando para enviar la cadena al puerto serie? Deberias usar puts() o printf().
saludos!!
Título: Re: Como declarar constantes?
Publicado por: MLO__ en 11 de Junio de 2009, 02:11:27
Pues para enviarlo basta colocar el printf(%s, buffer_tx);
Título: Re: Como declarar constantes?
Publicado por: gera en 11 de Junio de 2009, 02:19:05
MLO, te olvidaste de las comillas :P
printf("%s", buffer_tx);
si no directamente
puts(buffer_tx);

saludos!
Título: Re: Como declarar constantes?
Publicado por: Alejandro en 11 de Junio de 2009, 02:22:51
Hola Miro, aqui esta mi codigo:

Citar
#include <16f876A.h>
//#include <string.h>
#use delay(clock=20M)
#fuses NOWDT,NOPUT,NOPROTECT
#use rs232(STREAM=ALARMA, baud=9600, xmit=PIN_C6, rcv=PIN_C7, parity=N, bits=8)

const char buffer_tx[]="HOLA MUNDO";

void main(void)
{
  int buffer_tx[10];

//buffer_tx[0]='H';
//buffer_tx[1]='O';
//buffer_tx[2]='L';
//buffer_tx[3]='A';
//buffer_tx[4]=' ';
//buffer_tx[5]='M';
//buffer_tx[6]='U';
//buffer_tx[7]='N';
//buffer_tx[8]='D';
//buffer_tx[9]='O';
   
   while (TRUE)
   {
   printf("%c%c%c%c%c%c%c%c%c%c\n\r",buffer_tx[0],buffer_tx[1],buffer_tx[2],buffer_tx[3],buffer_tx[4], buffer_tx[5],buffer_tx[6],buffer_tx[7],buffer_tx[8],buffer_tx[9]);
  }
}

Yo quiero enviar los caracteres de forma en que lo estoy enviando..pero mi pregunta es por que no no puedo visualizar cuando la declaracion lo hago fuera del main()
Título: Re: Como declarar constantes?
Publicado por: Suky en 11 de Junio de 2009, 02:32:53
Asi no se puede mandar?

int buffer_tx[10]="HOLA MUNDO";

printf("%s",buffer_tx);
Título: Re: Como declarar constantes?
Publicado por: MLO__ en 11 de Junio de 2009, 10:19:30
Gracias Gera .... se me bloquearon los dedos  :D

No creo que el codigo posteado te compile, ya que estas definiendo dos cosas con el mismo nombre. Tal como lo postee (con las comillas claro esta) que es como dice suky, debe funcionar.




Título: Re: Como declarar constantes?
Publicado por: gera en 11 de Junio de 2009, 11:45:48
Y ojo porq el buffer tiene q tener un byte de mas para alojar al caracter nulo. Esto lo hace solo el compilador si inicias el arreglo asi:
char buffer_tx[]="hola mundo";

si no tendrias q hacer asi:
char buffer_tx[11]="hola mundo";

Saludos!
Título: Re: Como declarar constantes?
Publicado por: Alejandro en 12 de Junio de 2009, 02:45:02
Gracias a todos, problema resuelto  :-/  :-/  :-/  :-/  :-/