¿Cuáles son los recuerdos comunes? ¿Cuáles son las precauciones de uso?
Siempre que escriba todas las instrucciones de ensamblaje, puede ir a la tabla de instrucciones para encontrar el código de máquina correspondiente a cada instrucción, y luego solo necesita agregar el operando después del código de máquina, por ejemplo. Por ejemplo, se envía una unidad 30H al acumulador A; la instrucción es así: MOV A, 30H Luego puedes encontrar en la tabla de instrucciones que el código de máquina que ejecuta esta instrucción es 1110 0101, pero porque la unidad 30H está detrás de esto. instrucción El número cambia constantemente de acuerdo con sus requisitos. La máquina no estipula que solo pueda usar unidades 30H, por lo que usted debe completar los 30 operandos. Cuando se combinan, el código de máquina de esta instrucción es: 1110 0101. 0011 0000 se expresa en hexadecimal: E530 Obviamente los dos primeros dígitos E5 los especifica la máquina y los dos últimos dígitos 30 los suma usted. *** tiene dieciséis bits y ocupa dos bytes….
Cuando dices que la luz LED parpadea, ¿te refieres a una lámpara de agua corriente o a un diodo emisor de luz que sigue parpadeando? Pero no importa cuál sea, una cosa es importante. Debes considerar el retraso al escribir este programa, porque la frecuencia más baja del oscilador de cristal del microcontrolador 51 puede ser 6M (no recuerdo el valor específico). Es decir, cada ciclo de máquina del microcontrolador toma solo 2 microsegundos. Si no considera el retraso, entonces el resultado de la lámpara que diseñó será: encendida durante 2 microsegundos y apagada durante 2 microsegundos. Se enciende y se atenúa 500.000 veces por segundo. A simple vista, esta luz nunca se apagará, pero es sólo la mitad de tenue que una luz que no parpadea. Las lámparas incandescentes que utilizamos en nuestra vida se encienden y apagan 100 veces por segundo. ¿Puedes sentir cuando se apaga la bombilla? Es más, ¡eso es 500.000 veces!
Por ejemplo, al diseñar un programa de lámpara de agua corriente, también podría considerar su algoritmo de esta manera. Los ocho bits superiores más los ocho bits inferiores del registro de conteo suman solo dieciséis bits. El número máximo que puede contar es 65535. Incluso si el microcontrolador usa el oscilador de cristal más bajo de 6 M, un ciclo de máquina equivale a 12 máquinas, por lo que cada una. El ciclo de la máquina toma 2 microsegundos de 0 a 65535, solo toma 131070 microsegundos para contar, aproximadamente 130 milisegundos. Si presiona este retraso para cambiar el tiempo de luz y oscuridad de la luz, entonces esta lámpara A se enciende y se atenúa 3 o 4. veces por segundo. Aunque a simple vista se puede ver cuando se apaga la luz. Sin embargo, no siempre es cómodo para los ojos mirar una luz así, por lo que conviene retrasar al menos un segundo su encendido y apagado. Para facilitar el cálculo, ¡deje que el contador cuente 100 milisegundos! Después de que el contador cuente hasta 100 milisegundos, déjelo contar nuevamente y luego cuente nuevamente..., después de que cuente 5 veces, esto son 500 milisegundos (medio segundo), y luego cambiamos el estado claro Claro y oscuro.
Este programa se puede compilar así:
MOV A, #0FEH; establezca el bit más bajo en 0
MOV P1, A ilumina el más bajo; luz de bits
MOV TCON, #10H; T1 es el modo 1, temporización
COMIENZO: MOV R7, #05H; configurado para realizar un ciclo 5 veces
ESTRELLA: MOV TH1 #3CH ;Contar 100 milisegundos
MOV TL1 #AFH
SETB TR1 ;Comenzar a contar
ROU: JBC TF1 SE ;100 milisegundos?
SJMP ROU; Esperar hasta 100 milisegundos
SE: CLR TR1; Cerrar contador
¿DJNZ R7 STAR 5 veces para realizar el bucle? RL A; Mueve 0 un bit hacia la izquierda
MOV P1, A; Cambia la siguiente luz a luz
SJMP BEGIN
51 microcontrolador
ORG 0000H
PRINCIPAL: MOV R2, #2
L1: MOV R3, #200
L2: MOV R4, #200
L3: NOP
NOP
DJNZ R4, L3
DJNZ R3, L2
DJNZ R2, L1 p>
CPL P1.7
JMP PRINCIPAL
FINAL
Medwin escribe el ensamblaje C51
Ocho luces LED fluyen Lámpara experimento
Después de encender inicialmente el microcontrolador, la salida de cada puerto es de alto nivel. Si ahora queremos que se encienda el LED1 conectado al puerto P1.0, entonces solo necesitamos cambiar el nivel del puerto P1.0 a nivel bajo. Si desea que el LED1 se apague y el LED0 se encienda, simplemente levante P1.0 y baje P1.1, ¡el LED1 se apagará y el LED2 se encenderá! Por analogía, como se muestra a continuación, los 8 LED se encenderán y apagarán para convertirse en una lámpara de agua corriente.
P1.0 bajo, P1.0 alto, P1.1 bajo, P1.1 alto, P1 .2 Bajo, P1.2 alto, P1.3 bajo, P1.3 alto, P1.4 bajo, P1.4 alto, P1.5 bajo, P1.5 alto, P1.6 bajo, P1.6 alto, P1 .7 Bajo, P1.7 Alto, volver al principio, finaliza el programa.
No podemos decir que si P1.1 baja, bajará. Debido a que el microcontrolador no puede entender nuestro chino, solo puede aceptar códigos binarios "1, 0...". ¿Cómo utilizamos el lenguaje binario para hacer que el microcontrolador funcione según nuestros deseos? Para que el microcontrolador funcione, el programa solo puede escribirse como código binario y entregárselo para su ejecución; los primeros desarrolladores de microcontroladores utilizaban código binario escrito manualmente para entregárselo al microcontrolador para que funcionara. Hoy en día, no tenemos que usar binarios molestos para escribir programas. Podemos "traducir" nuestro "lenguaje de programación" fácil de entender al código binario requerido por el microcontrolador a través de un software de "traducción" y luego entregárselo. el microcontrolador para su ejecución. El "lenguaje de programación" aquí actualmente incluye principalmente ensamblador y C; lo que aquí llamamos software de "traducción", los colegas lo llaman "compilador", que utiliza el "lenguaje de programación" a través del compilador para generar el código binario del microcontrolador. se llama compilación. Como se mencionó anteriormente, si desea que el LED1 sea más brillante, solo necesita cambiar el nivel del pin del microcontrolador correspondiente a un nivel bajo. Ahora escribamos el experimento de la lámpara de agua corriente de 8 LED mencionado anteriormente como un programa en lenguaje ensamblador.
Lenguaje ensamblador "chino"
Inicio: estrella:
P1.0 low clr p1.0
P1.0 high setb p1.0
P1.1 borrado bajo p1.1
P1.1 alto setb p1.1
P1.2 borrado bajo p1.2
P1.2 ajuste altob p1.2
P1.3 ajuste bajo p1.3
P1.3 ajuste altob p1.3
P1.4 cierre bajo p1.4
P1.4 ajuste altob p1.4
P1.5 cierre bajo p1.5
P1.5 alto setb p1.5
P1.6 borrado bajo p1.6
P1.6 alto setb p1.6
P1.7 borrado bajo p1.7
P1.7 high setb p1.7
Regresar al principio ljmp star
Fin final
Aquí se utilizan cuatro instrucciones de ensamblaje: clr , setb, ljmp, end;
clr: borra el bit especificado después a 0;
setb: establece el bit especificado después a 1;
ljmp: Es una instrucción de salto incondicional, lo que significa: saltar a la etiqueta especificada y continuar ejecutando.
end: es una pseudoinstrucción que le dice al compilador que el programa termina aquí. La pseudoinstrucción solo le dice al compilador qué requisitos o condiciones tiene el programa hasta este punto. No participa ni afecta la ejecución del programa. Lo que hay que explicar aquí es que, de acuerdo con los requisitos de sintaxis del ensamblador, el formato y los requisitos de escritura del programa compilado (en lo sucesivo, el programa fuente) deben seguir los siguientes principios:
1. el programa debe ser un archivo con formato de texto plano, como un archivo de texto escrito con "Bloc de notas" en "Adjuntos" de Windows 2. La extensión del programa fuente debe ser *.ASM 3. Sólo se puede escribir una declaración en una línea; con un retorno de carro al final de la oración. La longitud de cada línea debe ser inferior a 80 caracteres (es decir, 40 caracteres chinos). 4. El formato de cada línea debe ser: etiqueta: parámetro de comando; comentario
Es decir, una línea consta de cuatro partes. El orden de cada parte no puede ser incorrecto. Una parte de ella puede ser predeterminada. a los requisitos reales. O algunas partes, o incluso todas, se omiten, es decir, líneas en blanco. Cuando es necesario utilizar una etiqueta, debe haber ":" (dos puntos) después de la etiqueta, y la declaración del comando y los parámetros deben estar separados por un espacio. Si el comando tiene varios parámetros, los parámetros deben estar separados por ",. " (coma). Cuando se requiere un comentario, se debe usar ";" (punto y coma) antes del comentario. La declaración después de ";" puede contener cualquier carácter, incluidos los caracteres chinos, que se utilizan para explicar la declaración de ensamblaje anterior. no participará en el ensamblaje y no generará código. Dado que el ensamblador aún no nos resulta intuitivo, al escribir programas fuente debemos desarrollar el hábito de escribir más comentarios, lo que ayudará a la lectura y el mantenimiento de los programas fuente en el futuro.
Una etiqueta es un nombre simbólico que marca una determinada línea en el programa. El valor de la etiqueta después de la compilación es la dirección de la línea de código donde se encuentra la etiqueta. En el conjunto de macros ASM51, la longitud de la etiqueta no está limitada, pero la etiqueta no puede contener ':' u otros símbolos especiales, ni puede usar caracteres chinos. Se pueden usar números como etiquetas, pero deben comenzar con una letra. Cuando se utiliza una etiqueta como parámetro (como una etiqueta utilizada como dirección de transferencia) y aparece después de un comando, se debe descartar ':' (por ejemplo, la ESTRELLA en LJMP STAR en el programa anterior no puede contener:).
Cada línea solo puede tener una etiqueta, y una etiqueta solo se puede usar en un lugar. Si se usa la misma etiqueta en dos líneas, se producirá un error durante el ensamblaje. Dado que no hay límite para la longitud de las etiquetas, puede utilizar Pinyin en inglés o chino significativo para describir las líneas, lo que hace que el programa fuente sea más cómodo de leer.
Las letras en el programa fuente no distinguen entre mayúsculas y minúsculas, es decir, estrella y STAR son iguales. No utilice mayúsculas y minúsculas para distinguir etiquetas diferentes.
Explicación detallada del experimento 2 de la lámpara de agua corriente.
El experimento de la sección anterior no logró el efecto de visualización "flujo". La razón principal es que el tiempo que tarda el microcontrolador en ejecutar cada instrucción es muy corto. y no podemos ver a simple vista el apagado y encendido del LED. El funcionamiento interno del microcontrolador es automático y paso a paso. Esto se logra mediante el hardware lógico interno que genera varias señales de pulso requeridas bajo la acción del reloj del sistema. El período de esta señal de reloj (es decir, la señal de oscilación del cristal) se denomina "período de oscilación". El cristal utilizado en nuestro experimento es de 12 MHz. En un microcontrolador, una instrucción con el ciclo más corto debe estar compuesta por 12 ciclos de oscilación (es decir, el ciclo del oscilador de cristal). La mayoría de las instrucciones del microcontrolador de 8051 núcleos solo utilizan un ciclo de máquina (ciclo único), y también hay instrucciones de dos y cuatro ciclos. SETB P.x y CLR P.x utilizados en este experimento son instrucciones de ciclo único, es decir, solo se necesitan 1 uS (microsegundos) para ejecutar una oración de SETB P.x, y CLR P.x también es 1 uS; el efecto canalización.
Ahora, cambie el programa para que después de que se encienda cada LED, deje que el programa haga otra cosa, es decir, déjelo esperar un rato antes de apagar el LED y continúe ejecutando el siguiente programa:
DDW : ;El programa inicia
CLR P1.0;LED1 encendido
ACALL DELAY;Subrutina de retardo de llamada
SETB P1.0;LED1 apagado
CLR P1.1; cambie la lámpara, igual que arriba
ACALL DELAY
SETB P1.1
CLR P1.2
RETARDO DE LLAMADA
SETB P1.2
CLR P1.3
RETARDO DE LLAMADA
SETB P1.3
CLR P1.4
RETARDO DE LLAMADA
SETB P1.4
CLR P1.5
RETARDO DE LLAMADA p>
SETB P1.5
CLR P1.6
RETARDO DE LLAMADA
SETB P1.6
CLR P1. 7
ACALL DELAY
SETB P1.7
LJMP DDW ; Volver al bucle de inicio
DELAY: ; p >
MOV R1, #50
AD10:
MOV R2, #100
AD11:
MOV R3, # 100
DJNZ R3, $
DJNZ R2, AD11
DJNZ R1, AD10
RET La subrutina de retardo finaliza y regresa; Vaya a la siguiente oración en el punto de llamada
FIN
Guarde el programa anterior como 1LED.asm, compílelo y grábelo en AT89S51, y luego instale 89S51 en el kit. Para el experimento experimenté con algunos enchufes, ¡y esta vez el efecto es el de "lámpara de agua que fluye"! Mirando hacia atrás, veamos cómo funciona la subrutina de retardo: hay muchos registros dentro del microcontrolador. Cuando el microcontrolador está encendido, puede escribir datos en él (los datos escritos por el microcontrolador de acuerdo con los requisitos de su programa). No escrito por el programador), cuando se escriben datos nuevos por segunda vez, los datos anteriores serán sobrescritos por los datos nuevos, por supuesto, los datos también se pueden leer del registro; Cuando el microcontrolador no tiene fuente de alimentación, los datos dentro de los registros desaparecen inmediatamente; la gente llama a estos registros RAM, y la memoria que usa un programador para programar los programas que escribimos en el microcontrolador se llama ROM, debemos ser claros: RAM; es lo que hace que se utilicen los programas, y la ROM es donde se almacenan los programas que escribimos! Como se mencionó anteriormente, hay mucha RAM dentro del microcontrolador. ¿Cuántos registros tiene el AT89C51 utilizado en este experimento? No necesitamos preocuparnos por eso ahora. Sólo necesitamos saber que hay 8 registros llamados R0~R7 dentro del microcontrolador. Cada uno de estos 8 registros consta de 8 registros de bits separados y el máximo de datos almacenados es 1111 1111 en binario, hexadecimal = FF, decimal = 255. Tenga cuidado de no exceder su rango efectivo cuando lo use.
En el programa de retardo anterior, MOV R1, #50 se usa primero. MOV significa movimiento. Esta oración es para poner el número decimal 50 en R1. De acuerdo con los requisitos del lenguaje ensamblador, se debe colocar un signo "#". se agrega delante de él, el lenguaje ensamblador también estipula que se debe agregar "? H" después del número hexadecimal. Cuando el dígito alto del número hexadecimal es una letra, se debe agregar "0" antes de la letra. : #0F8H; después del número binario se debe agregar “B”, por ejemplo: #11110000B. Los números decimales no se suman, por ejemplo: #100. Las oraciones segunda y tercera del programa de retardo son: MOV R2, #100; MOV R3, #100; estas dos oraciones tienen el mismo significado que antes. En la cuarta oración de DJNZ R3, $ significa reducir el número en R3 en 1. Si R3 no es igual a 0, salte a la posición del programa especificada más adelante. "$" aquí significa la posición del programa a la que saltar y ". $" representa En la declaración actual, es decir, R3 no es igual a 0, y el programa vuelve a ejecutar esta declaración nuevamente. Si R3 es igual a 0 después de restar 1, el programa finaliza esta oración y continúa ejecutando las siguientes declaraciones. La última oración del programa de retraso es RET, lo que significa salir de esta subrutina y regresar a la siguiente oración donde se llama esta subrutina. De acuerdo con la explicación anterior, al ingresar a la subrutina de retardo, primero cargue los registros R1, R2 y R3 con los datos que necesitamos, y luego reste R3 primero, disminuyéndolo en 1 cada vez. Es problemático, porque cada vez que se disminuye R2. por 1, no es 0. Debe saltar a la etiqueta AD11 para ejecutar la siguiente declaración. En este momento, R3 se carga con datos 100 nuevamente y R3 debe restarse nuevamente ..., R2 después de la reducción es. completado, reduzca R1. Estudie el proceso de reducción de R1. Cada vez que se ejecuta la instrucción DJNZ ?Rn, rel (Rn se refiere a R0 ~ R7, rel se refiere a la dirección de transferencia), se necesitan 2 ciclos de la máquina y el microcontrolador tarda 2uS (con referencia a declaraciones If como la carga de este experimento). se ignoran, la subrutina de retardo De principio a fin, el microcontrolador tarda 100*100*50*2nS, ¡lo que es 1000000uS=1 segundo! Si se incluye el tiempo que consumen declaraciones como la carga, el tiempo de retraso es superior a 1 segundo. En este punto, hemos creado con éxito la lámpara de agua que fluye y el principio se comprende aproximadamente. Si cree que comprende completamente esta lección, cambie la dirección del flujo de la "lámpara de agua que fluye" o puede cambiarla para que fluya. hacia adentro desde ambos lados, flujo interno hacia afuera..., creo que definitivamente puedes usar los métodos que aprendiste antes para lograr estas funciones. ¡Algunos expertos pueden decir que el método de programación anterior es el más estúpido! ,¡bien! Pero en las primeras etapas de jugar con microcontroladores, no es necesario que prestes atención al lenguaje conciso, siempre que puedas completar los requisitos previos. Esto es lo que los principiantes deben saber. Entonces, ¿existe una mejor idea de programación? ¡tener! Continúe estudiando la siguiente lección
Explicación detallada del experimento tres de la lámpara de agua que fluye
En la lección anterior, el flujo de agua LED se realizó controlando cada bit del puerto uno P1. por uno, entonces Al comienzo del programa, enviamos un número al puerto P1. Este número en sí mismo hará que P1.0 sea bajo primero y otros bits altos, y luego moverá los datos a bits altos, ¿no lo logrará? ¿Un efecto de "transmisión"? ¡En efecto! Desafortunadamente, 8051 no tiene instrucciones para mover los datos P1, pero hay instrucciones para mover los datos en el acumulador ACC hacia la izquierda o hacia la derecha. ACC es un "registro" en la unidad lógica aritmética dentro del microcontrolador 8051 (es incorrecto llamarlo). es un registro aquí), pero primero puede entenderlo de esta manera. ACC a menudo se escribe como A) en las instrucciones. Juega un papel muy importante en la transmisión y el procesamiento de datos. Puede intercambiar datos con todos los registros de un solo byte del chip. De hecho, P1 y otros puertos también son registros en el microcontrolador. De esta manera, primero podemos colocar los datos que deben moverse en el ACC, dejar que se muevan y luego transferir los datos movidos desde el ACC al puerto P1, lo que también puede lograr el efecto de "transmisión".
El programa es el siguiente: DDW: ;Inicio
MOV ACC, #0FEH; ACC se carga primero con los datos del LED1 apagado (es decir, binario 1111 1110)
MOV P1, ACC; Envía los datos de ACC al puerto P1
MOV R0, #7; Debido a que los datos enviados al puerto ?p1 en la oración anterior se extinguen en un bit, entonces mueva los datos 7 veces más para completar un proceso de canalización de 8 bits
LOOP: bucle de movimiento de datos
Rl A ;
MOV P1, A ; Mover Los datos movidos por ACC se envían al puerto p1 para su visualización
ACALL DELAY; retraso de llamada
DJNZ R0, LOOP no se movió lo suficiente para 7; veces para continuar moviéndote
LJMP DDW ; Después de moverte 7 veces, salta al principio nuevamente para lograr el efecto de flujo circular
DELAY: la subrutina de retraso es la subrutina de retraso de la lección anterior.
MOV R1, #50
ADl0:
MOV R2, #100
ADl1:
MOV R3, #100
DJNZ R3, $
DJNZ R2, AD11
DJNZ R1, AD10
RET La subrutina de retardo finaliza; y regresa a la ubicación de llamada. Una frase
END; Este programa de ensamblaje termina aquí
A continuación, compila el programa anterior y prográmalo en nuestro chip experimental. como el de la segunda lección. De hecho, el microcontrolador 8051 tiene 111 instrucciones. Estas 111 instrucciones son como los "códigos de frases" que usamos en los buscapersonas digitales en el pasado. Se pueden usar varios "códigos de frases" para representar un párrafo de oración completo y fluido. Algunas instrucciones se usan comúnmente y otras no, siempre que siga las reglas gramaticales, puede usar estas instrucciones para "combinarlas" en cualquier programa que pueda imaginar. Por supuesto, a veces una instrucción puede reemplazar muchas instrucciones. Esto simplificará el programa, reducirá el costo del código y permitirá que la memoria del programa acomode el código que necesita al escribir programas más grandes. Esto es también lo que persiguen los maestros de microcontroladores. Por supuesto, cuando el espacio en la memoria del programa no es un problema, no hay nada malo en no hacerlo pero aun así lograr la funcionalidad deseada. Hay muchos "componentes" dentro del microcontrolador. Simplemente los usamos y hablamos de ellos, lo cual es muy poco sistemático. Pero no quiero presentarlos sistemáticamente, porque hay muchos libros que presentan sistemáticamente la estructura y las instrucciones de los microcontroladores, sin mencionar que la escritura es mucho mejor que la mía. Por lo tanto, espero que mientras veas esta conferencia, tú también lo hagas. Obtenga más información al respecto a través de instrucciones y "partes" de libros de texto habituales.
Encontré esto en otro lugar. Espero que te sea útil.
Utilicé WAVE6000 para compilarlo.
Otras respuestas están ordenadas por tiempo y por número de votos
0
wsdx888 2009-9-3 10:25:17 124.128.36.* Informe el microcontrolador Estructura interna
El microcontrolador integra los componentes principales del microordenador, como la CPU, la memoria y las interfaces de entrada/salida, en un chip de circuito integrado de muy gran escala.
Se compone de un sistema CPU, memoria de programa, memoria de datos, varios puertos de E/S y unidades funcionales básicas (temporizadores/contadores, etc.).
1. Sistema de CPU
El sistema de CPU incluye CPU, sistema de reloj, reinicio y lógica de control de bus (BUS, el canal público de señales).
(1)CPU
La CPU en un microcontrolador es diferente a la CPU en una microcomputadora. Sus características son que está orientada a control, orientada a sistemas embebidos y orientada a. un solo chip.
(2) Sistema de reloj
El sistema de reloj se utiliza para generar la señal de reloj necesaria para el funcionamiento del microcontrolador. Debe cumplir con los requisitos de reloj de cada circuito unitario en la CPU y el microcontrolador. La frecuencia de trabajo del oscilador de reloj es generalmente de 1,2 a 12 MHz.
(3) Circuito de reinicio
El circuito de reinicio debe cumplir con los requisitos de reinicio de encendido y reinicio controlado por señal.
(4) Lógica de control del bus
La lógica de control del bus debe cumplir con los requisitos de control de la CPU para el bus interno y el bus externo.
2. Memoria de programa
La memoria de programa es un tipo de memoria ROM de solo lectura (Read Only Memory), que se utiliza para solidificar el programa de aplicación del microcontrolador y algunas constantes de la tabla. Los fabricantes de microcontroladores forman diferentes tipos estructurales de microcontroladores de acuerdo con las diferentes estructuras de la memoria de programa interna del microcontrolador, que incluyen:
(1) Tipo de ROM de máscara (2) Tipo de EPROM (3) Tipo sin ROM (4 ) OTP ROM (5) Tipo Flash ROM (MTP ROM)
Los primeros tres tipos de microcontroladores de memoria de programa son productos iniciales, y actualmente los tipos EPROM y ROM Less rara vez se utilizan.
3. Memoria de datos RAM
La RAM es una memoria legible y grabable, también llamada memoria de acceso aleatorio. Además de los registros de trabajo, indicadores de bits y áreas de pila, la RAM dentro del microcontrolador se puede utilizar como un búfer de datos para almacenar datos de entrada o resultados de operaciones.
Dado que el microcontrolador está orientado principalmente a sistemas de medición y control, la capacidad de memoria de datos dentro del microcontrolador es pequeña, normalmente no más de 256 bytes, y todos utilizan memoria estática de acceso aleatorio SRAM (Static Random Access Memory) .
4. Varios puertos de E/S
Los puertos de E/S son las interfaces de entrada y salida de la computadora (T significa entrada, O significa salida). Los puertos de E/S del microcontrolador son todos pines auxiliares de entrada/salida del chip. Estos puertos de E/S se pueden dividir en los siguientes tipos:
(1) Puerto de entrada/salida de bus
(2) Puerto de E/S de usuario. Utilizado por el usuario para el control de entrada/salida de circuitos externos.
(3) Puerto de entrada/salida de la función interna del microcontrolador. Por ejemplo, la entrada auxiliar de conteo del temporizador/contador, la entrada auxiliar de una fuente de interrupción externa, etc.
Para reducir el número de pines del microcontrolador, generalmente los puertos de E/S tienen funciones dúplex. Por ejemplo, cuando no se utiliza el bus externo, el puerto del bus se puede asignar al usuario como un puerto de entrada/salida auxiliar.
Desde la estructura del puerto de E/S, también se puede dividir en un puerto de E/S paralelo, es decir, se envían o ingresan varios bits de datos juntos. Esta forma de transmisión de datos es rápida pero. utiliza muchos alfileres. Otro tipo de puerto de E/S se llama puerto de E/S serie, es decir, los datos transmitidos son salida o entrada secuencial. Esta forma puede reducir en gran medida el número de pines del puerto de E/S, pero la transmisión de datos es más lenta. .
5. Unidades funcionales básicas
Las unidades funcionales básicas son unos circuitos configurados para cumplir con las funciones de medición y control del microcontrolador. Son algunos circuitos básicos que se utilizan para mejorar y ampliar las funciones del ordenador. , como temporizadores/contadores, sistema de interrupción, etc. Los temporizadores/contadores desempeñan un papel muy importante en aplicaciones prácticas, como la sincronización precisa o el conteo de eventos externos.