Vous êtes sur la page 1sur 30

OBJETIVO

Mediante subrutinas de tiempo, implementar en el microcontrolador diseño de


sistemas que tengan como principal objetivo el control del tiempo.

INTRODUCCIÓN
En esta práctica se podrá observar el correcto funcionamiento de subrutinas de tiempo
con la finalidad de generar dispositivos y/o sistemas que puedan ser controlados en tiempos
más largos.

Se puede observar que se implementará la canción del himno a la alegría, esto requiere
que se tenga un control más amplio sobre el manejo de la frecuencia de cada nota y el tiempo
que debe de haber entre nota y nota. Por lo cual es importante tener un control correcto del
tiempo.

El manejo de subrutinas también se podrá ver en el odómetro, el cual realizará el


censado de una distancia de 30 metros y por lo cual es importe almacenar la variable de los
metros cada vez que se detecte este en el microcontrolador.

MARCO TEÓRICO
Odómetro
Un odómetro es un instrumento de medición que calcula la distancia total o parcial
recorrida por un objeto o cosa. En la unidad de longitud en la cual ha sido configurado
(metros, millas). Su uso se ha generalizado debido a la necesidad de conocer distancias,
calcular tiempos de viaje, o consumo de combustible.1

La referencia más antigua apunta a Arquímedes como su inventor, que en la


antigüedad diseñó varios tipos de odómetros cuya finalidad abarcaba varios usos militares y
civiles.

Características
Un odómetro es un dispositivo que generalmente consiste en una rueda encastrada en
un engranaje calibrado con precisión, y puede ser independiente (instrumento aislado) o estar
incorporado a un vehículo; al contar las vueltas que hace la rueda se calcula la distancia
recorrida.2 3
En los vehículos están constituidos por una serie de ruedas que muestran los números
por una ventanilla. En el caso de los automóviles suelen venir juntamente con el velocímetro.
Pueden tener totales (kilómetros desde que se fabricó), parciales (desde la última vez que se
puso en cero) o ambos. Y aunque la información se despliegue en panel digital, el dispositivo
o su mecanismo sigue siendo mecánico.2

También los hay para bicicletas, y de tipo "personales" (un sensor percibe los pasos
dados y hace una "estimación").

Oda la alegría
El mundialmente famoso “Himno a la Alegría” es la musicalización que hiciera el
compositor alemán Ludwig van Beethoven (1770-1827) del poema homónimo del bardo,
también alemán, Friedrich von Schiller.

Compuesto durante un largo período que va de 1814 a 1824, constituye el cuarto y


último movimiento de su Sinfonía N° 9, en re menor, habitualmente conocida como “Coral”
(por la inclusión de coros que realiza, inédita para ese momento), llevando por número de
catalogación el Opus 125.

El Himno a la Alegría es, por lejos, la creación musical que más reacciones ha tenido
en el campo del arte, dedicándosele obras de plástica, de teatro, así como piezas literarias.
Sin ningún lugar a dudas, la maravilla creativa que constituye ha movido a la admiración a
músicos y público en general desde generaciones. Y seguramente así seguirá siendo. La
riqueza de su creación, aunque no se conozca nada de música en términos técnicos, no deja
de estremecer a quien la escuche.

La textura del texto musical es muy diversa. Sorprende el solo de bajo a modo de
recitativo apenas sin acompañamiento instrumental. El tema primero es presentado como
melodía acompañada también por el bajo. Al intervenir el coro generalmente lo hace de
manera homofónica. Constituye una grandiosa arquitectura musical con diversas texturas que
van desde el recitativo a la doble fuga pasando por solistas, coro, etc. La letra, en alemán,
está muy bien acompasada con la música, utilizando los unísonos del coro y metales para
enfatizar un mensaje. Dentro del movimiento hay diversos ritmos. Binarios y ternarios. La
melodía sigue teniendo unas proporciones clásicas de 8 compases. La armonía es tonal pero
ya muy desarrollada acercándose al romanticismo. Los matices de intensidad quedan
repartidos en el largo movimiento, desde el pianissimo al fortísimo pasando por las
intensidades intermedias. Sin embargo, predominan los forte, expresando con vehemencia el
texto en los coros. Predomina el tempo allegro. Sólo hay un adagio y un andante; hay varios
presto, y un prestissimo al final.

Interpretada en innumerables versiones, escuchada en los más diversos ambientes,


conocida como pocas obras musicales, el Himno a la Alegría constituye una de las obras de
la mal llamada “música clásica” (en realidad: música académica europea) más célebre, quizá
la más célebre entre todas. En 1985 fue adoptado como Himno de la Unión Europea, siendo
interpretado por primera vez de manera oficial el 29 de mayo de ese mismo año. Y el 12 de
enero de 2003 la UNESCO lo declaró Patrimonio Cultural de la Humanidad.

La letra del movimiento es una adaptación no literal que el mismo van Beethoven
hizo sobre el poema de Schiller, adecuándolo debidamente a las necesidades métricas. La
versión en español es la siguiente:

¡Oh amigos, cesad esos ásperos cantos!


¡Entonemos otros más agradables y
llenos de alegría!
¡Alegría, alegría!

¡Alegría, bella chispa divina,


