Cuando un microcontrolador no posee un periférico de comunicación serial (I2c, SPI, RS232, etc.) lo que denominas "emulando" se llama Bit banging, esto implica utilizar un temporizador como generador de reloj para la duración del ancho de los pulsos (velocidad de transmisión) y/o generador de señal de reloj.
Es posible que esa sea la razón del problema del tmr0, sin embargo no he puesto atención a lo que quieres hacer con dicho temporizador.
Tu problema es una mal código escrito quieres solucionar con un parche que posiblemente no te funcione o sea una solución anodina.
Gracias por sus respuestas,
tiene mucho sentido lo del temporizador que quizá cree problemas al estar emulando el serial y también utilizar el tmr0, no he corregido ese código en su totalidad esperando hacer las pruebas con lo que ustedes me indican, la idea entonces es como necesito si o si el serial, buscare una ayuda externa para resetear el pic cada cierto tiempo.
sin embargo ya tengo la información necesaria para hacerlo en otro diseño,,,, mil gracias.
como ultimo para no abrir otro hilo ( ya que el diseño es para lo mismo) podrían por favor darme una mano con esta ultima duda.
como emulo el serial, estoy leyendo unos datos entrantes por el bluetooth y estoy tratando que el pic me envíe al teléfono un carácter, esto para comprobar que el bluetooth no ha perdido la comunicación, el problema es que cuando envío datos desde el teléfono el pic parece que tiene problemas para leerlos tengo que oprimir repetidamente la tecla para que actúe.
dejo el código a continuación( si debo abrir otro hilo para esto me dicen por favor.
#include <12F508.h>
#FUSES NOWDT
#FUSES NOMCLR
#FUSES PROTECT
#byte portb= 0x06
//#USE standard_IO(B)
#USE FAST_IO(B)
#use delay(internal=4MHz)
//#use RS232 (baud = 9600, bits = 8, parity = N, xmit = pin_b4, rcv = pin_b1)
#use rs232(baud=9600,xmit=pin_b4,rcv=PIN_B1,bits=8,parity=N,stream=BT,errors)
//#use RS232 (baud = 9600, bits = 8, parity = N, rcv = pin_b1)
#define arriba PIN_B0
#define abajo PIN_B5
#define ACC PIN_B2
#define PUNTILLA PIN_B3
//------------- variables ---------------
CHAR dato;
//int16 i=0;
// -------------------------------------
void main()
{
//////// configura Gp2 como i/s digital y desabilita el tocki (ocs bit-5)
#asm
movlw (0B11000000); GPWU = 1, GPPU = 1, T0CS, T0SE, PSA, PS2, PS1, PS0 = 0
option
#endasm
SET_TRIS_b(0B001110);
portB=0x00;
//int j=0;
delay_ms(1000);
output_HIGH(arriba);
output_HIGH(abajo);
//var1 =1;
//var2=1;
while(TRUE)
{
dato=0;
if (kbhit(BT))
{
}
//PRINTF("A");
//Delay_ms(1);
if ( dato==';') //
{
output_LOW(arriba);
dato=0;
}
//----------------------------------------
if ( dato==':') //
{
output_high(arriba);
dato=0;
}
// -----------------
if ( dato=='¡') //
{
output_low(abajo);
dato=0;
}
//---------------------
if ( dato=='!') //
{
output_HIGH(abajo);
dato=0;
}
// -----------------
}
}