Programación de puertos MK en lenguaje C 51. Microcontroladores MCS–51: modelo de programa, estructura, comandos. Modo de lectura de puerto

Versión básica MCS–51 Breve información. 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 enfocado 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 eligieron como objeto de estudio los MK de esta familia, que se utilizan ampliamente 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. parámetros eléctricos, hardware adicional y 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:

● 8 bits UPC CPU compuesta por 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;

● bloquear Interfaz de 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. Condicional designación gráfica Los microcircuitos MK se muestran 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 binaria decimal 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 para la coordinación colaboración Todos los nodos MK utilizan 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 el valor de la dirección actual memoria de programa por unidad;

● 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 suministra 0 V al pin ¯EA del MK (como se muestra en la Fig. 7.1.11), memoria interna Los programas están deshabilitados. 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 hardware. señal interna"Función de salida alternativa" que proporciona 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.

La arquitectura de la familia MCS-51 está determinada en gran medida por su propósito: la construcción compacto Y barato dispositivos digitales. Todas las funciones del microordenador 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. circuito analógico. Todos los microcircuitos de esta familia funcionan. con el mismo sistema de mando, la mayoría de ellos se llevan a cabo en casos idénticos con distribución de pines coincidente(numeración de patas para el cuerpo). Esto le permite utilizar microcircuitos de diferentes fabricantes (como Intel, Dallas, Atmel, Philips, etc.) para el dispositivo desarrollado. sin retrabajo diagrama esquemático dispositivos y programas.

Figura 1. Diagrama de bloques del controlador K1830BE751

El diagrama de bloques del controlador se presenta en la Figura 1 y consta de las siguientes unidades funcionales principales: unidad de control, unidad aritmético-lógica, unidad de temporizador/contador, interfaz serie y unidad de interrupción, contador de programa, memoria de datos y memoria de programa. 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). Sistema de mando todos los controladores 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

La unidad de sincronización y control está diseñada para generar señales de sincronización y control que aseguren la coordinación del funcionamiento conjunto de las unidades de la computadora central en todos los modos permitidos de su operación. La unidad de control incluye:

  • dispositivo para formar intervalos de tiempo,
  • lógica de entrada-salida,
  • registro de comando
  • registro de gestión de energía,
  • decodificador de comandos, lógica de control por computadora.

Dispositivo para formar intervalos de tiempo. diseñado para generar y emitir señales de reloj interno de fases, relojes y ciclos. El número de ciclos de la máquina determina la duración de las instrucciones. Casi todos los comandos de la computadora se ejecutan en uno o dos ciclos de máquina, excepto las instrucciones de multiplicación y división, cuya duración de ejecución es de cuatro ciclos de máquina. Designemos la frecuencia del oscilador maestro con F g. Entonces la duración del ciclo de la máquina es igual a 12/F g o son 12 períodos de la señal del oscilador maestro. 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 comandos y lógica de control por computadora, se convierte en un microprograma para ejecutar el comando.

Registro de Control de Demanda (PCON) le permite detener el microcontrolador para reducir el consumo de energía y reducir el nivel de interferencia del microcontrolador. Se puede lograr una reducción aún mayor en el consumo de energía y las interferencias deteniendo el oscilador maestro del microcontrolador. Esto se puede lograr alternando los bits del registro de control de consumo de PCON. Para la opción de fabricación n-MOS (serie 1816 o chips extranjeros que no tienen una “c” en medio de su nombre), el registro de control de consumo PCON contiene solo un bit que controla la velocidad en baudios del puerto serie SMOD, y no hay bits de control de consumo de energía.

Junto con el artículo "Arquitectura de microcontroladores MCS-51", lea:


http://sitio/MCS51/tablms.php


http://sitio/MCS51/SysInstr.php


http://sitio/MCS51/port.php

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 - LSI basado en tecnología k-MOS con una máscara ROM en el chip, 8031 ​​​​- LSI n-MOS sin memoria de programa (ROM, RPOM) en el chip, 8751 - 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 si el número de bits de la batería en el estado "1" es par o impar.

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 registros funciones especiales Los bits reservados PCON, IP e IE toman valores aleatorios y todos los demás bits se restablecen 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

PLAN DE CONFERENCIA

1. Introducción

2. Instrucciones aritméticas y lógicas

3. Comandos de transferencia de datos

4. Operaciones booleanas

5. Instrucciones de salto

1. Introducción

Sistema de mando MCS-51 admite un único conjunto de instrucciones, que está diseñado para ejecutar algoritmos de control de actuadores de 8 bits. Es posible utilizar métodos rápidos para direccionar la RAM interna y realizar operaciones de bits en estructuras de datos pequeñas. Existe un extenso sistema para direccionar variables de un solo bit como un tipo de datos independiente, que permite el uso de bits individuales en comandos lógicos y de control del álgebra booleana.

