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
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;
Propósito de las Instrucciones
while
¿Para qué se utilizan las instrucciones
while (RA4 == 1) {}
ywhile (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).
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.
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;