La Red de Conocimientos Pedagógicos - Currículum vitae - Programa para comunicación serial entre PC y microcontrolador

Programa para comunicación serial entre PC y microcontrolador

/bluebasket/blog/item/835033097c7117ab2fddd46f.html

Habilidades de depuración del puerto serie de la simulación del software Keil

En el sistema del microcontrolador, el puerto serie (UART, La interfaz del receptor y receptor asíncrono universal) es un componente muy importante. Por lo general, el puerto serie del microcontrolador se utiliza para conectarse a la computadora host a través del chip de conversión de nivel RS232/RS485 para intercambiar datos entre la computadora host y la computadora inferior, establecer parámetros, formar una red y conectar varios dispositivos externos. El bus de interfaz serie RS232/RS485 tiene las características de bajo costo, simplicidad, confiabilidad y facilidad de uso. Además, tiene una larga historia, por lo que todavía se usa ampliamente, especialmente en ocasiones donde la cantidad de datos no es muy grande. La comunicación en serie a gran escala sigue siendo una buena opción y tiene amplias perspectivas de aplicación. En la programación de microcontroladores, el puerto serie ocupa una posición muy importante. Tradicionalmente, la depuración de programas de puerto serie suele utilizar un emulador de hardware de microcontrolador dedicado. Después de escribir el programa, utilice el emulador para establecer puntos de interrupción, observar las variables y el flujo del programa y depurar gradualmente el programa y corregir errores. Usar un emulador de hardware es de hecho un método muy efectivo, pero también tiene algunas desventajas:

Muchos emuladores no pueden lograr una emulación de hardware completa, lo que hará que la simulación sea normal pero que se produzcan errores durante la operación real; también La simulación falla, pero el funcionamiento real es normal.

Para algunos chips más nuevos o chips montados en superficie, no existe un emulador o un encabezado de simulación adecuados o el emulador de hardware es muy caro y no es fácil de comprar;

A veces, debido a la limitación del espacio de la estructura interna del dispositivo, resulta incómodo acceder al cabezal de emulación.

Algunos emuladores son

tipos de emulación en línea simples y tienen muchas limitaciones durante la simulación. Por ejemplo, la velocidad no es alta, el rendimiento o la estabilidad en tiempo real no son buenos y existen restricciones en los puntos de interrupción, etc., lo que hace que la simulación sea inconveniente.

1 Trabajo de preparación antes de la depuración

A continuación se presenta un método para utilizar la función de simulación del software de Keil para realizar el programa de usuario de depuración del puerto serie de 51 microcontroladores. Con este enfoque, no se requiere ningún emulador de hardware ni siquiera una placa de usuario. Todo lo que necesitas es:

① Hardware. 1 computadora normal (requiere 2 puertos serie estándar) y 1 cable de puerto serie (ambos extremos son hembra, la relación de conexión se muestra en la Figura 1).

② El software del puerto serie puede ser un software especial de depuración o comunicación entre computadoras host y esclavas escrito por usted mismo, o puede ser un software de puerto serie general (como asistente de puerto serie, depuración de puerto serie, etc.) , que se utiliza principalmente para enviar y recibir datos. Si no existe un software de depuración de puerto serie adecuado, puede utilizar TurboCom, un dispositivo de puerto serie gratuito escrito por el autor. Además de las mismas funciones de envío y recepción de datos que otros programas, también tiene dos funciones muy útiles: enviar marcos de datos personalizados en turnos programados y respuesta automática (devolver automáticamente el marco de datos correspondiente después de recibir el marco de datos especificado), lo cual es especialmente Adecuado para prueba de envejecimiento.

Si no hay un cable de puerto serie, puede utilizar un puerto serie virtual para conectar el canal físico y descargar dicho software en línea.

2 Introducción a los comandos básicos de depuración

Este método de depuración de puerto serie utiliza principalmente la potente función de simulación de software de Keil. En la nueva versión del software Keil (superior a 6.0), se ha mejorado la capacidad de simulación del software y el software se puede utilizar para simular más funciones del microcontrolador. Entre estas funciones, una de las más importantes es utilizar el puerto serie de la computadora para simular el puerto serie del microcontrolador (esto es diferente del método de archivo de estímulo utilizado por muchos software durante la simulación y puede comunicarse directamente con otros puertos serie. que es más conveniente y flexible). Primero, presentaremos los dos comandos que deben usarse durante la simulación: ASIGNAR y MODO.

2.1 Comando ASSIGN

Vincula el puerto serie del microcontrolador al puerto serie de la computadora.

El uso básico es:

ASSIGN channeloutreg