Modos de direccionamiento : conjunto de comandos MCS-51 admite los siguientes modos de direccionamiento. direccionamiento directo: El operando está determinado por la dirección de 8 bits en la instrucción. El direccionamiento directo se utiliza sólo para la mitad inferior de la memoria de datos interna y los registros. SFR. direccionamiento indirecto: La instrucción dirige a un registro que contiene la dirección del operando. Este tipo El direccionamiento se utiliza para la RAM interna y externa. Los registros se pueden utilizar para especificar direcciones de 8 bits. R0 Y R1 banco de registro seleccionado o puntero de pila SP. Para direccionamiento de 16 bits, solo se utiliza el registro de puntero de datos. DPTR.

Instrucciones de registro : registros R0–R7 El banco de registro actual se puede acceder mediante instrucciones específicas que contienen un campo de 3 bits que indica el número de registro en la propia instrucción. En este caso, falta el campo de dirección correspondiente en el comando. Operaciones utilizando registros especiales.: algunas instrucciones utilizan registros individuales (por ejemplo, operaciones de acumulador, DPTR, etc.). En este caso, la dirección del operando no se especifica en absoluto en el comando. Está predeterminado por el código de operación.

Constantes inmediatas : la constante se puede ubicar directamente en el comando después del código de operación.

direccionamiento de índice : El direccionamiento de índice solo se puede utilizar para acceder a la memoria del programa y solo en modo de lectura. En este modo, se ven las tablas en la memoria del programa. Registro de 16 bits ( DPTR o contador de programa) indica la dirección base de la tabla deseada, y el acumulador indica el punto de entrada a la misma.

conjunto de comandosTiene 42 mnemónicos de comando para especificar las 33 funciones de este sistema. La sintaxis de la mayoría de las instrucciones en lenguaje ensamblador consta de una función mnemotécnica seguida de operandos que indican métodos de direccionamiento y tipos de datos. Varios tipos Los modos de datos o 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: instrucciones aritméticas; comandos lógicos; comandos de transferencia de datos; comandos de procesador de bits; comandos de transferencia de control y ramificación. Las notaciones y símbolos utilizados en el sistema de comando se detallan a continuación.

Mesa. Notaciones y símbolos utilizados en el sistema de mando.

Designación, símbolo

Objetivo

Batería

Registros del banco de registros seleccionado actualmente

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 un registro de función especial SFR (128–255)

Celda RAM de datos interna de 8 bits direccionable indirectamente

8 bits directo datos incluidos en el código de operación (OPC)

datosH

Bits más significativos (15 a 8) de los datos inmediatos de 16 bits

datosL

Bits menos significativos (7–0) de datos inmediatos de 16 bits

dirección de destino de 11 bits

direcciónL

Bits menos significativos de la dirección de destino

Byte compensado con signo de 8 bits

Bit directamente direccionable cuya dirección contiene el COP ubicado en la RAM de datos interna o registro de función especial SFR

a15, a14...a0

Bits de dirección de destino

Contenido del elemento X

Contenido en la dirección almacenada en el elemento X

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.

2. Instrucciones aritméticas y lógicas

como p ejemplo instrucción aritmética, la operación de suma se puede realizar mediante uno de los siguientes comandos.

AGREGARA,7 F 16 – añadir el número 7 al contenido del registro A F 16 y almacenar el resultado en el registro A;

AGREGARA,@ R0 – añadir al contenido del registro A el número cuya dirección (@ – comercial en ) se almacena en un registro R 0 (direccionamiento indirecto) y almacene el resultado en el registro A;

AÑADIR A,R7– añadir el contenido del registro A al contenido del registro R 7 y guarde el resultado en el registro A;

AÑADIR A,#127– añadir al contenido del registro A un número cuya dirección de celda de almacenamiento es 127 ( # – símbolo numérico), y guarde el resultado en el registro t- re A.

Todas las instrucciones aritméticas se ejecutan en un ciclo de máquina con excepción de la instrucción INC DPTR(desplazamiento del puntero de datos DPTR al siguiente byte), que requieren dos ciclos de máquina, así como operaciones de multiplicación y división realizadas en 4 ciclos de máquina. Cualquier byte en la memoria de datos interna se puede incrementar y disminuir sin usar batería.

Instrucciones AB MUL realiza la multiplicación (multiplicación) de los datos del acumulador por los datos del registro B, colocando el producto en los registros A (mitad baja) y B (mitad alta).