hija del Elíseo!
¡Penetramos ardientes de embriaguez,
¡Oh celeste, en tu santuario!
Tus encantos atan los lazos
que la rígida moda rompiera;
y todos los hombres serán hermanos
bajo tus alas bienhechoras.

Quien logró el golpe de suerte,


de ser el amigo de un amigo.
Quien ha conquistado una noble mujer
¡Que una su júbilo al nuestro!
¡Sí! que venga aquel que en la Tierra
pueda llamar suya siquiera un alma.
Pero quien jamás lo ha podido,
¡que se aparte llorando de nuestro grupo!

Se derrama la alegría para los seres


por todos los senos de la Naturaleza.
todos los buenos, todos los malos,
siguen su camino de rosas.

Ella nos dio los besos y la vid,


y un amigo probado hasta la muerte;
Al gusanillo fue dada la Voluptuosidad
y el querubín está ante Dios.

Alegres como vuelan sus soles,


A través de la espléndida bóveda celeste,
Corred, hermanos, seguid vuestra ruta
Alegres, como el héroe hacia la victoria.

¡Abrazaos Millones de seres!


¡Este beso al mundo entero!
Hermanos, sobre la bóveda estrellada
Debe habitar un Padre amante.

¿Os prosternáis, Millones de seres?


¿Mundo presientes al Creador?
¡Búscalo por encima de las estrellas!
¡Allí debe estar su morada!

DESARROLLO ODA A LA ALEGRÍA


Para empezar con esto es importante saber las partituras que se ocuparon para
desarrollar está práctica, en la figura 1 se puede observar estás, en la cual se puede ver
subrayado en anaranjado la parte que se ocupó para la práctica por medio del instrumento 1
que se llama flauta 1.

Figura 1. Partituras de ODA A LA ALEGRÍA.

Cabe resaltar que es sumamente importante sacar la frecuencia a la cual funciona cada
una de las notas. En la tabla 1 se puede observar la frecuencia que se utilizó para cada una de
ellas y en la cual se explicará dentro del código que fue realizado en MPLAB.
Tabla 1. Frecuencia de oscilación de notas musicales.
Nota musical Frecuencia (Hz)
DO 277.18
RE 293.66
MI 329.63
FA 349.23
SOL 392.00
LA 440.00
SI 493.88

A continuación, se mostrará el código que se generó en MPLAB con sus respectivos


comentarios para entender de manera clara lo que se generó junto con el diagrama de flujo
que permitió tener la idea de lo que se estaba realizando y el cual se puede observar en la
figura 2.

Figura 2. Diagrama de flujo ODA A LA ALEGRÍA.


CÓDIGO ODA A LA ALEGRÍA
; INSTITUTO POLITECNICO NACIONAL.

; UPIITA.

; MICROPROCESADORES, MICROCONTROLADORES E INTERFAZ

; 14/03/2018

; MORALES HERNANDEZ ELIOTT EFRAIN & CID CABRERA LUIS ANGEL

; PRACTICA 2.1

; GUTIERREZ BEGOVICH DAVID ARTURO

; PARA: MICROCONTROLADOR PIC16F887

PROCESSOR 16F887

__CONFIG 0X2007,0X2BE2

__CONFIG 0X2008,0X3FFF

INCLUDE <P16F887.INC>

ORG 0X000

CLRF PORTC ;LIMPIAR PUERTO C

CLRF PORTB ;LIMPIAR PUERTO B

CLRF PORTD ;LIMPIAR PUERTO

BSF STATUS,RP0 ;B1

BSF STATUS,RP1 ;B3

CLRF ANSEL ;PUERTOS DIGITALES

CLRF ANSELH ;PUERTOS DIGITALES

BCF STATUS,RP1 ;B1

MOVLW 0XFF ;ENTRADAS

MOVWF TRISD ;PUERTO D COMO ENTRADA

CLRF TRISC ;PUERTO DE SALIDA C

MOVLW 0X0F ;LED COMO SALIDA

MOVWF TRISB ;ASIGNANDO EL PIN 7 y 5 DEL


PUETO B COMO SALIDA

BCF STATUS,RP0 ;B0


MOVLW 0X00 ;INICIAMOS EL PROGRAMA CON
EL ACUMULADOR EN '0'

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;PRIMERA ESTROFA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

BOTON0 BTFSS PORTB,0 ;PREGUNTA SI SE PRESIONA EL


BOTÓN RP0 PARA INICIO

GOTO BOTON0 ;NO SE CUMPLE, REGRESA UNA


LINEA ANTES

CALL REBOTE ;SE PRESIONA, LLAMA A


SUBRUTINA REBOTE

BTFSC PORTB,0 ;PREGUNTA SI SE DEJO DE


PRESIONAR EL BOTÓN RP0

GOTO $-1 ;NO SE CUMPLE REGRESA UN


LÍNEA

CALL REBOTE ;MANDA A LLAMAR ÚLTIMA


SUBRUTINA REBOTE

CALL NSI ;LLAMA SUBURTINA NOTA SI

CALL NSI ;LLAMA SUBURTINA NOTA SI

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NDO ;LLAMA SUBRUTINA NOTA D

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NRE ;LLAMA SUBRUTINA NOTA RE

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NRE ;LLAMA SUBRUTINA NOTA RE

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NDO ;LLAMA SUBRUTINA NOTA DO

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSI ;LLAMA SUBRUTINA NOTA SI

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NLA ;LLAMA SUBRUTINA NOTA LA