Entre ellos: canal representa el puerto serie de la computadora, que puede ser COM1, COM2, COM3 o COM4 e inreg y outreg representan el; Puerto serie del microcontrolador. Para microcontroladores ordinarios con un solo puerto serie, es decir, SIN y SOUT para microcontroladores con dos o más puertos serie, es decir, SnIN y SnOUT (n=0, 1,... es decir, el número de puerto serie del; microcontrolador).

Figura 1 Diagrama de conexión del puerto serie

Por ejemplo:

ASIGNAR COM1SOUT

Vincule el puerto serie 1 de la computadora al puerto serie del microcontrolador (Para microcontroladores con un solo puerto serie).

ASSIGN COM2S0OUT

Vincula el puerto serie 2 de la computadora al puerto serie 0 del microcontrolador (para microcontroladores con múltiples puertos serie, preste atención a la ubicación del número de puerto serie).

Cabe señalar que los paréntesis de los parámetros no se pueden omitir, mientras que outreg no tiene paréntesis.

2.2 Comando MODE

Establece los parámetros del puerto serie del ordenador vinculado. El uso básico es:

MODO COMx velocidad en baudios, paridad, bits de datos, bits de parada

Entre ellos: COMx (x = 1, 2,...) representa el número de puerto serie del computadora; la velocidad en baudios representa el número de puerto serie La velocidad en baudios representa el modo de paridad; los bits de datos representan la longitud del bit de parada;

Por ejemplo:

MODO COM1 9600, n, 8, 1

Establezca el puerto serie 1. La velocidad en baudios es 9600, sin bit de paridad, 8 bits de datos, 1 bit de parada.

MODO COM2 19200, 1, 8, 1

Configurar puerto serie 2. La velocidad en baudios es 19 200, paridad impar, 8 bits de datos, 1 bit de parada.

Utilizando los dos comandos anteriores, puede simular el puerto serie de la computadora en el puerto serie del microcontrolador. Durante la simulación del software, todos los datos enviados al puerto serie de la computadora vinculada se reenviarán al puerto serie del microcontrolador simulado Keil. El programa del usuario puede recibir estos datos a través del controlador de interrupciones o el método de consulta, de manera similar, el programa del microcontrolador envía los datos al; El puerto serie del microcontrolador también se enviará a través del puerto serie vinculado de la computadora y puede ser recibido por otro software. Con esta función, puede simular y depurar fácilmente el programa del puerto serie del microcontrolador. Tenga en cuenta que estos dos comandos deben usarse juntos.

2.3 Pasos de la simulación

Primero, utilice un cable de puerto serie para conectar los dos puertos serie de la computadora (o dos puertos serie en dos computadoras). Uno de estos dos puertos serie se utiliza para simular el puerto serie del microcontrolador y el otro lo utiliza el depurador. Esto lo asigna el usuario y no existen requisitos especiales.

En segundo lugar, escriba el programa de usuario y compílelo.

Luego, configure los parámetros relevantes del archivo del proyecto (Proyecto), como se muestra en la Figura 2 y la Figura 3. Lo principal es seleccionar el modo de simulación del software (Usar simulador) y los parámetros del oscilador de cristal.

Figura 2 Configuración de parámetros de simulación

Para evitar tener que ingresar el comando de configuración de parámetros del puerto serie cada vez que ingresa al estado de simulación, puede crear un archivo de inicialización. El archivo de inicialización es un archivo de texto normal. El contenido son los comandos necesarios para la simulación. Introdúzcalos una línea a la vez en orden. Como se muestra en la Figura 2, se crea un archivo de inicialización debug.ini. De esta manera, cada vez que ingrese al estado de depuración de simulación, Keil cargará automáticamente el contenido de debug.ini para la inicialización.

Figura 3 Configuración de los parámetros del oscilador de cristal

Para simular correctamente

el puerto serie, durante la simulación y depuración del software, también es necesario configurar las propiedades del archivo de proyecto Keil del usuario. La frecuencia de cristal real utilizada. Este parámetro es muy importante y afecta directamente la velocidad en baudios de la comunicación. Se puede configurar de acuerdo con los parámetros reales utilizados. Tenga en cuenta que la unidad de este parámetro es MHz.

Después de configurar los parámetros, puede iniciar la simulación. Haga clic en el icono en la barra de herramientas y haga clic aquí para explorar la imagen en una nueva ventana para ingresar al estado Depurar (depuración de simulación). Ingrese el comando introducido anteriormente en el cuadro de texto del comando (generalmente en la esquina inferior izquierda) en la ventana Salida. Por ejemplo, configure el puerto serie 1 de la PC al puerto serie del microcontrolador:

modo com1 9600, 0, 8, 1

asigne com1 Sout