Instrucciones DIV AB divide (división) el contenido del acumulador por el valor del registro B, dejando el resto en B y el cociente en el acumulador.

Instrucciones DA A está destinado a operaciones aritméticas decimales binarias (operaciones aritméticas con números representados en código decimal binario). No convierte un número binario a BCD, pero solo proporciona el resultado correcto al sumar dos números decimales binarios.

Ejemplo comando lógico: Se puede realizar una operación AND lógica mediante uno de los siguientes comandos:

anlA,7 F 16 – multiplicación lógica del contenido del registro A por el número 7 F 16 y el resultado se almacena en el registro A;

anlA,@ R1 – multiplicación lógica del contenido del registro A por el número cuya dirección está almacenada en el registro R 1 (direccionamiento indirecto) y almacene el resultado en el registro A;

ANL A,R6– multiplicación lógica del contenido del registro A por el contenido del registro R 6, y guarde el resultado en el registro A;

ANL A,#53 – multiplicación lógica del contenido del registro A por un número cuya dirección de celda de almacenamiento es 53 16, y el resultado se almacena en el registro A.

Todas las operaciones lógicas sobre el contenido del acumulador se realizan en un ciclo de la máquina, el resto en dos. Las operaciones lógicas se pueden realizar en cualquiera de los 128 bytes inferiores de la memoria de datos interna o en cualquier registro. SFR (registros de funciones especiales) en modo de direccionamiento directo sin utilizar batería.

Las operaciones de desplazamiento giratorio RL A, RLC A, etc. mueven el contenido del acumulador un bit hacia la derecha o hacia la izquierda. En el caso de un desplazamiento cíclico hacia la izquierda, el bit menos significativo se mueve a la posición más significativa. En el caso de un desplazamiento cíclico hacia la derecha, ocurre lo contrario.

Operación CAMBIAR UN intercambia las tétradas baja y alta en la batería.

3. Comandos de transferencia de datos

Equipo Destino MOV, origen le permite transferir datos entre celdas RAM internas o áreas de registro de funciones especiales SFR sin usar batería. En este caso, el trabajo con la mitad superior de la RAM interna solo se puede realizar en modo de direccionamiento indirecto y el acceso a los registros. SFR– sólo en modo de direccionamiento directo.

En todos los microcircuitos MCS-51 La pila se coloca directamente en la memoria de datos residente y crece hacia arriba. Instrucciones EMPUJAR primero incrementa el valor en el registro del puntero de la pila SP y luego escribe un byte de datos en la pila. equipos EMPUJAR Y ESTALLIDO se utilizan sólo en modo de direccionamiento directo (escribir o restaurar un byte), pero la pila siempre es accesible cuando se direcciona indirectamente a través de un registro SP. Por tanto, la pila también puede utilizar los 128 bytes superiores de la memoria de datos. Las mismas consideraciones excluyen la posibilidad de utilizar instrucciones de pila para direccionar registros. SFR.

Las instrucciones de transferencia de datos incluyen una operación de transferencia de 16 bits. MOV DPTR,#datos16, que se utiliza para inicializar el registro del puntero de datos DPTR al ver tablas en la memoria de programa o para acceder a la memoria de datos externa.

Operación XCH A, byte Se utiliza para intercambiar datos entre el acumulador y el byte direccionado. Equipo XCHD A,@Ri similar al anterior, pero se realiza sólo para las tétradas inferiores involucradas en el intercambio de operandos.

Para acceder a la memoria de datos externa, sólo se utiliza el direccionamiento indirecto. En el caso de direcciones de un solo byte, se utilizan registros. R0 o R1 banco de registro actual, y para 16 bits – registro de puntero de datos DPTR. Con cualquier método de acceso a la memoria de datos externa, la batería desempeña el papel de fuente o receptor de información.

Para acceder a las tablas ubicadas en la memoria del programa, utilice los siguientes comandos:

MOVC A,@A+ DPTR ;

MOVC A,@A+ ordenador personal .

El contenido del registro del puntero de datos se utiliza como dirección base de la tabla. DPTR o ordenador personal(contador de programa), y el desplazamiento se toma de A. Estas instrucciones se utilizan exclusivamente para leer datos de la memoria del programa, pero no para escribir en ella.

4. Operaciones booleanas

microcircuitos MCS-51 contener un procesador “booleano”. La RAM interna tiene 128 bits direccionables directamente. Espacio de registro de función especial SFR También puede admitir campos de hasta 128 bits. Las instrucciones de bits realizan ramas condicionales, transferencias, restablecimientos, inversiones y operaciones Y y O. Todos los bits especificados están disponibles en modo de direccionamiento directo.

