Você está na página 1de 20

INFORME DE PRACTICAS

Presentado por:
ANGELICA MARIA GARZON CASTRO
CODIGO: 1070598883
LEONARDO MONROY VELASQUEZ
CODIGO: 79590671
CESAR AUGUSTO PACHECO BARRERA
CODIGO: 11205422
WALTHER ANDRES GARZON CASTRO
CODIGO: 1070588059

Presentado a:
INGENIERO

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD


ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA
MICROPROCESADORES Y MICROCONTROLADORES
GIRARDOT 2014

PRACTICA No. 01 Programacin de microprocesadores


microcontroladores con lenguaje ensamblador.

Como primera prctica respecto a la primera unidad que trata los


microprocesadores, se plantea el desarrollo de ejercicios previos
antes de la desarrollar la solucin al problema planteado, utilizando
lenguaje ensamblador el cual es fcilmente accesible desde cualquier
computador con sistema operativo Microsoft Windows XP, Vista,
Seven u 8, en las versiones Profesionales mediante consola, con el
DEBUG, con compiladores como MASM o TASM o con simuladores
como SIMUPROG, el objetivo es integrar los conocimientos adquiridos
en el curso de ALGORITMOS para hallar una solucin a una situacin
prctica que permita adquirir habilidades en la programacin de bajo
nivel en lenguaje ensamblador. El laboratorio debe estar compuesto
de al menos un Ejercicio que cumpla con la totalidad de parmetros
solicitados:

Disear un programa que represente la solucin matemtica a


un problema, por ejemplo, hallar el rea, el volumen, o
encontrar la solucin a un sistema de ecuaciones lineales,
puede optar por sistemas bsicos 2x2, 3x3 o un programa que
halle la solucin a un sistema nxn. El programa debe presentar
una interfaz agradable al usuario, con opciones para ingreso de
variables, operaciones, resultados, salida del programa etc, de
manera que se pueda visualizar correctamente el proceso,
procedimiento y resultado.

Ejercicio 1.2.1: Encendido y apagado de un LED con intermitencia de


aproximadamente 1 segundo.
Ejercicio 1.2.2: Encendido de un LED por accin sobre un pulsador.
Ejercicio 1.2.3: Implementacin de al menos 5 secuencias diferentes
sobre ocho (8) LEDs controladas en seleccin por dos pulsadores, uno
para seleccionar la secuencia siguiente y otro para seleccionar la
secuencia anterior.

Ejercicio 1 diagrama de flujo


Inicio

Configuraciones
Puerto B como
salida
Enciende el led 8
Tiempo de
respuesta
Apaga el led 8
Enciende el led 7
Tiempo de
respuesta
Apaga el led 7
Enciende el led 6
Tiempo de
respuesta
Apaga el led 6
Enciende el led 5
Tiempo de
respuesta
Apaga el led 5
Enciende el led 4
Tiempo de
respuesta
Apaga el led 4
Enciende el led 3
Tiempo de
respuesta
Apaga el led 3

