Contactos

Diagrama de bloques del microcontrolador mcs 51. Microcontroladores de la familia mcs51. Modo de lectura de puerto

El sistema de comando OMEVM proporciona excelentes capacidades de procesamiento de datos, garantiza la implementación de operaciones lógicas y aritméticas, así como control en tiempo real. Se implementa el procesamiento de datos bit a bit, tétrada (4 bits), byte a bit (8 bits) y 16 bits.

LSI de la familia MCS-51 es un OMEVM de 8 bits: ROM, RAM, registros de propósito especial, ALU y buses externos se basan en bytes. Los datos de dos bytes son utilizados únicamente por el registro de puntero (DPTR) y el contador de programa (PC). Cabe señalar que el registro de puntero de datos se puede utilizar como un registro de dos bytes DPTR o como dos registros de propósito especial de un byte DPH y DPL. El contador del programa siempre se utiliza como registro de dos bytes.

El conjunto de comandos de OMEVM tiene 42 mnemónicos de comando para especificar las 33 funciones de este sistema.

La sintaxis de la mayoría de los comandos en lenguaje ensamblador consta de una función mnemotécnica, seguida de operandos que indican métodos de direccionamiento y tipos de datos. Los diferentes tipos de datos o modos de direccionamiento están determinados por los operandos establecidos, no por cambios en los mnemotécnicos.

El sistema de mando se puede dividir en cinco grupos:

Existen los siguientes tipos de direccionamiento de operandos de origen:

  • Direccionamiento de registros indirecto basado en la suma de los registros base e índice

Tabla de notaciones y símbolos utilizados en el sistema de mando.

Designación, símbolo Objetivo
A Batería
Rn Registros del banco de registros seleccionado actualmente
r El número del registro cargado especificado en el comando.
directo Dirección de celda de datos interna de 8 bits direccionable directamente, que puede ser una celda RAM de datos interna (0-127) o SFR (128-255)
@Rr Celda RAM de datos interna de 8 bits direccionable indirectamente
datos8 Datos inmediatos de 8 bits incluidos en el CPC
datosH Bits más significativos (15-8) de los datos inmediatos de 16 bits
datosL Bits menos significativos (7-0) de datos inmediatos de 16 bits
dirección11 dirección de destino de 11 bits
direcciónL Bits menos significativos de la dirección de destino
disp8 Byte compensado con signo de 8 bits
poco Un bit directamente direccionable cuya dirección contiene el COP ubicado en la RAM de datos interna o SFR
a15, a14...a0 Bits de dirección de destino
(X) Contenido del elemento X
((X)) Contenido en la dirección almacenada en el elemento X
(X)[M] Bit M del elemento X

+
-
*
Y
O
XOR
/X
Operaciones:
suma
sustracción
multiplicación
divisiones
multiplicación lógica (operación Y)
suma lógica (operación O)
adición módulo 2 (OR exclusivo)
inversión del elemento X

Los mnemotécnicos de funciones están asociados de forma única con combinaciones específicas de métodos de direccionamiento y tipos de datos. En total, hay 111 combinaciones posibles en el sistema de mando. La tabla muestra una lista de comandos, ordenados alfabéticamente.

Mnemotécnica Función Banderas
Comando ACALL Llamada absoluta a subrutina
Suma CA, C, OV
Suma con acarreo CA, C, OV
Equipo AJMP transición absoluta
"Y" lógico
"Y" lógico para variables de bits C
Comparar y saltar si no es igual C
Comando CLR A Reinicio de batería
comando CLR Restablecer bit C, poco
Equipo CPL A Inversión de batería
Equipo CPL inversión de bits C, poco
Equipo DA A Corrección del acumulador decimal para suma CA, C
Equipo DEC<байт> Decremento
Equipo DIV AB División C, OV
Equipo DJNZ<байт>, <смещение> Disminuir y saltar si no es igual a cero
Equipo INC<байт> Incremento
Comando INC DPTR Incremento del puntero de datos
Equipo JB , Saltar si el bit está establecido
Equipo JBC , Saltar si el bit está configurado y restablecer ese bit
Equipo JC Transición si se establece la transferencia
Comando JMP @A+DPTR Transferencia indirecta
Equipo JNB , Saltar si el bit no está establecido
Equipo JNC Saltar si el acarreo no está configurado
Equipo JNZ Saltar si el contenido del acumulador no es cero
Equipo JZ Saltar si el contenido del acumulador es 0
comando LCALL llamada larga
Equipo LJMP Pasaje largo
Variable de byte directo
Enviar bit de datos C
Comando MOV DPTR,#datos16 Cargue un puntero de datos con una constante de 16 bits
Comando MOVC A,@A+( ) Enviar byte desde la memoria del programa
Enviar datos a la memoria externa (desde la memoria externa)

Versión básica MCS–51 Información breve. Los microcontroladores (MC) modernos de 8 bits tienen tales recursos de control en tiempo real, para los cuales se utilizaron diseños de múltiples chips previamente costosos en forma de placas de microcomputadora separadas, a saber:

● tener suficiente capacidad de memoria, su división física y lógica en memoria de programa y memoria de datos (arquitectura Harvard) y un sistema de comando destinado a ejecutar algoritmos de control;

● incluir todos los dispositivos (procesador, ROM, RAM, puertos de entrada/salida, sistema de interrupción, medios para procesar información de bits, etc.) necesarios para implementar un sistema de control por microprocesador de configuración mínima. En los años 70 del siglo pasado la empresa Intel Se ha desarrollado y lanzado a la producción industrial una familia de microcontroladores de 8 bits MCS-48, unidos por una serie de características comunes (capacidad de bits, sistema de comando, conjunto de bloques funcionales principales, etc.). La versión básica de esta familia incluye:

● procesador de 8 bits;

● memoria de programa interna (1/2/4K bytes);

● memoria interna de datos (64/128/256 bytes);

● hasta 27 líneas de E/S internas y 16 externas;

● un contador temporizador de 8 bits;

● sistema de interrupción de un solo nivel con dos fuentes de solicitud. En 1980, la misma empresa desarrolló una nueva familia de microcontroladores de ocho bits, MCS-51, que es compatible con la arquitectura de la familia MCS-48, pero tiene mayores capacidades.

La arquitectura de la familia MCS-51 resultó ser tan exitosa que sigue siendo uno de los estándares para MK de 8 bits. Por lo tanto, se eligió como objeto de estudio los microcontroladores de esta familia, los cuales son ampliamente utilizados en sistemas de control relativamente simples.

Se han desarrollado diversas herramientas de preparación de programas para la familia MCS-51 (compiladores, emuladores hardware-software, etc.) y existe un gran número de bibliotecas de rutinas estándar. La familia incluye varias modificaciones de microcircuitos (versiones de chip) de microcontroladores. Los artículos de esta sección analizan con cierto detalle la versión básica de los microcontroladores de la familia MCS-51 (el microcircuito 8051 corresponde al análogo doméstico KP1816BE51), el más simple en términos estructurales y funcionales y desde el punto de vista de la comprensión.

Las series posteriores de microcircuitos, aunque mantienen la compatibilidad con la versión básica, se diferencian de ella en la tecnología de fabricación mejorada, los parámetros eléctricos, el hardware adicional y la funcionalidad. Los siguientes artículos están dedicados a las características estructurales y funcionales de modificaciones posteriores de la familia de microcircuitos MCS-51.
Diagrama de bloques generalizado del MCS-51. La composición del MC, cuyo diagrama de bloques generalizado se muestra en la Fig. 7.1.1, incluye:

● Unidad central de procesamiento (CPU) de 8 bits que consta de ALU, dispositivos de control UU. y generador de direcciones F;

● ROM de máscara con una capacidad de 4K bytes para almacenar programas;

● RAM con capacidad de 128 bytes para almacenamiento de datos;

● cuatro puertos programables P0–P3 para entrada/salida de información;

● unidad de interfaz serie BPI para intercambiar información con dispositivos externos a través de una línea de dos hilos;

● bloque de temporizadores/contadores BT/C para mantener el modo de tiempo real;

● Bloque de interrupción BP para organizar interrupciones de programas ejecutables. Estos fondos forman residente Parte del microcontrolador ubicada directamente en el chip. El MK incluye una gran cantidad de registros, que están asignados a bloques funcionales separados y no se muestran en el diagrama.

El diagrama tampoco muestra circuitos de control. El intercambio bidireccional de información entre bloques se realiza a través de 8 bits internos. bus de datosШД-8.

