Bueno, estoy haciendo un proyecto de carrera y estamos teniendo muchos problemas. Lo primero de todo, os copio el código. Es muy simple, sólo se verifica el envío y el recibo de datos.
#include "C:\Archivos de programa\PICCNUEV\Projects\TestLeds.h"
#int_RDA
void RDA_isr()
{
PORT_B=0b11111101;
delay_ms(1000);
PORT_B=0b00000000;
}
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
// TODO: USER CODE!!
set_tris_b(0b00000000);
set_tris_c(0b10000000);
PORT_B=0b11111111;
delay_ms(1000);
PORT_B=0b00000000;
printf("hola");
sleep();
}
#include <16F873.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz
#FUSES PUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES BROWNOUT //Reset when brownout detected
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#FUSES NODEBUG //No Debug mode for ICD
#byte port_B=6
#use standard_io(c)
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
Los problemas son los siguientes:
Si no ponemos set_tris_x y set_tris_b no funciona al contrario de los ejemplos que hay por aquí.
Si desactivamos el WDT, no funciona el recibo por RS232, pero si el envío.
Si lo activamos, se reinicia constantemente.
¿Que podemos hacer?