Cuarta línea:;
;---------------------------------------------------------------
;VARIABLES.
;---------------------------------------------------------------
;
Este no es más que un pequeño encabezado. El ensamblador omitirá estas líneas y solo porque empieza con ";". Recuerden que, toda línea que empieze con ";" es comentario y el ensamblador la omitirá.
Justo por debajo de este encabezado, penemos las variables. ¿a que le llamo variables? a pociciones de memorias o nombre de bit que yo quiera darle personalmente.
Por ejemplo, dentro del archivo P16F877A.INC a la pocición de memoria 0x05 le llama PORTA pero si yo quero llamarlo PUERTO_A, es quí dónde le indico al ensamblador.
¿Cómo se hace?Es muy fácil y con la instrucción "EQU"
PUERTO_A EQU H'05'
Si al Bit RA6 lo quero llamar LED6 lo hacemos así:
LED6 EQU 6
Supongamos que quiero encender el LED 6 que está en el Puerto a bit 6, y este se activa con un 1 lógico, ponemos esta instrucción:
BSF PUERTO_A,LED6
Y el ensamblador lo traducirá así: BSF 0X05,0X06
Quinta línea: CBLOCK H'20'
ENDC
A estas dos líneas las unifique porque van juntas. Entre ellas van los nombres de cada pocición de la RAM que nosotros querramos nombrar, o cada Registro que querramos renombrar.
Recuerden que los registros están implementados en la RAM y que la pocición de la RAM que puede utilizar el usuario para guardar cosas, empieza desde una pocición que está indicada en el datasheet. Para el caso de 16F877 empieza desde la pocición 0x20 como lo ven en la figura siguiente.
La directiva CBLOCK H'20' indica que empezamos a nombrar pociciones de memoria desde la ubicación 0x20. Por ejemplo
CBLOCK H'20'
temperatura
demora1
demora2
ENDC
La pocición 0x20 se llama temperatura, la pocición 0x21 se llama demora1 y así sucesivamente. Tambien existe otra forma de nombrar o renombrar pociciones de memoria o registro, y ya lo vimos que es con la directiva EQU. por ejemplo:
temperatura EQU H'20'
demora1 EQU H'21'
demora2 EQU H'22'
Sexta línea:RESET ORG H'00'
GOTO INICIO
ORG H'04' ;VECTOR INTERRUPCIÓN
INTERRUP
He unificado estas líneas porque por lo general así se escribe en la mayoría de nuestros programas. Vemos con más detalles estas líneas.
RESET ORG H'00'
Aquí es en dónde empieza el CP cuando se enciende al PIC. Y estos se debe, porque cuando hay un reset por el pin MCLR o un reset interno producido por, encendido del PIC o, por ejemplo, del perro guardía, el vector reset se ubica en la pocición 0x00 de la memoria de programa.
Como pueden apreciar, hemos llamado a la pocición 0x00 con el nombre de RESET, ya que la primer columna es una etiqueta. Las etiquetas sirven para nombrar pociciones de memoria de programa.
ORG H'00' indica que se empieza a escribir desde la pocición 0x00 por lo que la siguiente instrución, quedará alojada en la pocición 0x00. ORG es una directiva, y solo sirve para el ensamblador. Esta línea,
SIEMPRE debe estar y no se puede modificar, salvo la etiqueta.
Siguiente línea es GOTO INICIO, esta instrucción queda alojada en la pocición 0x00 y es un salto a la etiqueta INICIO. Este salto tiene que estar, porque en las siguientes pociciones de memoria de programa, está la interrupción, externa e interna del PIC. Por eso es necesario hacer el salto.
Siguiente línea nos encontramos con ORG H'04', como se dieron cuenta, es una directiva. Esta pocición de memoria, indica el vector de interrupción. Cuando estén habilitadas las interrupciones y una de ella se activa, el CP apuntará aquí, a la pocición 0x04.
Siguiente línea nos encontramos con la etiqueta INTERRUP. Si trabajamos con las interrupciones, aquí es donde escribiremos lo que necesitamos hacer con ellas.
Séptima línea:;
INICIO
;
Vemos la etiqueta INICIO. Aquí vendrá el CP cuando alla un reset gracias al GOTO INICIO ubicado en la pocición 0x00 de la memoria de programa. De esta manera, saltamos un montón de instrucciones que no debemos ejecutar antes. Como por ejemplo las interrupciones si hubiese.
Por ende, a partir de esta etiqueta, estará nuestro programa principal. Configuraremos los puertos, las insterrupciones y empezaremos a darle trabajo al CP.
Octava línea:END
Esta es una directiva y solo sirve para el ensamblador indicando que después de esta directiva, se terminó el programa. Instruciones que estén por debajo de esta línea, no serán tenido encuenta. Y esta directiva es obligatoria colocarla.