Hola espero me puedan ayudar tengo problemas con el timer0 y timer1 del 18f886 los dos timers los estoy ocupando para incrementar una variable, los timers hacen un retardo cada 10mseg, pero no se que pasa ya revise mi programa y creo que esta bien pero al simular no hace lo correcto y al grabar el programa en el micro hace los mismos errores que en el simulador espero me puedan ayudar ya que me estoy tardando mucho, dejo mi programa para que lo puedan observar. gracias por su ayuda.
#include <16F886.h>
#fuses INTRC, MCLR, NOWDT
#use delay( clock = 8M ) //frecuencia de Oscilacion de 8MHz.
#use standard_io( B )
int Cont0 = 0, Opc = 0;
int16 Cont1 = 0, k = 0, Lim, t;
int16 const Re[ 8 ] = { 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F };
int16 const Ro[ 20 ] = { 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F,
0x7F, 0x7F, 0x7F, 0xBF, 0xDF, 0xEF, 0xF7, 0xFB,
0xFD, 0xFE, 0xFE, 0xFE }; //Recorre un Bit.
int16 const Rd[ 4 ] = { 0x7E, 0xBD, 0xDB, 0xE7 };
int16 const Rr[ 8 ] = { 0x7E, 0xBD, 0xDB, 0xE7, 0xDB, 0xBD, 0x7E, 0xFF };
int16 const Ru[ 36 ] = { 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F,
0x7E, 0x7D, 0x7B, 0x77, 0x6F, 0x5F, 0x3F, 0x3E,
0x3D, 0x3B, 0x37, 0x2F, 0x1F, 0x1E, 0x1D, 0x1B,
0x17, 0x0F, 0x0E, 0x0D, 0x0B, 0x07, 0x06, 0x05,
0x03, 0x02, 0x01, 0x00 };
#INT_TIMER0 //Interrupcion del Timer0.
void timer0( void )
{
Cont0++;
if( Cont0 == 200 )
{
Opc++;
Cont0 = 0;
if( Opc > 4 )
{
Opc = 0;
}
}
set_timer0( 99 );
}
#INT_TIMER1
void timer1( void )
{
Cont1++;
if( Cont1 == t )
{
k++;
Cont1 = 0;
if( k > Lim )
{
k = 0;
}
}
set_timer1( 45536 );
}
void main( void )
{
set_timer0( 99 );
setup_timer_0( RTCC_INTERNAL | RTCC_DIV_128 );
enable_interrupts( INT_TIMER0 );
set_timer1( 45536 );
setup_timer_1( T1_INTERNAL | T1_DIV_BY_1 );
enable_interrupts( INT_TIMER1 );
enable_interrupts( GLOBAL );
while( 1 )
{
if( Opc == 0 )
{
t = 5;
Lim = 8;
output_B( Re[ k ] );
}
if( Opc == 1 )
{
t = 5;
Lim = 20;
output_B( Ro[ k ] );
}
if( Opc == 2 )
{
t = 15;
Lim = 4;
output_B( Rd[ k ] );
}
if( Opc == 3 )
{
t = 5;
Lim = 36;
output_B( Ru[ k ] );
}
if( Opc == 4 )
{
t = 7;
Lim = 8;
output_B( Rr[ k ] );
}
}
}