0% encontró este documento útil (0 votos)
67 vistas7 páginas

Tarea 1

Este documento presenta un trabajo de investigación sobre puertos de entrada y salida en microcontroladores PIC realizado por un estudiante. Explica las funciones de registros como STATUS, TRISA, PORTA y ACUMULADOR. También describe cómo configurar puertos como entradas o salidas digitales y analógicas manipulando los registros TRIS y ANSEL. Finalmente, incluye un ejemplo de código C++ para configurar diferentes pines de los puertos A y B.

Cargado por

Hernan Hurtado
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
67 vistas7 páginas

Tarea 1

Este documento presenta un trabajo de investigación sobre puertos de entrada y salida en microcontroladores PIC realizado por un estudiante. Explica las funciones de registros como STATUS, TRISA, PORTA y ACUMULADOR. También describe cómo configurar puertos como entradas o salidas digitales y analógicas manipulando los registros TRIS y ANSEL. Finalmente, incluye un ejemplo de código C++ para configurar diferentes pines de los puertos A y B.

Cargado por

Hernan Hurtado
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 7

UNIVERSIDAD DE FALCÓN

ESCUELA: INGENIERÍA

CATEDRA: Micro procesadores y micro controladores

PROFESOR: Avinadad Mendez

TRABAJO DE INVESTIGACION

ACERCA DE PUERTOS DE ENTRADA Y SALIDA

Alumno: Hernán J. Hurtado H

C.I. 7.567.320

Septiembre 2023
TRABAJO DE INVESTIGACION ACERCA DE PUERTOS DE ENTRADA Y SALIDA , EN
ESTE CASO DE LOS MICROCONTROLADORES PIC ( 16F84 o 16F877A)

1.- Investiga y Desarrolla la función: de los Registros;


STATUS, TRISA, TRISB, PORTA, PORTB, ACUMULADOR y TMR0 de un Microcontrolador PIC , .

Los registros de un microcontrolador PIC tienen las siguientes funciones:


- STATUS: Almacena información sobre el estado del microcontrolador.
- TRISA y TRISB: Configuran los pines como entradas o salidas.
- PORTA y PORTB: Almacenan los valores de los pines de entrada/salida.
- ACUMULADOR: Almacena datos temporales durante las operaciones del
microcontrolador.
- TMR0: Es un temporizador/countdown utilizado para generar eventos temporales.

2.-Defina la función de los registros de propósito General de un microcontrolador.

Los registros de propósito general en un microcontrolador son un conjunto de registros de


almacenamiento interno que se utilizan para realizar operaciones y manipulaciones de
datos durante la ejecución de un programa. Estos registros son accesibles directamente
por el microcontrolador y se utilizan para almacenar valores temporales, guardar datos de
entrada o salida, realizar cálculos matemáticos y lógicos, controlar el flujo del programa,
entre otras funciones. Al ser de propósito general, pueden ser utilizados para diferentes
tareas según las necesidades del programador, lo que brinda flexibilidad y eficiencia en el
diseño de aplicaciones para el microcontrolador.

3.- Como se configura un puerto por ejemplo el PORTA ( puerto A) como de SALIDAS digitales , y
el puerto PORTB (A) como ENTRADAS analógicas.
Para configurar PORTA como salidas digitales, se utiliza el registro TRISA y se establece en
'0' el bit correspondiente al pin que se desea configurar como salida. Para configurar
PORTB como entradas analógicas, se utiliza el registro ANSELB y se establece en '1' el bit
correspondiente al pin que se desea configurar como entrada analógica. Además, se debe
establecer en '0' el bit correspondiente en TRISB para habilitar la entrada digital del pin .

4.-Como se configura un puerto por ejemplo el PORTB ( puerto B) como de entradas digitales , y
el puerto PORTA ( A) como entradas analógicas.
Para configurar el PORTB como entradas digitales, se establece en '1' el bit
correspondiente en el registro TRISB. Esto indica que los pines del PORTB se configuran
como entradas. Además, se debe asegurar que los bits correspondientes en el registro
ANSELB estén configurados en '0' para deshabilitar las entradas analógicas en esos pines.
Para configurar el PORTA como entradas analógicas, se establece en '1' el bit
correspondiente en el registro ANSELA. Esto habilita la funcionalidad analógica en los
pines del PORTA. Luego, se deben configurar los bits correspondientes en el registro TRISA
en '1' para habilitar las entradas analógicas y permitir que los pines funcionen como
entradas digitales.

