Sunteți pe pagina 1din 5

Microprocesadores y Microcontroladores

PRACTICA 3 PROGRAMACIN AVANZADA DE MICROCONTROLADORES

William Harlington Hita Mendoza


Cdigo: 80252572
hita.william@gmail.com
Grupo 309696-12
Tutor de prctica: Alexander Cely
Tutor virtual: Hector Uriel Villamil

Objetivos:

Disear el algoritmo, generar el cdigo


fuente
en
lenguaje
ensamblador,
compilarlo, depurarlo, guardarlo, cargarlo y
ejecutarlo utilizando para ello el Entorno de
Desarrollo Integrado MPLAB o WINIDE.
Implementar y ser capaz de configurar un
Microcontrolador
para
controlar
dispositivos externos formando esquemas
de control ms complejos y funcionales.
Sustentar el desarrollo de la prctica ante el
tutor encargado de laboratorio.
Presentar el informe de laboratorio en
formato IEEE para su calificacin y reporte
al director nacional de curso en campus
virtual.

Glosario:
MPLAB: Es un editor IDE gratuito, destinado a

productos de la marca Microchip. Este editor es


modular, permite seleccionar los distintos
microcontroladores
soportados,
adems
de
permitir la grabacin de estos circuitos integrados
directamente al programador. Es un programa que
corre bajo Windows y como tal, presenta las
clsicas barras de programa, de men, de
herramientas de estado, etc. El ambiente MPLAB
posee editor de texto, compilador y simulacin (no
en tiempo real).

WINIDE: Es un software de desarrollo que se

puede utilizar para la programacin, ensamblado,


simulacin, edicin y depuracin de la familia de
microcontroladores
Motorola.
El
entorno
integrado de desarrollo es una interface grfica que
permite editar, compilar, ensamblar y ejecutar las
siguientes aplicaciones:
CASM08Z ensamblador
ICS08Z simulador en circuito
PROG8SZ programador FLASH
ICD08SZ depurador en tiempo real sobre circuito
William Harlington Hita Mendoza

El programa, dispone de una serie de iconos


(archivos ejecutables) dentro de la carpeta principal
del mismo. Se debe correr primero WinIDE.EXE,
que es un programa editor y funciona como un
lanzador (Shell) para otros mdulos.

Materiales o Herramientas informticas:

Se utiliza principalmente herramientas de Software


estas pueden ser:
o Software de simulacin (PROTEUS o
MULTISIM)
o Compilador (MPLABIDE para PIC o WINIDE
para Motorola Freescale)
o Software
de
programacin
de
microcontroladores.

Descripcin de la prctica: Con las prcticas

realizadas en el anterior laboratorio el alumno est


en capacidad de estudiar como interacta el
Microcontrolador con otros dispositivos para ello
se debe realizar los siguientes ejercicios prcticos
para este laboratorio:

Comenzar con la implementacin de los


ejemplos de la Unidad 3.
Disear e implementar una solucin o
aplicacin basada en microcontroladores o
microprocesadores que el estudiante debe
plantear como un proyecto de desarrollo
que busque la solucin a un problema o
implemente una aplicacin.

La solucin o aplicacin debe evidenciar el manejo


de varios 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, calculadora
bsica, 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 e
Pgina 1

Microprocesadores y Microcontroladores

PRACTICA 3 PROGRAMACIN AVANZADA DE MICROCONTROLADORES