Luego configure los puntos de interrupción generalmente se configuran en lugares clave o lugares asociados con el puerto serie. Luego haga clic en el icono para ejecutar el programa de usuario para que se ejecute (de lo contrario, no se recibirán los datos del puerto serie). En este momento, utilice el software de depuración del puerto serie o el software de depuración del usuario para enviar comandos de comunicación o paquetes de datos para ver si el programa del usuario ha entrado en el punto de interrupción y si las variables relevantes son correctas. También puede enviar intencionalmente paquetes con datos de error para observar si la parte de manejo de excepciones del programa de usuario es normal. Una vez que se descubre un error en el programa, puede detener la depuración de la simulación inmediatamente, modificar el código inmediatamente y luego repetir los pasos anteriores nuevamente para la simulación. Debido a que no es necesario conectarse al tablero de destino del usuario ni descargar el código al tablero del usuario, la velocidad es muy alta. Los pasos anteriores son básicamente los mismos que usar un emulador de hardware, excepto que ahora se usa la emulación de software.

Cabe señalar que durante la simulación, la velocidad en baudios real del puerto serie del microcontrolador se especifica mediante el comando MODE, TMOD, SCON y otros parámetros en el programa del microcontrolador no afectan el estado de simulación del puerto serie (. es decir, estos parámetros no afectan a las velocidades de baudios simuladas, aunque sean erróneas). Sin embargo, los bits de habilitación de interrupción (como ES, EA, etc.) aún funcionan. Si ES o EA están deshabilitados, no se ingresará la interrupción del puerto serie.

Debido a que este método utiliza el puerto serie de la computadora para simular el puerto serie del microcontrolador, y la simulación utiliza el software Keil para convertir los datos en el puerto serie, en lugar de reenviar los datos directamente, por lo que durante En la simulación real, la velocidad de procesamiento será un poco menor que cuando el microcontrolador real está funcionando. Por ejemplo, en el estado de simulación, solo se pueden enviar/recibir 10 tramas de datos en 1 s, pero cuando se ejecuta en el hardware del microcontrolador, se pueden recibir/enviar 50 tramas de datos en 1 s. Esto está relacionado con la velocidad del ordenador utilizado, pero no tiene ningún impacto en la simulación.

Para microcontroladores con múltiples puertos serie, en teoría, se pueden vincular varios puertos serie a la vez, siempre que la computadora tenga suficientes puertos serie. Básicamente, utilizar este método requiere el doble de puertos serie en la computadora que los puertos serie vinculados al microcontrolador. Un puerto serie está ocupado por Keil y se utiliza para simular el puerto serie del microcontrolador; el otro puerto serie está ocupado por la computadora y se utiliza para enviar y recibir datos al puerto serie del microcontrolador.

3 Resumen

El método presentado aquí es adecuado tanto para C51 como para lenguaje ensamblador. Su mayor ventaja es que es simple, conveniente y fácil de usar. No requiere el uso de ningún circuito y no tiene requisitos especiales; el programa del puerto serie puede incluso escribirse y depurarse antes de crear el circuito de hardware. He estado usando este método durante mucho tiempo y ha demostrado ser muy eficaz. De hecho, para el microcontrolador 51, la función de simulación de Keil es realmente poderosa. Siempre que comprenda completamente sus características y la utilice con habilidad, podrá resolver la mayoría de los problemas en el trabajo. Muchas tareas se pueden completar mediante simulación de software sin ningún emulador de hardware; solo la sincronización y la depuración de la interfaz de algunos dispositivos externos nuevos pueden requerir el uso de un emulador de hardware.

Actualmente hay muy pocos libros de referencia que presenten la simulación del software Keil, y algunos todavía hablan sobre el uso de versiones anteriores, pero no importa, el archivo de ayuda de Keil es muy detallado y claro, siempre que lo lea detenidamente. capaz de utilizarlo. Una vez que domines su uso, descubrirás que las funciones de Keil son bastante poderosas.

Para la programación del puerto serie, el microcontrolador 51 tiene Keil, un potente software de desarrollo, que nos brinda una gran comodidad, mientras que en el desarrollo de otro software de microcontrolador, actualmente no existen herramientas de desarrollo tan poderosas ni medios de depuración convenientes; . Aquí hay una solución, es decir, primero puede escribir y depurar el programa del puerto serie en Keil y luego trasplantar el programa a otras plataformas de microcontroladores (el autor ha utilizado este método en el desarrollo de microcontroladores PIC18 y ha obtenido buenos resultados). Por supuesto, esto significa que cuando se utiliza el lenguaje C para desarrollar programas de microcontroladores, el lenguaje ensamblador no es portátil. En cuanto a cómo reducir la carga de trabajo del trasplante de programas para que el programa tenga una mayor versatilidad y pueda trasplantarse sin problemas a otras plataformas de microcontroladores con un costo mínimo, también es un tema que vale la pena explorar.