Gracias compañeros el codigo es el siguiente:
#include <16F877.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz)
#FUSES NOPUT //No Power Up Timer
#FUSES PROTECT //Code protected from reads
#FUSES NOBROWNOUT //No brownout reset
#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
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
// TODO: USER CODE!!
#INT_EXT //aquesta comanda ens indica que la funció següent serà la que executarem quan entri una interrupció externa
void EXT_isr()
{
printf("temperatura=%f ", taula[n]);
printf("%C", 0x0D); //Envia "Enter"
}
{
int n;
int punter;
int offset=0;
float taula[24] = {0,1,2,3,4,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23};
// Escriure taula en memoria flash
for(n=0, punter=0;n<97;n++,punter++){ //inicialitzem n=0 i punter=0; li diem que conti fins a 95; i que incrementi la n++ i punter++ cada cop
write_bank(0,offset,taula[n]);
}
}
ext_int_edge(L_TO_H); //Defineix un flang de pujada per la interrupció externa
enable_interrupts(INT_EXT); //activem la interrupció externa
enable_interrupts(global); //activem les interupcions generals
while(TRUE)
{}
}