.: Para los más curiosos
Y sí... Esta sección está dedicada para los más curiosos, aquellos que desean comprender desde cero como se hicieron todos esos efectos, aquellos que son algo así como yo y que no quieren nada servido, sino que buscan aprender a como de lugar, que palo no...???, ok para los otros, que ya tienen conocimiento más avanzado y solo quieren armar el proyecto, les dejo aquí el código fuente...
Los demás no descarguen este archivo y no me pregunten por qué, solo síganme que esto aún no termina. Para no liarte tirando todo el código así de una, lo voy a trocear en varias partes, así es que vamos por la primera...
;==================== Encabezado ====================
;
; Ero-Pic // De Rueda Luis
; Secuenciador de 8 Canales y 16 efectos.
;
;================================================
LIST P=16F84
include "P16F84.inc"
;================= Mapa de Memoria ===================
estado equ 0x03 ; Haciendo asignaciones
trisa equ 0x05
trisb equ 0x06
porta equ 0x05
portb equ 0x06
llaves equ 0x0C ; almacenara el estado de las llaves
;============== Configuración de puertos =================
ORG 0x00
GOTO inicio
ORG 0x05
inicio BSF estado,5 ; cambio al banco 1 del pic
MOVLW 0x1f
MOVWF trisa ; Asigna al puerto A como entrada
MOVLW 0x00
MOVWF trisb ; y Al puerto B como salida
BCF estado,5 ; Regresa al banco 0
CLRF porta ; limpia el puerto A
CLRF portb ; limpia el puerto B
|
|
.: Descripción del código:
.: Encabezado:
De nuestro primer tutorial, si es que lo viniste siguiendo, sabemos que el encabezado es sólo un comentario y luego de él, viene el famoso List P=16f84 que no es otra cosa que la referencia a nuestro micro, para el cual estamos codificando, lo nuevo aquí es include "P16F84.inc", esto es para que cuando MPLAB ensamble nuestro código, haga uso de la librería "P16F84.inc" en la cual tiene todos los datos de este integrado, si olvidas colocarlo, cuando lo ensambles te dará error, y eso no es agradable...!!!
.: Mapa de memoria
Como antes, aquí damos a conocer los registros que utilizaremos, para que los ponga a nuestra disposición, y si necesitas una variable, simplemente le asignas el nombre a uno de los registros que nos quedan disponibles, como podrás ver todos los nombres que utilicé están escritos en minúsculas (detalle a tener en cuenta), entre todos ellos hay uno raro...
llaves equ 0x0C
Como dice el comentario, es el que utilizaré para almacenar el valor de las llaves (los 4 interruptores que seleccionan el efecto), el resto ya lo conocíamos.
Aquí haremos las asignaciones a las entradas (interruptores y timer) del puerto A y las salidas (8 salidas para los LED's) en el puerto B
;============== Configuración de puertos =================
ORG 0x00
GOTO inicio
ORG 0x05
inicio BSF estado,5 ; cambio al banco 1 del pic
MOVLW 0x1f
MOVWF trisa ; Asigna al puerto A como entrada
MOVLW 0x00
MOVWF trisb ; y Al puerto B como salida
BCF estado,5 ; Regresa al banco 0
CLRF porta ; limpia el puerto A
CLRF portb ; limpia el puerto B
|
|
ORG 0x00 es el vector de Reset, cada vez que el micro se inicie lo hará desde aquí (ya sea que conectaron el secuenciador directamente o que lo encendieron o que algo le haya ocurrido al micro saltará a este punto) y en la siguiente instrucción irá a la etiqueta inicio pasando por encima del vector de interrupción, que está en la posición 0x04.
ORG 0x05 desde aquí comenzaremos a ensamblar nuestro código (significa eso en pocas palabras).
El resto ya nos es familiar, traduciré en entendible línea por línea.
# cambio al banco 1.
# carga el registro w con 00011111 (en binario), ó 0x1f en hexadecimal, por si dudas, utiliza la calculadora de windows para ver esta equivalencia.
# pasa w a trisa y quedan los 5 primeros bits del puerto A como entrada.
# carga w con 00000000 (en binario), ó 0x00 en hexa.
# lo pasa a trisb y ahora todo el puerto B es salida.
# regresa al banco 0.
# finalmente limpia (CLRF) todo lo que haya en ambos puerto.
CLRF es como decir... clear a todo lo que hay en el registro F que te voy a especificar (porta y portb), así por ejemplo...
CLRF portb
esto es simplemente para asegurarse de que no hay ninguna cosa rara por ahí...
Y así fue nuestra primera parte... ahora vamos a lo otro...
R-Luis...
<--Anterior
Introducción
Siguiente -->
Tabla de Referencias
|