Nota: El MPlab es un programa, no es inteligente y no sabe que hacer por si solo. Es mas, les debemos dar las ordenes una a una y muy bien explicadas para que este las entienda. Estas ordenes estarán acompañadas por parametros que le dirán a la máquina como se realizará esa taréa. De otra manera, esta no se ejecutará.
A continuación analizaremos las siguientes líneas:
| para mantener un orden, se recomienda presionar la tecla TAB entre la instrucción y el parametro |
| El símbolo de Punto y Coma " ; " indica el comienzo de un comentario, sirve para ubicarse mejor en el avance del programa y luego encontrar mas rápidamente una línea o bloque determinado. Todo lo que siga a un " ; " no generará código hexagesimal en nuestro proyecto. En pocas palabras, lo que siga al " ; " no influye en el programa. |
2.- Luego definimos la posición en memoria de nuestros registros, el mapa de memoria lo presento en la figura 2:

Figura 2: Mapa de memoria del PIC 16f84. Para comenzar destacaremos los registros:
PORTA posición 05h PORTB posición 06h TRISA posición 85h TRISB posición 86h STATUS posición 03h
| El registro STATUS que en este caso le hemos llamado "estado" se compone de la siguiente forma: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Si en la casilla 5 (RP0) del registro STATUS hay un CERO entonces estamos en el BANCO 0.
Si en la casilla 5 (RP0) del registro STATUS hay un UNO entonces estamos
en el BANCO 1.
Desde la tercera a la septima línea definimos los nombres de nuestros
registros, en el caso del Puerto A lo llamamos port_a - es importante
que siempre que nos queramos referir al Puerto A lo hagamos en minúsculas,
ya que aquí lo definimos así (PORT_A ¹ port_a)
si en un principio se define con mayúsculas, siempre nos tendremos
que referir a este con mayúsculas -
Otro ejemplo, si en la tercera línea en lugar de "port_a equ 5" colocamos "hola equ 5" cada vez que queramos referirnos al Puerto A debemos hacerlo como "hola".
En la octava y novena línea, definimos nuestro registros personales, los que vamos a ocupar en nuetro programa, según el mapa de memoria este comienza en la posición 0Ch.
NOTA: Recuerden que todos los valores mencionados y que se mencionarán, están expresados en valores hexagesimales.
El siguiente paso es definir los pines de entrada y salida, recordemos el ultimo bloque de nuestro programa:
En la siguiente parte, haremos un pequeño programa demostrativo y veremos como detectar errores y simularlo.clrf estado ; limpiar el registro estadoNota: La instrucción BSF (Bit Set f) carga un 1 en el registro (en este caso el registro estado) en el bit (en este caso el 5), como vimos anteriormente el registro estado al tener un 1 en el 5to bit, entonces estamos trabajando en el banco 1, esto para poder definir los pines de entrada o salida del micro.
clrf port_a ; limpiar el puerto a
bsf estado,5 ; selección del banco 1movlw 0x19 ;cargo un 11001 en el acumuladorNota: El método para definir los pines del puerto b es exactamente el mismo
movwf port_a ; muevo el contenido del acumulador
;al puerto a, defino los pines 0, 1 y 4
;como entrada y 2 y 3 como salidaclrf port_b ;limpiar el puerto b
movlw 0x32 ;cargo un 00110010 al acumulador
movwf port_b ; defino los pines 1, 4 y 5 como entrada y
;los 0, 2, 3, 6 y 7 como salida
bcf estado,5 ;selecciona el banco 0
clrf port_a ; limpiar el puerto a
clrf port_b ; limpiar el puerto b