5.-Como se configura un puerto o determinan los Pines de este como Entradas digitales , y
determinados Pines como Salidas digitales.
Para configurar un puerto como entradas o salidas digitales en un microcontrolador PIC,
se debe utilizar el registro TRIS correspondiente al puerto deseado. Para configurar un pin
como entrada digital, se establece el bit correspondiente en '1' en el registro TRIS. Para
configurar un pin como salida digital, se establece el bit correspondiente en '0' en el
registro TRIS. Es importante consultar la hoja de datos del microcontrolador para conocer
los registros específicos y la ubicación de los pines en el puerto que se desea configurar.

6.-Desarrolle utilizando C++ , Un caso por ejemplo en el puerto A y el B:


A0: pin A0 como salida digital
B1: pin B1 como salida digital
B2: pin B2 como Entrada digital
A1: pin A1 como Entrada digital
y desde los pines B4.B5.B6.B7 como salidas digitales
como quedaría el comando en lenguaje de alto nivel C.

Usando un 16F877A.
Para configurar los pines según tus especificaciones en un microcontrolador PIC 16F877A
usando C++, puedes utilizar el siguiente código:

```cpp
#include <xc.h> // Incluir la librería específica del microcontrolador

void setup() {
TRISA = 0b11111110; // Configurar A0 como salida digital y A1 como entrada digital
TRISB = 0b00001100; // Configurar B1 y B2 como salidas digitales, y B4, B5, B6 y B7
como salidas digitales
}

void loop() {
// Aquí puedes agregar el código para realizar las operaciones deseadas en los pines
configurados
}
```
7.-Investigar, desarrollar en su propia redacción.
a.-Desarrolle y conceptualice : Como se lleva a cabo el proceso de Traducción del Lenguaje C++
(Lenguaje de alto nivel) utilizado para realizar la programación por el usuario, al Lenguaje Binario
que será utilizado finalmente para ser cargado al Procesador / Controlador ( Explique de forma
detallada y en redacción propia)
a) El proceso de traducción del lenguaje C++ (lenguaje de alto nivel) al lenguaje binario
utilizado por el procesador/controlador consta de varias etapas. A continuación, se detalla
cada una de ellas:
1. Preprocesamiento: En esta etapa, el preprocesador examina el código fuente en C++ y
realiza varias tareas, como la inclusión de archivos de encabezado (#include), la expansión
de macros y la eliminación de comentarios. El resultado es un código fuente modificado
que será utilizado en las etapas posteriores.
2. Compilación: El compilador toma el código fuente preprocesado y lo traduce a un
código en lenguaje ensamblador específico para la arquitectura del
procesador/controlador objetivo. Durante esta etapa, se realizan análisis léxicos y
sintácticos para verificar la corrección gramatical del código y se generan archivos objeto
(.obj) que contienen instrucciones en lenguaje ensamblador.
3. Ensamblado: El ensamblador toma los archivos objeto generados en la etapa anterior y
los traduce a lenguaje binario entendible por el procesador/controlador. Cada instrucción
en lenguaje ensamblador se convierte en una secuencia de bits que representa una
operación específica que el procesador/controlador puede ejecutar.
4. Vinculación: Si el programa está compuesto por múltiples archivos fuente, es necesario
vincularlos en esta etapa. El vinculador combina los diferentes archivos objeto y resuelve
las referencias cruzadas entre ellos para generar un único archivo ejecutable (.exe) o un
archivo binario final que pueda ser cargado al procesador/controlador.
5. Carga: En esta etapa, el archivo binario final generado en la etapa anterior se transfiere
al procesador/controlador. Esto puede implicar la programación de una memoria flash o
EEPROM en el caso de microcontroladores, o la carga del archivo ejecutable en la
memoria del sistema en el caso de computadoras.
Una vez que el lenguaje binario está cargado en el procesador/controlador, este puede
ejecutar las instrucciones de manera secuencial, realizando las operaciones definidas por
el programa en lenguaje C++. Es importante destacar que este proceso de traducción se
realiza utilizando herramientas como un compilador C++ y un ensamblador específico para
la arquitectura del procesador/controlador objetivo.
b.-Investigue y Explique a que se refiere la Segmentación de Instrucciones: (Pipelining). Con
ejemplos en ASM (Assembly)
b) La segmentación de instrucciones, también conocida como pipelining, es una técnica
utilizada en los procesadores para mejorar la eficiencia y el rendimiento al ejecutar
instrucciones de manera simultánea y en paralelo.
En un procesador con segmentación de instrucciones, el flujo de ejecución se divide en
etapas o segmentos, y cada etapa se encarga de realizar una parte específica del
procesamiento de la instrucción. A medida que una instrucción avanza a través de las
etapas, se permite que nuevas instrucciones ingresen al pipeline y se ejecuten en paralelo.
Las etapas típicas en un pipeline son:
1. Fetch (Obtención): La siguiente instrucción se obtiene desde la memoria principal o la
caché de instrucciones.
2. Decode (Decodificación): La instrucción se decodifica y se determina qué operación
debe realizar.
3. Execute (Ejecución): La operación de la instrucción se lleva a cabo, como realizar una
suma o una operación lógica.
4. Memory Access (Acceso a memoria): Si es necesario, se accede a la memoria para leer o
escribir datos.
5. Write Back (Escritura): El resultado de la operación se escribe en el registro o en la
memoria si es necesario.
Un ejemplo sencillo en lenguaje ensamblador x86 podría ser el siguiente:
```assembly
add eax, ebx
sub ecx, edx
```
En un pipeline de cinco etapas, los pasos para estas dos instrucciones serían:
1. Fetch: Se obtiene la primera instrucción `add eax, ebx` desde la memoria.
2. Decode: La instrucción se decodifica y se identifica como una operación de suma entre
los registros `eax` y `ebx`.
3. Execute: Se realiza la suma de los valores contenidos en `eax` y `ebx`.
4. Memory Access: No es necesario en este caso.
5. Write Back: El resultado de la suma se escribe en el registro `eax`.

