Red de conocimiento informático - Conocimiento del nombre de dominio - Pregunta sobre microcomputadora: ¡Buscando la respuesta a "Inicialización de 8254 y su aplicación"! ¡Gracias!

Pregunta sobre microcomputadora: ¡Buscando la respuesta a "Inicialización de 8254 y su aplicación"! ¡Gracias!

7.3.2 Método de trabajo del 8254 y su programación de inicialización

/kecheng1/2008/site04/courseware/chapter7/7.3.2.htm

7.3.2 Modo de trabajo 8254 y su programación de inicialización

1. Modo de trabajo 8254

Cada contador de 8254 tiene seis modos de trabajo. Los tres contadores en el mismo chip se pueden configurar por separado mediante la inicialización. Hay diferentes modos de trabajo, pero no importa qué modo de trabajo, se deben seguir las siguientes reglas:

① Después de escribir la palabra de control en el registro de control, el circuito lógico de control se reinicia y la señal de salida sale. entra en el estado inicial (nivel alto o nivel bajo).

② Después de escribir el valor de conteo inicial en CR, se envía a CE después de un ciclo de reloj.

③ La señal de puerta GATE generalmente se muestrea en el flanco ascendente del pulso de reloj CLK. Bajo diferentes modos de trabajo, existen diferentes requisitos para el modo de activación de la señal de control de la puerta.

④ En el flanco descendente del pulso de reloj CLK, el contador cuenta atrás "1".

(1) Modo 0: se genera una interrupción al final del conteo (interrupción en el conteo del terminal)

El tiempo del Modo 0 se muestra en la Figura 7.21. Figura 7.21 Temporización del Modo 0

Después de escribir la palabra de control CW (palabra de control), el nivel inicial del pin OUT es bajo y el primer flanco descendente de CLK después de escribir el valor de conteo inicial N Carga N en el componente de ejecución de conteo Cuando llega el siguiente flanco descendente de CLK y la señal de control de puerta GATE tiene un nivel alto, el conteo comienza a disminuir en "1". Posteriormente, en cada flanco descendente de CLK, el contador se reduce en 1. . Durante el proceso de conteo, el pin OUT permanece bajo hasta que el conteo llega a "0", y la salida del pin OUT cambia de nivel bajo a nivel alto y permanece alto.

Características del modo 0: No hay función de carga automática para el valor de conteo inicial. Si desea continuar contando, debe reescribir el valor de conteo inicial. La señal de control de puerta GATE se utiliza para controlar CE. Cuando GATE tiene un nivel alto, se permite el conteo; cuando GATE tiene un nivel bajo, el conteo está prohibido. Cuando GATE vuelve a estar alto, el contador continúa contando desde el valor de conteo actual. Si se carga un nuevo valor en el contador durante el conteo, el proceso de conteo se reiniciará después de escribir el valor de conteo inicial.

Dado que el pin OUT emite una señal de transición de nivel bajo a nivel alto después de que finaliza el conteo en modo 0, se puede utilizar como una señal de solicitud de interrupción para el final del conteo.

(2) Modo 1: Disparador monoestable reactivable (un disparo reactivable por hardware)

La secuencia de sincronización del Modo 1 se muestra en la Figura 7.22 Figura 7.22 Secuencia de sincronización del Modo 1

Después de escribir la palabra de control CW, el nivel inicial del pin OUT es alto. Después de escribir el valor de conteo N, el contador no comienza a contar hasta que se activa el flanco descendente del primer CLK después del flanco ascendente de GATE. , cargue N en CE, espere a que el siguiente flanco descendente de CLK comience a contar y el pin OUT cambie de nivel alto a nivel bajo. Durante todo el proceso de conteo, el pin OUT permanece bajo hasta que cambia a nivel alto cuando el conteo llega a "0". Una vez completado el proceso de conteo, el pin OUT emite un pulso negativo con un ancho de N veces el ciclo del reloj, que puede usarse como señal de entrada del disparador monoestable.

Características del modo 1: El hardware comienza a contar, es decir, el conteo se activa mediante el flanco ascendente de la señal de control de puerta GATE. Durante el proceso de conteo, la CPU puede cambiar el valor de conteo, pero esto no tiene ningún impacto en el proceso de conteo. El conteo es "0" y el pin OUT genera un nivel alto. Si se activa nuevamente, el contador contará de acuerdo con el valor de conteo inicial recién ingresado.

(3) Modo 2: Divisor de frecuencia (generador de tarifas)

