Menú English Ukrainian Ruso Inicio

Biblioteca técnica gratuita para aficionados y profesionales. biblioteca técnica gratuita


ENCICLOPEDIA DE RADIOELECTRÓNICA E INGENIERÍA ELÉCTRICA
biblioteca gratis / Esquemas de dispositivos radioelectrónicos y eléctricos.

Programación modular de sistemas de control en MCS48. Enciclopedia de radioelectrónica e ingeniería eléctrica.

biblioteca técnica gratuita

Enciclopedia de radioelectrónica e ingeniería eléctrica. / Microcontroladores

Comentarios sobre el artículo Comentarios sobre el artículo

Se sabe que el mismo microcontrolador puede controlar tanto equipos tecnológicos complejos como un molinillo de café doméstico o un reloj electrónico. La adaptación a un objeto específico se lleva a cabo cambiando el programa del microcontrolador, el hardware casi no se ve afectado. El artículo propuesto está dedicado a las técnicas de programación de los microcontroladores de la serie MCS48, que son ampliamente utilizados en los sistemas de control para diversos fines. Sus principales disposiciones también son válidas para dispositivos más modernos.

El desarrollo y la modernización de los programas de control se facilitan mucho si se construyen de acuerdo con un principio modular. En este caso, después de ganar algo de experiencia, y lo más importante, nuestra propia biblioteca de módulos depurados, programar un nuevo sistema de control (SC) se reduce a reemplazar algunos módulos de un programa ya existente y depurado y, posiblemente, complementarlo con fragmentos que tener en cuenta las características específicas de un sistema en particular.

Este principio está incrustado en la estructura de muchos lenguajes de alto nivel (PASCAL, C++), y el programador está literalmente obligado a seguirlo. Desafortunadamente, los ENSAMBLADORES (incluso para MSS48), si bien le dan al programador una mayor libertad de elección de medios y métodos para resolver problemas, por regla general, no controlan en absoluto la observancia de la disciplina de programación. Esto a menudo conduce a la creación de programas tan confusos que incluso sus autores no pueden averiguar qué se hizo después de un tiempo, sin mencionar el uso de fragmentos depurados en otros programas. La adhesión consciente a conceptos modulares comunes facilita y acelera enormemente la programación de microcontroladores. En la tabla se muestra un ejemplo de un programa modular típico para CS. Su sintaxis corresponde al ASSEMBLY tabular TASM para el microprocesador 8048.

Como puede ver, al comienzo del texto del programa, las directivas EQU dan nombres a las constantes y asignan valores. Siempre es preferible usar constantes con nombre que especificar valores numéricos directamente en las instrucciones del procesador ejecutable. Por ejemplo, el retardo de tiempo implementado por una de las subrutinas discutidas a continuación está definido por tres números. Están dados por las constantes N1, N2 y N3. Si necesita cambiar la velocidad de obturación, basta con especificar nuevos valores en los operadores EQU. De lo contrario, habría que buscar en todo el programa instrucciones con operandos iguales a estos números, decidir si cada uno de ellos se refiere a un retraso de tiempo e indicar nuevos valores en los casos necesarios.

Obviamente, dicho trabajo requiere mucho tiempo y, a menudo, no está exento de errores. Es especialmente complicado por el hecho de que algunos comandos pueden no usar el número entero, sino, por ejemplo, su byte alto o bajo. ASSEMBER ya en la etapa de traducción del programa es capaz de calcular algunas constantes en base a los valores de otras. Esta posibilidad se ilustra mediante el cálculo de los bytes alto (N3N) y bajo (N3L) del número NXNUMX.

A continuación, el programa asigna memoria para las variables. Lo hacen con las mismas directivas EQU, pero a diferencia de las descripciones de constantes, no especifican los valores numéricos de las variables, sino las direcciones de las celdas de memoria que ocupan.

Programación modular de sistemas de control en MCS48
(haga clic para agrandar)

Si el ENSAMBLADOR lo permite, no se debe descartar la posibilidad de utilizar macros. Cada uno de ellos es, por así decirlo, una nueva instrucción que realiza una operación no proporcionada directamente por el sistema de instrucciones del procesador. Al describir una instrucción macro, el programador le da un nombre (que, por supuesto, no coincide con el nombre de ninguna de las instrucciones "reales") y especifica las acciones requeridas en forma de Secuencia de instrucciones de máquina. Cada vez que encuentra una instrucción macro en un programa, el ENSAMBLADOR la ​​reemplazará con la secuencia especificada. En este ejemplo, se utilizan dos macros. Uno de ellos transfiere el contenido del acumulador a la celda de memoria de datos especificada por el parámetro macro, y el otro, de regreso.