CALL RET ;ESPERA 43 ms PARA SIGUIENTE
NOTA

CALL NSOL ;LLAMA SUBRUTINA NOTA SOL

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSOL ;LLAMA SUBRUTINA NOTA SOL

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NLA ;LLAMA SUBRUTINA NOTA LA

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSI ;LLAMA SUBRUTINA NOTA SI

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSI ;LLAMA SUBRUTINA NOTA SI

CALL NSI ;LLAMA SUBRUTINA NOTA SI

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NLA12 ;LLAMA SUBRUTINA NOTA LA


SOSTENIDA

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NLA ;LLAMA SUBRUTINA NOTA LA

CALL NLA ;LLAMA SUBRUTINA NOTA LA

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SEGUNDA ESTROFA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSI ;LLAMA SUBRUTINA NOTA SI

CALL NSI ;LLAMA SUBRUTINA NOTA SI

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NDO ;LLAMA SUBRUTINA NOTA DO

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NRE ;LLAMA SUBRUTINA NOTA RE


CALL RET ;ESPERA 43 ms PARA SIGUIENTE
NOTA

CALL NRE ;LLAMA SUBRUTINA NOTA RE

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NDO ;LLAMA SUBRUTINA NOTA DO

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSI ;LLAMA SUBRUTINA NOTA SI

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NLA ;LLAMA SUBRUTINA NOTA LA

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSOL ;LLAMA SUBRUTINA NOTA SOL

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSOL ;LLAMA SUBRUTINA NOTA SOL

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NLA ;LLAMA SUBRUTINA NOTA LA

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSI ;LLAMA SUBRUTINA NOTA SI

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NLA ;LLAMA SUBRUTINA NOTA LA

CALL NLA ;LLAMA SUBRUTINA NOTA LA

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSOL12 ;LLAMA SUBRUTINA SOL


SOSTENIDA

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSOL ;LLAMA SUBRUTINA NOTA SOL

CALL NSOL ;LLAMA SUBRUTINA NOTA SOL

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;TERCERA ESTROFA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CALL RET ;ESPERA 43 ms PARA SIGUIENTE
NOTA

CALL NLA ;LLAMA SUBRUTINA NOTA LA

CALL NLA ;LLAMA SUBRUTINA NOTA LA

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSI ;LLAMA SUBRUTINA NOTA SI

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSOL ;LLAMA SUBRUTINA NOTA SOL

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NLA ;LLAMA SUBRUTINA NOTA La

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSI12 ;LLAMA SUBRUTINA NOTA SOL


SOSTENIDA

CALL NDO12 ;LLAMA SUBRUTINA NOTA SOL


SOSTENIDA

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSI ;LLAMA SUBRUTINA NOTA SI

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSOL ;LLAMA SUBRUTINA NOTA SOL

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NLA ;LLAMA SUBRUTINA NOTA LA

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSI12 ;LLAMA SUBRUTINA NOTA SI


SOSTENIDA

CALL NDO12 ;LLAMA SUBRUTINA DO


SOSTENIDA

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSI ;LLAMA SUBRUTINA NOTA SI


CALL RET ;ESPERA 43 ms PARA SIGUIENTE
NOTA

CALL NLA ;LLAMA SUBRUTINA NOTA LA

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSOL ;LLAMA SUBRUTINA NOTA SOL

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NLA ;LLAMA SUBRUTINA NOTA LA

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NRE ;LLAMA SUBRUTINA NOTA RE

CALL NRE ;LLAMA SUBRUTINA NOTA RE

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CUARTA ESTROFA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSI ;LLAMA SUBRUTINA NOTA SI

CALL NSI ;LLAMA SUBRUTINA NOTA SI

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NDO ;LLAMA SUBRUTINA NOTA DO

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NRE ;LLAMA SUBRUTINA NOTA RE

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NRE ;LLAMA SUBRUTINA NOTA RE

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NDO ;LLAMA SUBRUTINA NOTA DO

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSI ;LLAMA SUBRUTINA NOTA SI

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NLA ;LLAMA SUBRUTINA NOTA LA


CALL RET ;ESPERA 43 ms PARA SIGUIENTE
NOTA

CALL NSOL ;LLAMA SUBRUTINA NOTA SOL

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSOL ;LLAMA SUBRUTINA NOTA SOL

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NLA ;LLAMA SUBRUTINA NOTA LA

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSI ;LLAMA SUBRUTINA NOTA SI

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NLA ;LLAMA SUBRUTINA NOTA LA

CALL NLA ;LLAMA SUBRUTINA NOTA LA

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSOL12 ;LLAMA SUBRUTINA NOTA SOL


SOSTENIDA

CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

CALL NSOL ;LLAMA SUBRUTINA NOTA SOL

CALL NSOL ;LLAMA SUBRUTINA NOTA SOL

YA CALL RET ;ESPERA 43 ms PARA SIGUIENTE


NOTA

GOTO YA ;FIN DE CANCIÓN

;///////////////////////////////////////////////////////////////////////////////////////

#INCLUDE<C:\Códigos 2MM7\SUBS_TIEMPO.ASM>