Por 16 bits internos autobús de direccionesША-16 La dirección generada en la CPU se envía a la ROM (12 bits de dirección) y a la RAM (8 bits de orden inferior).

Cuando se utiliza memoria externa, los 8 bits menos significativos de la dirección se envían al puerto P0 y los 3 u 8 bits más significativos al puerto P2.

Para expandir lógicamente la interfaz, se utiliza la combinación de las funciones de las líneas portuarias. Como ejemplo en la Fig. 7.1.1 la línea de puntos muestra las líneas del puerto P3 que realizan alternativa funciones de transmisión de señales de control, cuyo propósito se analizará a continuación. Para crear un generador de reloj interno, se conectan un resonador de cuarzo y dos condensadores a los terminales del microcircuito MK (Fig. 7.1.1). En lugar de un generador de reloj interno, se puede utilizar una fuente de oscilación externa para la sincronización. La designación gráfica convencional del microcircuito MK se muestra en la Fig. 7.1.2, designación y finalidad de los pasadores - en la tabla. 7.1.1. Consideremos los bloques funcionales del MK y el principio de su funcionamiento. Dispositivo de lógica aritmética. El dispositivo aritmético-lógico está diseñado para realizar operaciones aritméticas (incluidas multiplicación y división) y lógicas en operandos de ocho bits, así como operaciones de desplazamiento lógico, puesta a cero, puesta a cero, etc. El diagrama de bloques de la ALU se muestra en la Fig. 7.1.3.

La ALU incluye

● paralelo de ocho bits sumador SM de tipo combinacional con acarreo secuencial, que realiza operaciones aritméticas (suma y resta) y lógicas (suma, multiplicación, disparidad e identidad);

batería A, proporcionar las funciones del registro aritmético principal;

registro B, utilizado para implementar operaciones de multiplicación y división o como un registro superoperacional adicional, cuyas funciones las determina el usuario;

registros(software no disponible) almacenamiento temporalРВХ1, РВХ2, destinados a recibir y almacenar operandos durante la operación;

●ROM constantes ROM, que almacena el código de corrección para la representación decimal binaria de datos, el código de máscara para operaciones de bits y el código para constantes;

registro de palabras de estado del programa PSW, que registra el estado de la ALU después de una operación completa. En mesa 7.1.2 proporciona información sobre la asignación de bits de bits individuales del registro PSW. Dispositivo de control. Unidad de control (CU) del procesador central destinado coordinar el trabajo conjunto de todos los nodos MC utilizando pulsos de reloj generados y señales de control. Consta de (Fig. 7.1.4):

unidad de sincronización y control El sistema de control, que genera pulsos de reloj que definen los ciclos de la máquina y sus estados individuales (S) y fases (P) y, dependiendo del modo de funcionamiento del microcontrolador, genera el conjunto necesario de señales de control. Se necesitan uno, dos o cuatro ciclos de máquina para ejecutar un comando.

Cada ciclo de máquina tiene seis estados S1–S6, A cada estado incluye dos fases P1, P2, cuya duración es el período de oscilación del generador de reloj T 0SC.

La duración del ciclo de la máquina es 12T 0SC. Todos los ciclos de la máquina son iguales, comenzando con la fase S1P1 y terminando con la fase S6P2.

Además de los pulsos de reloj, el dispositivo de sincronización genera dos (a veces una) señales de activación para el byte bajo de la dirección ALE en cada ciclo de la máquina en forma de un pulso positivo en las fases S1P2–S2P1 y S4P2–S5P1. Diagramas de tiempos en la Fig. 7.1.5 ilustran la organización de los ciclos de la máquina;

● registro de comando RK, decodificador de comandos DC y PLM, permitiendo en cada ciclo de la máquina generar un conjunto de microoperaciones de acuerdo con el microprograma del comando ejecutado;

● Lógica de entrada/salida LVV para recibir y emitir señales que aseguran el intercambio de información del MK con dispositivos externos a través de los puertos P0–P3;

● Registro PCON, que tiene un único bit SMOD habilitado en la posición PCON.7 para duplicar la velocidad de datos del puerto serie. Los bits restantes se reservan para su uso posterior.
Generador de direcciones. Generador de direcciones (FA), o contador de comandos de PC, destinado para formar la dirección actual de 16 bits de la memoria del programa y la dirección de 8/16 bits de la memoria de datos externa. Consta de (Fig. 7.1.6):

● 16 bits buffer B, que comunica entre el bus de datos SD de 8 bits y el bus interno (IB) de 16 bits de la dirección anterior;

● Circuito incremental SI para aumentar en uno el valor de la dirección de memoria del programa actual;

● registro para almacenar la dirección actual de los comandos PTA provenientes del SI;

● registro de puntero de datos DPTR , que consta de dos registros de 8 bits DPH y DPL. Sirve para almacenar una dirección de 16 bits de una memoria de datos externa y se puede utilizar como dos RON independientes accesibles por software;

● registro del generador de direcciones XRF para almacenar la dirección ejecutiva de 16 bits de la memoria de programa o la dirección de 8/16 bits de la memoria de datos externa. Este registro también se utiliza para transmitir datos a través del puerto P0 a dispositivos externos al ejecutar los comandos MOVX @Rm, A y MOVX @DPRT, A.

Memoria de datos. memoria de datos destinado para recibir, almacenar y emitir información utilizada durante la ejecución del programa. La memoria de datos interna (residente) (Fig. 7.1.7) consta de RAM con una capacidad de 128 bytes, puntero de pila SP registro de direcciones RAM RA y descifrador Dsh. El puntero de pila SP es un registro de 8 bits diseñado para recibir y almacenar la dirección de la celda de la pila a la que se accedió por última vez. Después del reinicio, el puntero de la pila se establece en la dirección 07H, que corresponde al comienzo de la pila con la dirección 08H. El registro de dirección PA junto con el decodificador Dsh permite el acceso a la celda de memoria requerida que contiene un byte o un bit de información.

El MK ofrece la posibilidad de aumentar la capacidad de la memoria de datos hasta 64 KB conectando dispositivos de almacenamiento externo. Como ejemplo en la Fig. 7.1.8 muestra la organización de páginas de la memoria de datos VPD externa con capacidad de 2K bytes usando comandos tipo MOVX @ Rm(m = 0; 1). En este caso, el puerto P0 funciona como un bus de dirección/datos multiplexado, tres líneas del puerto P2 se utilizan para direccionar una página de RAM externa y las cinco líneas restantes se pueden utilizar como líneas de entrada/salida.
En la Fig. 7.1.9 muestra diagramas de tiempo de los ciclos de lectura y escritura cuando el MK funciona con RAM externa. Los diagramas indican:

● RSN - byte alto del contador de comandos del PC;

● DPL, DPH: bytes bajos y altos del registro de puntero de datos DPTR, que se utiliza como registro para direccionamiento indirecto en los comandos MOVX @DPTR,A y MOVX A,@DPTR;

● P2 SFR: pestillos del puerto P2;

● Rm (m = 0, 1): registros utilizados en las instrucciones MOVX @Rm, A y MOVX A, @Rm como registros de dirección indirecta;

● Z - estado de alta resistencia;

● D: el período durante el cual los datos del puerto P0 se ingresan en el microcontrolador. Memoria de programa. La memoria de programa está diseñada para almacenar programas, tiene su propio espacio de direcciones (separado de la memoria de datos) y es de solo lectura. Incluye decodificador Dsh y ROM (Fig. 7.1.10). Para direccionar la memoria del programa se utiliza un contador de PC de 16 bits, por lo que su capacidad máxima es de 64K bytes. La memoria interna del programa consta de una ROM de 4K bytes y un decodificador de 12 bits. La memoria externa se conecta según el diagrama de la Fig. 7.1.11. Si se aplican 0 V al pin ¯EA del MK (como se muestra en la Fig. 7.1.11), la memoria interna del programa se desactiva. Todos los accesos a la memoria comienzan en la dirección 0000h. Cuando el pin ¯EA está conectado a una fuente de alimentación, el acceso a la memoria interna del programa en las direcciones 0000h–FFFFh y a la memoria externa del programa en las direcciones 0FFFh–FFFFh se produce automáticamente.

