You are on page 1of 4

Laboratorio de microcomputadoras

Reporte practica 8
05/05/2019
González Zepeda Felix / Grupo de teoría 4
Hernández García Israel / Grupo de teoría 3
Equipo 5

Objetivo. Realización de programas a través de programación en C y empleo del puerto serie para visualización
y control.

Introducción. Tradicionalmente muchos programadores de microcontroladores PIC utilizan el lenguaje


ensamblador para realizar sus proyectos, pero en la actualidad existen compiladores de lenguajes de alto nivel
que permiten realizar las mismas tareas en un menor tiempo de desarrollo y con mucha mayor facilidad en la
programación.

Ejercicios
5.- Realizar las modificaciones necesarias al ejercicio 2 de la práctica tres para que ahora el comando que
selecciona la acción sea a través del puerto serie, usar retardos de ½ segundos, usando programación en C.
Laboratorio de microcomputadoras
Reporte practica 8
05/05/2019
González Zepeda Felix / Grupo de teoría 4
Hernández García Israel / Grupo de teoría 3
Equipo 5

Propuesta solución:

INICIO

Leer var1

Si
Var = 0

No output_b 0x00

Si
Var = 1

No output_b 0xff
Si
Var = 2
i<8
No
Si
output_b 0x80
Var = 3

output_b 0x01
No
Si
Var = 4
i<8

Si
output_b 0xff
Var = 5

output_b 0x00
No
Laboratorio de microcomputadoras
Reporte practica 8
05/05/2019
González Zepeda Felix / Grupo de teoría 4
Hernández García Israel / Grupo de teoría 3
Equipo 5

Solución:

#include <16f877A.h> //Incluye la librería del microprocesador


#fuses HS,NOPROTECT,
#use delay(clock=20000000) //Frec. de oscilación 20Mhz

//Configura y activa el puerto SERIAL


#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#org 0x1F00, 0x1FFF void loader16F877(void) {} //for the 8k 16F876/7

char var1; //Define una variable tipo CHAR


int outb; //Define una variable tipo entero
int i; //Define una variable tipo entero

void main(){
while(1){
var1 = getchar(); //Lee la variable que es escrita en la
//Hyperterminal y la guarda en var1
output_b(var1); //Manda var1 al puerto B
switch(var1){ / / Inicializamos el switch para entrar en cada uno de los casos
case '0': // Caso en el que los led están apagados
output_b(0x00); //Pone en bajo los bits del puerto B
break;
case '1': // Caso en el que los led están encendidos
output_b(0xff); //Pone en alto los bit del puerto B
break;
case '2': // Caso corrimiento del bit más significativo hacia la derecha
outb = 0x80; //Inicializa con el valor de "10000000"
for(i = 0; i<8; i++){
output_b(outb); //Manda outb al puerto B
delay_ms(500); //Retardo 1/2s
outb >>= 1;
}
break;
case '3': // Caso corrimiento del bit menos significativo hacia la izquierda
outb = 0x01; //Inicializa con el valor de "00000001"
for(i = 0; i<8; i++){
output_b(outb); //Manda outb al puerto B
delay_ms(500); //Retardo 1/2s
outb <<= 1;
}
break;
case '4': // Caso corrimiento del bit más significativo de derecha a izquierda

outb = 0x80; //Inicializa con el valor de "10000000"


for(i = 0; i<8; i++){
Laboratorio de microcomputadoras
Reporte practica 8
05/05/2019
González Zepeda Felix / Grupo de teoría 4
Hernández García Israel / Grupo de teoría 3
Equipo 5

output_b(outb); //Manda outb al puerto B


delay_ms(500); //Retardo 1/2s
outb >>= 1;
}
outb = 0x02;
for(i = 0; i<7; i++){
output_b(outb); //Manda outb al puerto B
delay_ms(500); //Retardo 1/2s
outb <<= 1;
}
break;
case '5': // Caso alto y en bajo de los bits
output_b(0x00); //Pone en bajo los bits del puerto B
delay_ms(500); //Retardo 1/2s
output_b(0xff); //Pone en alto los bit del puerto B
delay_ms(500); //Retardo 1/2s
break;
default:
break;
}
}//while
}//main

Análisis de resultados

Se pudo observar como mediante lenguaje C se pudo realizar un programa similar al de las primeras prácticas
que fueron en ensamblador, solo que esta vez se implementó un lenguaje con el que se está más familiarizado,
de modo que si se tiene idea de cómo implementar la estructura que deberá tener el programa se puede
aplicar tareas similares en dos lenguajes distintos.

Conclusiones:

González Zepeda Felix

Con base al objetivo se logró comprender de qué manera se puede utilizar el lenguaje C para implementar
tareas similares que con en el lenguaje ensamblador pero de manera más simple con esto me refiero a que
no es tan complicado de entender cómo funciona a diferencia del lenguaje ensamblador, solo hay que saber
de qué manera estructurar l programa que utilizaremos así como sus respectivas bibliotecas y así poder utilizar
los diferentes puertos.

You might also like