Mientras tanto, en paralelo, se puede comenzar a ejecutar la segunda instrucción:


1. Fetch: Se obtiene la segunda instrucción `sub ecx, edx` desde la memoria.
2. Decode: La instrucción se decodifica y se identifica como una operación de resta entre
los registros `ecx` y `edx`.
3. Execute: Se realiza la resta de los valores contenidos en `ecx` y `edx`.
4. Memory Access: No es necesario en este caso.
5. Write Back: El resultado de la resta se escribe en el registro `ecx`.
De esta manera, las instrucciones pueden ejecutarse en paralelo, mejorando el
rendimiento del procesador al aprovechar el tiempo ocioso que se generaría si se
ejecutaran secuencialmente.
Es importante destacar que la efectividad del pipelining puede verse afectada por
dependencias de datos o saltos condicionales, que pueden generar conflictos y causar
retrasos en la ejecución de las instrucciones. Por lo tanto, los compiladores y los
diseñadores de hardware deben considerar estos factores al implementar el pipeline para
obtener un rendimiento óptimo.

8.-Para la Programación de un Microcontrolador/MicroProcesador, Que ventajas supone la


utilización de Lenguaje de alto nivel C sobre el lenguaje llamado ensamblador. y viceversa? .
razone y explique su respuesta en su propias palabras..
La utilización de un lenguaje de alto nivel como C para programar un
microcontrolador/microprocesador presenta varias ventajas sobre el lenguaje
ensamblador:

1. Legibilidad y facilidad de mantenimiento: El código escrito en un lenguaje de alto nivel


es más legible y comprensible para los programadores, ya que utiliza una sintaxis más
cercana al lenguaje humano. Esto facilita el mantenimiento y la depuración del código en
el futuro.

2. Portabilidad: El código escrito en C es más portable, lo que significa que puede


ejecutarse en diferentes arquitecturas de microcontroladores/microprocesadores sin
necesidad de realizar modificaciones significativas. Esto permite reutilizar el código en
diferentes proyectos y plataformas.

3. Productividad: La programación en un lenguaje de alto nivel como C permite escribir


código de manera más rápida y eficiente en comparación con el ensamblador. Esto se
debe a que C ofrece estructuras de control de flujo, funciones predefinidas y bibliotecas
estándar que simplifican el desarrollo de aplicaciones complejas.

Por otro lado, el uso del lenguaje ensamblador también tiene sus ventajas:

1. Control total del hardware: El lenguaje ensamblador permite un control más preciso y
directo sobre el hardware del microcontrolador/microprocesador. Esto puede ser
necesario en situaciones donde se requiera un rendimiento o una optimización específica.

2. Tamaño y eficiencia del código: El código escrito en ensamblador puede ser más
compacto y eficiente en términos de uso de recursos de memoria y velocidad de
ejecución. Esto puede ser crítico en aplicaciones con limitaciones de recursos o en
situaciones donde cada ciclo de reloj cuenta.

En resumen, el lenguaje de alto nivel C ofrece ventajas significativas en términos de


legibilidad, portabilidad y productividad, lo que lo convierte en una opción preferida para
la programación de microcontroladores/microprocesadores. Sin embargo, en ciertos casos
donde se requiere un control más preciso del hardware o una optimización extrema, el
lenguaje ensamblador puede ser utilizado. La elección del lenguaje dependerá de los
requisitos específicos del proyecto y las habilidades del programador.

También podría gustarte