Practica 3: Manejo de Puertos Digitales
Enviado por Juan Andres Silva • 30 de Marzo de 2023 • Práctica o problema • 1.169 Palabras (5 Páginas) • 157 Visitas
Practica 3: Manejo de Puertos Digitales
Introducción:
El manejo de puertos es la base del uso de los microcontroladores, es con los puertos que podemos hacer lecturas cuando los configuramos como entradas y a la vez, funcionan también como salidas para poder accionar algún componente eléctrico, en el caso de esta practica un LED. Las posibilidades de usos para los puertos son tantas como se puedan imaginar, todo depende de las condiciones de entrada deseadas por el usuario para accionar cualquier salida con la configuración propuesta.
Objetivos:
- Configurar puertos digitales como entradas y salidas.
- Utilizar los puertos digitales para lectura de voltaje y como salida para encender un LED dadas ciertas condiciones.
Marco teórico:
El microcontrolador PIC16F628A tiene dos puertos, PORTA y PORTB. Algunos de los pines de estos puertos I/O están multiplexados con funciones alternativas para las funciones periféricas del dispositivo. En general, cuando un periférico está habilitado, ese pin no puede usarse como un pin de I/O de propósito general.
Tanto el PORTB como el PORTA son puertos bidireccionales de 8 bits de ancho. El registro de dirección de datos correspondiente es TRISB y TRISA respectivamente. Un '1' en el registro TRISB/A pone el controlador de salida correspondiente en un modo de alta impedancia. Un '0' en el registro TRISB/A coloca el contenido del pestillo de salida en los pines seleccionados.
[pic 1]
Figura 1: Algunos de los puertos utilizados para la práctica y sus descripciones.
El reloj interno está dividido en cuatro para generar cuatro relojes no superpuestos llamados Q1, Q2, Q3 y Q4. Internamente el contador de programa (PC) es incrementado en cada Q1 (un ciclo de los cuatro relojes son los 4MHz del oscilador) por lo que el ciclo completo toma 1 microsegundo, la instrucción leída en el código es buscada en la memoria del programa y unida o enganchada al registro de instrucciones en Q4. La instrucción es decodificada y ejecutada durante el ciclo de Q1 a Q4.
Un ciclo de instrucción consta de cuatro ciclos Q (Q1, Q2, Q3 y Q4). La búsqueda de la instrucción en la memoria del programa toma un ciclo de instrucción mientras que decodificar y ejecutar toma otra instrucción ciclo. Sin embargo, debido a la canalización (coloca una parte de la instrucción en el siguiente ciclo Q), cada instrucción se ejecuta eficazmente en un ciclo. Si una instrucción hace que el contador del programa cambie (por ejemplo, GOTO) entonces se requieren dos ciclos para completar la instrucción [1].
[pic 2]
Figura 2: Descripción grafica del manejo de los ciclos internos del reloj.
La documentación de las instrucciones esenciales para realizar la practica se muestra en la siguiente figura:[pic 3]
[pic 4]
Figura 3: documentación de las instrucciones ANDWF y DECFSZ.
Materiales y métodos utilizados:
Se utilizó el IDE MPLAB en lenguaje ensamblador para programar el microcontrolador de la marca MICROCHIP modelo PIC16F628A.
- LED con tabla de verdad 1 and 1 = 1
La primera parte del código son las funciones esenciales que se llaman dentro del ciclo, posterior a estas se encuentra la parte inicial del código que realiza un cambio de banco de memoria para colocar el pin 0 del puerto A (PORTA) como salida (para poder encender el LED) y retornar al banco de memoria donde se encuentra el puerto B (PORTB) se muestra en la siguiente figura:
[pic 5]
Figura 4: Funciones principales para encender/apagar el LED y etiqueta inicio para cambios del banco de memoria.
La segunda parte del código es la etiqueta check, la cual es un ciclo recursivo en el cual verifica que ambas entradas RB1 y RB2 tengan valor 1, el valor contenido en la primera entrada se almacena en el registro W (WREG) (1 o 0) y posteriormente se copia en la localidad 0x20, posteriormente, realiza el mismo procedimiento con la entrada RB2 sin después copiarla en una localidad de memoria, esto con el fin de utilizar la instrucción ANDWF que realiza un comparativo de los valores almacenados en algún registro f (en este caso 0x20) y el registro w.
...