Para leer la memoria externa de los programas MK se genera la señal ¯PSEN. Cuando se trabaja con memoria interna, no se utiliza la señal de lectura. Al acceder a la memoria de programa externa, siempre se forma una dirección de 16 bits. El byte bajo de la dirección se transmite a través del puerto P0 en la primera mitad del ciclo de la máquina y se fija mediante el corte del estroboscopio ALE en el registro. En la segunda mitad del ciclo, el puerto P0 se utiliza para ingresar un byte de datos de la memoria externa al MK.

El byte más significativo de la dirección se transmite a través del puerto P2 durante todo el tiempo de acceso a la memoria.

Los diagramas de tiempo de los ciclos de lectura y escritura cuando el MK está funcionando con RAM externa se muestran en la Fig. 7.1.12.
Los diagramas indican:

● PCL OUT - salida del byte bajo del contador del programa de PC;

● RSN OUT - salida del byte alto del contador de comandos del PC;

● DPH: byte alto del registro de puntero de datos DPTR, que se utiliza como registro para el direccionamiento indirecto en las instrucciones MOVX @DPTR,A y MOVX A,@DPTR;

● P2 SFR: pestillos del puerto P2;

● INS IN - entrada del byte de instrucción (comando) desde la memoria del programa;

● ADDR OUT: emite el byte bajo de la dirección de la memoria de datos externa desde los registros Rm (m = 0, 1) o desde el registro DPL (registro bajo DPTR). Puertos de E/S. Asignación de puerto. Puertos P0, P1, P2, P3 destinado para intercambiar información entre el MK y dispositivos externos, y también para realizar las siguientes funciones:

● el byte bajo de la dirección A7…A0 se emite a través del puerto P0; un byte de datos sale del MK y se ingresa en el MK cuando se trabaja con una memoria de programa externa y una memoria de datos externa (separada por tiempo);

● a través del puerto P2, el byte alto de la dirección A15...A8 se emite cuando se trabaja con memoria de programa externa y memoria de datos externa (sólo cuando se utilizan los comandos MOVX A,@DPTR y MOVX @DPTR,A);

● Las líneas del puerto P3 se pueden utilizar para realizar funciones alternativas si se ingresa 1 en el pestillo de esta línea, de lo contrario se fija 0 en la salida de línea. Las funciones alternativas de los pines del puerto P3 se dan en la tabla. 7.1.3.

Características del circuito de los puertos.

En la Fig. 7.1.13 muestra diagramas para un canal de cada uno de los puertos MK, que incluyen:

● pestillo para fijar el bit de datos recibidos;

● amplificador de salida cascada(conductor);

● nodo Conexión con etapa de salida (excepto P2);

● un circuito para transmitir un bit de datos desde el lado de salida del puerto, que consta de los buffers B2 y B3 (para el puerto P4). El pestillo es un flip-flop D, sincronizado por la señal interna "Escribir en pestillo". El bit de datos de la salida directa del flip-flop D se puede leer mediante programación a través del búfer B1 usando la señal "Read Latch" a la línea del bus de datos interno (ID) del MK.

Etapa de salida El puerto P0 es un inversor, cuyas características se manifiestan en el hecho de que el transistor de carga VT2 se abre solo cuando se accede a la memoria externa (al transmitir direcciones y datos a través del puerto). En todos los demás modos, el transistor de carga está cerrado. Por lo tanto, para utilizar P0 (Fig. 7.1.13, a) como puerto de salida de uso general, es necesario conectar resistencias de carga externas a sus terminales. Al escribir 1 en el pestillo del puerto, el transistor inversor VT1 se bloquea y el pin externo del puerto P0.X cambia a un estado de alta resistencia. En este modo, la salida del puerto P0.X puede servir como entrada. Si el puerto P0 se utiliza como puerto de E/S de uso general, cada uno de sus pines P0.X puede funcionar de forma independiente como entrada o salida. Etapas de salida puertos P1, P2, P3 (Fig. 7.1.13, b, c, d) realizado según circuitos inversores con una resistencia de carga interna, que se utiliza como transistor VT2.

Para reducir el tiempo de conmutación cuando los pines del puerto pasan del estado 0 al estado 1, se introdujo un transistor VT3 adicional en paralelo con el transistor de carga VT2. El transistor VT3, utilizando elementos del circuito de compuerta, se desbloquea durante un tiempo igual a dos períodos de oscilación del oscilador de cuarzo maestro (durante las fases S1P1, S2P2 del ciclo de la máquina). Etapas de salida Los puertos P0, P2 (Fig. 7.1.13, A, c) que utilizan el multiplexor MX se pueden conectar a pestillos o a los buses internos “Dirección/datos” y “Dirección”. La etapa de salida del puerto P1 (Fig. 7.1.13, 6) está conectada permanentemente al pestillo.

Si el pin del puerto P3 es una salida y su pestillo contiene 1, entonces su etapa de salida está controlada por la señal interna del hardware "Función de salida alternativa", asegurando la ejecución de la función alternativa correspondiente, es decir. En el pin externo se genera una de las señales ¯WR, ¯RD o RxD. Si la salida del puerto se utiliza como entrada, entonces la señal alternativa que llega a él (TxD, ¯INT0, ¯INT1, T0, T1) se transmite a la línea interna "Función de entrada alternativa".

Modo de grabación de puerto.

Cuando se ejecuta un comando de escritura de puerto, el nuevo valor se escribe en el pestillo en la fase S6P2 y se envía directamente al pin de salida del puerto en la fase S1P1 del siguiente ciclo de la máquina.

Modo de lectura de puerto

Los comandos de lectura de puerto leen información directamente desde los pines externos de un puerto o desde las salidas de pestillo. En el primer caso, el bit de datos del pin del puerto se lee mediante programación a través del búfer B2 utilizando la señal "Read Pins" a la línea del bus de datos interno (SD) del MK. Tenga en cuenta que las señales "Escribir en pestillo", "Leer pestillo", "Leer pines" se generan en el hardware cuando se ejecutan los comandos correspondientes.

En el segundo caso, se implementa el modo llamado "Lectura-Modificación-Escritura", en el que el comando lee la señal del estado del pestillo, la modifica si es necesario y luego la vuelve a escribir en el pestillo. El modo “Lectura-Modificación-Escritura” se implementa al ejecutar los siguientes comandos: ANL, ORL, XRL, JBC; CPL; Cª; DIC; DJNC; MOV PX,Y; CLR PX.Y; AJUSTE PX,Y.

Leer información de las salidas de los pestillos le permite eliminar errores al interpretar el nivel lógico en el pin del puerto. Lea la continuación del artículo.

Actualmente, varias empresas producen muchas modificaciones y análogos de esta familia, tanto de Intel como de otros fabricantes, la velocidad del reloj y la capacidad de la memoria se han multiplicado por diez y continúan aumentando. El conjunto de módulos integrados en el LSI también se está ampliando; una gran cantidad de modelos modernos tienen un ADC residente de alta velocidad incorporado con hasta 12 bits, y ahora puede haber más. Pero la familia MCS51 se basa en los Intel LSI 8051, 80С51, 8751, 87С51, 8031, 80С31, cuyas primeras muestras se lanzaron en 1980.

Los microcontroladores de la familia MCS51 se fabrican utilizando tecnología n-MOS de alta calidad (serie 8ХХХ, analógica - serie 1816 en Rusia y Bielorrusia) y tecnología k-MOS (serie 8ХСХХ, analógica - serie 1830). El segundo carácter después del 8 significa: 0 – no hay EPROM en el chip, 7 – una EPROM 4K con borrado ultravioleta. Tercer carácter: 3 – ROM en el chip, 5 – si no hay ROM, entonces hay una ROM de máscara en el chip.

Y así, 80С51 es un LSI basado en tecnología k-MOS con una ROM de máscara en el chip, 8031 ​​​​es un LSI n-MOS sin memoria de programa (ROM, RPOM) en un chip, 8751 es un LSI n-MOS con un residente (ubicado en el chip) RPOM con borrado ultravioleta. Consideraremos más a fondo el 8751 LSI, haciendo, si es necesario, reservas sobre las diferencias entre otros circuitos, citando los parámetros que se publicaron para los primeros LSI en serie. Si es necesario, encontrará información adicional sobre todas las modificaciones modernas en los directorios de empresas y en la documentación técnica.

A. Características generales y asignación de pines.

La familia MCS51 se basa en cinco modificaciones del MK (que tienen características básicas idénticas), cuya principal diferencia es la implementación de la memoria del programa y el consumo de energía (ver Tabla 3.1). El microcontrolador es de ocho bits, es decir. tiene comandos para procesar palabras de ocho bits, tiene arquitectura Harvard, la frecuencia de reloj de las muestras básicas de la familia es de 12 MHz.

