/*************************************************************************** */ /* sci.h Julio-2005 */ /*---------------------------------------------------------------------------*/ /* Ejemplo para el skybot */ /*---------------------------------------------------------------------------*/ /* Rutinas para manejo del puerto serie del PIC */ /* Comunicaciones a 9600 baudios (Configuracion 8N1) */ /*---------------------------------------------------------------------------*/ /* Juan Gonzalez <juan@iearobotics.com> */ /*---------------------------------------------------------------------------*/ /* LICENCIA GPL */ /*****************************************************************************/ /****************************************************/ /* Configurar el puerto serie a N81 y 9600 Baudios */ /****************************************************/ void sci_conf(void) { SPBRG = 0x81; //-- 9600 baudios (con cristal de 20MHz) TXSTA = 0x24; //-- Configurar transmisor RCSTA = 0x90; //-- Configurar receptor } /******************************************/ /* Recibir un caracter por el SCI */ /*----------------------------------------*/ /* DEVUELVE: */ /* -Caracter recibido */ /******************************************/ unsigned char sci_read(void) { //-- Eserar hasta que llegue el dato while (!RCIF); return RCREG; } /*****************************************/ /* Transmitir un caracter por el SCI */ /*---------------------------------------*/ /* ENTRADAS: */ /* -car: Caracter a enviar */ /*****************************************/ void sci_write(unsigned char car) { //-- Esperar a que Flag de lista para transmitir se active while (!TXIF); //-- Hacer la transmision TXREG=car; } /*--------------------------------------------------*/ /* Enviar una cadena por el puerto serie */ /* NOTA: con esta funcion solo se pueden enviar */ /* cadenas constantes y NO un puntero a una cadena */ /* Observar que se usa el atributo __code */ /* No esta soluconado todavia en el SDCC 2.5.1 */ /* Ejemplo de uso: */ /* sci_cad("Hola"); */ /*--------------------------------------------------*/ void sci_cad(__code unsigned char *cad) { unsigned char i=0; while (cad[i]!=0) { sci_write(cad[i]); i++; } } /*---------------------------------------------------------*/ /* Envio de una cadena por el puerto serie */ /* Con esta funcion si podemos enviar punteros a cadenas, */ /* pero no cadenas constantes */ /* Ejemplo de uso: */ /* sci_cad2(mi_cadena); */ /*---------------------------------------------------------*/ void sci_cad2(unsigned char *cad) { unsigned char i=0; while (cad[i]!=0) { sci_write(cad[i]); i++; } }