RET: BCF PORTC,0 ;SUBRUTINA RETARDO DE 43 ms

MOVLW .50 SUBRUTINA RETARDO DE 43 ms

MOVWF 0X61 ;SUBRUTINA RETARDO DE 43 ms

MOVLW .143 ;SUBRUTINA RETARDO DE 43 ms


MOVWF 0X62 ;SUBRUTINA RETARDO DE 43 ms

CALL ST2V ;SUBRUTINA RETARDO DE 43 ms

RETURN ;REGRESO DE SUBRUTINA

NSI: MOVLW .212 ;TIEMPO TOTAL PARA LA NOTA


SI

MOVWF 0X21 ;TIEMPO TOTAL PARA LA NOTA


SI

SI BSF PORTC,0 ;PRENDE LED RB0 PARA


EJECUTAR NOTA

MOVLW .1 ;TIEMPO FRECUENCIA DE 493.88


Hz ACTIVA

MOVWF 0X61 ;TIEMPO FRECUENCIA DE 493.88


Hz ACTIVA

MOVLW .166 ;TIEMPO FRECUENCIA DE 493.88


Hz ACTIVA

MOVWF 0X62 ;TIEMPO FRECUENCIA DE 493.88


Hz ACTIVO

CALL ST2V ;TIEMPO FRECUENCIA DE 493.88


Hz ACTIVA

NOP ;TIEMPO FRECUENCIA DE 493.88


Hz ACTIVA

BCF PORTC,0 ;APAGA LED RB0 PARA PAUSA

MOVLW .1 ;TIEMPO FRECUENCIA DE 493.88


Hz BAJA

MOVWF 0X61 ;TIEMPO FRECUENCIA DE 493.88


Hz BAJA

MOVLW .166 ;TIEMPO FRECUENCIA DE 493.88


Hz BAJA

MOVWF 0X62 ;TIEMPO FRECUENCIA DE 493.88


Hz BAJA

CALL ST2V ;TIEMPO FRECUENCIA DE 493.88


Hz BAJA

NOP ;TIEMPO FRECUENCIA DE 493.88


Hz BAJA

DECFSZ 0X21,F ;TIEMPO FRECUENCIA DE 493.88


Hz BAJA
GOTO SI ;TIEMPO FRECUENCIA DE 493.88
Hz BAJA

RETURN

NDO: MOVLW .238 ;TIEMPO TOTAL PARA LA NOTA


DO

MOVWF 0X21 ;TIEMPO TOTAL PARA LA NOTA


DO

DO BSF PORTC,0 ;PRENDE LED RB0 PARA


EJECUTAR NOTA

MOVLW .149 ;TIEMPO FRECUENCIA DE 277.18


Hz ACTIVA

MOVWF 0X60 ;TIEMPO FRECUENCIA DE 277.18


Hz ACTIVA

CALL ST1V ;TIEMPO FRECUENCIA DE 277.18


Hz ACTIVA

NOP ;TIEMPO FRECUENCIA DE 277.18


Hz ACTIVA

NOP ;TIEMPO FRECUENCIA DE 277.18


Hz ACTIVA

NOP ;TIEMPO FRECUENCIA DE 277.18


Hz ACTIVA

BCF PORTC,0 ;APAGA LED RB0 PARA PAUSA

MOVLW .149 ;TIEMPO FRECUENCIA DE 277.18


Hz BAJA

MOVWF 0X60 ;TIEMPO FRECUENCIA DE 277.18


Hz BAJA

CALL ST1V ;TIEMPO FRECUENCIA DE 277.18


Hz BAJA

NOP ;TIEMPO FRECUENCIA DE 277.18


Hz BAJA

NOP ;TIEMPO FRECUENCIA DE 277.18


Hz BAJA

OP ;TIEMPO FRECUENCIA DE 277.18


Hz BAJA

DECFSZ 0X21,F ;TIEMPO FRECUENCIA DE 277.18


Hz BAJA
GOTO DO ;TIEMPO FRECUENCIA DE 277.18
Hz BAJA

RETURN

NRE: MOVLW .255 ;TIEMPO TOTAL PARA LA NOTA


RE

MOVWF 0X21 ;TIEMPO TOTAL PARA LA NOTA


RE

RE BSF PORTC,0 ;PRENDE LED RB0 PARA


EJECUTAR NOTA

MOVLW .133 ;TIEMPO FRECUENCIA DE 293.66


Hz ACTIVA

MOVWF 0X60 ;TIEMPO FRECUENCIA DE 293.66


Hz ACTIVA

CALL ST1V ;TIEMPO FRECUENCIA DE 293.66


Hz ACTIVA

BCF PORTC,0 ;APAGA LED RB0 PARA PAUSA

MOVLW .133 ;TIEMPO FRECUENCIA DE 293.66


Hz BAJA

MOVWF 0X60 ;TIEMPO FRECUENCIA DE 293.66


Hz BAJA

CALL ST1V ;TIEMPO FRECUENCIA DE 293.66


Hz BAJA

DECFSZ 0X21,F ;TIEMPO FRECUENCIA DE 293.66


Hz BAJA

GOTO RE ;TIEMPO FRECUENCIA DE 293.66


Hz BAJA

RETURN

NSOL: MOVLW .168 ;TIEMPO TOTAL PARA LA NOTA


