Buscamos urgentemente la traducción al chino y al inglés del microcontrolador AT89C51, aproximadamente 5000 palabras
Además, el AT89C51 también cuenta con lógica de estado estable para lógica estática de frecuencias bajas a cero y admite dos modos de apagado seleccionables por software. En modo inactivo, la CPU deja de funcionar. Pero la RAM, los temporizadores, los contadores, los puertos serie y el sistema de interrupción siguen funcionando. En el modo de apagado, el contenido de la RAM se guarda y el oscilador se congela, desactivando todas las demás funciones del chip hasta el próximo reinicio del hardware.
Comunicación serie
La estructura y los registros especiales de un microcontrolador son clave para escribir software. En cuanto a los registros de funciones especiales necesarios para la comunicación serie, son SCON, TCON, TMOD, SCON, etc. ¿Qué representan?
Registro de búfer de datos SBUF Este es un registro especial de puerto serie directamente direccionable. Un amigo preguntó: "¿Por qué tanto el envío como la recepción del puerto serie usan el mismo registro SBUF, en lugar de usar un registro cada uno para enviar y recibir? De hecho, SBUF contiene dos registros independientes, uno es el registro de envío y el otro. son los registros de recepción, pero usan la misma dirección de direccionamiento: 99H en ****. La CPU apunta al registro de recepción cuando lee SBUF y apunta al registro de transmisión cuando escribe, y el registro de recepción es un búfer doble. registrarse, por lo que esto evita el problema de que cuando la interrupción de recepción no recibe una respuesta oportuna, los datos no se eliminan y llega la siguiente trama, el transmisor no necesita usar doble buffer. En circunstancias normales, no es necesario. utilizar una interrupción de envío para enviar datos externamente al escribir un programa de envío. La operación del registro SBUF es muy simple, siempre que la dirección 99H con la palabra clave sfr esté definida como una variable, se pueden realizar operaciones de lectura y escritura. , como sfr SBUF = 0x99; por supuesto, también se pueden usar otros nombres. Generalmente se definen en archivos de encabezado estándar como reg51.h o at89x51.h, siempre que estén #incluidos. > Registro de control del puerto serie SCON Generalmente, para monitorear o controlar el estado de la interfaz en el chip o dispositivo, se hace referencia al registro de control de la interfaz SCON es el registro de control del puerto serie del chip 51. Su dirección de direccionamiento es 98H. un direccionamiento de bits La función del registro es monitorear y controlar el estado de funcionamiento del puerto serie del chip 51. El puerto serie del chip 51 puede funcionar en varios modos de trabajo diferentes. El modo de trabajo se establece a través del registro SCON. Las definiciones específicas son las siguientes:
SM0 SM1 SM2 REN TB8 RB8 TI RI
SM0 y SM1 son los bits de configuración del modo del puerto serie, por lo que estos dos bits pueden configurar los cuatro puertos serie. Modos de trabajo en consecuencia.
Velocidad de baudios de función de modo SM0
0 0 0 Registro de desplazamiento síncrono fosc/12
0 1 1 Variable UART de 8 bits.
1 0 2 UART de 9 bits fosc/32 o fosc/64
1 1 3 Variable UART de 9 bits
Aquí solo explicamos las más comunes Modo usado 1, otros modos los omitiremos uno por uno. Los amigos interesados pueden verificar la información relevante del hardware. El fosc en la tabla representa la frecuencia del oscilador, es decir, la frecuencia del oscilador de cristal. receptor asíncrono universal.
SM2 está en modo 2. y el bit de habilitación de comunicación multiprocesador en modo 3.
En modo 0, este bit debe ser 0.
REM es el bit de habilitación de recepción. Cuando REM se establece en 1, el puerto serie permite la recepción; cuando REM se establece en 0, el puerto serie se desactiva. REM se establece o borra mediante software. Si los pines de recepción y envío P3.0 y P3.1 están conectados a la computadora host en un circuito, hay un controlador de interrupción de puerto serie en el software cuando es necesario para procesar un carácter que no puede ser generado por el. computadora host que controla el puerto serie Al interrumpir una subrutina, puede agregar REM = 0 al comienzo de la subrutina para deshabilitar la recepción y agregar REM = 1 al final de la subrutina para abrir el puerto serie para volver a recibirla. También puedes experimentar usando el código fuente real arriba agregando REM=0.
TB8 transmite el bit de datos 8, que en los modos 2 y 3 es el 9º bit a transmitir. Este bit puede configurarse o borrarse mediante software según sea necesario. Generalmente se usa como bit de paridad en protocolos de comunicación y en comunicación multiprocesador para indicar si se trata de una trama de dirección o de datos.
RB8 Recibir datos Bit 8 En los modos 2 y 3, es el noveno bit de los datos recibidos. Este bit puede ser un bit de paridad, un bit de identificación de dirección/datos. En el modo 0, RB8 es un bit reservado y no se utiliza. En el modo 1, cuando SM2=0, RB8 es el bit de parada para recibir datos.
TI envía bit de identificación de interrupción. En Modo 0, configurado por hardware cuando se envía el octavo bit de datos. En otros modos, el hardware establece este bit cuando comienza a enviar el bit de parada. Después de configurar TI, se solicita una interrupción y la CPU responde a la interrupción y envía la siguiente trama de datos. En cualquier modo, TI debe borrarse mediante software, es decir, después de que los datos se escriben en SBUF, el hardware envía los datos e interrumpe la respuesta (por ejemplo, la interrupción está activada, TI = 1 en este momento). que la transmisión se ha completado y el hardware no borrará TI, por lo que el software debe borrarlo en este momento.
RI recibe el bit de indicador de interrupción. En modo 0, se establece por hardware al final de la recepción del bit 8. En otros modos, el hardware lo configura en medio de un bit de parada de recepción, solicitando una interrupción cuando RI=1 y solicitando a la CPU que reciba datos. Sin embargo, en el Modo 1, cuando SM2=1, RI no se configurará si no se recibe un bit de parada válido. Asimismo, la RI debe borrarse mediante software. El modo serie 1 de uso común es transmitir 10 bits, 1 bit de inicio es 0, 8 bits de datos, little endian primero, 1 bit de parada es 1. La velocidad en baudios es variable y depende del valor del temporizador (tasa de desbordamiento) del Temporizador 1 o del Temporizador 2. Los chips de la serie 51 (como AT89C51 y AT89C2051) tienen solo dos temporizadores, el temporizador 0 y el temporizador 1, mientras que el temporizador 2 solo está disponible para los chips de la serie 89C52. El temporizador 2 solo está disponible en la serie 89C52.
Cuando se utiliza un puerto serie para la comunicación, la velocidad en baudios es un parámetro muy importante. Sólo cuando las velocidades en baudios de las computadoras superior e inferior son las mismas se puede realizar una comunicación normal. La velocidad en baudios es la cantidad de bits en baudios que un puerto serie puede transmitir por segundo. Algunos principiantes piensan que la velocidad en baudios se refiere al número de bytes transmitidos por segundo. Por ejemplo, confunden el estándar 9600 con la transmisión de 9600 bytes por segundo, y se refiere a la transmisión de 9600 bits binarios por segundo. es un byte a 8 binarios Si utiliza el modo 1 del puerto serie para transmitir el bit de inicio y el bit de parada, cada byte de datos ocupará 10 binarios. La velocidad en baudios de 9600 es la misma que la forma de onda del modo 1 cuando se transmite en el modo 1. La velocidad de bits es 9600÷10=960 bytes/segundo. La velocidad en baudios del modo de funcionamiento 0 del puerto serie del chip 51 se fija en fosc/12. Si se utiliza un oscilador de cristal de 12 M, la velocidad en baudios puede ser de hasta 1 M. La velocidad en baudios para el Modo 2 se fija en fosc/64 o fosc/32, dependiendo de si SMOD es 0, la velocidad en baudios es focs/64, si SMOD es 1, la velocidad en baudios es focs/32.
La velocidad en baudios para los modos 1 y 3 es variable y depende de la velocidad de desbordamiento del temporizador 1 o 2 (52 chips). Entonces, ¿cómo calcular los valores de los registros relacionados con la configuración de velocidad en baudios de estos dos modos?
? Puede utilizar la siguiente fórmula para calcular.
Velocidad en baudios = (2SMOD÷32) x velocidad de desbordamiento del temporizador/contador 1
Si el bit SMOD en el registro PCON se establece en 1, la velocidad en baudios se puede cambiar usando el La tasa de fórmula anterior aumentó 2 veces. Por lo general, usamos el temporizador 1 para trabajar en el modo temporizador 2, TL1 cuenta y TH1 se recarga automáticamente. En este modo, después de que el temporizador se desborda, el valor de TH1 se carga automáticamente en TL1 y el conteo comienza nuevamente, lo que se puede hacer sin intervención del software, lo que hace que la sincronización sea más precisa. En este modo de temporización 2, la fórmula de cálculo de la tasa de desbordamiento del temporizador 1 es la siguiente:
Tasa de desbordamiento = (tasa de conteo)/(256-TH1)
" en la fórmula anterior La "tasa de conteo" está relacionada con la frecuencia del oscilador de cristal utilizado, y en el chipset 51 el temporizador iniciará cada ciclo de la máquina después del inicio. En el chip 51, el temporizador aumentará el valor del registro de sincronización TH en 1 en cada ciclo de la máquina. Un ciclo de la máquina es igual a 12 ciclos de oscilación, por lo que podemos saber que la velocidad de conteo del chip 51 es 1/12 de. Para la frecuencia del oscilador de cristal, el chip 51 utiliza un cristal de 12 M, por lo que la tasa de conteo del chip 51 es 1 M. Para obtener una velocidad de baudios estándar sin errores, generalmente se usa un cristal de 11.0592M, ¿a qué se debe esto? ¿Por qué sucede esto? Sólo haz los cálculos y lo sabrás. Si queremos obtener una velocidad de 9600 baudios, el oscilador de cristal es 11.0592M y 12M, el temporizador 1 es el modo 2, SMOD está configurado en 1, encuentre el valor TH1 requerido respectivamente. Sustituir en la fórmula:
11.0592M
9600 = (2÷32)×((11.0592M/12)/(256-TH1))
TH1 = 250
12M
9600 = (2÷32)×((12M/12)/(256-TH1))