Está en la página 1de 10

2009

GRUPO ESTUDIANTIL
INVENTRONICA
Joel Oswaldo Campos
Prez

[CURSO BSICO DE PIC


ESTRUCTURA DE UN
PROGRAMA]
En este segmento se describen las principales partes que conforman un cdigo en
ensamblador para PIC, se terminara editando un cdigo ejemplo.

Curso bsico de PIC

Estructura de un programa

JUEGO DE INSTRUCCIONES

Curso bsico de microcontroladores robo-sapiens@hotmail.com

Pgina 2

Curso bsico de PIC

Estructura de un programa

Estructura de un programa en ensamblador para PIC:


---------------------------------------------------------------------------------------------------------------------------

list
p=16f877a
#include <p16f877a.inc>
El primer rengln define que PIC se usara, el segundo rengln es una librera que
contiene los nombres de los registros especiales del pic, tales como PORTA, PORTB,
STATUS, TRISA etc. Para podernos referir a stos por sus nombres en lugar de su
posicin de memoria, facilitndonos la edicin del programa.
--------------------------------------------------------------------------------------------------------------------------__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF

Este rengln CONFIG se llama PALABRA DE CONFIGURACION, y esta formada por


diferentes FUSIBLES. Estos FUSIBLES nos sirven para dar ordenes al programador de
cmo debe configurar el PIC para su correcto funcionamiento. A continuacin veamos
para la funcin de cada FUSIBLE.
CP

Cdigo de Proteccin de programa, si lo habilitamos (ON) evita que


otras personas puedan leer el programa contenido en el PIC.
Generalmente lo pondremos a OFF.

WDT

Watch Dog Timer, o Temporizador Perro Guardin. Este temporizador


resetea el PIC cada determinado tiempo para evitar enciclamientos por
error en el programa. Preferentemente hay que apagarlo (OFF).

BODEN

Bit de Permiso para el Reseteo por Cada de Tensin.

PWRTE

Bit de Permiso para el Timer de conexin de alimentacin. Se usa para


resetear el PIC cada vez que se conecta la fuente de alimentacin de nuestra
aplicacin.

OSC

Define que tipo de oscilador se usara. RC es para Capacitor y resistencia, XT


es para cristal de 4Mhz, HS para cristales mayores a 4Mhz.

WRT

Permiso para escritura en Modo FLASH. Se usa cuando en nuestro programa


accedemos a la memoria de datos EEPROM.

LVP

Voltaje de programacin bajo. Si esta en ON permite programar el PIC con 5V,


si esta en OFF programa el PIC con 14V, debemos ponerlo a OFF.

CPD

Cdigo de Proteccin de Datos. Se usa para evitar que terceros lean lo que
hemos escrito en la memoria EEPROM del PIC.

---------------------------------------------------------------------------------------------------------------------------

Curso bsico de microcontroladores robo-sapiens@hotmail.com

Pgina 3

Curso bsico de PIC


CBLOCK
ENDC

Estructura de un programa
0X20

Los registros o variables que se usaran se declaran entre estos dos renglones, el 0X20 indica
que usaremos los espacios disponibles para registros a partir de la posicin 0x20 de la
memoria (VER MAPA DE MEMORIA).

--------------------------------------------------------------------------------------------------------------------------ORG
goto
ORG

0
inicio
5

La lnea ORG 0 (Origen 0) es el VECTOR DE RESET, lo cual quiere decir que siempre que se
resetee, o se encienda el PIC, el programa se comenzara a ejecutar a partir de esta posicin. El
goto inicio y debajo el ORG 5 nos indica que hemos saltado el ORG 4 que es el vector de
interrupciones, este vector ORG 4 no se usara por el momento.
--------------------------------------------------------------------------------------------------------------------------A partir de aqu comenzamos con el programa. Como siempre, lo primero es configurar los
puertos de entrada y salida:
Inicio
bsf
bcf

STATUS,RP0
STATUS,RP1

;RP0  1
;RP1  0

Estas dos lneas nos indican que nos movemos al banco 1 que es el banco para configurar los
puertos de entrada y salida (ver hoja de Seleccin de bancos para configurar puertos ( in / out
)).
--------------------------------------------------------------------------------------------------------------------------movlw
movwf

b00000111
ADCON1

; W  b00000111
; ADCON1  W

En estas dos lneas estamos mandando a ADCON1 el nmero 00000111 para configurar todas
las entradas analgicas del PIC como digitales (ver hoja de CONFIGURACION DE PINES (
Digitales / Analgicas) ). Nota, la b en b00000111 indica que el numero dentro de las comillas
es un numero binario.
--------------------------------------------------------------------------------------------------------------------------movlw
movwf

