Leer código fuente en chino e inglés

Combinando las señales de control correctas y manteniendo el pin ALE bajo durante 10 ms, se puede lograr el borrado eléctrico de toda la matriz PEROM y los tres bits de bloqueo. Durante una operación de borrado de chip, la matriz de códigos se escribe solo con "1". y esta operación debe realizarse antes de que se programe repetidamente cualquier byte de memoria que no sea nulo.

Además, el AT89C51 está equipado con lógica de estado estable que se puede utilizar hasta frecuencia 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 los sistemas de interrupción siguen funcionando. En el modo de apagado, el contenido de la RAM se guarda, el oscilador se congela y otras funciones del chip se desactivan hasta el próximo reinicio del hardware.

Comunicación en serie

La estructura y los registros especiales del microcontrolador son las claves para escribir software. En cuanto a los registros de funciones especiales necesarios para la comunicación serie, existen SCON, TCON, TMOD, SCON, etc. ¿Qué quieren decir?

Registro de búfer de datos SBUF Este es un registro especial de puerto serie directamente direccionable. Un amigo preguntó: "¿Por qué los transceptores de puerto serie sólo utilizan el mismo registro SBUF?". En lugar de transmitir y recibir registros. "En realidad, SBUF contiene dos registros independientes, uno es el registro de transmisión y el otro es el registro de recepción, pero ambos usan la misma dirección: 99H. Cuando la CPU lee SBUF, apuntará al registro de recepción, y al escribir, apuntará al registro de transmisión, el registro de recepción es un registro de búfer doble, lo que puede evitar el problema de superposición de datos causado por la interrupción de la recepción que no responde a tiempo, los datos no se toman y ha llegado el siguiente cuadro de datos. El extremo de envío no necesita usar almacenamiento en búfer doble. En circunstancias normales, estamos escribiendo para enviar. No es necesario utilizar la interrupción de envío para enviar datos externamente durante el programa. El método de operación del registro SBUF es muy simple. La palabra clave sfr define la dirección 99H como una variable y se puede leer y escribir, como sfr SBUF = 0x99. Por supuesto, también puede usar otros nombres. Generalmente se define en un archivo de encabezado estándar como reg51. ho at89x51.h, y se puede hacer referencia con #include.

Para monitorear o controlar el estado de la interfaz en el chip o dispositivo, generalmente se usa el registro de control del puerto serie SCON. registro de control. SCON es el registro de control del puerto serie del chip 51. Su dirección de direccionamiento es 98H. Es un registro direccionable por bits. Su función es monitorear y controlar el estado de funcionamiento del puerto serie. Modos de trabajo El modo de trabajo se establece utilizando el registro SCON. Las definiciones específicas de sus bits son las siguientes:

SM0 SM1 SM2

SM0 y SM1 son la configuración del modo de trabajo del puerto serie. bits, por lo que estos dos bits pueden configurar cuatro modos en consecuencia

Velocidad de baudios de función de modo SM0

0 0 0 Registro de desplazamiento síncrono fosc/12

p>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 se explica el modo 1 más utilizado, y los demás modos se omiten uno por uno. Los amigos interesados ​​pueden encontrar información de hardware relevante. Fosc en la tabla representa la frecuencia del oscilador de cristal (. Receptor asíncrono universal). p>

SM2 es el bit de habilitación para la comunicación multiprocesador en Modo 2 y Modo 3. En Modo 0, este bit debe ser 0. Bit que permite la recepción Cuando REM se establece en 1, el puerto serie permite la recepción. se establece en 0, la recepción se desactiva o se desactiva mediante software si los pines de recepción y transmisión P3.0 y P3.1 están en el mismo circuito y están conectados a la computadora host, y hay un controlador de interrupciones en el puerto serie. en el software cuando se procesa una subrutina y se requiere que el puerto serie no sea interrumpido por los caracteres de control de la computadora host, puede agregar REM=0 al comienzo de la subrutina para deshabilitar la recepción. Agregar REM=1 al final de la subrutina. el programa abra el puerto serie para recibir nuevamente.

También puede utilizar el código fuente real anterior y agregar REM=0 para experimentar.

TB8 envía el bit de datos 8, que es el noveno bit enviado en los modos 2 y 3. Este bit se puede configurar o borrar mediante software según sea necesario. Por lo general, este bit se usa como bit de paridad en los protocolos de comunicación. En la comunicación multiprocesador, este bit se usa para indicar si se trata de una trama de dirección o de datos.