Enciende el led 2
Tiempo de
respuesta
Apaga el led 2
Enciende el led 1
Tiempo de
respuesta
Apaga el led 1
Fin
EJERCICIO 1 codigo fuente
#include <16f84A.h>
#fuses xt, nowdt, put
#use delay (clock=4000000)
#byte port_b=06
void main()
{
set_tris_b(0x00); // todo el puerto b de salida
port_b=0;
do

// iniciamos en cero

// ejecuta la accin

{
delay_ms (200);
bit_set (port_b, 7);
delay_ms (200);

// tiempo de respuesta
// enciende el led 8
// tiempo de respuesta

bit_clear (port_b, 7); // apaga el led 8


delay_ms (200);
bit_set (port_b, 6);
delay_ms (200);

// tiempo de respuesta
// enciende el led 7
// tiempo de respuesta

bit_clear (port_b, 6); // apaga el led 7

delay_ms (200);
bit_set (port_b, 5);
delay_ms (200);

// tiempo de respuesta
// enciende el led 6
// tiempo de respuesta

bit_clear (port_b, 5); // apaga el led 6


delay_ms (200);
bit_set (port_b, 4);
delay_ms (200);

// tiempo de respuesta
// enciende el led 5
// tiempo de respuesta

bit_clear (port_b, 4); // apaga el led 5


delay_ms (200);
bit_set (port_b, 3);
delay_ms (200);

// tiempo de respuesta
// enciende el led 4
// tiempo de respuesta

bit_clear (port_b, 3); // apaga el led 4


delay_ms (200);
bit_set (port_b, 2);
delay_ms (200);

// tiempo de respuesta
// enciende el led 3
// tiempo de respuesta

bit_clear (port_b, 2); // apaga el led 3


delay_ms (200);
bit_set (port_b, 1);
delay_ms (200);

// tiempo de respuesta
// enciende el led 2
// tiempo de respuesta

bit_clear (port_b, 1); // apaga el led 2


delay_ms (200);
bit_set (port_b, 0);
delay_ms (200);

// tiempo de respuesta
// enciende el led 1
// tiempo de respuesta

bit_clear (port_b, 0); // apaga el led 1


delay_ms (200);

// tiempo de respuesta

}
While (true); // bucle infinito
}

PRACTICA No. 02 Programacin bsica de Microcontroladores


Microchip PIC, Texas Instruments MSP430 y Motorola Freescale.

Con el planteamiento terico expuesto en la Unidad 1


Microprocesadores,
Unidad
2
Microcontroladores
y
sus
correspondientes captulos y lecciones, se comienza el trabajo
prctico partiendo de conceptos fundamentales de programacin y de
electrnica aplicada para implementar practicas esenciales que
exploran las funciones bsicas de configuracin de pines como I/O
(entrada / salida), utilizacin de macros, utilizacin de Timers,
interrupciones y dems mdulos internos al micro, implementando
una programacin lineal y semi-estructurada con manejo de
bifurcaciones, ciclos y llamado a subrutinas, servicios a interrupcin,
generacin de tablas, administracin de la PILA y vectores de
interrupcin, en uno o en los tres dispositivos ms representativos de
las familias Microchip PIC con el PIC16F84, Texas Instruments con los
MSP430G (14 pines o 20 pines) y Motorola Freescale con el
JK1/JL1/JK3. El laboratorio debe estar compuesto de 2 Ejercicios
bsicos los cuales se encuentran parcialmente explicados y
desarrollados en el mdulo de curso:

Ejercicio 1.2.1: Control de una pantalla LCD de mnimo 2x16, se debe


presentar un programa que despliegue los siguientes mensajes
controlados por la accin de un pulsador.
Evento 1: Mensaje por defecto - Lnea 1: mensaje Microprocesadores
y Microcontroladores en desplazamiento a la izquierda o derecha,
terminar con el mensaje 309696-Mp&Mc centrado. Lnea 2: mensaje
II semestre 2013 centrado.
Evento 2: Mensaje al oprimir el pulsador - Lnea 1: mensaje
Integrantes: centrado. Lnea 2: mensaje con el primer nombre y
primer apellido de los integrantes del grupo en desplazamiento a la
izquierda o derecha.
Evento 3: Mensaje al oprimir el pulsador Lnea 1: mensaje CEAD.
Lnea 2: mensaje con el nombre del CEAD.
Ejercicio 1.2.2: Control de un teclado matricial mnimo 4x3
(comercialmente como teclado telefnico) o 4x4 y control de acceso
por clave de seguridad de cuatro (4) dgitos, ver apartado de acciones

que debe ejecutarse en la prctica, el teclado en el caso del 4x3 debe


contener:

Los diez (10) dgitos (0, 1, 2, 3, 4, 5, 6, 7, 8, 9).


Una tecla # (en teclados comerciales) se tomara como accin
de ingreso de clave para ser evaluada por el sistema
microcontrolado.
Una tecla * (en teclados comerciales) se tomara como accin
de borrado de clave y regreso a estado inicial, para recibir un
nuevo intento de clave.