b11111111
TRISA

; W  b00000111
; TRISA  W

En estos dos renglones estamos mandando el numero binario 11111111 al registro TRISA. El
registro TRISA configura los pines del PORTA como entrada o salida. Si a un bit del TRISA le
mandamos un 1 entonces el mismo bit pero del PORTA ser ENTRADA, si a un bit del TRISA le
Curso bsico de microcontroladores robo-sapiens@hotmail.com

Pgina 4

Curso bsico de PIC

Estructura de un programa

mandamos un 0 entonces el mismo bit pero del PORTA ser SALIDA. En este caso todos los bits
de TRISA les hemos mandado 1s, asi que todos los pines del PORTA sern ENTRADAS.

--------------------------------------------------------------------------------------------------------------------------clrf

TRISB

; TRISB  b00000000

En este rengln estamos limpiando el TRISB, es decir, le estamos mandando puros 0s. Lo cual
quiere decir que estamos volviendo todos los pines del PORTB como SALIDAS.

--------------------------------------------------------------------------------------------------------------------------bcf
bcf

STATUS,RP0
STATUS,RP1

;RP0  0
;RP1  0

En estos dos renglones estamos mandando un 0 al RP0 y 0 al RP1 para posicionarnos en el


Banco 0, que es el banco de trabajo, pues hemos terminado de configurar los puertos en el
Banco 1.

--------------------------------------------------------------------------------------------------------------------------Ya configurados los puertos como digitales y configurado cuales son entradas y salidas
comenzamos con nuestro programa principal:
Inicio_principal
btfss PORTA,0
goto apagar
bsf
PORTB,0
goto inicio_principal
apagar
Bcf
PORTB,0
goto inicio_principal

END

; PORTA,0 = 1 ?
; NO, entonces Ir a apagar
; SI, entonces PORTB,0  1
; Ir a inicio_principal
; PORTB,0  0
;Ir a inicio_principal

; FIN DEL PROGRAMA PARA EL COMPILADOR

Curso bsico de microcontroladores robo-sapiens@hotmail.com

Pgina 5

Curso bsico de PIC

Estructura de un programa

Esquema de un programa en ensamblador


list
p=16f877a
#include <p16f877a.inc>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF

CBLOCK
ENDC

0X20

INICIO

ORG
goto
ORG

0
inicio
5

bsf
bcf
movlw
movwf
movlw
movwf
clrf
bcf
bcf

STATUS,RP0
STATUS,RP1
b00000111
ADCON1
b11111111
TRISA
TRISB
STATUS,RP0
STATUS,RP1

; Banco 1 para cofig. Puertos.


;
; Configuramos
; todos los pines como Digitales
; Configuramos
; PORTA como entradas
; Configuramos PORTB como salidas
; Regresamos al Banco 0
;

PORTA,0
apagar
PORTB,0
inicio_principal

; PORTA,0 = 1 ?
; NO, entonces Ir a apagar
; SI, entonces PORTB,0  1
; Ir a inicio_principal

PORTB,0
inicio_principal

; PORTB,0  0
;Ir a inicio_principal

Definir el PIC usado e


incluir la librera.

Inicio

Inicio_principal
btfss
goto
bsf
goto
apagar
Bcf
goto

END

Configurar FUSES

Definir variables

Configurar Puertos

Programa Principal

END

; FIN DEL PROGRAMA PARA EL COMPILADOR

Curso bsico de microcontroladores robo-sapiens@hotmail.com

Pgina 6

Curso bsico de PIC

Estructura de un programa

DIAGRAMA DE PINES PIC16F877A

Curso bsico de microcontroladores robo-sapiens@hotmail.com

Pgina 7

Curso bsico de PIC

Estructura de un programa

Seleccin de bancos para configurar puertos ( in / out )

MAPA DE MEMORIA:

El Banco 0 es el banco de trabajo,


el Banco 1 es el banco de
configuracin de puertos

Curso bsico de microcontroladores robo-sapiens@hotmail.com

Pgina 8

Curso bsico de PIC

Estructura de un programa

CONFIGURACION DE PINES ( Digitales / Analgicas)

Los pines marcados tienen la


funcin de canales analgicos,
pero pueden ser configurados
para ser i/o digitales.

Curso bsico de microcontroladores robo-sapiens@hotmail.com

Pgina 9

Curso bsico de PIC

Estructura de un programa

GRUPO ESTUDIANTIL
INVENTRONICA

Aclaracin de dudas respecto al tema


tratado en este trabajo al correo:
robo-sapiens@hotmail.com

Curso bsico de microcontroladores robo-sapiens@hotmail.com

Pgina 10

También podría gustarte