Después de que se enciende la alimentación (o se da una señal de reinicio), el microcontrolador comienza a ejecutar el programa desde la dirección cero. Esta dirección generalmente se usa para escribir un comando de salto incondicional al punto de inicio del programa real (en este caso, la etiqueta INICIO). Esto es necesario porque las interrupciones de hardware siempre transfieren el control a las direcciones fijas 3 y 7 (para otros tipos de microcontroladores, las direcciones pueden ser diferentes, pero todavía están ubicadas al comienzo de la memoria del programa). Los comandos de transición incondicional a las rutinas de servicio de las interrupciones correspondientes ubicadas en estas direcciones deben ser "puenteadas" por el programa principal.

El siguiente paso es configurar los modos de operación del controlador (por ejemplo, seleccionar registros y bancos de memoria), inicializar variables y dispositivos externos. Un error típico de los programadores novatos es suponer que inmediatamente después de iniciar el programa, las variables ya tienen algunos valores definidos. Este concepto erróneo se ve reforzado por el hecho de que algunos lenguajes de alto nivel (como BASIC) establecen automáticamente todas las variables en un valor inicial de cero. En los programas en lenguaje ensamblador (y muchos otros lenguajes), el propio programador debe cuidar que antes de la primera lectura del valor de una variable, ya se haya escrito algo en la celda de memoria asignada a ella. Un buen estilo de programación requiere que los valores iniciales se asignen a las variables al comienzo del programa. En este caso, esto lo hace la subrutina 1INIT.

La sección de inicialización de dispositivos externos generalmente parece una llamada alternativa a las subrutinas, cada una de las cuales restablece una de ellas (convertidor analógico a digital, indicador LED, teclado, etc.) y puede reemplazarse fácilmente al finalizar y mejorar el sistema. A menudo, estas mismas rutinas comprueban el estado de los dispositivos.

A continuación, la mayoría de los programas de control ingresan a un ciclo principal que se repite sin fin, cuya ejecución se suspende solo para manejar las interrupciones. El ciclo consta de subrutinas para sondear el teclado y otros sensores, verificar las banderas establecidas por las subrutinas de manejo de interrupciones (por ejemplo, la bandera para el vencimiento de un intervalo de tiempo específico o el final del convertidor de analógico a digital), procesamiento la información recibida de acuerdo con el algoritmo de control especificado, enviando acciones de control a los actuadores, mostrando información sobre el estado del proceso tecnológico en una pantalla de cristal líquido u otros indicadores. La salida del bucle principal generalmente se proporciona solo en situaciones de emergencia, por ejemplo, si para eliminar las consecuencias de una falla, es necesario repetir la inicialización de todas las variables y dispositivos externos, así como cuando se interrumpe el procesamiento.

Así, un programa construido sobre una base modular es un conjunto de subrutinas. Si, por ejemplo, se utiliza un teclado diferente en el nuevo sistema de control, será suficiente reemplazar la subrutina BUTT. Para que dicho reemplazo sea simple e indoloro, se deben desarrollar y observar ciertas reglas. Las subrutinas, si es posible, deben guardar el contenido de todos los registros del controlador, recibir datos iniciales y emitir resultados en los mismos registros y celdas de memoria, usar la misma codificación de caracteres, etc.

Es necesario luchar contra el deseo natural (especialmente para los programadores que han superado las primeras dificultades y comienzan a sentirse profesionales) de simplificar el programa alejándose de las reglas estrictas y utilizando técnicas no estándar. Aparentemente, a primera vista, la complicación injustificada valdrá la pena al facilitar la depuración y la reelaboración del programa en su conjunto.

Consideremos algunas características de las subrutinas. I NCREM y DESREM realizan lo requerido en muchos casos, la operación de aumentar o disminuir en un valor dado de un número binario de 16 bits (sus bytes altos y bajos están respectivamente en los registros R6 y R5). Las constantes que especifican la cantidad de incremento se describen al principio del programa.

Dado que cualquier microcontrolador funciona mucho más rápido que los equipos tecnológicos, es muy importante poder organizar el tiempo de retardo en el programa. En este caso, se utiliza el contador/temporizador interno del procesador. Tiene capacidad limitada y se desborda en milisegundos. Cada desbordamiento genera una solicitud de interrupción. La rutina de servicio de interrupción del temporizador (TIME) los cuenta y, cuando se alcanza el número especificado, establece el indicador de tiempo de espera FLT en uno. Todas las subrutinas cuyo trabajo depende del tiempo, queda por analizar el estado de esta bandera. Por lo tanto, es posible realizar velocidades de obturación de varios segundos e incluso minutos.