llevar poco FQ en el registro de función especial “palabra de estado del programa” P.S.W." se utiliza como acumulador de un bit para un procesador booleano.

5. Instrucciones de salto

Las direcciones de las operaciones de salto se indican en lenguaje ensamblador mediante una etiqueta o mediante un valor real en el espacio de memoria del programa. Las direcciones de sucursales condicionales se ensamblan en un desplazamiento relativo: un byte de signo agregado al contador del programa ordenador personal si se cumple la condición de transición. Los límites de tales transiciones se encuentran entre menos 128 y 127 con respecto al primer byte que sigue a la instrucción. En el registro de función especial "palabra de estado del programa" P.S.W." no hay bandera cero, por lo que las instrucciones JZ Y JNZ Verifique la condición "igual a cero" como prueba de los datos en el acumulador.

Hay tres tipos de comando de salto incondicional: SJMP, LJMP Y AJMP– direcciones de destino que difieren en formato. Instrucciones SJMP codifica la dirección como un desplazamiento relativo y ocupa dos bytes. La distancia de salto está limitada al rango de menos 128 a 127 bytes en relación con la siguiente instrucción SJMP.

en las instrucciones LJMP La dirección de destino se utiliza como una constante de 16 bits. La longitud del comando es de tres bytes. La dirección de destino se puede ubicar en cualquier lugar de la memoria del programa.

Equipo AJMP utiliza una constante de dirección de 11 bits. El comando consta de dos bytes. Cuando se ejecuta esta instrucción, los 11 bits inferiores del contador de direcciones se reemplazan por la dirección de 11 bits de la instrucción. Los cinco bits más significativos del contador del programa. ordenador personal permanece inalterable. Por lo tanto, la transición se puede realizar dentro de un bloque de 2 K bytes en el que se encuentra la instrucción que sigue a la instrucción. AJMP.

Hay dos tipos de llamadas de comando a una subrutina: LLAMADA Y UNA LLAMADA. Instrucciones LLAMADA utiliza la dirección de 16 bits de la subrutina llamada. En este caso, la subrutina puede ubicarse en cualquier lugar de la memoria del programa. Instrucciones UNA LLAMADA Utiliza una dirección de subrutina de 11 bits. En este caso, la rutina llamada debe ubicarse en un solo bloque de 2K bytes con la siguiente instrucción UNA LLAMADA. Ambas versiones de la instrucción insertan la dirección de la siguiente instrucción en la pila y la cargan en el contador del programa. ordenador personal nuevo valor correspondiente.

La subrutina termina con la instrucción. RETIRADO, que le permite volver a la instrucción siguiendo el comando LLAMAR. Esta instrucción saca la dirección del remitente de la pila y la carga en el contador del programa. ordenador personal . Instrucciones RETÍ Se utiliza para regresar de rutinas de interrupción. La unica diferencia RETÍ de RETIRADO es eso RETÍ informa al sistema que el procesamiento de la interrupción se ha completado. Si en el momento de la ejecución RETÍ no hay otras interrupciones, entonces es idéntico RETIRADO.

Instrucciones DJNZ Diseñado para controlar los ciclos. Para ejecutar un bucle norte una vez que necesites cargar un byte con un valor en el contador norte y cerrar el cuerpo del bucle con el comando DJNZ, indicando el inicio del ciclo.

Equipo CJNE compara sus dos operandos como enteros sin signo y salta a la dirección especificada allí si los operandos que se comparan no son iguales. Si el primer operando es menor que el segundo, entonces el bit de acarreo FQ se establece en "1".

Todas las instrucciones en forma ensamblada ocupan 1, 2 o 3 bytes.

ARQUITECTURA DE LA FAMILIA DE MICROCONTROLADORESMCS-51

Apuntes para cursos

“Microprocesadores en sistemas de control”, “Tecnología de microprocesadores”

"Herramientas y sistemas de microprocesadores"

para estudiantes de todas las formas de especialidades de estudio.

072000 – Normalización y certificación

210200 – Automatización de procesos tecnológicos

230104 – Sistemas de diseño asistido por ordenador

Tambov 2005

INTRODUCCIÓN.. 3

1. ESTRUCTURA DEL MICROCONTROLADOR INTEL 8051. 3

1.1. Organización de la memoria. 5

1.2. Dispositivo aritmético-lógico. 6

1.3. Memoria residente para programas y datos. 7

1.4. Registros de acumuladores y de propósito general. 8

1.5. El registro de palabras de estado del programa y sus banderas. 9

1.6. Registros de puntero. 10

1.7. Registros de funciones especiales. once

1.8. Dispositivo de control y sincronización. once