SOL

MOVWF 0X21 ;TIEMPO TOTAL PARA LA NOTA


SOL

SOL BSF PORTC,0 ;PRENDE LED RB0 PARA


EJECUTAR NOTA

MOVLW .1 ;TIEMPO FRECUENCIA DE 392.00


Hz ACTIVA
MOVWF 0X61 ;TIEMPO FRECUENCIA DE 392.00
Hz ACTIVA

MOVLW .210 ;TIEMPO FRECUENCIA DE 392.00


Hz ACTIVA

MOVWF 0X62 ;TIEMPO FRECUENCIA DE 392.00


Hz ACTIVA

CALL ST2V ;TIEMPO FRECUENCIA DE 392.00


Hz ACTIVA

BCF PORTC,0 ;APAGA LED RB0 PARA PAUSA

MOVLW .1 ;TIEMPO FRECUENCIA DE 392.00


Hz BAJA

MOVWF 0X61 ;TIEMPO FRECUENCIA DE 392.00


Hz BAJA

MOVLW .210 ;TIEMPO FRECUENCIA DE 392.00


Hz BAJA

MOVWF 0X62 ;TIEMPO FRECUENCIA DE 392.00


Hz BAJA

CALL ST2V ;TIEMPO FRECUENCIA DE 392.00


Hz BAJA

DECFSZ 0X21,F ;TIEMPO FRECUENCIA DE 392.00


Hz BAJA

GOTO SOL ;TIEMPO FRECUENCIA DE 392.00


Hz BAJA

RETURN

NLA: MOVLW .188 ;TIEMPO TOTAL PARA LA NOTA


LA

MOVWF 0X21 ;TIEMPO TOTAL PARA LA NOTA


LA

LA BSF PORTC,0 ;PRENDE LED RB0 PARA


EJECUTAR NOTA

MOVLW .1 ;TIEMPO FRECUENCIA DE 440.00


Hz ACTIVA

MOVWF 0X61 ;TIEMPO FRECUENCIA DE 440.00


Hz ACTIVA

MOVLW .187 ;TIEMPO FRECUENCIA DE 440.00


Hz ACTIVA

MOVWF 0X62 ;TIEMPO FRECUENCIA DE 440.00


Hz ACTIVA
CALL ST2V ;TIEMPO FRECUENCIA DE 440.00
Hz ACTIVA

NOP ;TIEMPO FRECUENCIA DE 440.00


Hz ACTIVA

BCF PORTC,0 ;APAGA LED RB0 PARA PAUSA

MOVLW .1 ;TIEMPO FRECUENCIA DE 440.00


Hz BAJA

MOVWF 0X61 ;TIEMPO FRECUENCIA DE 440.00


Hz BAJA

MOVLW .187 ;TIEMPO FRECUENCIA DE 440.00


Hz BAJA

MOVWF 0X62 ;TIEMPO FRECUENCIA DE 440.00


Hz BAJA

CALL ST2V ;TIEMPO FRECUENCIA DE 440.00


Hz BAJA

NOP ;TIEMPO FRECUENCIA DE 440.00


Hz BAJA

DECFSZ 0X21,F ;TIEMPO FRECUENCIA DE 440.00


Hz BAJA

GOTO LA ;TIEMPO FRECUENCIA DE 440.00


Hz BAJA

RETURN

NFA: MOVLW .149 ;TIEMPO TOTAL PARA LA NOTA


FA

MOVWF 0X21 ;TIEMPO TOTAL PARA LA NOTA


FA

FA BSF PORTC,0 ;PRENDE LED RB0 PARA


EJECUTAR NOTA

MOVLW .1 ;TIEMPO FRECUENCIA DE 349.23


Hz ACTIVA

MOVWF 0X61 ;TIEMPO FRECUENCIA DE 349.23


Hz ACTIVA

MOVLW .236 ;TIEMPO FRECUENCIA DE 349.23


Hz ACTIVA

MOVWF 0X62 ;TIEMPO FRECUENCIA DE 349.23


Hz ACTIVA

CALL ST2V ;TIEMPO FRECUENCIA DE 349.23


Hz ACTIVA
BCF PORTC,0 ;APAGA LED RB0 PARA PAUSA

MOVLW .1 ;TIEMPO FRECUENCIA DE 349.23


Hz BAJA

MOVWF 0X61 ;TIEMPO FRECUENCIA DE 349.23


Hz BAJA

MOVLW .236 ;TIEMPO FRECUENCIA DE 349.23


Hz BAJA

MOVWF 0X62 ;TIEMPO FRECUENCIA DE 349.23


Hz BAJA

CALL ST2V ;TIEMPO FRECUENCIA DE 349.23


Hz BAJA

DECFSZ 0X21,F ;TIEMPO FRECUENCIA DE 349.23


Hz BAJA

GOTO FA ;TIEMPO FRECUENCIA DE 349.23


Hz BAJA

RETURN

NLA12: MOVLW .94 ;TIEMPO TOTAL PARA LA NOTA


LA SOSTENIDA

MOVWF 0X21 ;TIEMPO TOTAL PARA LA NOTA


LA SOSTENIDA

LA12 BSF PORTC,0 ;PRENDE LED RB0 PARA


EJECUTAR NOTA

