¿Qué IC es stc89c52rc?
AT89C51 es un microprocesador CMOS de 8 bits de bajo voltaje y alto rendimiento equipado con 4K bytes de memoria flash de solo lectura programable y borrable, comúnmente conocido como microcomputadora de un solo chip. AT89C2051 es un microcontrolador con 2K bytes de memoria flash de solo lectura programable y borrable. La memoria borrable de sólo lectura del microcontrolador se puede borrar y escribir 100 veces. El dispositivo se fabrica utilizando la tecnología de fabricación de memoria no volátil de alta densidad de ATMEL y es compatible con el conjunto de instrucciones y los pines de salida estándar de la industria MCS-51. Dado que la CPU multifuncional de 8 bits y la memoria flash se combinan en un chip, el AT89C51 de ATMEL es un microcontrolador eficiente y el AT89C2051 es una versión simplificada del mismo. El microcontrolador AT89C proporciona una solución flexible y económica para muchos sistemas de control integrados. La apariencia y la disposición de los pines son como se muestran en la figura.
Características principales:
Compatible con MCS-51.
Memoria flash programable de 4 Kbytes
Vida útil: 1000 ciclos de escritura/borrado
Retención de datos: 10 años
Funcionamiento totalmente estático: 0 Hz -24 Hz
Bloqueo de memoria de programa de tres niveles
RAM interna de 128 × 8 bits
32 líneas de entrada y salida programables
Dos Temporizadores/contadores de 16 bits
5 fuentes de interrupción
Canales serie programables
Modos de ahorro de energía y inactivo de bajo consumo
Encendido -chip oscilador y circuito de reloj
Descripción del pin:
VCC: tensión de alimentación.
GND: Conectado a tierra.
Puerto P0: el puerto P0 es un puerto de E/S bidireccional de circuito abierto de 8 bits con un nivel de drenaje y cada pin puede absorber corriente de puerta 8TTL. Cuando se escribe 1 en el pin del puerto P1 por primera vez, se define como una entrada de alta impedancia. P0 se puede utilizar para el almacenamiento de datos de programas externos y se puede definir como el bit 8 de los datos/dirección. Al programar FIASH, el puerto P0 se utiliza como puerto de entrada del código fuente. Al verificar FIASH, P0 genera el código fuente. En este momento, el lado externo de P0 debe elevarse.
Puerto P1: el puerto P1 es un puerto de E/S bidireccional de 8 bits con una resistencia pull-up incorporada. El búfer del puerto P1 puede recibir y emitir corriente de puerta 4TTL. Después de escribir 1 en el pin P1, se levanta internamente y se puede utilizar como entrada. Cuando el pin de P1 se baja externamente, generará corriente debido al pull-up interno. Durante la programación y verificación flash, el puerto P1 recibe como octava dirección.
Puerto P2: El puerto P2 es un puerto de E/S bidireccional de 8 bits con resistencia pull-up incorporada. El búfer del puerto P2 puede recibir y emitir cuatro corrientes de puerta TTL. Cuando se escribe "1" en el puerto P2, la resistencia pull-up interna eleva su pin y lo utiliza como entrada. Por lo tanto, cuando se utiliza como entrada y el pin del puerto P2 se baja externamente, se emitirá corriente. Esto se debe al pull-up interno. Cuando el puerto P2 se utiliza para acceder a la memoria de programa externa o a la memoria de datos externa con una dirección de 16 bits, el puerto P2 genera los ocho bits superiores de la dirección. Utiliza un pull-up interno cuando se le proporciona la dirección "1". Al leer y escribir en la memoria de datos de direcciones externa de ocho bits, el puerto P2 genera el contenido de su registro de función especial. Durante la programación y verificación flash, el puerto P2 recibe los ocho bits superiores de las señales de dirección y las señales de control.
Puerto P3: Los pines del puerto P3 son 8 puertos de E/S bidireccionales con resistencias pull-up internas que pueden recibir y emitir 4 corrientes de puerta TTL. Cuando se escribe un "1" en los puertos P3, se elevan internamente y se utilizan como entradas. Como entrada, P3 emitirá corriente (ill ) debido al bajo pull-down externo debido al pull-up.
El puerto P3 también se puede utilizar como algunos puertos de funciones especiales del AT89C51, como se muestra en la siguiente tabla:
Función de reemplazo de pin del puerto
P3.0 RXD (puerto de entrada serie)
P3.1 TXD (puerto de salida serie)
P3.2 /INT0 (interrupción externa 0)
P3.3 / INT1( Interrupción externa 1)
P3.4 T0 (entrada externa del temporizador 0)
P3.5 T1 (entrada externa del temporizador 1)
P3 6 /WR (estroboscópico de escritura de memoria de datos externa)
P3.7 /RD (estroboscópico de lectura de memoria de datos externa)
El puerto P3 recibe alguna señal de control.
RST: restablecer entrada. Cuando el oscilador reinicia el dispositivo, el pin RST debe permanecer alto durante dos ciclos de la máquina.
ALE/PROG: Al acceder a la memoria externa, el nivel de salida permitido por el bloqueo de datos se utiliza para bloquear el byte de estado de la dirección. Durante la programación FLASH, este pin se utiliza para ingresar pulsos de programación. En circunstancias normales, el terminal ALE emite una señal de pulso positiva con un período de frecuencia constante, que es 1/6 de la frecuencia del oscilador. Por lo tanto, se puede utilizar como pulso de salida externo o con fines de temporización. Sin embargo, es importante tener en cuenta que cuando se utiliza como memoria de datos externa, se omitirán los pulsos ALE. Si desea deshabilitar la salida de ALE, puede configurar 0 en la dirección SFR8EH. En este momento, ALE solo funciona cuando se ejecutan instrucciones MOVX y MOVC. Además, este pasador está ligeramente levantado. Esta configuración no tiene efecto si el microprocesador está deshabilitado en el estado de ejecución externa ALE.
/PSEN: Señal estroboscópica para memoria de programa externa. Al recuperar datos de la memoria de programa externa, /PSEN se afirma dos veces por ciclo de la máquina. Sin embargo, al acceder a la memoria de datos externa, estas dos señales /PSEN activas no aparecerán.
/EA/VPP: Cuando /EA permanece bajo, durante este período, la memoria de programa externa (0000H-FFFFH) independientemente de si hay memoria de programa interna. Tenga en cuenta que cuando el modo de cifrado es 1, /EA bloqueará el interior para restablecerlo; cuando el terminal /EA permanece alto, la memoria interna del programa está aquí. Este pin también se utiliza para aplicar la potencia de programación de 12 V (VPP) durante la programación flash.
XTAL1: La entrada del amplificador de oscilación inversa y la entrada del circuito operativo del reloj interno.
XTAL2: Salida del oscilador inversor.
Características del oscilador:
XTAL1 y XTAL2 son la entrada y salida del amplificador inversor respectivamente. El amplificador inversor se puede configurar como un oscilador en chip. Están disponibles tanto la oscilación de cristal de piedra como la oscilación de cerámica. Si se utiliza una fuente de reloj externa para controlar el dispositivo, XTAL2 no debe conectarse. El exceso de señal de reloj entrante al reloj interno debe pasar a través del flip-flop de división por dos, por lo que no se requiere el ancho de pulso de la señal del reloj externo, pero sí el ancho requerido del nivel alto y el nivel bajo del Se debe garantizar el pulso.
Borrado de chip:
Al combinar las señales de control correctas y mantener el pin ALE bajo durante 10 ms, es posible lograr un reinicio eléctrico de toda la matriz PEROM y los tres bits de bloqueo. Borrar.. 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 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 doble almacenamiento en búfer. 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 El modo de trabajo se configura usando el registro SCON. Las definiciones específicas de sus bits son las siguientes:
SM0 SM1 SM2
SM0 y SM1 son los bits de configuración del modo de trabajo del puerto serie. , 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 en la tabla que representa la frecuencia del oscilador de cristal (. Receptor asíncrono universal). >
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 está configurado en 1, el puerto serie permite la recepción. establecido 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 de puerto serie en él. El software al procesar una subrutina y requerir 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. programa para abrir el puerto serie para la re-recepción. También puede usar el código fuente real anterior y agregar REM=0 para experimentos.
TB8 envía el bit de datos 8, que está en los modos 2 y 3. Noveno bit enviado. 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). AT89C51, AT89C2051 y otros chips de la serie 51 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 baudios de 9600. 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á errores. 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 se utiliza un oscilador de cristal 11.0592M, la velocidad en baudios será incorrecta debido al error del propio cristal, pero el error del cristal en sí tiene un impacto muy pequeño en la velocidad en baudios y puede ignorarse.