Documente Academic
Documente Profesional
Documente Cultură
A PRENDIENDO A
P ROGRAMAR PICS
M ANEJO D E I NSTRUCCIONES
4.1 INTRODUCCION
Como introduccin quiero
ofrecerles a ustedes un mail de
un lector que sintetiza tan bien
mi criterio de cmo llevar esta
serie de notas, que yo mismo no
lo habra escrito con tanta claridad.
Zrate 19/6/99
Mi nombre es Jorge Borau, vivo en
Zrate, soy lector de todas sus notas
escritas en la revista Saber Electrnica, las que a mi parecer, son muy
buenas y, por sobre todo, explicadas
con un idioma que puede entender
cualquiera.
Le escribo porque he comenzado a
leer sus notas sobre los micros PIC, y
yo soy uno de los que compr un curso pensando que podra aprender algo. Realmente es poco lo que aprend.
Por eso quisiera hacerle un pedido, a
mi entender lo ms difcil es interpretar el cdigo de programacin, cmo
se programa para poder poner en funcionamiento una idea, qu hace cada
instruccin.
Muchos de los cursos fracasan porque hablan de una manera muy tcnica, creen que el alumno conoce los
Saber Electrnica N 147
52
Electrnica y Computacin
4.3 NUEVAS
INSTRUCCIONES
Nuestro programa va a hacer
uso de lo que se llama una su-
se ejecuta lo
indicado con
la etiqueta reset y se salta
al rengln siguiente. Cuando termina
una subrutina,
se debe colocar una referencia "RETURN", que
significa retornar al siguiente rengln del
programa
principal donde est la invocacin a la
subrutina.
Otra instruccin nueva
que no habamos utilizado
es "decfsz" que siempre va
acompaada de un nmero hexadecimal. Esta instruccin se
utiliza para programar retardos.
Por ejemplo, si su paso del programa fuera:
........... decfsz 06
Cuando se llega a esa instruccin se carga el registro z con l
nmero hexadecimal 06 y se retorna a la misma sentencia (mismo paso de programa), pero decrementando el registro z en una
unidad, y as sucesivamente hasta que z sea igual a cero, momento en que se corta el lazo
sobre s mismo y se pasa a la siguiente instruccin.
Otra variante en la forma de
escribir esta sentencia es con
una variable previamente definida en el encabezamiento del
programa. Por ejemplo, en nuestro caso, podra escribirse del si-
53
4.4 EL PROGRAMA
PRINCIPAL
guiente modo:
;=============
CONST EQU 06
--------------------------;= = = = = = = = = = = = = =
--------------------------..... decfsz CONST
En el encabezado se declara
que CONST = 06 luego, al hacer
el decremento, se reemplaza
CONST por su verdadero valor
numrico.
Esto parece ms una complicacin sin sentido, pero no es
as; en un programa bien estructurado los cambios se realizan
en el encabezado y, adems,
muchas veces es necesario cambiar solidariamente varios operandos y el mtodo propuesto lo
logra fcilmente.
Tambin vamos a utilizar una
instruccin de doble uso y que
forma parte de una subrutina
(generalmente la cierra). Se trata
de "retlw" que debe ir acompa-
54
Para disear un programa usted debe tener en claro la funcin del proyecto. En nuestro caso queremos que al encender la
fuente el led conectado a RB0 se
encienda y apague en un ciclo
que pueda modificarse fcilmenado de un literal (nmero hexa- te para alterar el programa. Al
decimal). Esta operacin carga el apretar el pulsador de reset se
registro w con el literal que lo
debe apagar el led y al soltarlo
acompaa y retorna al programa se encender luego de un retarprincipal todo en un solo rendo y continuar alternando pegln. Su funcionamiento se apre- rodos de encendido y apagado.
ciar mejor cuando veamos el
El programa completo lo vaprograma de aplicacin pero es
mos a dividir en dos partes: un
equivalente a:
programa principal y una subrutina que llamamos retardar. Los
movlw HEX
hacemos as porque casi todos
(HEX = nmero hexadecimal) los programas incluyen retardo y
return
el diseo de esa subrutina lo podemos emplear posteriormente y
Cuando se analiza la demora
nos ahorraremos trabajo.
en ejecutar retlw se la debe conUn programa debe estar essiderar doble, es decir, que si
tructurado en forma clara, se deusamos un cristal de 4MHz esta
ben diferenciar claramente los
rutina dura 2S.
diferentes sectores y esto se hace
A esta altura el lector debe
no slo para que sea agradable a
recordar unas cuantas sentencias la vista, sino para facilitar los fuy todava faltan unas cuantas
turos cambios. El autor acostumms. Como ayuda para que no
bra a diferenciar claramente 4
deba estudiar todas las sentensecciones del programa separncias de memoria le decimos que dolas son signos ===. La primera
lo mejor es relacionarlas con pa- seccin es el ttulo y la declaralabras comunes del idioma incin de qu PIC se va a utilizar.
gls. Por ejemplo "equ" proviene La segunda es el encabezado en
de "equal" que significa igual. En donde se le da nombre a los litela figura 4.3.1 le damos una tabla rales (nmeros hexadecimales)
con ms ayudas.
ms importantes. La tercera es el
Electrnica y Computacin
programa principal y la cuarta
las subrutinas (tabla 1).
Analicemos el encabezado,
las primeras lneas hasta la etiqueta ptob ya las conocemos
del programa anterior. Luego tenemos tres sentencias que le dan
nombre reg1, reg2 y reg3 a tres
registros de uso general, ubicados en las posiciones de memoria RAM destinadas a los registros. Recuerde que las primeras
12 posiciones hasta 0B estn
ocupadas por registros fijos. A
La seccin principal del programa es muy similar a la utilizada en el primer programa para
encender permanentemente un
Tabla 1
led (tabla 2).
; Secuenciador de encendido de un led
list
p=16C84
;micro PIC16C84
Siempre se comienza a anali;===========================================================
zar el programa observando qu
portb
equ
06
;el puerto b se ubica en la direcocurre al realizar un reset. En escin de
te caso, vemos que todo comien;memoria RAM06
za en la posicin 00 de la mereg1
equ
0c
;asignacin de los resgistros
moria de programa. En la sidonde se cargan los
guiente posicin se enva el conreg2
equ
0d
;diferentes literales
reg3
equ
0e
;
trol del programa a la posicin
grueso
equ
40
;al literal 40 lo llamamos grueso
comenzar, en donde se predismedio
equ
40
;al literal 40 lo llamamos medio
pone el puerto b para operar cofino
equ
50
;al literal 50 lo llamamos fino
mo salida. Luego, comienza el
;===========================================================
programa principal en el etiqueta
reset
org
0
;un reset enva a la posicin 00
ppal, en donde se carga el regisde la memoria
tro w con el nmero hexadeci;de programa.
Goto
comienzo ;reenvo al comienzo del programa
mal 01. Cuando este nmero se
------;---------------------------------------------descarga en el puerto b se en------;---------------------------------------------ciende el led conectado en RB0.
Ahora se enva el
control a la subrutina
Tabla 2
reset
org
0
;un reset enva el programa a la posicin 0
demora porque pretengoto
comenzar ;se enva el control al comienzo
demos que el led quede
comenzar
movlw 00
;se carga w con 00
encendido algo menos
tris
ptob
;se programa el puerto b como salida
de un segundo. Cuando
ppal
movlw 01
;se carga w con 01
se cumpla ese tiempo
movwf ptob
;se descarga w en el puerto b para
volver el control desde
;encender el led conectado RB0
demora continuando
call
demora
;se mantiene el led encendido por
;un intervalo de tiempo
por la carga de w con el
movlw 00
;se carga w con 00
hexadecimal 00. Al desmovwf ptob
;se descarga w en el puerto b para
cargar w en el punto b
;apagar el led de RB0
se produce el apagado
call
demora
;se mantiene el led apagado por
de led conectado en
;un intervalo de tiempo
RB0.
goto
ppal
;continua el programa en el principio
;hasta realizar un reset
Nuevamente el conSaber Electrnica N 147
55
movlw
movwf
dem3
movlw
movwf
dem2
movlw
dem1
movwf
decfsz
goto
decfsz
goto
decfsz
goto
retlw
end.
56
Electrnica y Computacin
comienzo de la subrutina y 2 ciclos al final para llegar a un valor de 1.015.044 ciclos de instruccin.
La duracin de un ciclo de
instruccin depende del cristal
utilizado. Si usamos un cristal de
4MHz cada ciclo de instruccin
dura 1 y tendramos una demora de 1,015 seg. El led estara
encendido casi un segundo y
apagado otro tanto.
Prcticamente todas las palabras de este artculo describiendo como funciona el programa
principal y la subrutina de demora pueden representarse en
un diagrama de flujo como el
mostrado en la figura.4.6.1 para
el programa principal o el mostrado en la figura.4.6.2 para la
rutina de demora.
4.7 CONCLUSIONES
Y EJERCICIOS
Si usted era un "analgico"
puro y vio encender y apagar un
led comandado por un microprocesador, seguramente se habr emocionado con su obra.
Deje que los "digitales" se burlen
menospreciando su obra; ellos
nunca podrn aprender las tcnicas analgicas en el poco tiempo
que usted le llevar aprender las
digitales. Un dispositivo actual
tiene un microprocesador pero
tambin tiene un entorno analgico al que se debe controlar y
ese entorno es nuestra ruina.
Los microprocesadores son fciles de reprogramar, aproveche
esta cualidad intrnseca de los
mismos y haga cambios en el
programa; desde l ms elemen-
57
58
Hasta hoy
sabemos poco
de microprocesadores pero
si usted realiz
los dispositivos seguramente ya estar viendo un programa ms claro
y adems ya est seguro de que
esta vez podr terminar su
Videos de Electrnica
En castellano, con temas completos.
Unicos pensados para el mercado local, preparados por expertos del Centro Japons de Informacin Electrnica
Pdalos en Editorail Quark SRL
Herrera 761 (1295) Capital Federal