Implementación de Sumador con PIC16F88 en C y Visualización en Display 7 Segmentos

Clasificado en Informática

Escrito el en español con un tamaño de 3,47 KB

Implementación de un Sumador Numérico con PIC16F88

Este documento presenta el código fuente en lenguaje C para un microcontrolador PIC16F88, diseñado para realizar sumas numéricas y mostrar el resultado en displays de 7 segmentos. Además, incluye una serie de preguntas relacionadas con el funcionamiento y la configuración del programa.

Código Fuente del Programa Sumador

#include <stdio.h>
#include <stdlib.h>
#include <xc.h>

#pragma config CP = OFF, CCPMX = RB0, DEBUG = OFF, WRT = OFF, CPD = OFF
#pragma config LVP = OFF, BOREN = OFF, MCLRE = OFF, PWRTE = OFF, WDTE = OFF
#pragma config FOSC = INTOSCIO, IESO = OFF, FCMEN = OFF

char DATOA, DATOB, RESUL, DECENAS, UNIDADES; // Todas las variables de 8 bits

int main(void) {
    ANSEL = 0; // Todos los puertos digitales
    TRISA = 0xFF; // Todo PORTA como entrada (referencia a pregunta 2)
    TRISB = 0; // Todo PORTB como salida
    PORTB = 0;

    while (1) {
        while (RA4 == 0) {}
        PORTB = 0; // Borra el resultado de la suma anterior
        DATOA = PORTA & (0b00001111); // Entrada del primer sumando
        while (RA4 == 1) {}
        while (RA4 == 0) {}
        DATOB = PORTA & (0b00001111); // Entrada del segundo sumando
        RESUL = DATOA + DATOB; // Realiza la suma
        DECENAS = RESUL / 10; // Calcula las decenas de la suma (parte entera del cociente)
        UNIDADES = RESUL % 10; // Calcula las unidades de la suma (resto de la división)
        PORTB = 16 * DECENAS + UNIDADES; // Muestra el resultado en PORTB. Las decenas en los 4 bits de mayor peso.
        // Las unidades en los 4 bits de menor peso (referencia a pregunta 6)
        while (RA4 == 1) {}
    }
    return EXIT_SUCCESS;
}

Cuestionario sobre el Programa y Conexiones

  1. Instrucciones en Lenguaje C

    Escriba la instrucción en lenguaje C correspondiente a cada línea marcada por los números:

    • (1) ANSEL = 0;
    • (2) TRISA = 0xFF;
    • (3) TRISB = 0;
    • (4) DATOB = PORTA & (0b00001111);
    • (5) DECENAS = RESUL / 10;
    • (6) PORTB = 16 * DECENAS + UNIDADES;
  2. Propósito de las Instrucciones while

    ¿Para qué se utilizan las instrucciones while (RA4 == 1) {} y while (RA4 == 0) {}?

    Respuesta: Se utilizan para asegurar que la entrada del sumando se registra al pulsar y soltar una tecla en RA4, evitando múltiples lecturas por un solo pulso (debouncing o detección de flanco).

  3. Esquema de Conexiones

    Dibuje el esquema de conexiones entre el PIC16F88, las entradas y los displays de 7 segmentos (con entrada BCD), indicando cuál corresponde a las decenas y cuál a las unidades.

    Nota para el diagrama: Los displays se conectan al PORTB. Los 4 bits de mayor peso (RB7-RB4) para las decenas y los 4 bits de menor peso (RB3-RB0) para las unidades. La entrada de los números se realiza a través del PORTA.

  4. Modificación para Resultado Binario

    ¿Qué modificaciones realizaría al programa para obtener el resultado de la suma en formato binario?

    Respuesta: Para obtener el resultado de la suma directamente en binario, se eliminarían las líneas de cálculo de decenas y unidades, y se asignaría directamente el resultado a PORTB:

    PORTB = RESUL;

Entradas relacionadas: