Programa de comunicación serie entre PC y microcontrolador
Habilidades de depuración en serie de la simulación del software Keil
El puerto serie es una parte muy importante del microcontrolador sistema. Normalmente, el puerto serie del microcontrolador está conectado a la computadora host a través del chip de conversión de nivel RS232/RS485, realizando así el intercambio de datos, configuración de parámetros, conexión en red y conexión de varios dispositivos externos entre la computadora host y la computadora esclava. El bus de interfaz serie RS232/RS485 tiene las características de bajo costo, simplicidad, confiabilidad, facilidad de uso y 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 sigue siendo una buena opción y tiene amplias perspectivas de aplicación. En la programación de microcontroladores, el puerto serie juega un papel importante. En el método tradicional, la depuración del programa del puerto serie a menudo se lleva a cabo utilizando un simulador de hardware de microcontrolador dedicado. Después de escribir el programa, use el emulador para establecer puntos de interrupción, observar las variables y el progreso del programa, depurar el programa paso a paso y corregir errores. El uso de un emulador de hardware es de hecho un método eficaz, pero también tiene algunas desventajas:
Muchos simuladores no pueden lograr una simulación de hardware completa, lo que provocará errores entre la simulación normal y el funcionamiento real. pero el funcionamiento real es normal.
Para algunos chips más nuevos o chips montados en superficie, o no existe un emulador o encabezado analógico adecuado o el emulador de hardware es muy caro y difícil de comprar;
A veces, debido a las limitaciones del espacio de la estructura interna del dispositivo, el acceso al cabezal simulado resulta incómodo.
Algunos simuladores pertenecen a esta categoría
Para una simulación online sencilla, la simulación tiene muchas limitaciones. Por ejemplo, la velocidad no es alta, el rendimiento o la estabilidad en tiempo real no son buenos, los puntos de interrupción son limitados y la simulación es inconveniente.
1 Preparación antes de la depuración
Este artículo presenta un método para utilizar la función de simulación de software de Keil para depurar programas de usuario y realizar el puerto serie de 51 microcontroladores. Con este enfoque, no se requiere ningún emulador de hardware ni siquiera una placa de usuario. Lo que se necesita es:
①Hardware. 1 computadora ordinaria (requiere dos puertos serie estándar) y 1 puerto serie (ambos extremos son conectores hembra, la relación de conexión se muestra en la Figura 1).
② El software del puerto serie puede ser un software de depuración especial o un software de comunicación entre computadoras host y esclavo 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 tiene 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 prácticas: 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 pruebas de envejecimiento.
Si no hay un puerto serie, puede utilizar un puerto serie virtual para conectar los canales físicos. También puede descargar dicho software en línea.
2 Introducción a los comandos básicos de depuración
Este método de depuración en 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 puede simular más funciones del microcontrolador. Entre estas funciones, una función muy importante 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 en simulación y puede comunicarse directamente con otros puertos serie, lo cual es más conveniente y flexible). Primero, presentaremos los dos comandos necesarios para la simulación: ASIGNAR y MODO.
2.1 Comando de asignación
Vincula el puerto serie del microcontrolador al puerto serie de la computadora. El modo de uso básico es:
Asignar canal
Donde: canal representa el puerto serie de la computadora, que puede ser COM1, COM2, COM3 o COM 4; inreg y outreg representan el; Puerto serie del microcontrolador. Para un microcontrolador normal con un solo puerto serie, es SIN y puerto; para un microcontrolador con dos o más puertos serie, es SnIN y snut (n = 0, 1,... es decir, el número de serie del microcontrolador). ).
Figura 1 Diagrama de conexión en serie
Por ejemplo:
Asigne COM1SOUT
Vincula el puerto serie de la computadora 1 al puerto serie de el microcontrolador (para microcontroladores con un solo puerto serie).
Asigne COM2S0OUT
Vincula el puerto serie 2 de la computadora al puerto serie 0 del microcontrolador (los microcontroladores con múltiples puertos serie deben prestar atención a la ubicación del número de serie).
Cabe señalar que los paréntesis de los parámetros no se pueden omitir, mientras que outreg no tiene paréntesis.
Comando de modo 2.2
Configura los parámetros vinculados al puerto serie de la computadora. El modo de uso básico es:
Modo COMx velocidad de baudios, paridad, bits de datos, bits de parada
Donde: comx (x = 1, 2,...) representa la computadora. número de serie; la velocidad en baudios representa la velocidad en baudios del puerto serie; la verificación de paridad representa el modo de verificación; los bits de datos representan la longitud de los bits 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. Velocidad de transmisión 19 200, paridad impar, 8 bits de datos, 1 bit de parada.
Usando los dos comandos anteriores, el puerto serie de la computadora se puede simular como el puerto serie del microcontrolador. Durante la simulación del software, todos los datos enviados al puerto serie de la computadora vinculado se reenviarán al puerto serie del microcontrolador simulado por Keil, y el programa de usuario puede recibir estos datos a través del controlador de interrupciones o consulta. De manera similar, los datos enviados al puerto serie de la MCU en el programa MCU también se enviarán a través del puerto serie de la computadora vinculado y podrán ser recibidos por otro software. Con esta función, podemos simular y depurar fácilmente algunos programas del puerto serie del microcontrolador. Tenga en cuenta que estos dos comandos deben usarse juntos.
2.3 Pasos de la simulación
Primero, conecte los dos puertos serie de una computadora (o dos puertos serie en dos computadoras) con un cable de puerto serie. Uno de estos dos puertos serie se usa para simular el puerto serie del microcontrolador y el otro se usa para depurar el programa. Esto lo asigna el propio usuario y no existen requisitos especiales.
En segundo lugar, escriba el programa de usuario y compílelo.
Luego, configure los parámetros relevantes del proyecto, como se muestra en la Figura 2 y la Figura 3. Seleccione principalmente los parámetros del simulador de software y del oscilador de cristal.
Figura 2 Configuración de parámetros de simulación
Para evitar 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 en la simulación, que se ingresan uno por uno en orden. Como se muestra en la Figura 2, se crea un archivo de inicialización debug.ini. De esta manera, Keil cargará automáticamente el contenido de debug.ini para su inicialización cada vez que ingrese al estado de depuración de simulación.
Figura 3 Configuración de los parámetros del oscilador de cristal
Para simular correctamente
el puerto serie y la depuración de la simulación del software, la frecuencia real del oscilador de cristal debe estar en el propiedades del archivo de proyecto Keil del usuario en la configuración. Este parámetro es muy importante y afecta directamente la velocidad en baudios de la comunicación. Se puede configurar según los parámetros reales. 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, haga clic aquí para explorar la imagen en una nueva ventana para ingresar al estado de depuración e ingrese el comando anterior en el cuadro de texto del comando (generalmente en la esquina inferior izquierda) en la ventana de salida. Por ejemplo, configure el puerto serie de la PC 1 al puerto serie del microcontrolador:
Modo com1 9600, 0, 8, 1
Asignar com1 Sout
Luego establezca un punto de interrupción, generalmente en lugares clave o lugares relacionados con el puerto serie. Luego haga clic en el icono para ejecutar el programa de usuario para que pueda ejecutarse (de lo contrario, no se podrán recibir los datos en 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 verificar si el programa del usuario ha ingresado al punto de interrupción y si las variables relevantes son correctas. También puede enviar deliberadamente paquetes de datos con datos incorrectos para observar si la parte de manejo de excepciones del programa de usuario es normal. Una vez que se encuentra un error en el programa, puede detener inmediatamente la depuración de la simulación, modificar el código inmediatamente y luego repetir los pasos anteriores para simular nuevamente. Debido a que no es necesario conectarse al tablero de destino del usuario ni descargar código al tablero de usuario, la velocidad es muy alta. Los pasos son básicamente los mismos que usar un emulador de hardware, excepto que ahora estás usando una emulación de software.
Cabe señalar que la velocidad de transmisión 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 las velocidades en baudios de la simulación, incluso si son incorrectos). Sin embargo, los bits de habilitación de interrupciones (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 usa el software Keil para convertir los datos en el puerto serie en lugar de reenviar los datos directamente, por lo que el procesamiento de simulación real La velocidad será más rápida que la del microcontrolador real. Por ejemplo, en el estado de simulación, 1 solo puede enviar y recibir 10 tramas de datos, pero cuando se ejecuta en el hardware del microcontrolador, 1 puede enviar y recibir 50 tramas de datos. Esto está relacionado con la velocidad del ordenador utilizado pero no tiene ningún efecto 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, este método ocupa el doble de puertos serie vinculados al microcontrolador. Keil ocupa un puerto serie 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í se aplica tanto a C51 como al 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. Incluso antes de realizar el circuito de hardware, el programa del puerto serie se puede escribir y depurar. Llevo mucho tiempo utilizando este método y ha demostrado ser muy eficaz. De hecho, la función de simulación de Keil es demasiado poderosa para el microcontrolador 51. Siempre que comprendamos plenamente sus características y lo utilicemos con habilidad, podremos resolver la mayoría de los problemas en el trabajo.
Muchas tareas no requieren ningún simulador de hardware y se pueden completar mediante simulación de software. Es posible que solo se necesite un simulador de hardware al depurar la sincronización y la interfaz de algunos dispositivos externos nuevos. Actualmente hay muy pocos libros de referencia sobre la simulación del software Keil y algunos 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, lo utilizará. Una vez que domines su uso, descubrirás que Keil es bastante poderoso.
Para la programación del puerto serie, el microcontrolador 51 tiene Keil, un potente software de desarrollo, que nos brinda una gran comodidad, pero en el desarrollo de otro software de microcontrolador, 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 utilizó este método en el desarrollo del microcontrolador PIC18 y obtuvo 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, hacer que el programa sea más versátil y trasplantarlo con éxito a otras plataformas de microcontroladores al mínimo costo. También vale la pena pensar en el problema.