MOVLW .1 ;TIEMPO FRECUENCIA DE 415.30


Hz ACTIVA

MOVWF 0X61 ;TIEMPO FRECUENCIA DE 415.30


Hz ACTIVA

MOVLW .187 ;TIEMPO FRECUENCIA DE 415.30


Hz ACTIVA

MOVWF 0X62 ;TIEMPO FRECUENCIA DE 415.30


Hz ACTIVA

CALL ST2V ;TIEMPO FRECUENCIA DE 415.30


Hz ACTIVA

NOP ;TIEMPO FRECUENCIA DE 415.30


Hz ACTIVA

BCF PORTC,0 ;APAGA LED RB0 PARA PAUSA


MOVLW .1 ;TIEMPO FRECUENCIA DE 415.30
Hz BAJA

MOVWF 0X61 ;TIEMPO FRECUENCIA DE 415.30


Hz BAJA

MOVLW .187 ;TIEMPO FRECUENCIA DE 415.30


Hz BAJA

MOVWF 0X62 ;TIEMPO FRECUENCIA DE 415.30


Hz BAJA

CALL ST2V ;TIEMPO FRECUENCIA DE 415.30


Hz BAJA

NOP ;TIEMPO FRECUENCIA DE 415.30


Hz BAJA

DECFSZ 0X21,F ;TIEMPO FRECUENCIA DE 415.30


Hz BAJA

GOTO LA12 ;TIEMPO FRECUENCIA DE 415.30


Hz BAJA

RETURN

NSI12: MOVLW .106 ;TIEMPO TOTAL PARA LA NOTA


SI SOSTENIDA

MOVWF 0X21 ;TIEMPO TOTAL PARA LA NOTA


SI SOSTENIDA

SI12 BSF PORTC,0 ;PRENDE LED RB0 PARA


EJECUTAR NOTA

MOVLW .1 ;TIEMPO FRECUENCIA DE 466.66


Hz ACTIVA

MOVWF 0X61 ;TIEMPO FRECUENCIA DE 466.66


Hz ACTIVA

MOVLW .166 ;TIEMPO FRECUENCIA DE 466.66


Hz ACTIVA

MOVWF 0X62 ;TIEMPO FRECUENCIA DE 466.66


Hz ACTIVA

CALL ST2V ;TIEMPO FRECUENCIA DE 466.66


Hz ACTIVA

NOP ;TIEMPO FRECUENCIA DE 466.66


Hz ACTIVA

BCF PORTC,0 ;APAGA LED RB0 PARA PAUSA

MOVLW .1 ;TIEMPO FRECUENCIA DE 466.66


Hz BAJA
MOVWF 0X61 ;TIEMPO FRECUENCIA DE 466.66
Hz BAJA

MOVLW .166 ;TIEMPO FRECUENCIA DE 466.66


Hz BAJA

MOVWF 0X62 ;TIEMPO FRECUENCIA DE 466.66


Hz BAJA

CALL ST2V ;TIEMPO FRECUENCIA DE 466.66


Hz BAJA

NOP ;TIEMPO FRECUENCIA DE 466.66


Hz BAJA

DECFSZ 0X21,F ;TIEMPO FRECUENCIA DE 466.66


Hz BAJA

GOTO SI12 ;TIEMPO FRECUENCIA DE 466.66


Hz BAJA

RETURN

NSOL12: MOVLW .85 ;TIEMPO TOTAL PARA LA NOTA


SOL SOSTENIDO

MOVWF 0X21 ;TIEMPO TOTAL PARA LA NOTA


SOL SOSTENIDA

SOL12 BSF PORTC,0 ;PRENDE LED RB0 PARA


EJECUTAR NOTA

MOVLW .1 ;TIEMPO FRECUENCIA DE 369.99


Hz ACTIVA

MOVWF 0X61 ;TIEMPO FRECUENCIA DE 369.99


Hz ACTIVA

MOVLW .210 ;TIEMPO FRECUENCIA DE 369.99


Hz ACTIVA

MOVWF 0X62 ;TIEMPO FRECUENCIA DE 369.99


Hz ACTIVA

CALL ST2V ;TIEMPO FRECUENCIA DE 369.99


Hz ACTIVA

BCF PORTC,0 ;APAGA LED RB0 PARA PAUSA

MOVLW .1 ;TIEMPO FRECUENCIA DE 369.99


Hz BAJA

MOVWF 0X61 ;TIEMPO FRECUENCIA DE 369.99


Hz BAJA

MOVLW .210 ;TIEMPO FRECUENCIA DE 369.99


Hz BAJA
MOVWF 0X62 ;TIEMPO FRECUENCIA DE 369.99
Hz BAJA

CALL ST2V ;TIEMPO FRECUENCIA DE 369.99


Hz BAJA

DECFSZ 0X21,F ;TIEMPO FRECUENCIA DE 369.99


Hz BAJA

GOTO SOL12 ;TIEMPO FRECUENCIA DE 369.99


Hz BAJA

RETURN

NDO12: MOVLW .119 ;TIEMPO TOTAL PARA LA NOTA


DO SOSTENIDA

MOVWF 0X21 ;TIEMPO TOTAL PARA LA NOTA


DO SOSTENIDA

DO12 BSF PORTC,0 ;PRENDE LED RB0 PARA


