Gracias por la respuesta pero eso que me has dicho lo tengo igual:(.
Para ofrecer mas datos he de decir que solo me ocurre con dos programas en los que he usado el timer 0 el timer 1 e interrupciones, en los que no uso eso me funciona correctamente.
Hos pongo el programa haber si ayuda algo...
#include <16F877A.h>
#use delay(clock=4000000)
#fuses XT,NOWDT
#use fast_io(A)
#use fast_io(B)
short a,b,c,d,n; //definimos las variables como numeros enteros
void main()
{
set_tris_a(0xFF); //Puerta A con 6 E/S, las define como entradas
set_tris_b(0x01); //Puerta B con 8 E/S, las define como salidas menos RB0 que
// queda como entrada.
setup_timer_0 (RTCC_INTERNAL|RTCC_DIV_256); //Configuramos reloj interno del timer 0.
// y ponemos el prescaler 1:256.
n=0; //Ponemos el contador a 0.
output_low (PIN_B1); //Ponemos la patilla RB1 a nivel bajo (0v).
c=0; //Indica que esta apagado el led de RB1.
output_low (PIN_B2); //Ponemos la patilla RB1 a nivel bajo (0v).
d=0; //Indica que esta apagado el led de RB2.
while(1)
{
a=input(PIN_A4); //a= al valor de la entrada RA4(enciende RB1)
b=input(PIN_B0); //b= al valor de la entrada RB0(enciende RB2)
if(a==0||b==0)
{
set_timer0(60); //Valor inicial del contaje para contar 0.05 segundos.
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);
}
}
}
#INT_TIMER0
void timer0()
{
disable_interrupts(GLOBAL);
c++; //incremento de c en unidad
if(n==20) // cuando c sea 20 llegamos a 1 s.
{
if(c==0&&a==0) //Si el pulsador esta pulsado y el led esta apagado:
{
output_high(PIN_B1); //Encendemos el led de RB1.
c=1;
}
else //De lo contrario:
{
output_low (PIN_B1); //apagamos el led.
c=0;
}
if(d==0&&b==0) //Si el pulsador esta pulsado y el led esta apagado:
{
output_high(PIN_B1); //Encendemos el led de RB2.
d=1;
}
else //De lo contrario:
{
output_low (PIN_B1); //apagamos el led.
d=0;
}
n=0; //Ponemos el contador a 0.
}
set_timer0(60); //Volvemos a cargar el timer
enable_interrupts(GLOBAL);
}
y tambien lo que aparece en el ouput al compilar:
Clean: Deleting intermediary and output files.
Clean: Deleted file "interc.$$$".
Clean Warning: File "D:\tarjeta\5 - Intermitente - C\interc.o" doesn't exist.
Clean: Deleted file "interc.HEX".
Clean: Deleted file "interc.LST".
Clean: Deleted file "interc.PJT".
Clean: Deleted file "interc.ERR".
Clean: Deleted file "interc.COF".
Clean: Done.
Executing: "C:\Program Files\PICC\Ccsc.exe" +FM "interc.c" +DF +LN +T +A +M +Z +Y=9 +EA
>>> Warning 203 "interc.c" Line 31(1,1): Condition always TRUE
>>> Warning 207 "interc.c" Line 51(1,1): Code has no effect
Memory usage: ROM=2% RAM=9% - 10%
0 Errors, 2 Warnings.
BUILD SUCCEEDED: Fri Jul 25 16:13:55 2008
acto seguido se habre una ventana en la que aparece:
Failed to load "D:\tarjeta\5 - intermitente - C\inter.cof
acto y seguido en el ouput aparece:
BUILD SUCCEEDED: Fri Jul 25 16:20:38 2008
lo cargo en la placa de entrenamiento PICDEM 2 PLUS mediante MPLAB ICD 2 pero no funciona nada, como si no le llegara el programa.
gracias y saludos