Hola amigos, hice un programa, es bastante sencillo pero al momento de compilar me tira el siguiente error
error 128 A #device required before this line
y me marca la linea de los fuses... la verdad que no se que puede ser y queria ver si me podian ayudar a encontrar cual es el error... intente creando un proyecto nuevo y tampoco pasa nada, pero si en vez de poner #include <16f84a.h> pongo #include <16f628a.h>, el programa compila sin problemas...
El programa es el siguiente
#include <16f84a.h>
#fuses XT,NOWDT,NOPROTECT,PUT
#use delay( clock = 4000000 ) /* reloj de 4 MHz */
#use fast_io(A)
#byte intcon=0x0b /*Regisro de interrupcion*/
#bit RBIF=intcon.3 /*Para limpiar flag de interrupcion!!!*/
#BYTE TRISA = 0x85
#BYTE PORTA = 0x05
#BYTE TRISB = 0x86
#BYTE PORTB = 0x06
#BIT RB0 = 0x06.0 // lo uso para el led
#BIT RB4 = 0x06.4 // lo uso para el contacto
#BIT RB7 = 0x06.7 // lo uso para el la tecla
#BIT RA0 = 0x05.0 // lo uso para cerrar el cierre
#BIT RA3 = 0x05.3 // lo uso para abrir el cierre
int a;
int a_aux;
int b;
// RUTINA INTERRUPCION RB0
#int_EXT
void EXT_isr(void) {
clear_interrupt(int_ext);
a_aux=1;
a=0;
RA0 = 1;
RA3 = 0;
delay_ms(2000);
RA0 = 0;
RA3 = 0;
enable_interrupts(GLOBAL);
enable_interrupts(int_ext);
}
// RUTINA INTERRUPCION RB4-RB7
#int_RB
void x(){
clear_interrupt(int_rb);
if (RB4==1) {
delay_ms(5000);
RA0=1; // cierro
RA3=0;
delay_ms(1000);
RA0 = 0;
RA3 = 0;
}
if (RB7==1) {
if (RA0==1){ // si esta cerrado
RA0=0;//abro
RA3=1;
delay_ms(1000);
RA0 = 0;
RA3 = 0;
}
else {
RA0=1; // si esta abierto cierro
RA3=0;
delay_ms(1000);
RA0 = 0;
RA3 = 0;
}
}
enable_interrupts(int_rb);//habilita interrupción particular
enable_interrupts(GLOBAL);
}
// PROGRAMA PRINCIPAL
void main()
{
a=0;
a_aux=0;
b=400000;
TRISB = 0xFF;
TRISA = 0x00;
enable_interrupts(int_rb);//habilita interrupción particular
enable_interrupts(GLOBAL);
enable_interrupts(int_ext); //activar interrupcion externa
for( ; ; ){
if(a_aux == 1){ // esta titilando el led
if(a<b){ // si sigue titilando a se resetea por lo tanto nunca supera a b, excepto que se apague el led y aumente a
a++;
}
else { // si a supero o igualo a b, abro
a_aux=0;
RA0 = 0;
RA3 = 1;
delay_ms(2000);
RA0 = 0;
RA3 = 0;
}
} //bucle infinito esperando interrupcion
}
}