TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: mondrarras en 06 de Julio de 2005, 05:23:00
-
Hola a tod@s
Mi problema/duda/quebradero de cabezao no se que, es que necesito conectar un PIC a un emisor de RF y a un modem GSM.
Tengo un PIC16C74B, el cual solo posee un USART, que deberia hacer? Cambiar de micro?
He leido que se puede implementar la interrupcion del puerto B para enviar y recibir datos, pero el caso es que si pongo los dos a la vez creo que no va a funcionar!!!
Vamos que estoy muuuuu perdio! A ver si alguien me da una solucion, vale?
Muchas gracias y un saludo, Iñigo
NOTA:Utilizo el CSS para programar en C
-
Esto esta en la ayuda y el manual del CCS.
Permite utilizar varios puertos de comunicaciones utilizando pines que no son de la USART...
How can I use two or more RS-232 ports on one PIC®?
The #USE RS232 (and I2C for that matter) is in effect for GETC, PUTC, PRINTF and KBHIT functions encountered until another #USE RS232 is found.
The #USE RS232 is not an executable line. It works much like a #DEFINE.
The following is an example program to read from one RS-232 port (A) and echo the data to both the first RS-232 port (A) and a second RS-232 port (B).
#USE RS232(BAUD=9600, XMIT=PIN_B0, RCV=PIN_B1)
void put_to_a( char c ) {
put(c);
}
char get_from_a( ) {
return(getc()); }
#USE RS232(BAUD=9600, XMIT=PIN_B2,RCV=PIN_B3)
void put_to_b( char b ) {
putc(c);
}
main() {
char c;
put_to_a("Online
"
;
put_to_b("Online
"
;
while(TRUE) {
c=get_from_a();
put_to_b(c);
put_to_a(c);
}
}
The following will do the same thing but is less readable:
#USE RS232(BAUD=9600, XMIT=PIN_B0, RCV=PIN_B1, STREAM=COM_A)
#USE RS232(BAUD=9600, XMIT=PIN_B2, RCV=PIN_B3, STREAM=COM_B)
main() {
char c;
fprintf(COM_A,"Online
"
;
fprintf(COM_B,"Online
"
;
while(TRUE) {
c = fgetc(COM_A);
fputc(c, COM_A);
fputc(c, COM_B);
}
}
Espero te haya sido de ayuda....

-
Gracias, ya lo probare y os comento como me ha ido . . . (espero que bien
)
Un saludo a tod@s