Una pregunta sobre los temporizadores en 8051

Suponga que el temporizador 1 de 8051 ha terminado de contar y ha activado TF1. Dado que vuelve a 0, actualmente TH1 = 00, TL1 = 00, y suponga que el bit TR1 todavía está establecido. En este momento, si solo borramos el TF1, ¿volverá a contar ahora desde 00? Porque aún no detuvimos el cronómetro.

La siguiente pregunta es: supongamos que TF1 está configurado pero TR1 está reiniciado, en este momento, ¿podemos cargar TH1 y TL1 usando el direccionamiento # (inmediato)?

Respuestas (1)

En este momento, si solo borramos el TF1, ¿volverá a contar ahora desde 00? Porque aún no detuvimos el cronómetro.

TF1se establecerá una vez que el temporizador-1 se desborde. Ahora, si borra TF1pero mantiene TR1el ajuste, entonces el temporizador sigue funcionando. Después del desbordamiento, se reiniciará incrementando desde 0x00o valor precargado en TH1(depende del modo de temporizador).

Por lo tanto, en el caso del modo de temporizador de 16 bits , debe borrar ambos TF1y TR1, recargar el registro del temporizador-1 y configurarlo TR1nuevamente para continuar con el mismo ciclo.

En el caso del modo de temporizador de 8 bits de recarga automática , TF1solo se eliminará el sufijo. No es necesario borrar TR1ya que el temporizador se reinicia automáticamente desde el valor precargado en TH1.

Supongamos que TF1 está configurado pero TR1 está reiniciado, en este momento, ¿podemos cargar TH1 y TL1 usando el direccionamiento # (inmediato)?

Sí, puedes. Y una vez que configura TR1, el temporizador comienza a funcionar desde el valor cargado. Pero debe borrar TF1para no perderse el evento del próximo desbordamiento del temporizador.

en las últimas dos líneas dijiste "debes restablecer TF1...", pero debería ser "debes restablecer TF1..." ¿no es así? Creo que con un TF1 elevado, el temporizador ni siquiera comenzará a contar incluso si TR1 está configurado.
Por 'restablecer', significa claro. TF1 tiene que ser borrado. no TR1. TR1 establecido significa que el contador se está ejecutando independientemente del valor de TF1. TF1 no es una bandera de control, es una bandera de estado. Si olvidó borrar TF1, se perderá los eventos de desbordamiento del temporizador posteriores, porque el temporizador aún se está ejecutando en el interior.