1.9. Puertos paralelos de entrada/salida de información. 12

1.10. Temporizadores/contadores. 13

1.11. Puerto serial. 18

1.11.1. Registrarse SBUF.. 18

1.11.2. Modos de funcionamiento del puerto serie. 18

1.11.3. Registrar SCON.. 19

1.11.4. Velocidad de recepción/transmisión. 21

1.12. Sistema de interrupción. 22

2. SISTEMA DE COMANDO DEL MICROCONTROLADOR INTEL 8051. 26

2.1. información general. 26

2.1.1. Tipos de comandos. 27

2.1.2. Tipos de operandos. 28

2.1.3. Métodos de direccionamiento de datos. treinta

2.1.4. Banderas de resultados. 31

2.1.5. Direccionamiento simbólico. 32

2.2. Comandos de transferencia de datos. 33

2.2.1. Estructura de enlaces de información. 33

2.2.2. Accediendo a la batería. 33

2.2.3. Acceso a la memoria de datos externa. 34

2.2.4. Accediendo a la memoria del programa... 34


2.2.5. Acceso a la pila. 35

2.3. Operaciones aritmeticas. 35

2.4. Operaciones lógicas. 39

2.5. Comandos de transferencia de control. 43

2.5.1. Transición larga. 43

2.5.2. Transición absoluta. 43

2.5.3. Transición relativa. 44

2.5.4. Transferencia indirecta. 44

2.5.5. Saltos condicionales.. 44

2.5.6. Subrutinas.. 47

2.6. Operaciones con bits. 48

Preguntas del examen... 49

LITERATURA.. 50

Apéndice SISTEMA DE COMANDO INTEL 8051. 51

INTRODUCCIÓN

Desde los años 80 del siglo XX, ha surgido una clase independiente en la tecnología de microprocesadores. circuitos integrados– microcontroladores de un solo chip diseñados para integrarse en dispositivos para diversos fines. Se distinguen de la clase de microprocesadores de un solo chip por la presencia de memoria interna y medios desarrollados de interacción con dispositivos externos.

Los microcontroladores de un solo chip de 8 bits de la familia MCS-51 se utilizan ampliamente. Esta familia se formó sobre la base del microcontrolador Intel 8051, que ha ganado gran popularidad entre los desarrolladores de sistemas de control por microprocesadores debido a su arquitectura bien diseñada. La arquitectura del microcontrolador es un conjunto de sistemas de comando y recursos de hardware accesibles por software internos y externos.

Posteriormente, Intel lanzó alrededor de 50 modelos basados ​​​​en el núcleo operativo del microcontrolador Intel 8051. Al mismo tiempo, muchas otras empresas, como Atmel, Philips, comenzaron a producir sus propios microcontroladores desarrollados según el estándar MCS-51. También hay análogo doméstico Microcontrolador Intel 8051 - chip K1816BE51.

2. ESTRUCTURA DEL MICROCONTROLADOR INTEL 8051

El microcontrolador Intel 8051 se basa en tecnología n-MOS de alto nivel. Sus principales características son las siguientes:

· procesador central de ocho bits optimizado para la implementación de funciones de control;

· generador de reloj incorporado (frecuencia máxima 12 MHz);

· espacio de direcciones de memoria del programa - 64 KB;

· espacio de direcciones de memoria de datos - 64 KB;

· memoria interna del programa - 4 KB;

· memoria de datos interna - 128 bytes;

· capacidades adicionales para realizar operaciones de álgebra booleana (operaciones bit a bit);

· 2 temporizadores/contadores multifuncionales de dieciséis bits;

· transceptor asíncrono full-duplex (puerto serie);

· sistema de interrupción vectorial con dos niveles de prioridad y cinco fuentes de eventos.

Figura 1 - Diagrama de bloques del microcontrolador Intel 8051

La base del diagrama de bloques (Fig.1) está formada por un bus interno bidireccional de 8 bits, que interconecta los principales nodos y dispositivos del microcontrolador: memoria de programa residente (RPM), memoria de datos residente (RDM), memoria aritmético-lógica. unidad (ALU), funciones especiales de la unidad de registro, unidad de control (CU), puertos de E/S paralelos (P0-P3), así como temporizadores programables y un puerto serie.

2.1. Organización de la memoria

Este microcontrolador tiene memoria incorporada (residente) y externa de programas y datos. La memoria de programa residente (RPM) tiene una capacidad de 4 KB y la memoria de datos residente (RDM) tiene una capacidad de 128 Bytes.


Dependiendo de la modificación del microcontrolador, RPM se implementa en forma de ROM de máscara, ROM programable o reprogramable una sola vez.