Los indicadores que deben tenerse son del tipo LED, solo uno de ellos
debe encender a la vez y su funcin se describe como:

LED Amarillo o Azul, indica que el sistema y teclado est listo


para recibir una nueva clave.
LED Verde, indica que el usuario a digitado una clave correcta.
LED Rojo, indica que el usuario a digitado una clave incorrecta.

Las acciones que debe cumplir la prctica son:

Grabar una clave de 4 dgitos en la memoria no voltil del micro


o EEPROM, para el ejercicio la clave debe ser semestre/ao, por
ejemplo para el segundo semestre de 2013 seria (0213).
La digitacin correcta de la clave de debe incurrir en el
encendido de un LED Verde, conectado a un pin del puerto.
La digitacin incorrecta de la clave, debe incurrir en el
encendido de un LED

Rojo conectado a un pin del puerto.

Un LED Amarillo o Azul debe indicar que el sistema est listo


para recibir una nueva clave.
Los LED deben estar apagados al inicio del programa como
condicin inicial, en el momento de estar listo para recibir datos
por el teclado debe encender el LED Amarillo o Azul.
Al oprimir la tecla # debe aceptar la clave digitada y realizar
la comparacin con la clave interna grabada y de ah tomar una
decisin con la accin correspondiente sobre el LED.
Al oprimir la tecla * debe permitir el ingreso de una nueva
clave, apagando los LED Verde o LED Rojo y encendiendo
nuevamente el LED Amarillo o Azul autorizando un nuevo
intento de ingreso.

EJERCICIO 2 Diagrama de flujo

INICIO

Configuracin
Puerto b como salida
Puerto A como
entrada

Pin a0==0

Enciende led
1
Pin a0==0

Apaga led 1
Enciende led
2
Pin a0==0

Apaga led 2
Enciende led
3

Pin a0==0
Apaga led 3
Enciende led
4

Pin a0==0

Apaga led 4
Enciende led
5

Pin a0==0

Apaga led 5
Enciende led
6
Pin a0==0

Apaga led 6
Enciende led
7
Pin a0==0

Apaga led 7
Enciende led
8

fin

EJERCICIO 2 codigo fuente


#include <16f84A.h>
#fuses xt, nowdt, put
#use delay (clock=4000000)

int aux;

// declaramos la variable para el contador

void main ()
{
aux =0;

// hacemos la variable que comience en 0

SET_TRIS_A (0b11111111); // todos los puertos A como entrada

While (true)

// la condicin del pulsador

{
delay_ms (200);

// tiempo de respuesta

if (input(pin_a0)==0) // si el pin a0 es igual a cero


{
aux = aux+1;

// incrementamos el contador

}
If (aux==1)

// si el nmeros de pulsos es igual a 1

{
output_high (pin_b0); // enciende el led 1
}
If (aux==2)

// si el nmeros de pulsos es igual a 2

{
output_high (pin_b1);
output_low (pin_b0);

// enciende el led 2
// apaga el led 1

}
If (aux==3) // si el nmeros de pulsos es igual a 3
{
output_high (pin_b2); // enciende el led 3
output_low (pin_b1);

// apaga el led 2

}
If (aux==4) // si el nmeros de pulsos es igual a 4
{
output_high (pin_b3);

// enciende el led 4

output_low (pin_b2);

// apaga el led 3

}
If (aux==5) // si el numeros de pulsos es igual a 5
{
output_high(pin_b4);
output_low(pin_b3);

// enciende el led 5
// apaga el led 4

}
if(aux==6)

// si el numeros de pulsos es igual a 6

{
output_high(pin_b5); // enciende el led 6
output_low(pin_b4); // apaga el led 5
}
if(aux==7)

// si el numeros de pulsos es igual a 7

{
output_high(pin_b6); // enciende el led 7
output_low(pin_b5); // apaga el led 6

}
if(aux==8)

// si el numeros de pulsos es igual a 8

{
output_high(pin_b7);
output_low(pin_b6);

// enciende el led 8
// apaga el led 7

}
if(aux==9)

// si el numeros de pulsos es igual a 9

{
aux=0;

// reiniciamos la variable nuevamente a cero

output_low(pin_b7); // apaga el led 8


}

}
}