La sincronización del Modo 2 se muestra en la Figura 7.23 Figura 7.23 Temporización del Modo 2

Palabra de control Después de escribir CW, el nivel inicial del pin OUT es alto. Después de escribir el valor de conteo N, el flanco descendente del primer CLK carga N en la unidad de ejecución de conteo CE. Espere a que llegue el siguiente flanco descendente de CLK. y la señal de control de puerta GATE Cuando esté alto, comience a contar.

Durante el proceso de conteo, el pin OUT siempre permanece alto hasta que CE disminuye a "1", el pin OUT cambia al nivel bajo, lo mantiene durante un ciclo de reloj, luego regresa al nivel alto y cambia automáticamente el valor de conteo N se carga. en CE, el conteo se reinicia, formando un proceso de conteo cíclico, y el pin OUT emite continuamente pulsos negativos.

Características del Modo 2: El valor de conteo inicial tiene una función de carga automática, por lo que no es necesario reescribir el valor de conteo. El proceso de conteo puede controlarse mediante la señal GATE. Cuando GATE tiene un nivel bajo, el conteo se suspende; el siguiente pulso CLK después de que GATE alcance el nivel alto hace que el contador restablezca el valor de conteo inicial y reinicie el conteo.

(4) Modo 3: Generador de onda cuadrada (modo de onda cuadrada)

La secuencia de tiempos del Modo 3 se muestra en la Figura 7.24 Figura 7.24 Secuencia de tiempos del Modo 3

El principio de funcionamiento es similar al Modo 2, con función de conteo automático de repeticiones, pero la forma de onda emitida por el pin OUT es diferente. Cuando el valor de conteo N es un número par, OUT emite una señal de onda cuadrada simétrica y el ancho de los pulsos positivo y negativo son ciclos de reloj; cuando el valor de conteo N es un número impar, OUT emite una señal de onda cuadrada asimétrica; el ancho de pulso positivo es un ciclo de reloj, el ancho de pulso negativo son ciclos de reloj.

(5) Modo 4: Luz estroboscópica activada por software

La secuencia de tiempo del Modo 4 se muestra en la Figura 7.25 Figura 7.25 Secuencia de tiempo del Modo 4

Escribir. Después de introducir la palabra de control CW, el nivel inicial de OUT es alto en el flanco descendente del primer CLK después de escribir el valor de conteo inicial N, N se carga en la unidad de ejecución de conteo CE cuando llega la siguiente señal de pulso de conteo CLK. y la señal de control de la puerta. Cuando GATE está en nivel alto (es decir, se inicia el software), comienza el conteo. Cuando el conteo es "0", el pin OUT cambia de nivel alto a nivel bajo durante un ciclo de reloj, y el pin OUT cambia de nivel bajo a nivel alto. Una vez completado el proceso de conteo, el pin OUT emite una señal de pulso negativo con un ancho de un ciclo de reloj.

Características del método 4: No existe una función de conteo repetido automático. Solo se puede iniciar un nuevo conteo después de ingresar un nuevo valor de conteo. Si el valor de conteo establecido es N, el pin OUT generará una señal de pulso negativo solo después de escribir el valor de conteo N pulsos de reloj.

(6) Modo 5: Luz estroboscópica activada por hardware

El tiempo del Modo 5 se muestra en la Figura 7.26 Figura 7.26 El tiempo del Modo 5

Escribir después. Se ingresa la palabra de control CW, el nivel inicial del pin OUT es alto. Después de escribir el valor de conteo N, el contador no comienza a contar solo el primer flanco ascendente de la señal GATE de bajo a alto (es decir, inicio del hardware). ocurre en el flanco descendente de CLK, N se carga en la unidad de ejecución de conteo CE, y el conteo no comenzará hasta el siguiente flanco descendente de CLK. Cuando el conteo llega a "0", el pin OUT cambia de nivel alto a nivel bajo durante un ciclo de reloj, y el pin OUT cambia de nivel bajo a nivel alto. Una vez completado el proceso de conteo, el pin OUT emite una señal de pulso negativo con un ancho de un ciclo de reloj.

La forma de onda de salida del modo 5 es la misma que la del modo 4. La diferencia entre los dos modos de trabajo es: el Modo 4 es el conteo de inicio del software, es decir, GATE = 1, y el conteo comienza cuando se escribe el valor de conteo inicial. El Modo 5 es el conteo de inicio del hardware, es decir, se escribe el valor de conteo inicial; Primero, que se activa con el flanco ascendente de GATE, comience a contar.