Si es necesario, el usuario puede ampliar la memoria del programa instalando una ROM externa. El acceso a la ROM interna o externa está determinado por el valor de la señal en el pin EA (Acceso externo):

EA=VCC (voltaje de alimentación) - acceso a la ROM interna;

EA=VSS (potencial de tierra) - acceso a ROM externa.

La memoria externa de programas y datos puede tener 64 KB cada una y direccionarse mediante los puertos P0 y P2. La Figura 2 muestra la tarjeta de memoria Intel 8051.

Figura 2: organización de la memoria Intel 8051

Luz estroboscópica de lectura de ROM externa: (Habilitación de almacenamiento de programas) se genera al acceder a la memoria de programa externa y está inactiva al acceder a la ROM ubicada en el chip.

El sistema de interrupción utiliza el área de direcciones de memoria de programa inferiores (Fig. 3). La arquitectura del chip INTEL 8051 brinda soporte para cinco fuentes de interrupción. Las direcciones a las que se transfiere el control de interrupciones se denominan vectores de interrupción.

Figura 3 - Mapa del área inferior de memoria del programa

2.2. Unidad lógica aritmética

La unidad lógica aritmética (ALU) de 8 bits puede realizar operaciones aritméticas de suma, resta, multiplicación y división; operaciones lógicas AND, OR, OR exclusivo, así como operaciones de desplazamiento cíclico, reset, inversión, etc. Registros inaccesibles al software T1 y T2, destinados al almacenamiento temporal de operandos, un circuito de corrección decimal (DCU) y un circuito de generación de características están conectados a las entradas resultado de operación (PSW).

La operación de suma simple se utiliza en la ALU para incrementar el contenido de los registros, avanzar el registro de puntero de datos (RAR) y calcular automáticamente la siguiente dirección de memoria residente del programa. La operación de resta más simple se utiliza en la ALU para disminuir registros y comparar variables.

Las operaciones más simples forman automáticamente “tándems” para realizar operaciones como, por ejemplo, incrementar pares de registros de 16 bits. La ALU implementa un mecanismo para la ejecución en cascada de operaciones simples para implementar comandos complejos. Entonces, por ejemplo, al ejecutar uno de los comandos de transferencia de control condicional, según el resultado de la comparación en la ALU, el contador del programa (PC) se incrementa tres veces, el RDM se lee dos veces y se realiza una comparación aritmética de dos variables. Se forma una dirección de transición de 16 bits y se toma una decisión sobre si realizar o no la transición según el programa. Todas las operaciones anteriores se realizan en sólo 2 μs.

Una característica importante de la ALU es su capacidad para operar no solo con bytes, sino también con bits. Los bits individuales accesibles por software se pueden configurar, borrar, invertir, transmitir, probar y utilizar en operaciones lógicas. Esta capacidad es bastante importante, ya que para controlar objetos se suelen utilizar algoritmos que contienen operaciones sobre variables booleanas de entrada y salida, cuya implementación está asociada a ciertas dificultades utilizando microprocesadores convencionales.

Así, la ALU puede operar con cuatro tipos de objetos de información: booleano (1 bit), digital (4 bits), byte (8 bits) y dirección (16 bits). La ALU realiza 51 operaciones diferentes para reenviar o transformar estos datos. Dado que hay 11 modos de direccionamiento (7 para datos y 4 para direcciones), al combinar la operación y el modo de direccionamiento, el número básico de 111 instrucciones se expande a 255 de 256 posibles con un código de operación de un solo byte.

2.3. Programa residente y memoria de datos.

La memoria de programa (RPM) residencial (en chip) y la memoria de datos (RDM) están física y lógicamente separadas, tienen diferentes mecanismos de direccionamiento, operan bajo el control de diferentes señales y realizan diferentes funciones.

La memoria del programa RPM tiene una capacidad de 4 KB y está diseñada para almacenar comandos, constantes, palabras de control de inicialización, tablas de conversión de variables de entrada y salida, etc. La memoria dispone de un bus de direcciones de 16 bits, a través del cual se proporciona acceso desde el Contador de programas de PC o desde el puntero de datos del registro (DPTR). DPTR funciona como registro base para saltos indirectos de programas o se utiliza en operaciones de tablas.

La memoria de datos RDM está diseñada para almacenar variables durante la ejecución de un programa de aplicación, es direccionable por un byte y tiene una capacidad
128 bytes. Además, su espacio de direcciones está adyacente a las direcciones de registros de funciones especiales, que se enumeran en la tabla. 1.

La memoria del programa, al igual que la memoria de datos, se puede ampliar a
64 KB conectando chips externos.

tabla 1

Bloque de registro de función especial