EJECUTAR NOTA

MOVLW .149 ;TIEMPO FRECUENCIA DE 231.63


Hz ACTIVA

MOVWF 0X60 ;TIEMPO FRECUENCIA DE 231.63


Hz ACTIVA

CALL ST1V ;TIEMPO FRECUENCIA DE 231.63


Hz ACTIVA

NOP ;TIEMPO FRECUENCIA DE 231.63


Hz ACTIVA

NOP ;TIEMPO FRECUENCIA DE 231.63


Hz ACTIVA

NOP ;TIEMPO FRECUENCIA DE 231.63


Hz ACTIVA

BCF PORTC,0 ;APAGA LED RB0 PARA PAUSA

MOVLW .149 ;TIEMPO FRECUENCIA DE 231.63


Hz BAJA

MOVWF 0X60 ;TIEMPO FRECUENCIA DE 231.63


Hz BAJA

CALL ST1V ;TIEMPO FRECUENCIA DE 231.63


Hz BAJA

NOP ;TIEMPO FRECUENCIA DE 231.63


Hz BAJA
NOP ;TIEMPO FRECUENCIA DE 231.63
Hz BAJA

NOP ;TIEMPO FRECUENCIA DE 231.63


Hz BAJA

DECFSZ 0X21,F ;TIEMPO FRECUENCIA DE 231.63


Hz BAJA

GOTO DO12 ;TIEMPO FRECUENCIA DE 231.63


Hz BAJA

RETURN

REBOTE: MOVLW .16 ;25 ms PARA REBOTE

MOVWF 0X61 ;25 ms PARA REBOTE

MOVLW .218 ;25 ms PARA REBOTE

MOVWF 0X62 ;25 ms PARA REBOTE

CALL ST2V ;25 ms PARA REBOTE

NOP ;25 ms PARA REBOTE

RETURN

END ;FIN DEL PROGRAMA

RESULTADOS ODA A LA ALEGRÍA


Se puede observar en la figura 3 la manera en la que se conecto el buzzer de la tarjeta
Easy PIC y seguido de ella en un circulo amarillo la salida del PWM cuando se encuentra en
alto la nota.

Figura 3. Buzzer (rojo) y salida a LED (amarillo) del PWM.


DESARROLLO ODÓMETRO
Al igual que en el ejercicio de oda a la alegría es importante entender lo que se realizo
en el código con la finalidad de obtener la información necesaria y así comprender de manera
precisa lo que se hizo. A continuación, se describirá lo que se hizo en el programa de MPLAB
para que se pudiera censar la distancia con base al perímetro de la llanta de una bicicleta y su
respectivo diagrama de flujo que permite la idea del correcto funcionamiento del sistema
observándose así en la figura 4.

Figura 4. Diagrama de flujo odómetro.


Código Odómetro.

; INSTITUTO POLITECNICO NACIONAL.

; UPIITA.

; MICROPROCESADORES, MICROCONTROLADORES E INTERFAZ

; 14/03/2018

; MORALES HERNANDEZ ELIOTT EFRAIN & CID CABRERA LUIS ANGEL

; PRACTICA 2.1

; GUTIERREZ BEGOVICH DAVID ARTURO

; PARA: MICROCONTROLADOR PIC16F887

PROCESSOR 16F887

__CONFIG 0X2007,0X2BE2

__CONFIG 0X2008,0X3FFF

INCLUDE <P16F887.INC>

ORG 0X000

CLRF PORTC ;LIMPIAR PUERTO C

CLRF PORTB ;LIMPIAR PUERTO B

CLRF PORTD ;LIMPIAR PUERTO

CLRF PORTA

BSF STATUS,RP0 ;B1

BSF STATUS,RP1 ;B3

CLRF ANSEL ;PUERTOS DIGITALES

CLRF ANSELH ;PUERTOS DIGITALES

BCF STATUS,RP1 ;B1

MOVLW 0X01 ;ENTRADAS

MOVWF TRISA ;PUERTO D COMO ENTRADA

MOVLW 0XFF ;ENTRADAS

MOVWF TRISD ;PUERTO D COMO ENTRADA

CLRF TRISB
CLRF TRISC ;ASIGNANDO EL PIN 7 y 5 DEL

PUETO B COMO SALIDA

BCF STATUS,RP0 ;B0

MOVLW 0X00 ;INICIAMOS EL PROGRAMA CON

EL ACUMULADOR EN '0'

;------------------------REGISTROR PARA GUARDAR LA SUMA DE LOS METROS--------------------

CLRF 0X27 ;LIMPIA REGISTRO 27

CLRF 0X28 ;LIMPIA REGISTRO 28

MOVF PORTD,W ;MUEVE LO DEL PUERTO DE A W

MOVWF 0X26 ;MUEVE LO DE W AL

ACUMULADOR

;------------------------INICIO DE PROGRAMA------------------------------------------------------------------

BOTON1 BTFSS PORTA,0 ;SE PREGUNTA SI SE APRIETA EL

BOTÓN EN PB0

GOTO BOTON1 ;NO SE CUMPLIO, REGRESA UNA LÍNEA

CALL REBOTE ;SE CUMPLE, LLAMA SUBRUTINA

;ANTIREBOTE

BTFSC PORTA,0 ;PREGUNTA SE YA SE DEJO DE APRETAR