Al configurar el modo de trabajo de 8254, debe prestar atención a algunas características de los seis modos de trabajo anteriores: los valores de conteo iniciales de los modos 0, 1, 4 y 5 no tienen un función de carga automática. Cuando se completa un conteo, si Para continuar contando, debe programar y escribir el valor de conteo nuevamente, los valores de conteo iniciales de los modos 2 y 3 tienen una función de carga automática. escrito una vez, el conteo repetido se puede realizar continuamente. Aunque las formas de onda de salida de los modos 2, 4 y 5 son las mismas, es decir, todos son pulsos negativos con un ancho de un ciclo de reloj, el modo 2 puede funcionar de forma continua y automática, el modo 4 se inicia mediante un disparador de software y el modo 5 se inicia mediante un disparador de hardware.

Las características y funciones de los seis modos de trabajo del 8254 se muestran en la Tabla 7.5.

Tabla 7.5 Características y funciones de los seis modos de trabajo del 8254

2. Programación de inicialización del 8254

Cada contador del 8254 debe escribirse en el control El trabajo solo se puede iniciar después de escribir la palabra y el valor de conteo inicial. Por lo tanto, durante la programación inicial, el modo de funcionamiento del contador y la escritura del valor de conteo inicial se deben configurar escribiendo la palabra de control.

(1) Formato de la palabra de control

El formato de la palabra de control 8254 se muestra en la Figura 7.27.

Figura 7.27: Formato de la palabra de control 8254

D0: Selección del método de conteo del valor inicial de conteo. D0=1, conteo de código BCD; D0=0, conteo de números binarios.

8254 tiene dos métodos de conteo: código BCD y número binario. Si se utiliza el conteo de números binarios (16 bits), el rango del valor del conteo es 0000~FFFFH, y el valor máximo es 216, que es 65536 del número decimal, expresado como 0000H si se cuenta con código BCD (decimal de cuatro dígitos; número), el rango del valor de conteo es 0000~9999, y el valor máximo es 104, que es 10000 en el sistema decimal, expresado como 0000.

D3D2D1: Bit de selección del modo de trabajo. Debido a que hay ocho códigos binarios para M2M1M0 (es decir, 000~111) y 8254 tiene seis modos de funcionamiento, el bit M2 del modo 2 y el modo 3 se puede configurar en cualquier valor de 0 o 1.

D5D4: Control de contador de lectura/escritura. La lectura o escritura del valor de conteo se puede operar de dos maneras: byte o palabra. Utilice los códigos 01, 10, 11 de RW1 y RW0 para controlar el orden y número de bytes de lectura o escritura del valor de conteo. Si lee/escribe por bytes, puede elegir los 8 bits inferiores o los 8 bits superiores; si lee/escribe por palabras, se completa en dos pasos, es decir, leer/escribir los 8 bits inferiores primero y luego leer/escribir. los 8 bits superiores.

D7D6: Selección de contador. Los cuatro estados de D7D6 corresponden a los contadores de selección 0, 1 y 2 respectivamente. Los registros de control de los tres contadores utilizan la misma dirección de puerto.

Cabe señalar que existen dos métodos cuando la CPU lee un contador de 8254. Un método consiste en configurar primero la secuencia de lectura y el formato mediante RW1 y RW0 de la palabra de control y luego leer el contador seleccionado mediante la instrucción de entrada (IN). Cuando se utiliza este método, para garantizar que el valor de conteo actual que se lee sea estable, se puede usar la señal de control de puerta GATE o el método de bloquear la entrada del reloj para prohibir temporalmente la operación del contador. Otro método consiste en enviar primero un comando de bloqueo al 8254 (es decir, configurar RW1 y RW0 en 00) y luego leer el valor de conteo actual en el orden de leer primero el byte bajo y luego el byte alto. Cuando el 8254 recibe el comando de bloqueo, bloquea el valor de conteo actual en el registro de bloqueo de conteo para que la CPU lo lea.

(2) Comando de lectura posterior 8254

El comando de lectura posterior 8254 puede bloquear los valores de conteo y el estado de los tres contadores y devolver una palabra de estado a la CPU, como se muestra en la figura Como se muestra en 7.28.

Figura 7.28: Comando de lectura de 8254

Cuando D7=1, D6=1, es el comando de lectura de regreso.

