MICROCONTROLADORES
Laboratorio N° 04
JUEGO DE TIRO A CANASTA CON
INDICAR DE PUNTOS
INDICAR DE PUNTOS
1. CAPACIDAD TERMINA
* Utilizar al microcontrolador en aplicaciones de control electrónico.
* Desarrollar y ejecutar programas en un microcontrolador PIC.
* Programar y configurar interfaces básicas del microcontrolador.
* Utilizar al microcontrolador en aplicaciones de control electrónico.
* Desarrollar y ejecutar programas en un microcontrolador PIC.
* Programar y configurar interfaces básicas del microcontrolador.
2. COMPETENCIA ESPECIFICA DE LA SESIÓN
* Conocer el uso de las subrutinas.
* Conocer las técnicas de elaboración de programas a través de algoritmos.
* Programación de un proyecto real.
2. MARCO TEORICO
Pseudocódigo
3. EVIDENCIAS
a) Programación
4. OBSERVACIONES
* Al momento de realizar la programación, se tuvo que recurrir a teoría de clases anteriores para poder lograr la tarea dejada en laboratorio.
* Cuando se quiso realizar las pruebas correspondientes, la computadora no reconocia el entrenador, el cual retraso las pruebas.
* Al ver que no se podia trabajar con el entrenador se opto por usa el software de simuilacion "PROTEUS".
5. CONCLUCIONES
* Se logro realizar la programación con métodos usados en clases anteriores.
* concluyo de que el uso del entrenador no están indispensable, pero si facilita mejor su simulación y su trabajo.
6. INTEGRANTES
* Aldude Aldudi, Rosmel
* Conocer el uso de las subrutinas.
* Conocer las técnicas de elaboración de programas a través de algoritmos.
* Programación de un proyecto real.
2. MARCO TEORICO
Pseudocódigo
El
pseudocódigo (o falso lenguaje) es comúnmente utilizado por los programadores
para omitir secciones de código o para dar una explicación del paradigma que
tomó el mismo programador para hacer sus códigos, esto quiere decir que el
pseudocódigo no es programable sino facilita la programación.
El principal objetivo del pseudocódigo es el de representar la solución a un algoritmo de la forma más detallada posible, y a su vez lo más parecida posible al lenguaje que posteriormente se utilizará para la codificación del mismo.
El principal objetivo del pseudocódigo es el de representar la solución a un algoritmo de la forma más detallada posible, y a su vez lo más parecida posible al lenguaje que posteriormente se utilizará para la codificación del mismo.
El
pseudocódigo utiliza para representar las acciones sucesivas palabras
reservadas en inglés (similares a sus homónimos en los lenguajes de
programación), tales como star,begin, end, stop, if-then-else, while,
repeat-until….etc
Es un lenguaje
de especificación de algoritmos. El uso de tal lenguaje hace el paso de
codificación final (esto es, la traducción a un lenguaje de programación)
relativamente fácil.
El pseudocódigo nació como un lenguaje similar al inglés y era un medio representar básicamente las estructuras de control de programación estructurada. Se considera un primer borrador, dado que el pseudocódigo tiene que traducirse posteriormente a un lenguaje de programación. Cabe señalar que el pseudocódigo no puede ser ejecutado por una computadora.
El pseudocódigo nació como un lenguaje similar al inglés y era un medio representar básicamente las estructuras de control de programación estructurada. Se considera un primer borrador, dado que el pseudocódigo tiene que traducirse posteriormente a un lenguaje de programación. Cabe señalar que el pseudocódigo no puede ser ejecutado por una computadora.
a) Programación
#include <16f877a.h> // Incluimos archivo con PIC a utilizar
#use delay (clock=20M) // Indicamos que trabajaremos a 20Mhz
#fuses HS, NOPROTECT, NOWDT // Configuración básica de los fusibles
int variable = 0;
int tabBCD[10]={0b00111111,0b00000110,0b01011011,0b01001111,0b01100110,
0b01101101,0b01111101,0b00000111,0b01111111,0b01101111};
int delay=5; // Completar con valor de retardo adecuado en ms
int16 dato=0; // Declaramos una variable ENTERA de 16 bits
int16 unidades=0, decenas=0, centenas=0;
/******************************************************/
// Funcion que descompone un número Entero de 4 cifras
/******************************************************/
void descomp_entero(int16 valor)
{
centenas = (int16) valor / 100; // 1er Dígito o Centenas
valor -= centenas * 100; // y se lo resto al valor
decenas = (int16) valor / 10; // 2do Dígito o Decenas
valor -= decenas * 10; // y también se lo resto
unidades = (int16) valor; // y por último solo me quedan las
unidades
}
/*************************************************/
// Funcion para displayar en forma multiplexada
/************************************************/
void visualizar(void)
{
output_b(tabBCD[centenas]);
output_a(0b00001000);
delay_ms(delay);
output_b(tabBCD[decenas]);
output_a(0b00000100);
delay_ms(delay);
output_b(tabBCD[unidades]);
output_a(0b00000010);
delay_ms(delay);
}
/*************************************************/
// Funcion para emitir un pitido
/************************************************/
void BIP()
{
FOR (int i= 0;i<=100;++i)
{
output_high(PIN_E1); // Pone a "1" el pin E1 (envía 5
voltios)
delay_ms(1); // "Congela el tiempo" durante 1ms
output_low(PIN_E1); // Pone a "0" el pin E1
delay_ms(01); // "Congela el tiempo" durante 1ms
}
}
void SUM()
{
FOR (int a= 0;a<=100;++a)
{
output_high(PIN_A1); // Pone a "1" el pin E1 (envía 5
voltios)
delay_ms(1); // "Congela el tiempo" durante 1ms
output_low(PIN_A1); // Pone a "0" el pin E1
delay_ms(01); // "Congela el tiempo" durante 1ms
}
FOR (int s= 0;s<=100;++s)
{
output_high(PIN_A2); // Pone a "1" el pin E1 (envía 5
voltios)
delay_ms(1); // "Congela el tiempo" durante 1ms
output_low(PIN_A2); // Pone a "0" el pin E1
delay_ms(01); // "Congela el tiempo" durante 1ms
}
FOR (int d= 0;d<=100;++d)
{
output_high(PIN_A3); // Pone a "1" el pin E1 (envía 5
voltios)
delay_ms(1); // "Congela el tiempo" durante 1ms
output_low(PIN_A3); // Pone a "0" el pin E1
delay_ms(01); // "Congela el tiempo" durante 1ms
}
}
/*************************************************/
// FUNCION PRINCIPAL VOID (MAIN)
/************************************************/
void main ()
{
dato = 000; // ingrese numero inicial a visualizar
descomp_entero(dato);
visualizar(); // mostramos el valor de "dato" en
displays
while(1)
{
IF (!input(PIN_D0)) // SI INGRESA MONEDA
{
BIP();
delay_ms(500);
BIP();
delay_ms(500);
}
visualizar(); // mostramos el valor de "dato" en
displays
IF (!input(PIN_D1) && (variable == 0)) // si ENCESTA
CANASTA
{
dato = dato + 7;
descomp_entero(dato);
BIP();
delay_ms(500);
output_high(PIN_C0);
variable = 1;
}
visualizar();
IF (!input(PIN_D1) && (variable == 1)) // si ENCESTA
CANASTA
{
dato = dato + 7;
descomp_entero(dato);
BIP();
delay_ms(500);
output_high(PIN_C1);
variable = 2;
}
visualizar();
IF (!input(PIN_D1) && (variable == 2)) // si ENCESTA
CANASTA
{
dato = dato + 7;
descomp_entero(dato);
BIP();
delay_ms(500);
output_high(PIN_C2);
variable = 3;
}
visualizar();
IF (!input(PIN_D1) && (variable == 3)) // si ENCESTA
CANASTA
{
dato = dato + 7;
descomp_entero(dato);
BIP();
delay_ms(500);
output_high(PIN_C3);
variable = 4;
}
visualizar();
IF (!input(PIN_D1) && (variable == 4)) // si ENCESTA
CANASTA
{
dato = dato + 7;
descomp_entero(dato);
BIP();
delay_ms(500);
output_high(PIN_C4);
variable = 0;
visualizar();
IF (!input(PIN_D1) && dato == 35)
{
BIP();
delay_ms(100);
SUM();
delay_ms(100);
BIP();
delay_ms(100);
SUM();
delay_ms(100);
BIP();
delay_ms(100);
SUM();
delay_ms(100);
dato = 000;
visualizar();
}
}
visualizar();
}
}
4. OBSERVACIONES
* Al momento de realizar la programación, se tuvo que recurrir a teoría de clases anteriores para poder lograr la tarea dejada en laboratorio.
* Cuando se quiso realizar las pruebas correspondientes, la computadora no reconocia el entrenador, el cual retraso las pruebas.
* Al ver que no se podia trabajar con el entrenador se opto por usa el software de simuilacion "PROTEUS".
5. CONCLUCIONES
* Se logro realizar la programación con métodos usados en clases anteriores.
* concluyo de que el uso del entrenador no están indispensable, pero si facilita mejor su simulación y su trabajo.
6. INTEGRANTES
* Aldude Aldudi, Rosmel