Nombre

Batería

Registro expansor del acumulador

Palabra de estado del programa

Registro de puntero de pila

Registro de puntero de datos

Registro de prioridad de interrupción

Registro de máscara de interrupción

Registro del modo temporizador/contador

Control del temporizador/Registro de estado

Temporizador 0 (byte alto)

Temporizador 0 (byte bajo)

Temporizador 1 (byte alto)

Temporizador 1 (byte bajo)

Registro de control del transceptor

Búfer del transceptor

Registro de control de potencia

Nota. Los registros cuyos nombres están marcados con (*) permiten direccionar bits individuales.

2.4. Acumulador y registros generales.

El acumulador (A) es la fuente del operando y la ubicación del resultado al realizar operaciones aritméticas, lógicas y una serie de operaciones de transferencia de datos. Además, las operaciones de cambio, comprobar el cero, generar un indicador de paridad, etc., sólo se pueden realizar utilizando el acumulador.

El usuario tiene a su disposición cuatro bancos de 8 registros de uso general R0–R7 (Fig. 9). Sin embargo, es posible utilizar los registros de sólo uno de los cuatro bancos, que se selecciona mediante el bit de registro PSW.

2.5. Registro de palabras de estado del programa y sus banderas.

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 2 proporciona una lista de banderas PSW, da sus nombres simbólicos y describe las condiciones para su formación.

Tabla 2

Formato de palabra de estado del programa PSW

Nombre y propósito

Llevar bandera. Configurar y restablecer mediante hardware o software al realizar operaciones aritméticas y lógicas

Bandera de porte auxiliar. Se establece y borra solo mediante hardware cuando se ejecutan instrucciones de suma y resta y señala un acarreo o préstamo en el bit 3.

Indicador 0. El programa puede configurarlo, borrarlo o comprobarlo como un indicador especificado por el usuario.

Seleccionar un banco de registro. Configuración y reinicio por software para seleccionar un banco de registros funcional (Tabla 3)

Bandera de desbordamiento. Configurar y restablecer por hardware al realizar operaciones aritméticas

No utilizado

Bandera de paridad. Se configura y reinicia por hardware en cada ciclo y fija el número par/impar de un bit en el acumulador, es decir, realiza la paridad.

Tabla 3

Seleccionar un banco de registro que funcione

Límites de direcciones

La bandera de PSW más "activa" es la bandera de acarreo, que interviene y se modifica durante muchas operaciones, incluidas la suma, la resta y los turnos. Además, el indicador de acarreo (CY) funciona como un "acumulador booleano" en instrucciones de manipulación de bits. El indicador de desbordamiento (OV) detecta el desbordamiento aritmético en operaciones con enteros con signo y permite utilizar la aritmética en códigos de complemento a dos. La ALU no controla los indicadores de selección del banco de registros (RS0, RS1), su valor está completamente determinado por el programa de aplicación y se utiliza para seleccionar uno de los cuatro bancos de registros.

Como byte, el registro PSW se puede representar de la siguiente manera:

En los microprocesadores cuya arquitectura se basa en un acumulador, la mayoría de las instrucciones operan en el acumulador mediante direccionamiento implícito. El Intel 8051 es diferente. Aunque el procesador se basa en una batería, puede ejecutar muchos comandos sin su participación. Por ejemplo, los datos se pueden transferir desde cualquier celda RDM a cualquier registro, cualquier registro se puede cargar con un operando inmediato, etc. Se pueden realizar muchas operaciones lógicas sin involucrar un acumulador. Además, las variables se pueden incrementar, disminuir y verificar sin utilizar un acumulador. Las banderas y los bits de control se pueden verificar y cambiar de la misma manera.

2.6. Registros de puntero

El puntero de pila (SP) de 8 bits puede direccionar cualquier área RDM. Su contenido se incrementa antes de que los datos se almacenen en la pila durante las instrucciones PUSH y CALL. El contenido del SP disminuye después de ejecutar los comandos POP y RET. Este método de abordar los elementos de la pila se denomina preincremento/postdecremento. Durante la inicialización del microcontrolador, después de la señal RST, el código 07H se carga automáticamente en el SP. Esto significa que, a menos que el programa de aplicación anule la pila, el primer elemento de datos de la pila se ubicará en la ubicación RDM 08H.

El registro de puntero de datos de dos bytes DPTR se utiliza normalmente para capturar una dirección de 16 bits en operaciones de acceso a memoria externa. Mediante comandos del microcontrolador, el registro del puntero de datos se puede utilizar como un registro de 16 bits o como dos registros independientes de 8 bits (DPH y DPL).

2.7. Registros de funciones especiales