PRACTICA
No.
3

Programacin
avanzada
de
Microcontroladores Microchip PIC, Texas Instruments MSP430
y Motorola Freescale

Desde el Trabajo Colaborativo 1, el grupo colaborativo de estudiantes


en campus deba haber planteado una propuesta como solucin a una
problemtica, que cumpliera con parmetros prestablecidos de
manejo de mdulos internos, pines I/O y perifricos al micro.
Propuesta que ha debido evolucionar y ser desarrollada por el grupo
colaborativo de estudiantes en campus, que ya debe estar muy
avanzada en el diseo de la solucin de software y en proceso de
terminacin de la implementacin de la solucin de hardware. En este
punto el grupo colaborativo de estudiantes en campus, debe ya tener
integrada la solucin de software y hardware y cada uno de sus
integrantes debe mostrar al Tutor de prctica en cada Centro los
avances de diseo, desarrollo e implementacin, como desarrollo de
la prctica tres del curso.
Con las prcticas realizadas en los laboratorios anteriores, el alumno
est
en
capacidad
de
disear
soluciones
basadas
en
microprocesadores o microcontroladores y estudiar como interacta
el Microcontrolador de cualquier fabricante y familia con otros
dispositivos.
La solucin o aplicacin debe evidenciar el manejo de dispositivos
perifricos destinados a servir como interfaz humana para
visualizacin o introducir estados, recibir seales de sensores y enviar
seales a actuadores. Ejemplos como seguidores de lnea, sistemas
de alarma, controles de temperatura, entre otros, se encuentran en
material bibliogrfico o internet, por lo que se permiten al estudiante
tomarlos como gua pero se exige que el diseo del algoritmo,
desarrollo de la solucin e implementacin sean de autora propia del
estudiante y grupo colaborativo de estudiantes en campus virtual. El
desarrollo de este ejercicio final debe involucrar aspectos como:

Manejo de perifricos externos al micro como puede ser


teclados matriciales, display 7-segmentos, display LCD, display
GLCD, memorias, ADC, transistores, relevos o indicadores, etc.

Manejo de mdulos internos al micro como, manejo de interrupciones,


Timers, conversores A/D, mdulos PWM, mdulos de comunicacin
UART/USART, USB, RJ45, entre otros.

Recursos a utilizar en la prctica (Equipos / instrumentos)


Computador PC compatible con el sistema operativo Windows o que
pueda instalarse los paquetes de software necesarios para realizar la
prctica.
Los Equipos e instrumentos necesarios para la prctica y que son
recomendables que el estudiante los tenga para su propio beneficio y
desarrollo profesional son:

Equipos de cmputo con puerto paralelo o puerto compatible


con el programador (serie o USB).
Fuente de poder regulada DC a 5 voltios.
Programador Universal o el programador para PICs gama media
(PICKit 2, PICKit 3, u otro compatible) y/o Tarjeta de desarrollo
LaunchPad MSP430 y/o Programador para Motorola Freescale
HC08.

Los materiales necesarios para la prctica y que son recomendables


que el estudiante los tenga para su propio beneficio y desarrollo
profesional son:

Microcontroladores
PIC16F84A
y/o
Microcontroladores
MSP430Gxxxx y/o Motorola Freescale 68HC908JK3oJK1oJL1.
Protoboard, Multmetro.
Resistencias, condensadores, cristal 4MHz, pulsadores, LEDs,
teclado matricial (3x4 o 4x4), display LCD, etc, segn esquemas
de circuito diseado como solucin por parte del grupo
colaborativo de estudiantes en campus virtual.
Pinzas, pelacables, cable AWG22 (similar al de UTP) en varios
colores.
INICIO

Configuracin
Puerto b como salida
Puerto A como
entrada

Pin a0==0

Pin a1==0

Enciende led
1
led 1
PinApaga
a0==0
Enciende led
2
Pin a0==0

Apaga led 2
Enciende led
3

Pin a0==0