RB8 recibe el bit de datos 8, que es el noveno bit de datos recibidos en el modo 2 y el modo 3. Este bit puede ser un bit de paridad y un bit de identificación de dirección/datos. En modo 0, RB8 es un bit reservado que no se utiliza. En el modo 1, cuando SM2=0, RB8 es el bit de parada para recibir datos.

TI envía bit de bandera de interrupción. En el modo 0, lo establece el hardware cuando se envía el octavo bit de datos. En otros modos, el bit de parada lo establece el hardware al comienzo de la transmisión. Una vez configurado TI, solicite una interrupción. Después de que la CPU responde a la interrupción, envía el siguiente cuadro 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 y se responde a la interrupción (por ejemplo, se habilita la interrupción). En este momento, TI = 1, lo que indica que la transmisión se ha completado. TI no será borrado por el hardware y debe borrarse por el software.

RI recibe bit de indicador de interrupción. En el modo 0, lo establece el hardware al final de recibir el octavo bit. En otros modos, se establece mediante hardware a mitad de la recepción del bit de parada. RI = 1, solicita una interrupción y solicita a la CPU que obtenga datos. Sin embargo, en el Modo 1, cuando SM2 = 1, RI no se establecerá si no se recibe un bit de parada válido. RI también debe eliminarse mediante software. El modo 1 del puerto serie comúnmente utilizado transmite 10 bits. El bit inicial de 1 es 0, datos de 8 bits, el orden inferior primero. El bit de parada de 1 es 1. Su velocidad en baudios es variable y depende del valor de temporización del Temporizador 1 o del Temporizador 2 (tasa de desbordamiento). Los chips de la serie 51, como AT89C51 y AT89C2051, solo tienen dos temporizadores, el temporizador 0 y el temporizador 1. El temporizador 2 es exclusivo de los chips de la serie 89C52.

Velocidad en baudios Cuando se utiliza un puerto serie para la comunicación, un parámetro muy importante es la velocidad en baudios. Sólo cuando las velocidades en baudios de las computadoras superior e inferior sean las mismas se podrá realizar una comunicación normal. La velocidad en baudios se refiere a la cantidad de bits en baudios que un puerto serie puede transmitir por segundo. Algunos principiantes piensan que la velocidad en baudios se refiere a la cantidad de bytes transferidos por segundo. Por ejemplo, el estándar 9600 se confundirá con 9600 bytes por segundo, pero en realidad significa que se pueden transmitir 9600 bits por segundo y un byte requiere 8 bits. Si se utiliza la transmisión por puerto serie, cada byte de datos ocupará 10 bits más el bit de inicio y el bit de parada. En este modo se utiliza una velocidad de 9600 baudios. La velocidad en baudios del puerto serie modo 0 del chip 51 es fija, fosc/12. Calculada en base a un oscilador de cristal de 12 M, la velocidad en baudios puede alcanzar 1 M. La velocidad en baudios del modo 2 se fija en fosc/64 o fosc/32, dependiendo del bit SMOD en el registro PCON. Por ejemplo, si SMOD es 0, la velocidad en baudios es focs/64, si SMOD es 1, la velocidad en baudios. la tasa es focs/ 32. La velocidad en baudios para el Modo 1 y el Modo 3 es variable y depende de la velocidad de desbordamiento del Temporizador 1 o 2 (52 chips). Entonces, ¿cómo calculamos estos dos módulos?

¿Cuál es el valor del registro relevante al configurar la velocidad en baudios de la fórmula? Se puede calcular mediante la siguiente fórmula.

Velocidad en baudios = (2smod ÷ 32) × velocidad de desbordamiento del temporizador 1

En la fórmula anterior, si el bit SMOD en el registro PCON se establece en 1, la velocidad en baudios puede aumentar 2 veces. El temporizador 1 se utiliza normalmente para funcionar en el modo de temporizador 2. En este momento, TL1 en el valor de tiempo se usa como conteo y TH1 se usa como valor de recarga automática. En este modo de sincronización, después de que el temporizador se desborde, el valor de TH1 se cargará automáticamente en TL1 y el conteo se reiniciará sin intervención del software, lo que hará que la sincronización sea más precisa. En este modo de sincronización 2, la fórmula de cálculo para la tasa de desbordamiento del temporizador 1 es la siguiente:

Tasa de desbordamiento = (tasa de conteo)/(256-th1)