;EL BOTÓN

GOTO $-1 ;NO SE CUMPLE, REGRESA UNA LÍNEA

CALL REBOTE ;SE CUMPLE, LLAMA SUBRUTINA

;ANTIREBOTE

CALL REBOTE ;SE CUMPLE, LLAMA SUBRUTINA

;ANTIREBOTE

CALL REBOTE ;SE CUMPLE, LLAMA SUBRUTINA

;ANTIREBOTE

;------------------INICIA PROCESO PARA SUMAR METROS----------------------------------------------------

BOTON0 BTFSS PORTA,0 ;PREGUNTA POR LA ENTRADA EN RA0


;CENSADO

GOTO BOTON0 ;NO SE CUMPLE, REGRESA UNA LÍNEA

CALL REBOTE ;SE CUMPLE, LLAMA SUBRUTINA

;ANTIREBOTE

BTFSC PORTA,0 ;PREGURNA SI SE DEJO DE PRESIONAR

GOTO $-1 ;NO SE CUMPLE, REGRESA UNA LÍNEA

CALL REBOTE ;SE CUMPLE, LLAMA SUBRUTINA

;ANTIREBOTE

MOVF 0X27,W ;MUEVE LO DEL REGISTRO 27 A W

ADDWF 0X26,W ;LE SUMA LO QUE TIENE EL REGISTRO 26

MOVWF 0X27 ;LO GUARDA EN EL REGISTRO 27

MOVWF PORTC ;LO MUESTRA EN EL PUERTO C

BTFSS PORTC,6 ;PREGUNTA SI EL BIT 6 DEL PORT C ES 1

GOTO BOTON0 ;NO SE CUMPLE, TODAVÍA NO HAY

;METROS

BTFSS PORTC,5 ;SE CUMPLE, PREGUTNA POR RC5 ES 1

GOTO BOTON0 ;NO SE CUMPLE, TODAVÍA NO HAY

:METROS

CLRF 0X27 ;LÍMPIA EL REGISTRO 27

CLRF PORTC ;LÍMPIA EL PUERTO 0

INCF PORTB ;INCREMENTA 1 METRO

GOTO BOTON0 ;REGRESA A SUMA.

;---------------------------- SUBRUTINAS Y DIRECCIÓN DE SUBRUTINAS --------------------------------

#INCLUDE<C:\C2\SUBS_TIEMPO.ASM> ;LIBRERÍA DE SUBRUTINAS

REBOTE: MOVLW .16 ;TIEMPO DE 25 ms DE ANTIREBOTE

MOVWF 0X61 ;TIEMPO DE 25 ms DE ANTIREBOTE

MOVLW .218 ;TIEMPO DE 25 ms DE ANTIREBOTE

MOVWF 0X62 ;TIEMPO DE 25 ms DE ANTIREBOTE

CALL ST2V ;TIEMPO DE 25 ms DE ANTIREBOTE

NOP ;TIEMPO DE 25 ms DE ANTIREBOTE


RETURN ;TIEMPO DE 25 ms DE ANTIREBOTE

END ;TERMINA PROGRAMA

RESULTADOS ODÓMETRO
En la figura 5 se puede observar que la entrada que tiene el puerto D (azul) son los
centímetros que tiene la llanta, lo que contiene el puerto C (rojo) suma lo que contiene D y
lo que sale al puerto B (amarillo) suma los metros.

Figura 5. Censado de distancia en la tarjeta Easy PIC.

En la figura 6 se puede observar la parte final del sistema con la bici y los imanes de
neodimio ya en la llanta.

Figura 6. Sistema final para el censado de recorrido de una llanta.


CONCLUSIONES IDIVIDUALES
Cid Cabrera Luis Angel
En está práctica lo que más se puedo aplicar fueron las subrutinas y con ello el control
PWM para así controlar las notas de las partituras.

Morales Hernández Eliott Efraín


Por medio de está práctica se logró comprender le importancia del PWM a la hora de generar
tiempos controlados por medio de subrutinas que fue uno de los principales puntos a realizar
en esta práctica. También fue importante la manera en la que se puede censar y controlar las
entradas dentro del PIC.

REFERENCIAS
[1] Copytight Wikipedia. (2018). “Odómetro”. Recuperado el 30 de abril del 2018 de
https://es.wikipedia.org/wiki/Od%C3%B3metro
[2] Copyright Laoveja100. (2010). “MÚSICA: EL HIMNO A LA ALEGRÍA, DE VAN
BEETHOVEN”. Recuperado el 30 de abril del 2018 de
https://laoveja100.wordpress.com/2010/04/10/musica-el-himno-a-la-alegria-de-van-
beethoven/
Instituto politécnico nacional

UNIDAD PROFESIONAL INTERDISCIPLINARIA EN


INGENIERÍA Y TECNOLOGÍAS AVANZADAS

“UPIITA”

MICROPROCESADORES, MICROCONTROLADORES E
INTERFAZ

Grupo: 2MM7

“Microprocesadores”
PRÁCTICA 2.1.- Oda a la alegría y odómetro

07/05/18

Alumno:
Cid Cabrera Luis Angel
Morales Hernández Eliott Efraín

Prof.

GUTIERREZ BEGOVICH DAVID ARTURO