You are on page 1of 4

14/11/2014

Tutorial microontroladores PIC.

Tutorial Microcontrolador PIC.


Segunda parte.
Para comenzar a trabajar con el programa MPLAB debemos simplemente abrir un nuevo
archivo en la ventana File opcin Newcomo muestra la imagen 1.

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 estarn acompaadas por parametros que le dirn a la mquina
como se realizar esa tara. De otra manera, esta no se ejecutar.

Fig. 1. Iniciando un nuevo programa.


A continuacin analizaremos las siguientes lneas:
list
#include
port_a
port_b
trisb

p=16f84
p16f84.inc
equ
equ
equ

http://micropic.galeon.com/curso2.html

5
6
86
1/4

14/11/2014

Tutorial microontroladores PIC.

trisa
estado

equ
equ

valor1
valor2

85
3

equ
equ

clrf
clrf
bsf
movlw
movwf
clrf
movlw
movwf
bcf
clrf
clrf

estado
port_a
estado,5
0x19
port_a
port_b
0x32
port_b
estado,5
port_a
port_b

0C
0D

;seleccin del banco 1

;selecciona el banco 0

Antes de analizar estas lneas debemos tener en claro los siguiente:


para mantener un orden, se recomienda presionar la tecla TAB entre la
instruccin y el parametro
El smbolo de Punto y Coma " ; " indica el comienzo de un comentario, sirve para
ubicarse mejor en el avance del programa y luego encontrar mas rpidamente una lnea
o bloque determinado. Todo lo que siga a un " ; " no generar cdigo hexagesimal en
nuestro proyecto. En pocas palabras, lo que siga al " ; " no influye en el programa.
1.- Primero debemos especificar con que microcontrolador estamos trabajando, en
las dos primeras lneas especificamos que vamos a trabajar con el PIC 16F84.
2.- Luego definimos la posicin en memoria de nuestros registros, el mapa de
memoria lo presento en la figura 2:

http://micropic.galeon.com/curso2.html

2/4

14/11/2014

Tutorial microontroladores PIC.

Figura 2: Mapa de memoria del PIC 16f84.


Para comenzar destacaremos los registros:
PORTA
PORTB
TRISA
TRISB
STATUS

posicin 05h
posicin 06h
posicin 85h
posicin 86h
posicin 03h

El registro STATUS que en este caso le hemos llamado "estado" se compone de la


siguiente forma:
7

IRP

RP1

RP0

TO

PD

DC

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.
http://micropic.galeon.com/curso2.html

3/4

14/11/2014

Tutorial microontroladores PIC.

Desde la tercera a la septima lnea 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 minsculas, ya que aqu lo definimos as (PORT_A port_a) si en
un principio se define con maysculas, siempre nos tendremos que referir a este con
maysculas Otro ejemplo, si en la tercera lnea en lugar de "port_a equ 5" colocamos "hola equ 5"
cada vez que queramos referirnos al Puerto Adebemos hacerlo como "hola".
En la octava y novena lnea, definimos nuestro registros personales, los que vamos a
ocupar en nuetro programa, segn el mapa de memoria este comienza en la posicin 0Ch.

NOTA: Recuerden que todos los valores mencionados y que se mencionarn, estn
expresados en valores hexagesimales.

El siguiente paso es definir los pines de entrada y salida, recordemos el ultimo bloque
de nuestro programa:
clrf
clrf
bsf

estado
port_a
estado,5

; limpiar el registro estado


; limpiar el puerto a
; seleccin del banco 1

Nota: La instruccin 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.
movlw
movwf

0x19
port_a

;cargo un 11001 en el acumulador


; muevo el contenido del acumulador
;al puerto a, defino los pines 0, 1 y 4
;como entrada y 2 y 3 como salida

Nota: El mtodo para definir los pines del puerto b es exactamente el mismo
clrf
movlw
0x32
movwf
port_b
bcf
clrf
clrf

port_b

;limpiar el puerto b
;cargo un 00110010 al acumulador
; defino los pines 1, 4 y 5 como entrada y
;los 0, 2, 3, 6 y 7 como salida
estado,5
;selecciona el banco 0
port_a
; limpiar el puerto a
port_b
; limpiar el puerto b

En la siguiente parte, haremos un pequeo programa demostrativo y veremos como


detectar errores y simularlo.

http://micropic.galeon.com/curso2.html

4/4