Tabla 3.1.

Microcircuitos

Memoria interna del programa, bytes

Tipo de memoria del programa

Memoria de datos interna, byte

Frecuencia de reloj, MHz

Consumo de corriente, mA

MK 8051 y 80C51 contienen una memoria de programa ROM programable por máscara con una capacidad de 4096 bytes durante la fabricación del chip y están diseñados para su uso en producción en masa. MK 8751 contiene un RPOM de 4096 bytes con borrado ultravioleta y es conveniente en la etapa de desarrollo del sistema al depurar programas, así como durante la producción en lotes pequeños o al crear sistemas que requieren reescritura durante la operación.

ajuste periódico.

MK 8031 ​​​​y 80C31 no contienen memoria de programa incorporada. Ellos, al igual que las modificaciones descritas anteriormente, pueden usar hasta 64 KB de memoria de programa externa y se usan efectivamente en sistemas que requieren un volumen significativamente mayor (que 4 KB en el chip) de memoria de programa ROM.

Cada MK de la familia contiene una memoria de datos residente con una capacidad de 128 bytes con la capacidad de ampliar la cantidad total de datos RAM hasta 64 KB mediante el uso de IC de RAM externos.

    procesador central de ocho bits;

    Memoria de programa de 4 KB (sólo 8751 y 87C51);

    memoria de datos de 128 bytes;

    cuatro puertos de E/S programables de ocho bits;

    dos temporizadores/contadores multimodo de 16 bits;

    sistema de interrupción de vector automático con cinco vectores y dos niveles de prioridad controlados por software;

    interfaz serie, que incluye un transceptor dúplex universal capaz de funcionar en cuatro modos;

    generador de reloj.

El sistema de comandos MK contiene 111 comandos básicos con un formato de 1, 2 o 3 bytes. El microcontrolador tiene:

    32 registros de propósito general RON, organizados en cuatro bancos de ocho registros cada uno con nombres R0... R7, la elección de un banco u otro la determina el programa configurando los bits correspondientes en el registro de estado del programa PSW;

    128 banderas controladas por software (procesador de bits, ver más abajo);

    un conjunto de registros de funciones especiales que controlan elementos MK. Existen los siguientes modos de funcionamiento del microcontrolador:

1). Reinicio general. 2).Funcionamiento normal. 3).Modo de bajo consumo de energía y modo inactivo. 4). Modo de programación para RPOM residente, si está disponible.

Aquí nos centraremos en los dos primeros modos de funcionamiento; en el Apéndice P1 se proporciona una descripción detallada de la composición y funcionamiento del MK en todos los modos.

El RON y el área del procesador de bits se encuentran en el espacio de direcciones de la RAM residente con direcciones de 0 a 80h.

En la zona superior de las direcciones de la RAM residencial hay registros de funciones especiales (SFR, Special Function Registers). Su finalidad se da en la tabla. 3.2.

Tabla 3.2.

Designación

Nombre

Batería

Registro B

Registro de estado del programa

puntero de pila

Puntero de datos. 2 bytes:

byte bajo

byte alto

Registro de prioridad de interrupción

registro de habilitación de interrupción

Registro del modo temporizador/contador

Registro de control de temporizador/contador

Temporizador/contador 0. Byte alto

Temporizador/contador 0. Byte bajo

Temporizador/contador 1. Byte alto

Temporizador/contador 1. Byte bajo

Control de puerto serie

Búfer serie

Gestión del consumo

* - registros, permitiendo bit a bit direccionamiento

Veamos brevemente las funciones de los registros SFR que se muestran en la Tabla 3.2.

Batería CAC - registro acumulador. Comandos diseñados para funcionar

usted con la batería, utilice el mnemotécnico "A", por ejemplo, MOVIMIENTO A, P2 . El mnemotécnico ACC se utiliza, por ejemplo, al direccionar bit a bit a un acumulador. Así, el nombre simbólico del quinto bit del acumulador cuando se utiliza el ensamblador A5M51 será el siguiente: ACC. 5. .

Registro EN . Se utiliza durante operaciones de multiplicación y división. Para otras instrucciones, el registro B puede tratarse como un registro adicional en tiempo real.

Registro estado programas P.S.W. contiene información sobre el estado del programa y se instala en parte automáticamente en función del resultado de la operación realizada y en parte por el usuario. La designación y el propósito de los bits de registro se dan en las Tablas 3.3 y 3.4, respectivamente.

Tabla 3.3.

Designación

Tabla 3.4.

Designación

Asignación de bits

Acceso a bits

Llevar bandera. Cambios durante la ejecución de una serie de instrucciones aritméticas y lógicas.

Hardware o software

Bandera de transporte adicional. Se establece/borra en el hardware durante las instrucciones de suma o resta para indicar un acarreo o préstamo en el bit 3 cuando se genera el mordisco menos significativo del resultado (D0-D3).

Hardware o software

Bandera 0. Bandera definida por el usuario.

programáticamente

programáticamente

Índice bancario del registro de trabajo

programáticamente

Banco 0 con direcciones (00Н - 07Н) Banco 1 con direcciones (08Н - 0FН) Banco 2 con direcciones (10Н - 17Н) Banco 3 con direcciones (18Н - 1FН)

Bandera de desbordamiento. Configurado o borrado por hardware durante la ejecución de instrucciones aritméticas para indicar una condición de desbordamiento

Hardware o software

Repuesto. Contiene un activador grabable y legible que se puede utilizar

Bit de paridad. Restablecimiento o configuración del hardware en cada ciclo de instrucción para indicar un número par o impar de bits de batería en el estado "1".

Hardware o software

Puntero pila SP - Un registro de 8 bits cuyo contenido se incrementa antes de escribir datos en la pila cuando se ejecutan las instrucciones PUSH y CALL. En el reinicio inicial, el puntero de la pila se establece en 07H y el área de la pila en la RAM de datos comienza en la dirección 08H. Si es necesario, al anular el puntero de la pila, el área de la pila se puede ubicar en cualquier lugar de la RAM interna de los datos del microcontrolador.

Puntero datos DPTR consta de un byte alto (DPH) y un byte bajo

(DPL). Contiene una dirección de 16 bits al acceder a la memoria externa. Puede ser usado

Puede ser un registro de 16 bits o dos registros independientes de ocho bits.

Puerto0 - PuertoZ. Los bits separados de los registros de funciones especiales P0, P1, P2, RZ son los bits "enclavamientos" de los puertos P0, P1, P2, RZ.

Buffer coherente puerto SBUF representa dos registros separados: el buffer del transmisor y el buffer del receptor. Cuando los datos se escriben en el SBUF, ingresan al búfer del transmisor y al escribir un byte en el SBUF se inicia automáticamente la transmisión a través del puerto serie. Cuando los datos se leen desde SBUF, se recuperan del búfer del receptor.

Registros Temporizador. Pares de registros (TH0, TL0) y (TH1, TL1) del formulario 16

registros de conteo de bits para el temporizador/contador 0 y el temporizador/contador 1, respectivamente.

Registros gestión. Los registros de funciones especiales IP, IE, TMOD, TCON, SCON y PCON contienen bits de control y bits de estado del sistema de interrupción, tiempo-

metros/contadores y puerto serie. Se discutirán en detalle a continuación.

RxD TxD INT0 INT1 T0 T1 WR

P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

PRIMER BQ2 bq 1 E.A.

P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7

P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7

P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7

Cuando está en funcionamiento, el MC proporciona:

    el tiempo mínimo de ejecución para comandos de suma es 1 μs;

    multiplicación y división por hardware con un tiempo mínimo de ejecución de 4 μs.

El MK ofrece la posibilidad de configurar la frecuencia del oscilador interno utilizando cuarzo, una cadena LC o un oscilador externo.

El sistema de instrucción extendido proporciona direccionamiento de bytes y bits, aritmética binaria y decimal binaria, indicación de desbordamiento y determinación par/impar, y la capacidad de implementar un procesador lógico.

La característica más importante y distintiva de la arquitectura de la familia MCS51 es que la ALU puede manipular datos de un solo bit además de realizar operaciones en tipos de datos de 8 bits. Los bits individuales accesibles al software se pueden configurar, borrar o reemplazar por su complemento, se pueden reenviar, verificar y

Fig.3.2. Pasadores externos

microcontrolador

