Hola e observado en ejemplos de codigo referente a esta interrupcion que la funcion siempre tiene que estar debajo de #INT_RB pero yo no puedo hacer esto Mi intencion es que se genere el evento cuando se aplique un flanco alto en b4 La cabezera del programa es la siguiente:
#if defined(__PCM__)
#include <16f877.h>
#FUSES NOWDT, XT, PUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
//#fuses
#use delay(clock=4M)
#DEFINE use_portd_lcd TRUE
#include <lcd.c>
#include <stdio.h>
#use standard_io(A)
#BYTE PORTB=0x06
#BYTE TRISB=0X1f //0001 1111
#BYTE PORTD=0X08
#BYTE TRISD=0X88 //1000 1000
#INT_RB //CAMBIO DE ESTADO ENTRE RB4 - B7
//Error si pongo aqui void RB_isr() //función de interrupción*
int1 grp2,grp3;
int1 ladra[5];
int8 peti,cliente,salir,nume;
int1 tarje,ser,nu;
unsigned int8 lee,atra,falloMF;
signed int32 mony;
int1 target[20];
int16 contra[20];
signed int32 saldo[20];
signed int32 M32;
union UNI {
signed int32 dat32;
int8 bytes[4];
};
signed int32 total,acumula;
int32 presta;
int16 meses=10;
int8 decimal,vari;
float prestamo,teres=2;
void lectura();
void borratotal();
void ponsea();
void ponme();
void skri();
void recogmateria();
void reembolso(int8 cli);
void refresco(int1 muta,int1 gp1,int1 gp2,int1 gp3);
int1 MASTER;
void recoge();
void COMBERSION(int1 Soy);
void tiempo(int8 espe);//
void mensaje(int8 men);
void mensa(int8 me);
void sajesal(int1 acet,int1 line);
void OPER(int8 dar);
void acionSalida();
void evalua();
//Error si pongo aqui #INT_RB*
void RB_isr() //función de interrupción
{
unsigned int8 valor=input_B();
valor=valor&0b00010000;
lcd_gotoxy(1,1);
if (valor>0){
output_high(PIN_a0);
lcd_putc("dentro");
}
else {
lcd_putc("no es b4"); }
delay_ms(1000);
output_low(PIN_a0);
clear_interrupt(INT_RB);
}
void main(){
int8 con,nume;
ext_int_edge(l_to_h);//alto
clear_interrupt(INT_RB);
enable_interrupts(int_RB);
enable_interrupts(global);
set_tris_b(0b00011111);
while(true){///WIL main()
.......
.......
} }
El error es
Error 71 Out of RON,A segment orthe program is too large mensaje
Si acorto la funcion mensaje(); (cosa que no me combiene) es
Error 71 OUT of the program is to large MAIN
y siempre hay una maldicion de memoria reservada
Me e metido asta hace poco en interrupciones tenia un mal concepto de lo que eran y lo tendre porque nisiquiera puedo hacer la prueba Que hago empiezo a cargarle a otro micro las funciones de este? Podria aver alguna otr manera de resolver esto?