implementacin sean de autora propia. 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, memorias, ADC,
transistores, relevos o indicadores.
Manejo de interrupciones y timers
Programa:
Como solucin a este laboratorio, se defini
disear y programar un PIC para poder crear una
Calculadora, para ellos fue necesario configurar un
teclado, PIC, y display para poder visualizar los
datos a ingresar y los resultados obtenidos.
#include <calculadora.h>
#include <LCD.C>
#include <kbdkike.c>
#include <math.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
void main()
{
CHAR ii,OO,EE,tecla;
CHAR OPERANDO1[5];
CHAR OPERANDO2[5];
CHAR OPERACION[3];
char caso;
FLOAT OPER1,OPER2,RESULTADO;
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
// TODO: USER CODE!!
lcd_init();
lcd_putc("\f HOLA \n PRESENTANDO ");
William Harlington Hita Mendoza

delay_ms(1000);
lcd_putc("\f CALCULADORA\n ");
delay_ms(1000);
printf(lcd_putc,"\f
POR:
\UNAD
MICROPROCESADORES
\n
MICROCONTROLADORES");
delay_ms(500);
kbdKIKE_init();

\n
Y

for(ii=0;ii<80;ii++){
delay_ms(20);
printf(lcd_putc,"\r");
}
printf(lcd_putc,"\f");
for(ii=0;ii<=4;ii++){
OPERANDO1[II]='\0';
OPERANDO2[II]='\0';
}
II=0;
EE=0;
OO=0;
while(1){
tecla=LEER_kbdKIKE();
if(tecla!=0){
DELAY_MS(200);
IF((II==0)&&(ee==0)&&(OO==0)&&(TECLA==
'=')){
printf(lcd_putc,"\f");
for(ii=0;ii<=4;ii++){
OPERANDO1[II]='\0';
OPERANDO2[II]='\0'; }
}
if((EE==0)&&(((tecla>='0')&&(TECLA<='9'))||(te
cla=='.')||(TECLA=='-'))){
printf(lcd_putc,"%c",tecla);
OPERANDO1[II]=TECLA;
II++;
}
if((EE!=0)&&(((tecla>='0')&&(TECLA<='9'))||(tec
la=='.')||(TECLA=='-'))){
//printf(lcd_putc,"L");
printf(lcd_putc,"%c",tecla);
OPERANDO2[OO]=TECLA;
OO++;
}
///////////////////////////

Pgina 2

Microprocesadores y Microcontroladores

PRACTICA 3 PROGRAMACIN AVANZADA DE MICROCONTROLADORES

if(((tecla<'0')||(TECLA>'9'))&&(tecla!='.')&&(II>=
1)){
OPERACION[EE]=TECLA;
printf(lcd_putc,"%c",tecla);
EE++;

II=0;
EE=0;
OO=0;

IF(TECLA=='='){
OPER1=ATOF(OPERANDO1);
OPER2=ATOF(OPERANDO2);
CASO=OPERACION[0];

default:
//printf(lcd_putc,"\fOPERACION
NO\nIMPLEMETADA");
II=0;
EE=0;
OO=0;
break;
}
}
}
}
}
}

switch (caso) {
case '+':
RESULTADO=OPER1+OPER2;
printf(lcd_putc,"\f%6.2f",resultado);
II=0;
EE=0;
OO=0;
break;

break;

case '-':
resultado=oper1-oper2;
printf(lcd_putc,"\f%6.2f",resultado);
II=0;
EE=0;
OO=0;
break;
case 0xFD:
RESULTADO=OPER1/OPER2;
printf(lcd_putc,"\f%6.2f",resultado);
II=0;
EE=0;
OO=0;
break;
case 'x':
RESULTADO=OPER1*OPER2;
printf(lcd_putc,"\f%6.2f",resultado);
II=0;
EE=0;
OO=0;
break;
case'=':
printf(lcd_putc,"\f");
for(ii=0;ii<=4;ii++){
OPERANDO1[II]='\0';
OPERANDO2[II]='\0'; }
William Harlington Hita Mendoza

Pgina 3

Microprocesadores y Microcontroladores

William Harlington Hita Mendoza

PRACTICA 3 PROGRAMACIN AVANZADA DE MICROCONTROLADORES

Pgina 4

Microprocesadores y Microcontroladores

PRACTICA 3 PROGRAMACIN AVANZADA DE MICROCONTROLADORES

Para este caso se identifica que el tipo de variable


establecida para el resultado arroja este tipo de
inexactitudes en las multiplicaciones. La finalidad
era que para las divisiones se pudiera contar con
valores decimales como se aprecian en las
siguientes imgenes.

REFERENCIAS
[1] https://sites.google.com/site/simuproc/como-funciona
[2] http://es.scribd.com/doc/50674129/Manual-de-Asembler
[3] http://es.wikipedia.org/wiki/Microsoft_Macro_Assembler

William Harlington Hita Mendoza

Pgina 5

S-ar putea să vă placă și