utilizado en cálculos lógicos. Considerando que el soporte para tipos de datos simples (si está disponible)

Si bien la tendencia actual hacia longitudes de palabras más largas puede parecer un paso atrás a primera vista, esta cualidad hace que la familia de microcontroladores MCS51 sea particularmente adecuada para aplicaciones basadas en controladores. Los algoritmos de funcionamiento de estos últimos presuponen la presencia de variables booleanas de entrada y salida, que son difíciles de implementar utilizando microprocesadores estándar. Todas estas propiedades se denominan colectivamente procesador booleano de la familia MCS51. Esta potente ALU hace que la familia de microcontroladores MCS51 sea adecuada tanto para aplicaciones de control en tiempo real como para algoritmos con uso intensivo de datos.

El diagrama del circuito del microcontrolador se muestra en la Fig. 3.2. En la versión básica, está empaquetado en un paquete DIP de 40 pines. Veamos el propósito de los alfileres.

Empecemos con los pines de alimentación. «0 EN" Y "5 EN" , a través del cual recibe una nutrición básica. El consumo actual se da en la tabla. 3.1.

Conclusión "PRM" - reinicio del microcontrolador. Cuando se aplica un nivel alto activo a este pin, el modo general reiniciar y MK realiza las siguientes acciones:

Pone a cero el contador del programa de PC y todos los registros de funciones especiales, excepto los pestillos del puerto P0-P3, el puntero de la pila SP y el registro SBUF;

    el puntero de la pila toma el valor igual a 07H;

    Deshabilita todas las fuentes de interrupción, temporizador-contador y serial.

    selecciona la RAM del BANCO 0, prepara los puertos P0-RZ para recibir datos y determinar

comparte pines ALE y PME como entradas para sincronización externa;

      en los registros de funciones especiales PCON, IP e IE, los bits reservados toman valores aleatorios y todos los demás bits se ponen a cero;

      el registro SBUF se establece en valores aleatorios.

      establece los pestillos de los puertos P0-PZ en "1".

Los estados de los registros del microcontrolador después del reinicio se muestran en la Tabla 3.5.

Tabla 3.5.

Información

Incierto

0ХХХ0000V para k-MOS 0XXXXXXXB para n-MOS

El pin RST también tiene una función alternativa. A través de él se suministra energía de respaldo para mantener sin cambios el contenido de la RAM del microcontrolador cuando se retira la principal.

conclusiones BQ1, BQ2 están destinados a conectar un resonador de cuarzo que determina la frecuencia del reloj del MK.

Conclusión EA` (mi externo A vestido externo DIRECCIÓN) - diseñado para activar el modo de lectura de códigos de control de la memoria de programa externa cuando se aplica un nivel bajo activo a este pin. La salida tiene un propósito (función) alternativo. Se alimenta con tensión de programación desde el RPOM en modo de programación.

Conclusión PME (PAG programa METRO emory mi nable permiso memoria programas) - está diseñado para controlar el ciclo de lectura desde la memoria del programa y el MK lo activa automáticamente en cada ciclo de la máquina.

Conclusión CERVEZA INGLESA (A vestido l longitud mi nable permiso júnior direcciones) Destella la salida de la parte de orden inferior de la dirección a través del puerto P0. La salida también se utiliza al programar el RPOM, mientras se le suministra un pulso estroboscópico para el proceso de programación.

El MK contiene cuatro grupos de puertos: P0, P1, P2 y P3. Estos son los 40 pines restantes del microcontrolador. Estos puertos pueden servir para la entrada y salida de información bit a bit, pero además, cada uno de ellos tiene su propia especialización. Un diagrama funcional generalizado del puerto se muestra en la Fig. 3.3. El puerto contiene interruptores de salida FET conectados al pin, un interruptor de función, un pestillo flip-flop D y lógica de control. Se puede escribir una unidad o cero en el pestillo del bus interno del MK. Esta información se envía a través del interruptor de función a los interruptores de salida y a la salida del MK. En un estado, ambos transistores N y N1 están cerrados, pero N2 está abierto. En el estado cero N se abre-

Xia y N2 se cierran. En el momento en que un puerto realiza una función alternativa para la cual está especializado, se borra el estado de bloqueo de salida. El microcontrolador puede leer por separado el estado del pestillo del puerto y el estado de su salida, establecido por una señal externa. Para ello, el ensamblador MK contiene comandos especiales que activan las líneas correspondientes. Para leer el estado del pin en el pestillo del puerto correspondiente, el

estar pregrabado

Desde interno

Pestillo de control

interruptor de función

vcc

Fin de semana

unidad. Cuando se activa la línea “read latch”, aparece la salida de la celda “Y” a la que está conectada esta línea.

sus neumáticos MK D Q

Escribir para cerrar C Q

Leer pestillo

Pin de puerto

El estado del pestillo se transmite al bus interno del MC cuando se activa

“salida de lectura”: el estado del pin externo del puerto.

Puerto P0 – puerto bidireccional universal

E/S Más allá de este puerto

la función de organizar buses de direcciones externos y

Arroz. 3.3. Diagrama funcional del puerto del microcontrolador.

datos para ampliar la memoria de programas y la memoria de datos

microcontrolador. Cuando se accede a la memoria de programa externa o se ejecuta un comando para acceder a la memoria de datos externa, la parte de orden inferior de la dirección (A0...A7) se establece en los pines del puerto, que se activa en el nivel alto en el pin ALE. Luego, al escribir datos en la memoria, la información grabada desde el bus interno del MK se envía a los pines del puerto P0. En las operaciones de lectura, por el contrario, la información de los pines del puerto se envía al bus interno. Una característica del puerto P0 es la ausencia de un transistor N2 "pull-up", que proporciona energía a la salida. Al escribir en el pestillo del puerto de la unidad, simplemente se transfiere a un estado de alta impedancia, que es necesario para el funcionamiento normal del bus de datos. Si es necesario alimentar algún dispositivo externo a través de la salida, se deben proporcionar resistencias externas desde los circuitos de alimentación hasta la salida del puerto.

Puerto P1 – Puerto de E/S bidireccional universal sin funciones alternativas.

Puerto P2 – un puerto de E/S bidireccional universal que, como función alternativa, emite la parte alta de la dirección (A8...A15) al acceder a la memoria externa.

Puerto P3 – un puerto de E/S bidireccional universal, cada bit del cual permite la implementación de varias funciones alternativas. En este caso, las funciones alternativas se implementan sólo si se escriben en los pestillos de los pines del puerto; de lo contrario, se bloquea la ejecución de funciones alternativas. Enumerémoslos por separado para cada bit:

P3.0 RxD (R leer y X interno D comido, leído datos externos) – entrada del transceptor serial incorporado.

P3.1 TxD (t si e X interno D comido, transmitir datos externos) – salida del transceptor en serie incorporado.

P3.2 ENT0` (EN T erupción, interrupción) – entrada de interrupción externa 0.

P3.3 INT1` – entrada de interrupción externa 1.

P3.4 С/T0 – cero entrada de temporizador/contador incorporado.

P3.5 C/T1 – entrada del primer temporizador/contador incorporado.

P3.6 WR` (W. rito, escritura): salida para controlar el ciclo de escritura en la memoria de datos.

P3.7 RD` (R ead, read) – controla la salida del ciclo de lectura desde la memoria de datos.

Los pines del puerto P1, P2 y P3 son capaces de emitir una corriente de aproximadamente 0,2 mA por unidad y recibir una corriente de 3 mA en cero; los pines del puerto P0 son más potentes y son capaces de entregar una corriente de aproximadamente 0,8 mA en una unidad y recibiendo una corriente de 5 mA en cero. En la Tabla 3.6 se proporciona información breve sobre el propósito de los pines del microcontrolador.

Tabla 3.6.

Designación

Propósito de salida

Puerto bidireccional P1 de 8 bits. Entrada de dirección A0-A7 al comprobar la ROM interna (RPM)

entrada salida

Señal de reinicio general. Salida de energía de respaldo de RAM desde una fuente externa (para 1816)

Puerto P3 bidireccional de 8 bits con funciones adicionales

entrada salida

Datos seriales del receptor - RxD

Datos serie del transmisor - TxD

Entrada de interrupción externa 0-INT0`

Entrada de interrupción externa 1-INT1`

Entrada de temporizador/contador 0: - T0

Entrada temporizador/contador 1: - T1

Salida de señal estroboscópica al escribir en una memoria de datos externa: - WR`