Para comenzar a contar un nuevo intervalo, es necesario ingresar los valores iniciales en las celdas de trabajo de la subrutina TIME y encender el temporizador. La subrutina SET2M, por ejemplo, establece el tiempo de retardo en 2 minutos. El cálculo de los valores iniciales tiene varias sutilezas.

Se sabe que en los microcontroladores de la serie MSS48, los pulsos llegan a la entrada del contador/temporizador interno a una frecuencia 480 veces menor que la frecuencia del oscilador de cuarzo. Por ejemplo, con un resonador de cuarzo de 7 MHz de frecuencia, el número escrito en el contador cambia cada 480/7000000 = 0,00006857 s = 68,57 µs. Entonces, el contador se desbordará (y generará una solicitud de interrupción) en 68,57 -(256-N1) µs, donde N1 es el número escrito originalmente en el contador. Si cada vez que inicia un nuevo conteo a partir de este número, N0,1 = 2 0,1/[7000000 (1480-N256)] se producirán desbordamientos en 1 s (retardo de tiempo mínimo).

Obviamente, se puede obtener el mismo retardo de tiempo con diferentes N1 y N2, pero dado que estos números no pueden ser fraccionarios, se implementará con algún error. La tarea es seleccionar un par de valores para los cuales el error sea mínimo. En el caso considerado, la mejor opción es N1 = 13, N2 = 6. Se obtiene un retardo de tiempo de 2 min repitiendo el procedimiento descrito N3 = 1200 veces.

A menudo es necesario usar diferentes procedimientos para procesar las mismas interrupciones de hardware en diferentes modos de operación del programa. Una forma de hacer esto es ilustrada por la subrutina INTER. Analiza el código de tipo de interrupción ingresado por el programa principal en la celda INTT y, según su valor, llama a una de las rutinas de servicio de interrupción ISR1 o ISR2. Tenga en cuenta que ambos terminan con RET, no RETR. Es fácil aumentar el número de opciones de procesamiento e incluso hacer que, para un determinado valor del código, se llamen varias subrutinas diferentes una tras otra.

No es necesario escribir todas las subrutinas necesarias en el archivo de texto del programa principal. Los módulos depurados y utilizados repetidamente en diferentes programas se pueden ubicar en archivos separados y conectarse al programa principal mediante las directivas INCLUDE. Cada archivo de inclusión puede contener una o más rutinas. La desventaja de este método es que los nombres de variables, constantes y etiquetas en todos los módulos utilizados no deben repetirse. Privado de este defecto, el método de traducción separada de módulos con su posterior fusión a nivel del código objeto, desafortunadamente, no es compatible con TASM ASSEMBLY.

Autor: D. Ryzhov, Vladímir

Ver otros artículos sección Microcontroladores.

Lee y escribe útil comentarios sobre este artículo.

<< Volver

Últimas noticias de ciencia y tecnología, nueva electrónica:

Cuero artificial para emulación táctil. 15.04.2024

En un mundo tecnológico moderno donde la distancia se está volviendo cada vez más común, mantener la conexión y la sensación de cercanía es importante. Los recientes avances en piel artificial realizados por científicos alemanes de la Universidad del Sarre representan una nueva era en las interacciones virtuales. Investigadores alemanes de la Universidad del Sarre han desarrollado películas ultrafinas que pueden transmitir la sensación del tacto a distancia. Esta tecnología de punta brinda nuevas oportunidades de comunicación virtual, especialmente para quienes se encuentran lejos de sus seres queridos. Las películas ultrafinas desarrolladas por los investigadores, de sólo 50 micrómetros de espesor, pueden integrarse en textiles y usarse como una segunda piel. Estas películas actúan como sensores que reconocen señales táctiles de mamá o papá, y como actuadores que transmiten estos movimientos al bebé. El toque de los padres sobre la tela activa sensores que reaccionan a la presión y deforman la película ultrafina. Este ... >>

Arena para gatos Petgugu Global 15.04.2024

