Página de inicio Mi Correo






   » Foro
   » Nuevo Foro
   » Mi Correo
   » Mis Actividades...


--- Novedades ---



    
  » Microcontroladores » Tutor de MPLAB (7 de 19)  

.: 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...

Descargar cqpic.asm
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...

.: Primera parte - Cuando el micro se inicia
;==================== 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.

.: Configuración de Puertos

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 -->
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19
Tabla de Referencias


    
--| |--