" en lo anterior La fórmula "tasa de conteo" está relacionada con la frecuencia del oscilador de cristal utilizado.

Después de que se inicia el temporizador en el 51 chip, el valor del registro de sincronización TH se incrementará en uno en cada ciclo de la máquina. Un ciclo de la máquina es igual a doce ciclos de oscilación. Por lo tanto, se puede saber que la velocidad de conteo del 51 chip. es 65438/12M de la frecuencia del oscilador de cristal. Uno es 65438. Por lo general, se utiliza un cristal de 11,0592 M para obtener la velocidad en baudios estándar y no habrá ningún error. Simplemente haz los cálculos y lo sabrás. Si desea obtener una velocidad de baudios de 9600, el oscilador de cristal es 11,0592 M y 12 M, el temporizador 1 es el modo 2 y SMOD está configurado en 1, entonces echemos un vistazo al valor requerido de TH1. Fórmula de sustitución:

11,0592 metros

9600 =(2÷32)×((11,0592m/12)/(256-th 1))

TH1 =250

12M

9600 =(2÷32)×((12M/12)/(256-ésimo 1))

TH1≈249.49

Se puede ver en el cálculo anterior que cuando se usa un cristal de 12M, el TH1 calculado no es un número entero. El valor de TH1 solo puede ser un número entero, por lo que habrá algunos errores y la precisión de 9600 baudios. No se puede generar la tasa. Por supuesto, se pueden aceptar ciertos errores durante el uso. Incluso si utiliza un oscilador de cristal 11.0592M, el error en el cristal mismo causará un error en la velocidad en baudios, pero el error en el cristal en sí tiene un impacto muy pequeño en la velocidad en baudios y puede ignorarse.

Todo el conjunto PEROM tiene tres objetivos eléctricos que, además de la combinación correcta de señales de control, también mantienen el pin ALE bajo para completar la descarga en 10 milisegundos. Durante una operación de borrado de chip, todas las matrices de códigos se escriben con "1" y esta operación debe realizarse antes de que se programe repetidamente cualquier campo de memoria que no esté vacío.

Además, AT89 C51 tiene lógica de estado estable incorporada, que puede admitir dos modos de apagado seleccionables por software bajo lógica estática de frecuencia tan baja como cero. En modo inactivo, la CPU deja de funcionar. Pero la RAM, la máquina del tiempo fijo, la máquina de estadísticas, la cadena y el sistema de interrupción siguen funcionando. En el modo de apagado, el contenido de la RAM y la fluctuación de la memoria se guardan y se prohíbe el uso de otras funciones del chip hasta el próximo reinicio del hardware.

Comunicación en cadena

La estructura especial de la máquina del microordenador de un solo chip y el ordenador de respaldo es la clave para escribir software. En cuanto a las máquinas de memoria con funciones especiales que se requieren para la comunicación de cadenas, son SCON, TCON, TMOD, SCON, etc. ¿Qué significa cada uno?

Esta es una cadena que puede buscar directamente una línea de dirección de memoria dedicada. Un amigo preguntó una vez: "¿Por qué solo utilizamos la misma memoria SBUF cuando recibimos y enviamos líneas en una cadena?". Pero no se trata de que se utilice una máquina para enviar y recibir. "De hecho, SBUF contiene dos memorias independientes, una es la memoria de envío y la otra es la memoria de recepción, pero ambas usan la misma dirección: 99 Hs. La CPU apuntará al búfer de recepción cuando lea SBUF y cuando escriba puntos. al búfer de transmisión y el búfer de recepción es un par de búferes. Esto puede evitar el problema de que la interrupción de recepción no responde a tiempo, los datos se eliminan y los siguientes datos llegan, lo que provoca que la capa de datos se superponga y No es necesario utilizar el transmisor. Para los buffers doble a, generalmente no necesitamos usar una interrupción de envío, ni necesitamos enviar datos al escribir un programa de envío. El método de operación de la memoria SBUF es muy simple. , Simplemente use la palabra clave sfr para modificar la definición de la dirección 99 H a 1, que se puede usar para leerla y escribirla, como sfr SBUF = 0 xes 99. Por supuesto, también puede usar otros nombres. definido en el archivo de encabezado, como reg hs o en 89 xes 51. Estándar, solo use la referencia #include

La memoria de control del puerto serie SCON generalmente se usa para monitorear o controlar el estado de la interfaz. el chip o dispositivo, y hará referencia al control desde la interfaz. La memoria SCON es la memoria de control del puerto serie del chip 51.