Los registros, denominados simbólicamente IP, IE, TMOD, TCON, SCON y PCON, se utilizan para bloquear y cambiar mediante programación los bits de control y estado del circuito de interrupción, el temporizador/contador, el transceptor en serie y la administración de energía. Su organización se describirá en detalle en las secciones 1.8 a 1.12, al considerar las características del microcontrolador en varios modos.

2.8. Dispositivo de control y sincronización.

Un resonador de cuarzo conectado a los pines externos del microcontrolador controla el funcionamiento del oscilador interno, que a su vez genera señales de sincronización. La unidad de control (CU), a partir de señales de sincronización, genera un ciclo de máquina de duración fija igual a 12 períodos del generador. La mayoría de las instrucciones del microcontrolador se ejecutan en un ciclo de máquina. Algunas instrucciones que operan con palabras de 2 bytes o acceden a una memoria externa requieren dos ciclos de máquina para completarse. Sólo las instrucciones de división y multiplicación requieren cuatro ciclos de máquina. A partir de estas características de funcionamiento del dispositivo de control se calcula el tiempo de ejecución de los programas de aplicación.

En el circuito del microcontrolador, un registro de instrucciones (IR) está adyacente al dispositivo de control. Su función es almacenar el código del comando que se está ejecutando.

Señales de entrada y salida del dispositivo de control y sincronización:

1. PSEN – resolución de la memoria del programa,

2. ALE – señal de salida de habilitación de fijación de dirección,

3. PROG – señal de programación,

4. EA – bloqueo del trabajo con la memoria interna,

5. VPP – voltaje de programación,

6. RST – señal de reinicio general,

7. VPD: salida de energía de respaldo de memoria desde fuente externa,

8. XTAL – entradas de conexión resonador de cuarzo.

2.9. Puertos de entrada/salida paralelos

Los cuatro puertos (P0-P3) están diseñados para ingresar o emitir información byte a byte. Cada puerto contiene un registro de retención controlado, un búfer de entrada y un controlador de salida.

Los controladores de salida de los puertos P0 y P2, así como el búfer de entrada del puerto P0, se utilizan al acceder a la memoria externa. En este caso, a través del puerto P0 en modo de multiplexación de tiempo, primero se emite el byte bajo de la dirección y luego se emite o recibe el byte de datos. El puerto P2 genera el byte más significativo de la dirección en los casos en que el ancho de la dirección es de 16 bits.

Todos los pines del puerto P3 se pueden utilizar para implementar las funciones alternativas enumeradas en la tabla. 4. Estas funciones se pueden habilitar escribiendo 1 en los bits correspondientes del registro de retención (P3.0-P3.7) del puerto P3.

Tabla 4

Funciones alternativas del puerto P3

Nombre y propósito

Lectura. El hardware genera una señal activa de bajo nivel al acceder a la memoria de datos externa.

Registro. El hardware genera una señal activa de bajo nivel al acceder a la memoria de datos externa.

Entrada de temporizador/contador 1 o entrada de prueba

Entrada de temporizador/contador 0 o entrada de prueba

Entrada de solicitud de interrupción 1. Detecta nivel bajo o señal de corte

Entrada de solicitud de interrupción 0. Detecta nivel bajo o señal de corte

Salida del transmisor del puerto serie en modo UART. Salida de reloj en modo de registro de desplazamiento

Entrada de receptor de puerto serie en modo UART. Entrada/salida de datos en modo de registro de desplazamiento

El puerto 0 es bidireccional y los puertos 1 a 3 son casi bidireccionales. Cada línea de puerto se puede utilizar de forma independiente para entrada o salida.

Según la señal RST, las unidades se escriben automáticamente en los registros de enclavamiento de todos los puertos, configurándolos así para el modo de entrada.

Todos los puertos se pueden utilizar para organizar la entrada/salida de información a través de líneas de transmisión bidireccionales. Sin embargo, los puertos P0 y P2 no se pueden utilizar para este propósito si el sistema tiene una memoria externa, cuya comunicación se organiza a través de un bus común de dirección/datos compartido que opera en modo de multiplexación de tiempo.

Es posible acceder a los puertos de E/S mediante comandos que operan en un byte, un bit individual o una combinación arbitraria de bits. Además, en los casos en que el puerto es a la vez un operando y el destino del resultado, el dispositivo de control implementa automáticamente un modo especial llamado "lectura-modificación-escritura". Este modo de acceso implica ingresar señales no desde los pines externos del puerto, sino desde su registro de retención, lo que elimina la lectura incorrecta de la información enviada anteriormente. Este mecanismo de acceso a puertos se implementa en los comandos:




Arriba