Hola a todos!! Pude solucionar el problema con la recepcion, cambie el fuse XT por HS, pero tengo un problema mas ahora, al cambiar ese fuse, me empieza a funcionar mal un display que me funcionaba bien con el fuse XT. El display que uso es un winstar 128x64, y para eso uso la libreria glcd.h. Ya no se mas que hacer, cuando soluciono algo, aparece otro error. Agradezceria si me ayuduran. dejo el programa.
/////////////////////////////////////////////////////////////////////////
//// ////
//// ////
//// ////
//// ////
//// ////
/////////////////////////////////////////////////////////////////////////
//// ////
/////////////////////////////////////////////////////////////////////////
#include <18f4620.h> //PIC A UTILIZAR
#Fuses HS, NOWDT //Configuramos los fuses
#Use Fast_Io(B) //Optimizamos E/S del PORTB
#Use Fast_Io(A)
//Optimizamos E/S del PORTA
#use delay(clock=10000000) //A 10MHZ
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,parity=N,bits=8)
#byte portb = 0x06
#include <glcd.c>
#include <string.h>
#include <stdio.h>
#USE FAST_IO (D)
#USE FAST_IO (c)
#USE FAST_IO (b) //INCLUIMOS GLCD.C DE PICC
char Estado=0;
char Est=0;
char Modulos[16]={'N','N','N','N','N','N','N','N','N','N','N','N','N','N','N''N'};
char Address=0;
main() {
//-----------------------configuramos la interrupciones------------------------------------------
disable_interrupts(global); //desactivo todas las interrupciones
//-----------------------ACTIVO INTERRUPCION DE RS232-------------------------------------------
enable_interrupts(int_rda);
set_tris_a( 0x00 );
set_tris_d( 0x00 );
set_tris_c( 0x80 );
set_tris_b( 0x00 );
//---------------------------//activo las interrupciones---------------------------------------
enable_interrupts(global);
char texto[] = " Proyecto final "; // Palabras QUE SE
char texto2[] = " hola "; // van a mostrar
int x=0,y=0;
glcd_init(ON); // iniciamos la lcd
glcd_fillScreen(OFF); //LIMPIAMOS LA PANTALLA
while(1)
{
delay_ms(10);
//glcd_circle(44,28,10, yes, ON); //muestra un circulo
//glcd_pixel(100,30,OFF); //pinta un punto en la lcd
//glcd_bar(30,20,50,40,2,ON); //pinta una linea variando su grosor
delay_ms(10);
glcd_rect(0,20,30,30,NO,ON); //pinta un rectangulo
delay_ms(10);
glcd_text57(0,5,texto,1, ON); //muestra TEXTO
delay_ms(10);
glcd_text57(0,40,texto2,2, ON); //muestra TEXTO
delay_ms(10);
//glcd_circle(68,28,8, yes, ON); //muestra un circulo
delay_ms(10);
glcd_circle(88,28,6, yes, ON); //muestra un circulo
delay_ms(10);
glcd_circle(104,28,4, yes, ON); //muestra un circulo
glcd_circle(116,28,2, yes, ON); //muestra un circulo
delay_ms(10);
glcd_line(0,20,30,30,ON);
delay_ms(10);
glcd_line(0,30,30,20,ON);
}
}
#int_rda
void serial_isr()
{
if(kbhit())
{
Estado=getchar(); //almaceno dato serial(rs232) en digito
Address=Estado & 0b00001111;
Est= (Estado & 0b10000000);
if(Est == 0b10000000)
{
Est='A';
}
if(Est == 0b00000000)
{
Est='D';
}
Modulos[Address]=Est;
}
}
Saludos.-