Su dirección de direccionamiento es 98 Hs, la cual es una máquina de memoria direccionable su función es monitorear y controlar el estado en línea de 51. Esta serie de 51 chips puede funcionar en varios modos de trabajo diferentes. El modo de trabajo está compuesto por memoria SCON. Su definición específica de cada uno es la siguiente:

SM0 SM1 SM2

SM0 y SM1 son los modos de trabajo en una serie de líneas, por lo que 2 se puede utilizar en cuatro modos constituidos. Establecimiento del modo de trabajo en serie.

Modo SM0 SM1 función onda tarifa especial

000 máquina de almacenamiento móvil síncrona fosc/12

0 a 8 UART son variables

A 029 UART fosc/32s o fosc/64

Los UART A 39 son variables

Instrucción 1 en mi modo más utilizado, otros modos también se omiten uno por uno, los amigos interesados ​​pueden mirar para obtener información relevante sobre el hardware. La forma representativa de fosc es un oscilador de frecuencia de batido, que es una frecuencia de batido de cristal. UART es la abreviatura en inglés de (Universal Asynchronous Receiver).

SM2 tiene la capacidad de manejar comunicaciones de máquinas en Modo 2 y Modo 3. Solicitando 0 en modo 0.

Para permitir la recepción de REM, REM coloca la cadena 1:00 como que permite la recepción y 0:00 como que prohíbe la recepción. REM se establece mediante software o cero puro. Si los pines del transceptor P3.0 y p 3.1 están conectados a la computadora host en un circuito, hay una serie de controladores de interrupciones en el software. Cuando se procesa un determinado programa de estado, se solicita no permitir que el programa genere cadenas. tabla de caracteres de control de la computadora host Interrupción, por lo que puede agregar REM = 0 al comienzo del programa de estado para deshabilitar la recepción, y agregar REM a la subrutina over=1 para habilitar la recepción de cadenas. También puede usar el código fuente real. con top=0 para agregar REM para iniciar el experimento.

TB8 envía un dato 8, y en modo 2 y modo 3 se envía el 9º. Eso se puede colocar o borrar usando software según sea necesario; generalmente esto es una sorpresa extraña en el protocolo de comunicación, que en la comunicación del procesador se usa para representar más una dirección o datos.

RB8 recibe los datos 8. En el modo 2, el 3 es el noveno dato que se ha recibido. Esto podría ser un extraño etiquetado accidental de direcciones/datos. En el modo 0, RB8 no se utiliza para reservas. Be SM 2=En modo 10, RB8 es la estación que ha recibido los datos.

TI emite un indicador de interrupción. En modo 0, envío completo del octavo dato, colocado por hardware. Luego, el inicio de la parada enviada en otros modos se realiza mediante hardware. Después de colocar el TI, la aplicación se interrumpe y la CPU envía los siguientes datos después de responder a la interrupción. En cualquier modo, TI debe borrarse mediante software, es decir, después de que los datos se escriben en SBUF, el hardware envía datos y responde a la interrupción (si la interrupción está activada en este momento, TI = 1). el envío se ha completado y TI no se puede enviar desde el hardware. Borrar, por lo que se debe utilizar el software para borrarlo en este momento.

Rotary International recibió una bandera de bloqueo. En modo 0, recibe el octavo extremo, colocado por hardware. Luego, en otros modos, la parada de recepción se coloca mediante hardware. RI = 1, la aplicación se interrumpe y solicita a la CPU que recupere un dato. Pero en el modo 1, SM 2=1:00, que es una parada válida para recepción, no se colocará en RI. De manera similar, RI también depende del software para pasar el despacho de aduanas. En el patrón de cadena común, 1 se pasa por 10, un punto inicial es 0, 8 datos, el bit bajo está en la primera posición y un punto final es 1. Su velocidad de fluctuación es variable y su velocidad está determinada por el valor de una máquina 1 en un tiempo fijo o una máquina 2 en un tiempo fijo. (Velocidad de desbordamiento) chips de la serie 51 como AT89 C51 y AT89 C2051, etc. Solo hay dos máquinas de cronometraje, la máquina de cronometraje 0 y la máquina de cronometraje 1, y la máquina de cronometraje 2 es exclusiva de los chips de la serie 89 C52.

