TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado 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:
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:
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?
-
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!!
-
Pues para enviarlo basta colocar el printf(%s, buffer_tx);
-
MLO, te olvidaste de las comillas :P
printf("%s", buffer_tx);
si no directamente
puts(buffer_tx);
saludos!
-
Hola Miro, aqui esta mi codigo:
#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()
-
Asi no se puede mandar?
int buffer_tx[10]="HOLA MUNDO";
printf("%s",buffer_tx);
-
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.
-
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!
-
Gracias a todos, problema resuelto :-/ :-/ :-/ :-/ :-/