Diagrama esquemático de aprendizaje de luz de control remoto por infrarrojos basado en AT89C52
Función de pin y voltaje de pin
AT89C52 es un microprocesador de uso general de 8 bits, que utiliza el diagrama de pin AT89C52 del paquete PDIP estándar de la industria
Preciso El núcleo C51 Es el mismo que el 8xc52 general en funciones internas y diseño de pines. Se utiliza principalmente para funciones de control de ajuste de convergencia. Las funciones incluyen la inicialización de los registros internos del IC maestro de convergencia, RAM de datos e interfaces externas, control de ajuste de convergencia, control de patrón de prueba de convergencia, recepción y decodificación de señal de control remoto por infrarrojos IR y comunicación con la CPU de la placa base. Los pines principales son XTAL1 (19 pies) y XTAL2 (18 pies), que son los puertos de entrada y salida del oscilador y se pueden conectar a un oscilador de cristal externo de 12MHz. RST/Vpd (9 pies) es el puerto de entrada de reinicio y está conectado a un circuito de reinicio de condensador y resistencia externo. VCC (40 pies) y VSS (20 pies) son puertos de alimentación, conectados a los polos positivo y negativo de la fuente de alimentación de 5 V respectivamente. P0~P3 son pines de E/S programables de uso general y sus funciones están definidas por software. En este diseño, el puerto P0? (pines 32~39?) se define como el puerto de control de función N1, que está conectado al pin de función correspondiente de N1 respectivamente; el pin 13 se define como el terminal de entrada de infrarrojos; se definen como el puerto de control del bus I2C, conectado respectivamente al puerto SDAS (pin 18) y al puerto SCLS (pin 19) de N1. El pin 12 se define como un puerto de E/S, respectivamente conectado al puerto SDAS (pin 18); de N1 Conecte al puerto SCLS (pin 19). (18) El puerto, 12 pines, 27 pines y 28 pines se definen como puertos de función de señal de protocolo de enlace, que están conectados respectivamente a los terminales de función correspondientes de la CPU de la placa base para la detección del estándar actual y la función de control para ingresar al ajuste de convergencia. estado.
Puerto P0
El puerto P0 es un conjunto de puertos de E/S bidireccionales de drenaje abierto de 8 bits, también conocidos como multiplexores de bus de direcciones/datos. Cuando se usa como puerto de salida, cada bit puede absorber corriente para controlar 8 puertas lógicas TTL; cuando se escribe un "1" en el puerto P0, se puede usar como entrada de alta impedancia. Al acceder a la memoria de datos externa o a la memoria de programa, este conjunto de líneas de puerto cambia en el tiempo la dirección (8 bits inferiores) y la multiplexación del bus de datos y activa resistencias pull-up internas durante el acceso. Durante la programación flash, el puerto P0 recibe el byte de instrucción y emite el byte de instrucción durante la verificación del programa, lo que requiere una resistencia pull-up externa.
Puerto P1
P1 es un puerto de E/S bidireccional de 8 bits con una resistencia pull-up interna que la etapa de búfer de salida de P1 puede impulsar (sumidero o fuente de corriente). a 4 puertas lógicas TTL. Escribir un "1" en el puerto eleva el puerto a través de la resistencia pull-up interna, por lo que puede usarse como puerto de entrada. Cuando se usa como puerto de entrada, el pin será elevado por una señal externa debido a la resistencia pull-up interna. Cuando se usa como puerto de entrada, debido a la presencia de la resistencia pull-up interna, el pin emitirá corriente (ILL) cuando una señal externa lo baja. A diferencia del AT89C51, P1.0 y P1.1 también se pueden utilizar como entrada de conteo externo (P1.0/T2) y entrada (P1.1/T2EX) del temporizador/contador 2 respectivamente. Ver Tabla 1. Durante la programación Flash y la verificación del programa, P1.0/T2.EX recibe los 8 bits inferiores de la dirección. Tabla 1 Segundos números de pines funcionales para P1.0 y P1.1 Características funcionales de P1.0 y P1.1
¿P1.0?
P1.1? ¿T2EX (Temporizador/Contador 2)?
Puerto P2
P2 es un puerto de E/S bidireccional de 8 bits con una resistencia pull-up interna. La etapa de búfer de salida de P2 puede aumentar (sumidero o fuente de corriente). a Cuatro circuitos de puerta lógica TTL.
Escribir "1" en el puerto P2 eleva el puerto a través de la resistencia pull-up interna y el puerto se puede utilizar como puerto de entrada. Cuando se usa como puerto de entrada, debido a la resistencia pull-up interna, el pin emitirá corriente (IIL) cuando una señal externa lo baja. Al acceder a la memoria de programa externa o a la memoria de datos externa con una dirección de 16 bits (por ejemplo, ejecutando la instrucción MOVX@DPTR?), P2? Al acceder a la memoria de datos externa con una dirección de 8 bits (por ejemplo, ejecutando la instrucción MOVX) @RI? instrucción), P2? P2 también recibe la dirección alta y algunas señales de control al programar o verificar la memoria flash.
Puerto P3
El puerto P3 es un conjunto de puertos de E/S bidireccionales de 8 bits con resistencias pull-up internas. La etapa de búfer de salida del puerto P3 puede controlar (sumidero o fuente de corriente) 4 puertas lógicas TTL. El búfer de salida del puerto P3 puede controlar (sumidero o fuente de corriente) 4 puertas lógicas TTL. Cuando se escribe un "1" en los puertos P3, las resistencias pull-up internas los elevan y pueden usarse como puertos de entrada. En este momento, el puerto P3? desconectado externamente emitirá corriente (IIL) a través de la resistencia pull-up. Además de ser una línea de puerto de E/S ordinaria, el propósito más importante del puerto P3 es su segunda función. El puerto P3 también recibe algunas señales de control para programación flash y verificación de programas.
RST
Restablecer entrada. Cuando el oscilador está funcionando y un nivel alto en el pin RST excede los dos ciclos de la máquina, el microcontrolador se reinicia.
ALE/PROG
Al acceder a la memoria de programa externa o a la memoria de datos, el pulso de salida ALE (Address Latch Enable) se utiliza para bloquear la palabra inferior de 8 bits de la porción de dirección. Normalmente, el ALE todavía emite una señal de pulso fija a 1/6 de la frecuencia de oscilación del reloj, por lo que puede usarse para fines de sincronización o sincronización externa. Es importante tener en cuenta que este pin también se utiliza para ingresar el pulso de programación (PROG) siempre que ALE accede a la memoria de datos externa al programar la memoria flash. Si es necesario, la operación ALE se puede desactivar mediante el bit D0 en el banco 8EH del registro de funciones especiales (SFR). Una vez establecido este bit, las instrucciones MOVX y MOVC solo se pueden ejecutar una vez. ¿Las instrucciones MOVX y MOVC activarán ALE? Además, este pin se levanta débilmente y el microcontrolador debe configurar el bit de desactivación ALE en inactivo mientras se ejecuta un programa externo.
PSEN
La salida de almacenamiento de programa permitido (PSEN) es la señal de comunicación de selección de lectura de la memoria de programa externa. Cuando el AT89C52 obtiene instrucciones (o datos) de la memoria de programa externa, PSEN? Se activa dos veces por ciclo de la máquina, es decir, se emiten dos pulsos. Durante este tiempo, al acceder a la memoria de datos externa se omitirán ambas señales PSEN.
EA/VPP
Permitir acceso externo. Para permitir que la CPU acceda solo a la memoria de programa externa (direcciones 0000H-FFFFH), EA debe mantenerse bajo (conectado a tierra). Tenga en cuenta que si se programa el bit de seguridad LB1, el estado del terminal EA se bloqueará internamente durante el reinicio. Si el terminal EA está en nivel alto (conectado al terminal Vcc), la CPU ejecutará las instrucciones en la memoria interna del programa. Al programar la memoria flash, este pin se agregará al suministro de habilitación de programación de 12 V Vpp, que por supuesto debe ser el voltaje de programación de 12 V Vpp que está usando el dispositivo.
XTAL1
Entrada al amplificador inversor del oscilador y generador de reloj interno.
XTAL2
La salida del amplificador inversor del oscilador.
Editar registros de funciones especiales
En la memoria en chip AT89C52, la unidad 80H-FFH?****128? es el registro de funciones especiales (SFE). de SFR es como se muestra en la tabla 2 que se muestra. No todas las direcciones están definidas; solo algunos de los bytes en 80H-FFH?***128? están definidos y algunos no están definidos.
Leer o escribir en celdas no definidas no tendrá ningún efecto, el valor leído no estará definido y los datos escritos se perderán. Los datos "1" no deben escribirse en celdas no definidas porque es posible que estas celdas reciban nuevas funciones en productos futuros, en cuyo caso siempre serán "0" después del reinicio. En este caso, el valor de estas celdas siempre será "0" después del reinicio. Además de todos los temporizadores/contadores 0 y 1 del AT89C51, el AT89C52 agrega un temporizador/contador 2. Los bits de control y estado para el temporizador/contador 2 se encuentran en T2CON (consulte la Tabla 3), T2MOD (consulte la Tabla 4) y el par de registros (RCAO2H, RCAP2L) lo utiliza el temporizador 2 en modo de captura de 16 bits y en modo automático. -modo de recarga Lo siguiente es utilizado por el registro de captura/recarga automática de 16 bits.
Memoria de edición de datos
AT89C52 tiene 256 bytes de RAM interna, de los cuales los 128 bytes superiores del 80H-FFH se superponen con la dirección del registro de función especial (SFR), es decir, la Los 128 bytes superiores de RAM son los mismos que las direcciones SFR, pero están físicamente separados. Cuando una instrucción accede a una ubicación de dirección interna superior a 7FH, el método de direccionamiento utilizado en la instrucción es diferente, es decir, el método de direccionamiento determina si se accede a los 128 bytes superiores de RAM o se accede a los registros de funciones especiales. La RAM también es un registro de función especial. Si la instrucción se dirige directamente, accede al registro de función especial. Por ejemplo, la siguiente instrucción de direccionamiento directo accede a la ubicación de dirección del registro de función especial 0A0H (es decir, puerto P2). MOV?0A0H, #data? La instrucción de direccionamiento indirecto accede a los 128 bytes superiores de RAM. Por ejemplo, en la siguiente instrucción de direccionamiento indirecto, el contenido de R0 es 0A0H y la dirección del byte de datos a la que se accede es 0A0H, no el puerto P2 (0A0H). MOV? @R0, #data? La operación de pila también es un método de direccionamiento indirecto, por lo que la RAM de datos de 128 bits superior también se puede utilizar como área de pila. -Temporizador 0 y Temporizador 1: El temporizador 0 y el temporizador 1 del AT89C52 funcionan de la misma manera que el AT89C51.
Editar recursos en el chip
Temporizador 2
Funciones básicas: El temporizador 2 es un temporizador/contador de 16 bits. Se puede utilizar como temporizador y contador de eventos externo. Su modo de funcionamiento está determinado por el bit del registro de función especial C/T2 del selector T2CON (ver Tabla 3). El temporizador 2 tiene tres modos de funcionamiento: modo de captura, modo de recarga automática (conteo ascendente o descendente) y modo de forma de onda. El modo de funcionamiento se selecciona mediante los bits de control de T2CON. El temporizador 2 consta de dos registros de 8 bits TH2 y TL2. En el modo de funcionamiento del temporizador, el valor del registro TL2 aumenta en 1 para cada ciclo de la máquina. Debido a que un ciclo de la máquina consta de 12 relojes de oscilación, la tasa de conteo es la frecuencia de oscilación. 1/12. En el modo de operación de conteo, cuando la señal de entrada externa en el pin T2 genera un flanco descendente de 1 a 0, el valor del registro se incrementa en 1. En este modo de trabajo, la entrada externa se muestrea cada vez que la máquina ejecuta 5SP2?5SP2?. Si el valor del registro es 1 en el primer ciclo de la máquina y 0 en el siguiente ciclo de la máquina, el valor del registro se incrementará en 1 en el ciclo S3P1 inmediatamente siguiente. Dado que se necesitan 2 ciclos de máquina (24 ciclos de oscilación) para reconocer una transición de 1 a 0, la tasa máxima de conteo alto es 1/24 de la frecuencia de oscilación. La señal de entrada se muestrea al menos una vez. Modo de captura: en el modo de captura, el bit de control T2CON EXEN2 puede seleccionar dos métodos. Si EXEN2 = 0, el temporizador 2 es un temporizador o contador de 16 bits. El conteo de desbordamiento establece el indicador de desbordamiento TF2 de T2CON y activa la interrupción.
Si EXEN2 = 1, el temporizador/contador 2 completa la misma operación. Cuando la señal de entrada externa del pin T2EX sufre una transición negativa de 1 a 0, los valores en TH2 y TL2 también se capturarán en RCAP2H y RCAP2L. Además, la transición de la señal del pin T2EX? provocará que se establezca EXF2? en T2CON?. El método de captura se muestra en la Figura 4. Modo de recarga automática (contador ascendente o descendente): Cuando el temporizador/contador 2 funciona en el modo de recarga automática de 16 bits, se puede programar para contar hacia arriba o hacia abajo. ¿Esta función se puede pasar a través del DCEN del especial? selección del bit del registro de función T2CON (que permite el conteo descendente) (consulte la Tabla 5). bit (lo que permite el conteo descendente) (consulte la Tabla 5). Al restablecerse, el bit DCEN? es "0" y el temporizador/contador de eventos 2 está configurado para contar de forma progresiva. Cuando el bit DCEN es "0", el temporizador/contador 2 puede contar hacia arriba o hacia abajo, dependiendo del valor del pin T2EX, consulte la Figura 5 cuando DCEN = 0, el temporizador/contador 2 se configura automáticamente para contar hacia arriba; De esta forma el bit de control T2CON.EXEN2 tiene dos opciones. Hay dos opciones. Si EXEN2 = 0, el temporizador/contador 2 contará hasta 0FFFFH? y se desbordará, configurará TF2 para activar la interrupción y recargará los registros de conteo de 16 bits RCAP2H y RCAP2? Los valores de RCAP2H? y RCAP2L? se pueden determinar mediante ajustes preestablecidos del software. Si EXEN2=1, un desbordamiento o un flanco descendente de 1 a 0 en la entrada externa T2EX activará una recarga de 16 bits del temporizador 2. Si las interrupciones están habilitadas, también se generará una interrupción. La dirección de entrada de interrupción del temporizador 2 es: 002BH?-0032H? Cuando DCEN=1, el temporizador/contador 2 puede contar hacia arriba o hacia abajo, como se muestra en la Figura 6. En este modo, el pin T2EX controla la dirección del contador y el pin T2EX es "1" lógico. Cuando el pin T2EX es "1" lógico, el temporizador cuenta hacia arriba. Cuando el conteo 0FFFFH se desborda, se establece TF2 y los registros de conteo de 16 bits RCAP2H y RCAP2L se recargan en TH2?, ¿cuándo se cargan en TH2 y TL2? pin Cuando el pin es "0" lógico, el temporizador 2 comienza la cuenta regresiva. Cuando los valores en TH2 y TL2 son iguales a los valores en RCAP2H y RCAP2L, el conteo se desborda, se establece TF2 y el valor de 0FFFFH. se recarga en el registro de cronometraje. Cuando el temporizador/contador 2 se desborda o se desborda por defecto, ¿EXF2? ¿Generador de velocidad en baudios:? El temporizador/contador de eventos 2 funcionará como un generador de velocidad en baudios cuando TCLK y RCLK en T2CON (Tabla 3) estén configurados. Si se utiliza el Temporizador/Contador 2 como transmisor o receptor, la velocidad en baudios para transmitir y recibir puede ser diferente y el Temporizador/Contador 1 se utiliza para otras funciones, como se muestra en la Figura 7. Si se configuran RCLK y TCLK, el temporizador/contador de eventos 2 funciona en modo generador de velocidad en baudios. El modo generador de velocidad en baudios es similar al modo de recarga automática, en el que el flip-flop TH2 recarga los registros del temporizador/contador de eventos 2 utilizando los valores de 16 bits en RCAP2H y RCAP2L establecidos por software. En los modos 1 y 3, la velocidad en baudios está determinada por la velocidad de desbordamiento del temporizador 2, calculada de la siguiente manera: ?Velocidad de baudios en los modos 1 y 3 = velocidad de desbordamiento del temporizador/16? El temporizador puede funcionar en dos modos: temporización y conteo. En la mayoría de las aplicaciones, funciona en modo temporización (C/T2 = 0).
El temporizador 2 funciona de manera diferente como generador de velocidad en baudios de forma de onda que como temporizador. Cuando generalmente se usa como temporizador, el valor del registro aumenta en 1 en cada ciclo de la máquina (1/12 de frecuencia de oscilación), mientras que cuando se usa como generador de velocidad en baudios. , el valor del registro aumenta en 1 en cada tiempo de estado (1/2 frecuencia de oscilación): ?Velocidad de baudios de los modos 1 y 3 = frecuencia de oscilación/{32*[65536-(RCP2H, RCP2L)]}, donde (RCAP2H , RCAP2L) son números sin signo de 16 bits en RCAP2H y RCAP2L. El circuito para el temporizador/contador 2 utilizado como generador de velocidad en baudios se muestra en la Figura 7. El modo de operación de velocidad de baudios es válido cuando RCLK o TCLK = 1 en T2CON. En el modo de funcionamiento del generador de velocidad en baudios, el flip-flop TH2 no puede configurar TF2 y, por lo tanto, no se genera ninguna interrupción. Sin embargo, si EXEN2? está configurado y se produce una transición negativa de 1 a 0 en T2EX?, ¿EXF2? está configurado y el contenido de (RCAP2H, RCAP2L) no se puede volver a cargar en TH2? Por lo tanto, T2EX se puede utilizar como fuente de interrupción externa adicional cuando se utiliza el temporizador/contador de eventos 2 como generador de velocidad en baudios. Cabe señalar que cuando el temporizador/contador 2 funciona como generador de velocidad en baudios, no se puede acceder a TH2 y TL2 debido a la operación del temporizador/contador (TR2=1), porque el tiempo de estado de cada temporizador/contador se incrementa en 1 en esta vez. , leerlo o escribirlo producirá un valor indefinido. Sin embargo, RCAP2 se puede leer pero no escribir, porque las operaciones de escritura serán recargas y las operaciones de escritura pueden causar errores de escritura y/o recarga. El temporizador debe apagarse (borrar TR2) antes de acceder al registro del Temporizador 2 o RCAP2. Salida de reloj programable: Como se muestra en la Figura 8, el temporizador 2 se puede programar para emitir una señal de reloj de 50 ciclos de trabajo desde P1.0. Además de ser un puerto de E/S estándar, el pin P1.0 se puede programar para funcionar como una entrada de reloj externo para el temporizador/contador 2 y generar un pulso de reloj con un ciclo de trabajo de 50. Cuando la frecuencia de oscilación del reloj es de 16 MHz, el rango de frecuencia del reloj de salida es de 61 Hz a 4 Hz. El rango de frecuencia del reloj de salida es de 61 Hz a 4 MHz. Cuando el temporizador/contador 2 se configura como generador de reloj, cuando C/T2 (T2CON.1) = 0 y T2OE(T2MOD.1)? = 1, el temporizador debe iniciarse o detenerse mediante TR2 (T2CON.2)?. La frecuencia de salida del reloj depende de la frecuencia del oscilador y del valor de recarga del registro de captura del temporizador 2 (RCAP2H, RCAP2L) y se calcula de la siguiente manera: Frecuencia del reloj de salida = frecuencia del oscilador/{4*[65536-(RCP2H, RCP2L)] }? En el modo de salida de reloj, el flip-flop Temporizador/Contador de eventos 2 no genera una interrupción, similar a su comportamiento cuando se utiliza como generador de velocidad en baudios. Cuando se utiliza el temporizador/contador de eventos 2 como generador de velocidad en baudios, también se puede utilizar como generador de velocidad en baudios. Cuando se utiliza como generador de velocidad en baudios, también se puede utilizar como generador de reloj, pero es importante tener en cuenta que la velocidad en baudios y la frecuencia de salida del reloj no se pueden determinar de forma independiente, ya que se utilizan con RCAP2L y RCAP2L.
Puerto serie UART
El UART del AT89C52 funciona de la misma manera que el AT89C51.
Oscilador de reloj
Hay un amplificador inversor de alta ganancia que se utiliza para formar el oscilador interno en el AT89C52. Los pines XTAL1 y XTAL2 son la entrada y la salida del amplificador respectivamente. El amplificador forma un autooscilador junto con un cristal de cuarzo fuera del chip o un resonador cerámico como elemento de retroalimentación; el circuito de oscilación se muestra en la Figura 10; Un cristal de cuarzo externo (o resonador cerámico) y los condensadores C1, C2 están conectados al circuito de retroalimentación del amplificador, formando un circuito de oscilación paralelo.
Aunque no existen requisitos muy estrictos para los condensadores externos C1 y C2, el tamaño del condensador afectará ligeramente la frecuencia de oscilación, la estabilidad del funcionamiento del oscilador, la dificultad del procedimiento de arranque y la estabilidad de la temperatura. Si se utiliza un cristal de cuarzo, se recomienda un condensador de 30 pF ± 10 pF, y si se utiliza un resonador cerámico, se recomienda un condensador de 40 pF ± 10 pF. El usuario también puede utilizar un reloj externo. El circuito que utiliza un reloj externo se muestra en el lado derecho de la Figura 10. En este caso, el pulso de reloj externo se conecta al terminal XTAL1 de la entrada del generador de reloj interno, mientras que XTAL2 se deja flotante. Dado que la señal de reloj externo se utiliza como señal de reloj interno después de pasar por el flip-flop dividido por 2, no existen requisitos especiales para el ciclo de trabajo de la señal de reloj externo, pero sí su duración mínima de alto nivel y su duración máxima de bajo. -La duración del nivel debe cumplir con los requisitos técnicos del producto.
Editar interrupción
AT89C52**** tiene 6 vectores de interrupción: 2 interrupciones externas (INT0 e INT1), 3 interrupciones de temporizador (temporizador 0, 1, 2) e interrupciones de puerto serie . Todas estas fuentes de interrupción se muestran en la Figura 9. Estas fuentes de interrupción se pueden controlar para habilitar o deshabilitar cada interrupción configurando o borrando el bit 0 en el registro especial IE, respectivamente. IE también tiene un bit de desactivación general EA, que se utiliza para controlar si todas las interrupciones están habilitadas o deshabilitadas. Tenga en cuenta que IE.6 en la Tabla 5 es un bit reservado, al igual que IE.5 en AT89C51. Los programadores no deben escribir "1" en estos bits, ya que se utilizarán como extensiones en futuros productos de la familia AT89. Los programadores no deben escribir "1" en estos bits, ya que se utilizarán como extensiones en futuros productos de la familia AT89. La interrupción del temporizador 2 es generada por el OR lógico de TF2 y EXF2 en T2CON. Estos indicadores no pueden borrarse mediante hardware al cambiar a la rutina de servicio de interrupción. Los bits de bandera TF0 y TF1 del temporizador 0 y el temporizador 1 se configuran en el estado S5P2 en el ciclo de máquina del desbordamiento del temporizador y no se verificarán hasta el siguiente ciclo de máquina. El indicador de interrupción se consultará en el siguiente ciclo de la máquina. Sin embargo, el indicador TF2 del temporizador 2 se establece en el estado S2P2 del ciclo de máquina del desbordamiento del temporizador y será sondeado durante el mismo ciclo de máquina.
Editar el modo de bajo consumo
Modo de ahorro de energía inactivo
En el estado de modo de trabajo inactivo, la CPU está en estado de suspensión, mientras que todos los periféricos del chip todavía están en estado Activado, que es generado por el software. En este momento, el contenido de la RAM del chip y todos los registros de funciones especiales se congelan al mismo tiempo. El modo inactivo puede finalizarse mediante cualquier solicitud de interrupción habilitada o reinicio del hardware. La terminación del estado inactivo mediante un reinicio de hardware requiere solo dos ciclos de máquina de una señal de reinicio válida, durante los cuales el hardware en el chip tiene prohibido acceder a la RAM interna, pero puede acceder a la RAM final. Cuando el modo inactivo finaliza mediante un reinicio, la instrucción que activa el modo inactivo no debe ir seguida de una instrucción de escritura en el puerto o la memoria externa para evitar posibles escrituras no intencionadas en el puerto o la memoria externa.
Modo de apagado
En el modo de apagado, el oscilador deja de funcionar. La instrucción que ingresa al modo de apagado es la última instrucción ejecutada. La RAM y el registro de función especial están congelados antes de finalizar el modo de apagado. La única forma de salir del modo de apagado es un reinicio del hardware, que redefinirá todos los registros de funciones especiales, pero no cambiará la RAM. ¿El reinicio no debería tener efecto hasta que Vcc vuelva a los niveles operativos normales y debe mantenerse durante un tiempo determinado? período de tiempo para permitir que el oscilador se reinicie. Iniciado y funcionando de manera estable.
Editar programación y cifrado
Programación flash
El microcontrolador AT89C52 tiene 8k bytes de memoria flash PEROM en su interior y la matriz de memoria flash se encuentra en estado borrado cuando se envía. de fábrica (es decir, el contenido de todas las celdas de memoria es FFH) y los usuarios pueden programarlos en cualquier momento. La interfaz de programación acepta señales de programación habilitadas de alto voltaje (12 V) o bajo voltaje (Vcc).
El modo de programación de bajo voltaje es adecuado para sistemas de programación en circuito de usuario, mientras que el modo de programación de alto voltaje es compatible con programadores EPROM de uso general. Algunos microcontroladores AT89C52 pertenecen al modo de programación de bajo voltaje y otros pertenecen al modo de programación de alto voltaje. Los usuarios pueden obtener esta información a través del número de modelo en el chip y leyendo el byte de firma dentro del chip. La matriz de memoria de programa del AT89C52 se programa utilizando el método de escritura de bytes. Cada vez que se escribe un byte, se escribe un byte no nulo en toda la memoria del programa PEROM en el chip. Después de escribir un byte no nulo, se debe borrar todo el contenido de la memoria con un borrador de chip.
Método de programación
Antes de programar, la dirección, los datos y las señales de control deben configurarse como se muestra en la Tabla 9 y la Figura 11. El método de programación del AT89C52 es el siguiente: 1. Agregue la señal de dirección de la unidad a programar en la línea de dirección. 2. Agregue los bytes de datos que se escribirán en las líneas de datos. 3. Activar la señal de control correspondiente. 4. En el modo de programación de alto voltaje, aplique un voltaje de programación de 12 V al terminal EA/Vpp. 5. Agregue un pulso de programación ALE/PROG por cada byte escrito en la matriz flash o cada bit de cifrado del programa escrito. Cada ciclo de escritura de bytes se cronometra, normalmente alrededor de 1,5 milisegundos. Repita los pasos 1-5, cambiando la dirección de la unidad de programación y los datos escritos, hasta que todos los archivos estén programados.
Cifrado de la memoria de programa
AT89C52 dispone de 3 bits de cifrado de programa, que pueden programarse (P) o no (P) programando los 3 bits de cifrado LB1, LB2 y LB3 del chip U) para obtener. Al programar el bit de cifrado LB1, el nivel lógico del terminal EA se muestrea y se bloquea durante el proceso de reinicio. Si el microcontrolador no se reinicia después del encendido, el valor inicial del bit de cifrado LB1 bloqueado es un número aleatorio. El valor inicial es un número aleatorio, que se guardará hasta el reinicio real. Para que el microcontrolador funcione correctamente, el valor del nivel de EA bloqueado debe ser el mismo que el nivel lógico actual del pin. Además, los bits de cifrado solo se pueden borrar mediante un borrado completo del chip.
Consulta de datos
AT89C52?MCU utiliza data?Palling? para indicar las características del final de un ciclo de escritura, si es necesario leer el último byte. escrito, entonces el bit más alto de los datos leídos (P0.7) es el complemento del bit más alto del byte escrito original. Una vez completado el ciclo de escritura, los datos de salida son datos válidos y puede ingresar el siguiente ciclo de escritura de bytes. Una vez que comienza el ciclo de escritura, ¿Datos?Palling? Listo/Ocupado: El progreso de la programación de bytes se puede monitorear a través de la señal de salida "RDY/BSY". Durante la programación, después de que ALE? alcance el nivel alto "H", el nivel del terminal P3.4 (RDY/BSY) baja, lo que indica que está en el estado de programación (estado ocupado). Una vez completada la programación, el terminal P3.4 cambia al nivel alto, lo que indica que está en estado listo. Verificación del programa: si los bits de cifrado LB1, LB2? no están programados, los datos del código se pueden volver a leer a través de las líneas de dirección y datos. El circuito se muestra en la Figura 12. Los bits de cifrado no se pueden verificar directamente. La verificación de los bits de cifrado se puede verificar verificando y escribiendo el estado en la memoria. Borrado de chip: utilizando la combinación de señal de control correcta (Tabla 6) y manteniendo el pin ALE/PROG bajo con un ancho de pulso de 10 mS, la matriz PEROM (4k bytes) y tres bits de cifrado se pueden borrar al mismo tiempo durante la operación de excepción. , la matriz de códigos se escribirá en cualquier celda que no esté vacía con un "1", que deba reprogramarse. Lectura de los bytes de firma en el chip: el microcontrolador AT89C52 tiene tres bytes de firma en las direcciones 030H, 031H y 032H que declaran el fabricante, modelo y voltaje de programación del dispositivo.
Al leer el byte de firma AT89C52, debe configurar P3.6? y P3.7? en un nivel lógico bajo. El proceso de lectura del byte de firma es similar a la suma de verificación normal de 030H, 031H? unidad, excepto que El significado del valor de retorno es el siguiente: ?(030H)=1EH Declara que el producto es producido por ATMEL. (031H)=52H? declara que el producto es un microcontrolador AT89C52. (032H)=FFH? Declara que el voltaje de programación es de 12V. (032H)=05H? ¿Declarado como voltaje de programación de 5V?