Bueno pues conseguido, si lo quieres en el main ( sin interrupción ) es como sigue:
delay_us(1000);
output_high(PIN_B1);
delay_us(1000);
output_low(PIN_B1);
Pero si lo quieres por interrupción, que creo es tu caso para poder hacer otras cosas mientras tienes la base de tiempo aki va el codigo:
#include <16f876.h>
#fuses HS, NOPROTECT, NOWDT, NOPUT, NOBROWNOUT, NOLVP, NOCPD, WRT
#use delay(clock=20000000)
#define INICIO 2
#define PUL 93
byte conteo_alto;
#INT_RTCC
pulso()
{
if ((input(PIN_B1))) output_low(PIN_B1);
else output_high(PIN_B1);
set_rtcc(PUL);
}
main()
{
// set_tris_b(0x00);
conteo_alto=INICIO;
set_rtcc(PUL);
setup_counters(RTCC_INTERNAL,RTCC_DIV_32);
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
while(TRUE);
}
Para ajustar el valor se tiene que modificar PUL, no utilizo ni Conteo_alto ni INICIO ok? y recuerda que he cambiado el prescaler a 32 para hacer el ajuste mas preciso, la salida es RB1 y el PIC un 16F876.
Por cierto alguien sabe como mejorar?:
if ((input(PIN_B1))) output_low(PIN_B1);
else output_high(PIN_B1);
He probado como el C ansi "~" para invertir el valor de la salida pero no me ha salido