Salida de señal estroboscópica al leer desde una memoria de datos externa – RD`

Cables para conectar un resonador de cuarzo.

entrada de salida

Conclusión general

Puerto bidireccional P2 de 8 bits. Dirección de salida A8-A15 en modo memoria externa. En el modo de verificación de ROM interna, los pines P2.0 - P2.6 se utilizan como entrada de las direcciones A8-A14. Pin P2.7 - Permiso de lectura de ROM.

entrada salida

Resolución de la memoria del programa

La fijación de dirección habilita la señal de salida. Al programar la señal RPOM: PROG

entrada salida

Bloqueo de trabajo con memoria interna. Al programar el RPOM se da la señal UPR

entrada salida

Puerto bidireccional P0 de 8 bits. Bus de direcciones/datos para trabajar con memoria externa. Salida de datos D7-D0 en modo de prueba de ROM interna (RPM).

entrada salida

Salida de energía desde una fuente de voltaje de +5V

Arquitectura del microcontrolador

Comprender la arquitectura del microcontrolador es clave al aprender lenguajes de programación ensambladores. La estructura del ensamblador, el formato de sus instrucciones, el direccionamiento de operandos, etc. están completamente determinados por la arquitectura. El propósito de estudiar arquitectura es:

· identificar el conjunto de registros disponibles para programación, su funcionalidad y estructura;

· comprensión de la organización de la RAM y el orden de su uso;

· familiaridad con los tipos de datos;

· estudiar el formato de los comandos de la máquina;

· aclaración de la organización del tratamiento de interrupciones.

La arquitectura de la familia MCS-51 está determinada en gran medida por su finalidad: la construcción de dispositivos digitales compactos y económicos. Todas las funciones MK se implementan mediante un solo microcircuito. La familia MCS-51 incluye una amplia gama de microcircuitos, desde los microcontroladores más simples hasta los bastante complejos. Los microcontroladores de la familia MCS-51 le permiten realizar tareas de control para varios dispositivos e implementar componentes individuales de un circuito analógico. Todos los microcircuitos de esta familia funcionan con el mismo sistema de comando, la mayoría de ellos están implementados en los mismos paquetes con el mismo pinout (numeración de pines para el paquete). Esto le permite utilizar microcircuitos de diferentes fabricantes (como Intel, Dallas, Atmel, Philips, etc.) para el dispositivo desarrollado sin alterar el diagrama del circuito del dispositivo y el programa.

MCS-51 se basa en la arquitectura Harvard, donde los espacios de direcciones de memoria de datos y programas están separados.

El diagrama de bloques del controlador se presenta en la Fig. 2.3 y consta de las siguientes unidades funcionales principales: unidad de control, unidad aritmético-lógica, unidad de temporizador/contador, interfaz serie e interrupciones, contador de programa (contador de programa), memoria de datos y programa. memoria.

La comunicación bidireccional se realiza mediante un bus de datos interno de 8 bits. Echemos un vistazo más de cerca al propósito de cada bloque. Casi todos los miembros de la familia MCS-51 están construidos según este esquema. Varios microcircuitos de esta familia se diferencian únicamente en los registros para fines especiales (incluido el número de puertos). El sistema de comando de todos los controladores de la familia MCS-51 contiene 111 comandos básicos con un formato de 1, 2 o 3 bytes y no cambia al pasar de un chip a otro. Esto garantiza una excelente portabilidad del programa de un chip a otro.

Unidad de control y sincronización(Timing and Control) está diseñado para generar señales de sincronización y control que aseguren la coordinación del funcionamiento conjunto de las principales unidades informáticas en todos los modos permitidos de su funcionamiento. La unidad de control incluye:


  • dispositivo para formar intervalos de tiempo,
  • circuito combinacional de entrada-salida,
  • registro de comando
  • decodificador de comandos.

Entrada y salida señales de la unidad de control y sincronización:

1 PSEN– resolución de la memoria del programa;

2 CERVEZA INGLESA– señal de salida de permiso de fijación de dirección;

3 PROG– señal de programación;

4 E.A.– bloquear el trabajo con la memoria interna;

5 PPV– tensión de programación;

6 primero– señal de reinicio general.

El dispositivo de sincronización es necesario para sincronizar la secuencia de estados de la CPU que forman el ciclo de la máquina, así como para el correcto funcionamiento de todos los pestillos internos y buffers de salida de los puertos. El ciclo de la máquina consta de seis estados consecutivos (States) desde S1 hasta S6, cada uno de los cuales, a su vez, se divide en dos fases:

fase 1 (Fase 1 - P1) y fase 2 (Fase 2 - P2). Así, un ciclo de máquina puede definirse como una secuencia de intervalos de tiempo S1P1, S1P2, S2P1,...,S6P2. La duración de la fase es igual al período de los pulsos del reloj, por lo que el ciclo de la máquina toma 12 períodos del reloj.

El número de ciclos de la máquina determina la duración de las instrucciones. Casi todas las instrucciones se ejecutan en uno o dos ciclos de máquina, excepto las instrucciones de multiplicación y división, que requieren cuatro ciclos de máquina para ejecutarse. La lógica de E/S está diseñada para recibir y emitir señales que aseguren el intercambio de información con dispositivos externos a través de los puertos de entrada/salida P0-P3.

Registro de comando diseñado para registrar y almacenar el código de operación de 8 bits del comando que se está ejecutando. El código de operación, con la ayuda de un decodificador de comando y una lógica de control por computadora, se convierte en un microprograma para ejecutar el comando.

Figura 2.3. Diagrama de bloques del microcontrolador de un solo chip Intel 8051

(familia MCS-51)

Unidad lógica aritmética(ALU) es una unidad paralela de ocho bits que realiza operaciones aritméticas y lógicas. La ALU consta de:

  • registros de almacenamiento temporal: TMP1 y TMP2,
  • constantes ROM,
  • sumador,
  • registro adicional - registro B,
  • batería - ACC,
  • registro de palabra de estado del programa (registro de bandera) - PSW.

Registros de almacenamiento temporal TMP1, TMP2- registros de ocho bits diseñados para recibir y almacenar operandos mientras se realizan operaciones sobre ellos. Estos registros no son accesibles mediante programación.

ROM constante asegura la generación de un código de corrección para la representación decimal binaria de datos, un código de máscara para operaciones de bits y un código constante.

Sumador paralelo de ocho bits Es un circuito de tipo combinacional con acarreo secuencial, diseñado para realizar operaciones aritméticas de suma, resta y operaciones lógicas de suma, multiplicación, disparidad e identidad.

Registro B- un registro de ocho bits utilizado durante las operaciones de multiplicación y división. Para otras instrucciones, puede tratarse como un registro adicional en tiempo real.

Batería- un registro de ocho bits diseñado para recibir y almacenar el resultado obtenido al realizar operaciones aritmético-lógicas u operaciones de desplazamiento.

Registro de estado del programa PSW (palabra de estado del programa) diseñado para almacenar la palabra de estado de los comandos ejecutados. Cuando se ejecutan muchas instrucciones en la ALU, se generan varios atributos de operación (banderas), que se registran en el registro de palabra de estado del programa (PSW). En mesa 1 proporciona una lista de banderas PSW, da sus nombres simbólicos y describe las condiciones para su formación.

Bloque de interfaz serie y de interrupción: UART (receptor/transmisor asíncrono universal) diseñado para organizar la entrada y salida de flujos de información secuenciales y organizar un sistema de interrupción del programa.

Por definición, una interrupción significa detener temporalmente el proceso principal de computación para realizar alguna acción planificada o no programada causada por la operación de hardware o software.

Estas acciones pueden ser de naturaleza de servicio, ser solicitudes del programa de usuario para realizar mantenimiento o ser una respuesta a situaciones de emergencia.

El estado del sistema de interrupción se consulta al final de cada ciclo de la máquina en la fase S5P2, con la excepción de las instrucciones RETI y cualquier instrucción que acceda a los registros IE e IP. Desde el momento en que se captura la solicitud de interrupción hasta que se atiende la interrupción, se necesitan de 38 a 86 períodos de frecuencia fOSC, dependiendo de la fase de la solicitud y el número de ciclos de máquina de la instrucción durante los cuales se ejecutó la solicitud.

Al implementar una interrupción en el hardware, se ejecuta el comando LCALL addr16, que garantiza que el estado actual del contador del programa se almacene en la pila (almacenando la dirección de retorno) y la transición a la dirección de inicio addr16 del procedimiento de servicio correspondiente. Cada fuente de solicitud de interrupción tiene su propia fuente asociada.

dirección inicial (vector de interrupción):

Interrupción externa INT0.

Interrupción del temporizador/contador TC0.

Interrupción externa INT1.

Interrupción del temporizador/contador TC1.

Interrupción del puerto serie.

2.7. Métodos de direccionamiento y sistema de mando de la familia MCS-51.

El sistema de comando de la familia MCS-51 está enfocado a organizar la entrada/salida de datos flexible a través de los puertos universales P0...P3 y el procesamiento de información primaria. Se presta especial atención a las operaciones con bits y a la transferencia de control en función de su valor. Las instrucciones que realizan tales operaciones forman un gran grupo y, junto con el hardware correspondiente, forman el llamado "procesador booleano" como parte de la arquitectura MCS-51.

El sistema de instrucción proporciona al programador la capacidad de utilizar la mayoría de las operaciones con una gama completa de métodos de direccionamiento y recursos de hardware disponibles en software.

2.7.1. Métodos de direccionamiento

Cada instrucción le dice al procesador la operación a realizar y cómo acceder a sus operandos. El código de comando tiene varios campos que tienen una funcionalidad específica. Los campos más importantes de cualquier comando son el código de operación (OPC), que determina la acción del comando, y la parte de dirección. Los campos de la parte de dirección contienen información sobre las direcciones de los operandos y el resultado de la operación y, en algunos casos, información sobre la dirección de la siguiente instrucción.

Si la dirección indica el número de la celda de memoria en la que se encuentra el operando o donde está almacenado, entonces se llama dirección directa.

Los métodos de direccionamiento son un conjunto de mecanismos para acceder a operandos. Algunos son simples, lo que da como resultado un formato de instrucción compacto y un acceso rápido a los operandos, pero tienen una cantidad limitada de recursos disponibles. Otros permiten operar con todos los recursos disponibles en el sistema, pero el comando resulta largo;

la entrada y la ejecución requieren mucho tiempo. El conjunto de métodos de direccionamiento en cada conjunto de instrucciones es una combinación de compromiso de mecanismos de direccionamiento conocidos, seleccionados por los diseñadores de arquitectura en función del conjunto de problemas que se resuelven.

Los siguientes son los principales métodos de direccionamiento utilizados en la familia de sistemas de comando MCS-51.

Direccionamiento implícito. El comando no contiene instrucciones explícitas sobre la dirección del operando involucrado en la operación o la dirección en la que se coloca el resultado de la operación, pero esta dirección está implícita. Los comandos suelen dirigirse implícitamente al acumulador como destino del resultado de la operación. Por ejemplo, el resultado de sumar el contenido del acumulador (A) y el registro R1 del banco de datos actual con el comando ADD A,R1 se escribe en el acumulador direccionable implícitamente. La instrucción especificada completa ocupa un byte en la memoria, mientras que la dirección únicamente del acumulador (área 8Eh SFR) contiene un byte.

direccionamiento directo. El campo de dirección de comando contiene

No es la dirección del operando lo que se almacena, sino el operando en sí. El direccionamiento directo se indica con el carácter especial # antes del número. Por ejemplo, con el comando MOV A,#15h, el número hexadecimal 15 (el segundo byte del comando) se carga en el acumulador. En el sistema de comando, el direccionamiento directo se designa como #datos, donde datos es un número

(datos = 00h...FFh).

direccionamiento directo. El campo de dirección del comando indica la dirección directa de la celda de memoria de datos en la que se encuentra el operando o donde está escrito. Por ejemplo, con el comando MOV A,15h, el contenido de la celda DSEG con dirección 15h se carga en el acumulador. La celda de memoria tiene direccionamiento directo y el acumulador tiene direccionamiento implícito. Dependiendo de la ubicación del operando direccionado, el direccionamiento directo se divide en registro directo y absoluto.

Direccionamiento directo de registro. El campo de dirección de comando especifica la dirección de registro directo del banco de registros actual. Hay ocho registros en cada banco y se requiere una dirección directa de tres bits para direccionarlos. En los mnemotécnicos del comando, el registro direccionado se designa Rn, donde n=0...7. Todos los campos de comando caben en un byte. Este tipo de direccionamiento se denomina direccionamiento corto. Por ejemplo, MOV R4,R1.

Direccionamiento absoluto directo le permite acceder a cualquier celda DSEG y área SFR. La dirección directa en este caso ocupa un byte y el comando ocupa dos bytes. En el sistema de comando, el byte de dirección directa se designa con la palabra directa (directa = 00h...FFh). Por ejemplo, la instrucción MOV 80h,R2 (o MOV P0,R2) carga el contenido del registro R2 del banco de datos actual en el puerto P0 (celda 80h del área SFR). Si ambos operandos tienen direccionamiento absoluto directo, entonces la instrucción pasa a ser de tres bytes (por ejemplo, MOV 80h,15h).

direccionamiento indirecto. El campo de dirección indica la dirección de la celda de memoria en la que se encuentra la dirección directa del operando. En el sistema de mando, el direccionamiento indirecto se indica con el símbolo especial @. Propiedad

Los registros R0 y R1 (@Ri, i = 0,1) de cada banco de registros almacenan la dirección directa. Por ejemplo, si el contenido del registro R1 del banco de registros actual es 15h, entonces la instrucción MOV A,@R1 realizará la misma acción que la instrucción MOV A,15h anterior: cargará el contenido de la ubicación de memoria DSEG. con dirección 15h en el acumulador. Sin embargo, el comando MOV A,@R1 es de un byte, pero lo más importante es que es posible cambiar la dirección mediante programación cambiando el contenido del registro R1.

direccionamiento relativo. En el direccionamiento relativo, la dirección directa se forma agregando la dirección base al campo de dirección del comando. La dirección base es el contenido del contador del programa y el campo de dirección de instrucción es un desplazamiento rel (relativo) de ocho bits. El comando interpreta el número rel como un entero con signo representado en complemento a dos. El rango de su presentación es (-128...+127). Al determinar el número rel se debe tener en cuenta que el contador del programa apunta a la siguiente instrucción a ejecutar. El direccionamiento relativo se utiliza ampliamente en instrucciones de transferencia de control, lo que permite la creación de módulos de programa reubicables. Los comandos de transferencia de control con direccionamiento relativo le permiten organizar bifurcaciones relativas a la posición actual del contador del programa de PC en ambas direcciones en (-128...+127) bytes.

En programas en lenguaje ensamblador, puede especificar la etiqueta a la que saltar en el campo de desplazamiento. Como resultado de la traducción, el ensamblador calculará el valor de compensación si no excede (-128...+127). De lo contrario se mostrará un mensaje de error.

Direccionamiento básico representa un tipo de direccionamiento relativo. La dirección directa en este caso se forma sumando la dirección especificada en el comando con el contenido del registro base, que almacena la dirección base. La función de registro base en la familia MCS-51 la realiza el registro de puntero de datos DPTR o el contador de programas de PC. Este tipo de direccionamiento es especialmente conveniente al procesar tablas y matrices de datos. En las instrucciones MOVC A,@A+DPTR y MOVC A,@A+PC, la dirección directa de 16 bits se forma como la suma del contenido de los registros DPTR y A o PC y A.

Direccionamiento de página. Cuando se utiliza el direccionamiento de páginas, la memoria se divide en varias páginas de igual longitud. El direccionamiento de las páginas se realiza mediante un registro de página independiente, y el direccionamiento de las celdas de memoria dentro de una página se realiza mediante la dirección contenida en el comando. La dirección directa se forma concatenando (adjuntando) la dirección de las páginas y la dirección de la celda de memoria dentro de la página. En la instrucción MOVX A,@Ri, la función de registro de página se realiza mediante el puerto P2 (el byte de dirección alta) y el contenido del registro Ri (el byte de dirección baja) especifica la dirección dentro de la página. En este caso la memoria se divide en 256 páginas con 256 celdas en cada una de ellas.

Direccionamiento de pila Se utiliza en comandos sin dirección y es una combinación de métodos de direccionamiento autoincrementales y autodecrementales, que funcionan según el principio LIFO (Última entrada - Primera salida): "último en entrar, primero en salir". La pila está ubicada en DSEG y crece hacia direcciones cada vez mayores. La dirección de la parte superior de la pila está contenida en el puntero de la pila SP. Cuando se escribe un byte en la pila, primero se incrementa el contenido del SP y luego se realiza una escritura en esa dirección. Al leer un byte de la pila, primero lee desde la dirección señalada por el SP y luego disminuye el SP. Cuando se utiliza una pila, es necesario tener en cuenta que la profundidad de la pila (el número máximo de celdas de memoria ocupadas por la pila) no está controlada por el hardware. Si la pila crece excesivamente, es posible que se ocupen celdas de memoria que no están destinadas a ella, provocando la pérdida de información en las mismas. La pila de hardware se utiliza para almacenar la dirección de retorno cuando se atiende una interrupción.

2.7.2. Sistema de mando de la familia MCS-51

El sistema de comando se presenta en las tablas A2.1...A2.6 del Apéndice 2. Las tablas indican el nombre del comando, sus mnemónicos, código de operación binaria, la influencia del comando ejecutado en las banderas C, OV, AC. y P, la longitud del comando en bytes (B) y el tiempo de ejecución en ciclos de máquina (C), así como el contenido de la transformación realizada por el comando. Se utiliza una coma como separador de campos de dirección en los comandos. Para mejorar la legibilidad, puede agregar espacios después de las comas si su ensamblador los admite.

El conjunto completo de comandos se puede dividir en 5 grupos: operaciones de transferencia de datos, operaciones aritméticas, operaciones lógicas, operaciones con bits y operaciones de transferencia de control.

Grupo de comandos de operaciones de transferencia de datos.(tabla A2.1) co-

contiene los comandos MOV (transferencia de datos entre DSEG y RSEG), MOVC (entre CSEG y A), MOVX (entre XSEG y A), comandos de acceso a la pila PUSH y POP, así como dos comandos de intercambio XCH y XCHD. Todas las instrucciones de transferencia de datos cuyo destino es el acumulador establecen el indicador de paridad P del acumulador, y las instrucciones de direccionamiento directo cuyo destino es el registro PSW cambian todos los indicadores. La más amplia es la instrucción MOV, que utiliza cuatro métodos de direccionamiento: registro directo (A, Rn, DPTR), directo (directo), indirecto (@Ri), inmediato (#data, #data16). El segundo operando de la instrucción es el origen, el primero es el destino. Hay tres métodos de direccionamiento (excepto el directo) para indicar el receptor y los cuatro para indicar la fuente. La instrucción directa MOV de tres bytes permite la transferencia entre dos ubicaciones de memoria cualesquiera (DSEG y SFR), incluido RSEG. Se proporcionan formatos especiales de dos y un byte para el intercambio con RSEG:

El comando especial MOV DPTR,#data16 le permite cargar un puntero DPTR de 16 bits con el valor data16.

La instrucción MOVC le permite leer información de la memoria del programa CSEG no en el registro de comando del dispositivo de control, sino en el acumulador del dispositivo operativo. El comando utiliza dos métodos de direccionamiento: basado en DPTR y relativo a PC. En ambos casos, el desplazamiento (índice) del entero sin signo se almacena en el acumulador. La batería también sirve como receptor del resultado. El comando le permite recodificar tablas rápidamente.

Se accede a la memoria externa mediante el comando MOVX. El intercambio se realiza byte a byte entre la batería y el XSEG externo. Una celda XSEG se puede direccionar de dos maneras: indirectamente mediante el puntero DPTR de 16 bits y paginación indirectamente mediante el puntero Ri de 8 bits, i=0,1. En el último caso, el registro de página es el registro P2.

Los comandos PUSH y POP sin dirección proporcionan transferencia de datos

entre DSEG, RSEG y SFR.

La instrucción de intercambio XCH proporciona un intercambio bidireccional de bytes y la instrucción XCHD proporciona tétradas de bytes de orden inferior.

Grupo de instrucciones de operaciones aritméticas.(tabla A2.2) co-

contiene las instrucciones para sumar ADD, llevar suma ADDC, tomar prestado resta SUBB, incrementar y disminuir en uno INC y DEC, corrección decimal de suma decimal codificada binaria empaquetada (BCD), multiplicación MUL y división DIV. Las operaciones se realizan con números enteros sin signo. En las operaciones de suma y resta, el primer operando y destino del resultado es el acumulador. Para determinar el segundo operando se utiliza registro directo, direccionamiento directo absoluto, inmediato e indirecto. Las operaciones INC y DEC se aplican a un acumulador, un registro directamente direccionable o una ubicación de memoria directa o indirectamente direccionable. Además, la operación INC se aplica al contenido del registro de puntero DPTR de 16 bits.

Las operaciones de multiplicación de enteros sin signo y división sin signo involucran el acumulador y el registro B. La multiplicación multiplica el valor de 8 bits de A por el valor de 8 bits de B y escribe el resultado de 16 bits en el par BA. En este caso, el registro B almacena la parte más alta del producto. El indicador OV se establece si el producto es mayor que 255. Al dividir el valor A de 8 bits por el valor B de 8 bits, el cociente se escribe en A y el resto en B. Al intentar dividir por 0, el desbordamiento La bandera OV está configurada.

El comando de corrección decimal del acumulador DA se coloca después del comando de suma. Los términos deben estar representados en código BCD. La corrección se realiza de forma estándar.

Grupo de comandos de operaciones lógicas.(Tabla A2.3 ) contiene tres operaciones estándar: ANL – AND lógico, ORL – OR lógico, XRL – OR lógico exclusivo. Fuente del primer operando

Sirve el acumulador A o una celda de memoria direccionable directamente. El segundo operando se especifica mediante uno de los cuatro métodos de direccionamiento básicos. El grupo también incluye operaciones individuales sobre el contenido del acumulador: CLR - limpieza, CPL - inversión, así como RL, RLC, RR y RRC - operaciones de desplazamiento cíclico y extendido hacia la derecha e izquierda. Esto también incluye la operación de intercambio de tétrada en el acumulador SWAP, que puede interpretarse como un desplazamiento cíclico de un byte de cuatro bits.

Grupo de operación de bits(tabla A2.6) contiene co-

Comandos SETB – establecer un bit en 1, CLR – restablecer un bit en 0, CPL – invertir un bit, ANL y ORL – AND lógico y OR lógico del contenido de la bandera C y el bit direccionado directamente, MOV – transferir un bit .

EN En operaciones de bits, el indicador C actúa como un acumulador booleano. Como operandos se utilizan el contenido de la bandera C o el bit directamente direccionable del área BSEG. Las operaciones ANL y ORL pueden utilizar el contenido del bit direccionado directamente (bit) o ​​el inverso del contenido (/bit).

EN Este grupo también incluye comandos de salto condicional con relativo Rel. de desplazamiento de 8 bits. Se puede realizar un salto condicional cuando el bit está establecido (comando JB) o cuando el bit se borra (comando JNB). De particular interés es el comando JBC, que, cuando se establece el bit, implementa una rama y al mismo tiempo restablece el bit a 0.

Grupo de comandos de transferencia de control.(tablas A2.4 y A2.5) co-

contiene las instrucciones de salto incondicional AJMP, LJMP, SJMP, JMP, salto condicional JZ, JNZ, CJNE, llamada ACALL, LCALL, retorno RET, RETI y modificación con salto condicional DJNZ. Aquí también se incluye un comando NOP vacío.

EN El direccionamiento relativo se utiliza ampliamente en comandos de transferencia de control, lo que permite la creación de módulos de programa reubicables. La dirección relativa es El rel de desplazamiento de 8 bits es un byte con signo que proporciona un salto a (–128… +127) bytes en relación con la posición actual de la PC. Para desplazarse a cualquier otro punto en el espacio de direcciones de 64 KB, se puede utilizar una dirección directa addr16 o una dirección indirecta @A+DPTR. En el último caso, el contenido de A se interpreta como un entero sin signo. La opción de direccionamiento directo corto addr11 dentro de la página actual de 2 KB se introduce por compatibilidad con la familia MCS-48.

Todos estos tipos de direccionamiento se utilizan en instrucciones de salto. Los comandos de llamada utilizan sólo métodos de direccionamiento directo addr16 y intrapage addr11. Todas las instrucciones condicionales utilizan únicamente direccionamiento relativo.

Cuando el microcontrolador reconoce una solicitud de interrupción, emite el comando LCALL addr16, que almacena automáticamente la dirección de retorno en la pila. La información del estado del programa (el contenido del registro PSW) no se guarda automáticamente. Donde



¿Te gustó el artículo? Compártelo