Cuando se utiliza el puerto serie para la comunicación, un parámetro muy importante es la velocidad del puerto serie. La comunicación normal solo se puede realizar cuando las velocidades del puerto serie de las máquinas superior e inferior son similares. La velocidad de forma de onda es la forma de onda de cada dígito en una línea que se puede transmitir dentro de un puerto.

Algunos amigos principiantes piensan que la velocidad en baudios se refiere a la cantidad de bytes de palabras enviados cada vez. Piensan erróneamente que cada 9600 estándar enviará 9600 bytes de palabras, pero en realidad significa que cada uno puede enviar 9600 bytes binarios y una palabra. La sección requiere 8 números binarios. Si se envía en el modo de cadena de 1, agregue un inicio y un final. Cada vez que se presiona una sección de palabras, ocupará 10 números binarios y 9600 se transmitirán en forma de 1. sección transmitida El número es 9600÷s 10 = 960 secciones de palabras. El modo de funcionamiento 0 del chip del puerto serie 51 tiene una relación de onda fija, que es fosc/12. Se calcula utilizando un oscilador de cristal de 12 Ms, por lo que su relación de onda puede alcanzar 1 M. La relación de onda del modo 2 se fija en fosc/64 o fosc/32. Específicamente, se utiliza el SMOD fijado por PCON. Por ejemplo, si SMOD es 0, la relación de onda es focs/64. 3, especialmente la tasa, es variable y está determinada por si la máquina tiene una tasa de desbordamiento de 1 o 2 (52 chips) dentro de un tiempo fijo. Entonces, ¿cómo calculamos los valores de la máquina de depósito relacionados con la configuración de la tasa de onda de estos dos modelos?

? Se puede calcular utilizando la siguiente fórmula.

Velocidad pobre = (2 SMOD ÷ 32) × velocidad de desbordamiento fija de la máquina del tiempo 1

Para el último tipo, si el SMOD en la memoria PCON está configurado en 1:00, Se puede aumentar la tasa de ocupación en 200. Por lo general, en el modo de sincronización, una máquina que funciona en modo de sincronización funciona dos veces. En este momento, TL1 en el valor de sincronización se usa como un conteo y TH1 se usa como un valor de reenlace automático. En este modo de sincronización, en el modo de sincronización, En. En modo, cuando la máquina se desborda, el valor de TH1 cargará automáticamente TL1 y comenzará a contar nuevamente, por lo que no hay necesidad de intervención del software para hacer que el tiempo sea más preciso. En este momento, la fórmula de cálculo para la velocidad de desbordamiento que es 2 veces mayor que la de la máquina de tiempo fijo 1 en el modo de tiempo fijo es:

Velocidad de desbordamiento = (velocidad de contracorriente)/(256 - TH1s)

La última "velocidad de conteo" está relacionada con la frecuencia del oscilador de cristal utilizada por los latidos del oscilador de cristal. El tiempo de la recombinación futura en 51 chips aumenta el valor almacenado regularmente en cada ciclo de la máquina. a 12 ciclos de latido, por lo que se puede saber que la velocidad de conteo de 51 chips es 1/12 de la frecuencia del oscilador de cristal. Si se usa un oscilador de cristal de 12 Ms en el chip 51, entonces la velocidad de conteo de 51 es 1 M. Normalmente se utiliza un oscilador de cristal de 11,0592 M para obtener una velocidad de onda estándar sin ningún error. El cálculo es fácil de realizar. Por ejemplo, tenemos una velocidad de onda de 9600, el oscilador de cristal es de 11,0592 Ms y 12 Ms, la máquina de cronometraje 1 está en modo 2 y SMOD está configurado en 1, dependiendo del valor TH1 solicitado. Esta generación introduce la fórmula:

11.0592 metros

9600 =(2÷s 32)×(11.0592 Ms/12)(/(256-ésimo 1))

TH 1=250

12M

9600 =(2÷s 32)×(12 Ms/12)(/(256-th 1))

TH1 ≈ 249,49

Se puede ver en el cálculo anterior que el tiempo de 12 M calculado usando el cristal TH1 no es un número entero, pero el valor de th 1 puede ser un número entero, por lo que habrá Puede haber un cierto error, que no se puede producir. Produce una precisión de 9600. Es aceptable un cierto error durante el uso. El uso de un oscilador de cristal de 11,0592 Ms generalmente provocará errores en el oscilador de cristal debido a la existencia de errores. Sin embargo, el error del oscilador de cristal se ve muy poco afectado por la frecuencia del oscilador de cristal y puede ignorarse. .

iv>