Apaga led 3
Enciende led
4

Pin a0==0

Apaga led 4
Enciende led
5

Pin a0==0

Apaga led 5
Enciende led
6

Apaga led 6
Pin a0==0
Enciende led
7

Pin a0==0

Apaga led 7
Enciende led
8

fin

EJERCICIO 3
#include <16f84A.h>
#fuses xt,nowdt,put
#use delay (clock=4000000)
int aux, cont;
aux=0;

// declaramos la variable para el contador


// hacemos la variable que comience en 0

cont=0;
SET_TRIS_A(0b11111111); // todos los puertos A como entrada

while(true)

// la condicion del pulsador

{
delay_ms(100);

// tiempo de respuesta

if(input(pin_a0)==0) // si el pin a0 es igual a cero

{
aux=aux+1;

// incrementamos el contador

}
if(aux==1)

// si el numeros de pulsos es igual a 1

{
output_high(pin_b0); // enciende el led 1
}
if(aux==2)

// si el numeros de pulsos es igual a 2

{
output_high(pin_b1);
output_low(pin_b0);

// enciende el led 2
// apaga el led 1

}
if(aux==3) // si el numeros de pulsos es igual a 3
{
output_high(pin_b2); // enciende el led 3
output_low(pin_b1);

// apaga el led 2

}
if(aux==4) // si el numeros de pulsos es igual a 4
{
output_high(pin_b3);

// enciende el led 4

output_low(pin_b2);

// apaga el led 3

}
if(aux==5) // si el numeros de pulsos es igual a 5
{
output_high(pin_b4);
output_low(pin_b3);

// enciende el led 5
// apaga el led 4

}
if(aux==6)

// si el numeros de pulsos es igual a 6

{
output_high(pin_b5); // enciende el led 6
output_low(pin_b4); // apaga el led 5
}
if(aux==7)

// si el numeros de pulsos es igual a 7

{
output_high(pin_b6); // enciende el led 7
output_low(pin_b5); // apaga el led 6
}
if(aux==8)

// si el numeros de pulsos es igual a 8

{
output_high(pin_b7);
output_low(pin_b6);

// enciende el led 8
// apaga el led 7

}
if(aux==9)

// si el numeros de pulsos es igual a 9

{
aux=0;

// reiniciamos la variable nuevamente a cero

output_low(pin_b7); // apaga el led 8


}

}
if(input(pin_a1)==0) // si el pin a1 es igual a cero // si el RA1 es igual
a cero
{
cont=cont+1;

// incrementamos el contador

}
if(cont==1)

// si el numeros de pulsos es igual a 1

{
output_high(pin_b0);

// enciende el led 1

output_high(pin_b2); // enciende el led 3


output_high(pin_b4); // enciende el led 5
output_high(pin_b6); // enciende el led 7
}
if(cont==2)

// si el numeros de pulsos es igual a 2

{
output_high(pin_b1); // enciende el led 2
output_high(pin_b3); // enciende el led 4
output_high(pin_b5); // enciende el led 6
output_high(pin_b7); // enciende el led 8
output_low(pin_b0); // apaga el led 1
output_low(pin_b2); // apaga el led 3
output_low(pin_b4); // apaga el led 5
output_low(pin_b6); // apaga el led 7
}
if(cont==3) // si el numeros de pulsos es igual a 3
{
output_high(pin_b0); // enciende el led 1
output_high(pin_b2); // enciende el led 3
output_high(pin_b4); // enciende el led 5
output_high(pin_b6); // enciende el led 7
output_low(pin_b1); // apaga el led 2
output_low(pin_b3); // apaga el led 4
output_low(pin_b5); // apaga el led 6
output_low(pin_b7); // apaga el led 8
}
if(cont==4) // si el numeros de pulsos es igual a 4
{

cont=0;

// reiniciamos la variable nuevamente a cero

output_low(pin_b0); // apaga el led 1


output_low(pin_b2); // apaga el led 3
output_low(pin_b4); // apaga el led 5
output_low(pin_b6); // apaga el led 7
}
}
}

Você também pode gostar