Cuidar a las mascotas a menudo puede ser un desafío, especialmente cuando se trata de mantener limpia la casa. Se ha presentado una nueva e interesante solución de la startup Petgugu Global, que facilitará la vida a los dueños de gatos y les ayudará a mantener su hogar perfectamente limpio y ordenado. La startup Petgugu Global ha presentado un inodoro para gatos único que puede eliminar las heces automáticamente, manteniendo su hogar limpio y fresco. Este innovador dispositivo está equipado con varios sensores inteligentes que monitorean la actividad del baño de su mascota y se activan para limpiar automáticamente después de su uso. El dispositivo se conecta al sistema de alcantarillado y garantiza una eliminación eficiente de los residuos sin necesidad de intervención del propietario. Además, el inodoro tiene una gran capacidad de almacenamiento, lo que lo hace ideal para hogares con varios gatos. El arenero para gatos Petgugu está diseñado para usarse con arena soluble en agua y ofrece una gama de arena adicional ... >>

El atractivo de los hombres cariñosos. 14.04.2024

El estereotipo de que las mujeres prefieren a los "chicos malos" está muy extendido desde hace mucho tiempo. Sin embargo, una investigación reciente realizada por científicos británicos de la Universidad de Monash ofrece una nueva perspectiva sobre este tema. Observaron cómo respondieron las mujeres a la responsabilidad emocional y la voluntad de los hombres de ayudar a los demás. Los hallazgos del estudio podrían cambiar nuestra comprensión de lo que hace que los hombres sean atractivos para las mujeres. Un estudio realizado por científicos de la Universidad de Monash arroja nuevos hallazgos sobre el atractivo de los hombres para las mujeres. En el experimento, a las mujeres se les mostraron fotografías de hombres con breves historias sobre su comportamiento en diversas situaciones, incluida su reacción ante un encuentro con un vagabundo. Algunos de los hombres ignoraron al vagabundo, mientras que otros lo ayudaron, como comprarle comida. Un estudio encontró que los hombres que mostraban empatía y amabilidad eran más atractivos para las mujeres en comparación con los hombres que mostraban empatía y amabilidad. ... >>

Noticias aleatorias del Archivo

Auriculares que se pueden autodesinfectar 13.04.2020

Philips siguió una de las principales tendencias en el mercado de la electrónica en los últimos años y también lanzó auriculares totalmente inalámbricos: Philips ActionFi. A diferencia de otros dispositivos de esta clase, la novedad recibió una función de desinfección extremadamente inusual.

El estuche completo proporciona una lámpara ultravioleta incorporada que destruye las bacterias y otros enemigos microscópicos de la humanidad. Por lo tanto, usar auriculares Philips lo ayudará a evitar infecciones de oído. Los propios auriculares han recibido un diseño protegido que cumple con la certificación IPX5, lo que significa que Philips ActionFit no teme a los chorros de agua, pero aun así no sobrevivirán a la inmersión en líquidos.

Los auriculares se basan en controladores de 6 mm capaces de reproducir frecuencias que van desde los 20 Hz hasta los 20 kHz. Philips ActionFit puede durar hasta 6 horas con una sola carga. Si recarga periódicamente el dispositivo en un estuche, la novedad puede proporcionar hasta 18 horas de duración de la batería. También se proporciona una carga rápida: 15 minutos en el estuche son suficientes para 1,5 horas de reproducción.

Otras noticias interesantes:

▪ Células sexuales cultivadas a partir de células madre

▪ Se ha creado una célula nerviosa artificial

▪ La cueva se enfermó

▪ Lenovo es el mayor fabricante de portátiles

▪ El parque eólico flotante más grande que se construirá

Feed de noticias de ciencia y tecnología, nueva electrónica

 

Materiales interesantes de la Biblioteca Técnica Libre:

▪ sección del sitio Consejos para radioaficionados. Selección de artículos

▪ artículo Lista de términos OBZhD y GO. Conceptos básicos de una vida segura

▪ artículo ¿Cuándo se pusieron burros y científicos en el medio? Respuesta detallada

▪ Artículo de Freucinetius. Leyendas, cultivo, métodos de aplicación.

▪ artículo Codificador y decodificador para el canal de radio de alarma de seguridad. Enciclopedia de radioelectrónica e ingeniería eléctrica.

▪ artículo LED domésticos. Enciclopedia de radioelectrónica e ingeniería eléctrica.

Deja tu comentario en este artículo:

Nombre:


Email opcional):


comentar:





Todos los idiomas de esta página

Hogar | Biblioteca | Artículos | Mapa del sitio | Revisiones del sitio

www.diagrama.com.ua

www.diagrama.com.ua
2000 - 2024