D5=0 es el valor del recuento de bloqueo para que la CPU pueda leer el valor del recuento actual.

D4=0 es la información del estado del pestillo.

D3~D1 son bits de selección de contador, que pueden bloquear el valor de conteo o la información de estado en un contador, dos contadores o tres contadores a la vez. Cuando la CPU lee el valor de conteo o la información de estado de un determinado contador, el bloqueo deja de ser válido.

El comando de lectura se escribe en el puerto de control y la información de estado y el valor de recuento se leen a través del puerto del contador. Si los bits D5 y D4 del comando de lectura son ambos 0, es decir, se deben volver a leer tanto la información de estado como el valor de conteo. El orden de lectura es: leer primero la información de estado y luego leer el valor de conteo.

(3) Configuración del valor de conteo inicial

El valor de conteo inicial (o constante de conteo) se puede configurar de acuerdo con la aplicación real y el modo de trabajo del 8254. Generalmente, existen siguientes tipos Situación:

① Como generador, se debe seleccionar el modo 2 o el modo 3. En realidad es un divisor de frecuencia, por lo que la constante de conteo es el coeficiente de división de frecuencia, es decir: coeficiente de división de frecuencia (fi es la frecuencia CLK de entrada, f0 es la frecuencia de salida OUT).

② Como temporizador, el pulso de conteo CLK generalmente proviene del reloj interno del sistema, y ​​la constante de conteo es el coeficiente de tiempo, es decir: coeficiente de tiempo (T es el tiempo de tiempo, tclk es el ciclo del reloj y fclk es la frecuencia del reloj).

③ Como contador, los pulsos de conteo generalmente provienen del exterior del sistema, por lo que la constante de conteo es el número de pulsos de eventos externos.

(4) Programación de inicialización del 8254

Al escribir el programa de inicialización, dado que las palabras de control de los tres contadores del 8254 son independientes, sus constantes de conteo tienen sus propias unidades de dirección. por lo que la secuencia de programación de inicialización es más flexible. Puede escribir la palabra de control y la constante de conteo de un contador, y luego escribir la palabra de control y la constante de conteo de otro contador. También puede escribir las palabras de control de todos los contadores y luego escribir Enter. la constante de conteo. Cabe señalar que la palabra de control del contador debe escribirse antes de su constante de conteo, y los 8 bits bajos de la constante de conteo deben escribirse antes de los 8 bits altos. A continuación se utiliza un ejemplo para ilustrar el método de programación de inicialización de 8254.

Ejemplo 7.6 Un determinado sistema utiliza un 8254 y debe completar las siguientes funciones:

① El contador 0 cuenta eventos externos y envía una solicitud de interrupción a la CPU cuando llega a 100 veces.

② El contador 1 genera una señal de onda cuadrada con una frecuencia de 1 kHz y el reloj de entrada CLK1 está configurado en 2,5 MHz.

③ El contador 2 sirve como reloj estándar y envía; una solicitud de interrupción a la CPU una vez por segundo. El reloj de entrada CLK2 se establece mediante el suministro OUT1.

Según el significado de la pregunta, determine la palabra de control del modo de trabajo y la constante de conteo del canal correspondiente:

La palabra de control del contador 0 es 00010000B, que es 10H (modo 0, conteo binario) y la constante de conteo es 100.

La palabra de control del contador 1 es 01110110B, que es 76H (modo 3, conteo binario).

La constante de conteo es: =2.5MHz/1kHz=2500.

La palabra de control del contador 2 es 10110001B, que es B1H (modo 0, conteo BCD).

La constante de conteo es: =1s×1kHz=1000.

Suponga que la dirección del puerto de 8254 es 80H~83H y compile el programa de inicialización de la siguiente manera:

MOV AL, 10H   Palabra de control del contador 0

OUT; 83H, AL  ; Puerto de control de escritura

MOV AL, 100; Constante de conteo 100

OUT80, AL; Escritura de byte bajo del contador 0

MOV AL, 76H ; Contador 1 palabra de control

OUT  ; Contador constante 2500

OUT 81H, AL  ; byte bajo

MOV AL, AH

OUT 81H, A; contador de escritura 1 byte alto

MOV AL, 0B1H Palabra de control del contador 2

OUT 83H, AL  ; Puerto de control de escritura

MOV AX, 1000H  ; Contador constante 1000 (el código BCD es 1000H)

OUT 82H, AL  ; /p>

MOV AL, AH

OUT 82H, AL; Contador de escritura 2 bytes altos