Sunteți pe pagina 1din 6

Cómo se Diseñan los Programas para PICs

P ARTICIPE DEL C ONCURSO Y GANE G RANDES P REMIOS

NUESTRO CONCURSO DE DISEÑO CON PIC YA FUE LAN-


ZADO (VEA SABER Nº 155) Y YA COMENZAMOS A RECIBIR
C ÓMO S E D ISEÑAN LO S CONSULTAS SOBRE EL MISMO POR LO QUE SUPONEMOS
QUE SERAN MUCHOS LOS INSCRIPTOS. MIENTRAS TAN-

P ROGRAMAS PARA TO SEGUIREMOS ESTUDIANDO LA PROGRAMACION DE


LOS PIC. EN ESTE ARTICULO VAMOS A ACLARAR COMO
SE DISEÑAN LOS PROGRAMAS EN LA PRACTICA UTILI-

P I CS ZANDO RUTINAS PREDISEÑADAS Y VAMOS A ANALIZAR


COMO SE REALIZAN LAS OPERACIONES MATEMATICAS
MAS COMUNES.

Por Alberto H. Picerno


Serie: “Educando al Rey Micro”, parte 14

14.1 INTRODUCCION gramador que conoce su oficio, es una de 1 minuto, el programador debe es
persona muy ordenada que hace sus pro- blecer fehacientemente su funcionam
En la industria electrónica, nada se gramas de modo tal, que sólo sirven para utilizándola en forma independiente
construye desde cero. Siempre se comien- unir otros programas que ya diseñó pre- (usándola como un pequeño program
za con una base que ya se sabe que fun- viamente, o inclusive utilizando una bi- una ves que esté seguro de su funcion
ciona, a la cual se le agregan cosas o se la blioteca de programas de otros programa- miento la mantendrá almacenada en
modifica para lograr un nuevo producto. dores. gún subdirectorio de su disco rígido,
Es decir que este nuevo producto nunca Nosotros, sin decir nada, ya utiliza- puede llamar “librería de rutinas” o “
es totalmente nuevo, siempre es una espe- mos este concepto creando algunas rutinas co de rutinas”, como si fuera un texto
cie de reedición ampliada y mejorada. El que utilizamos en varios de nuestros pro- Cuando necesite alguna de estas rutin
autor trabajó en el desarrollo de casi todos gramas básicos de aprendizaje. Recuerde deberá utilizar el procedimiento de “s
los productos de una vieja empresa argen- por ejemplo el subprograma de retardo o cionar texto” “copiar” y “pegar” para
tina Tonomac que lamentablemente ya no demora que utilizamos en varios diseños. esta rutina al programa principal que
existe y no recuerda que alguna ves le dije- Por lo tanto, lo invitamos a crear una bi- diseñando y de ese modo “llamar” al
ran: diseñá un nuevo TV color de 20” pe- blioteca de rutinas que lo ayuden en el cedimiento en el momento adecuado
ro no utilices nada del anterior. Siempre la momento de encarar el diseño de un pro- En este artículo conoceremos má
orden era algo así como hay que diseñar grama cualquiera. Este modo de trabajar fondo las instrucciones que forman c
un nuevo TV color de 20”, la sección de mas ordenado, reducirá bastante su traba- rutina y cuales son las condiciones o
deflexión es bastante moderna, así que se jo repetitivo para que sus neuronas se pue- dos que se modifican ante la ejecució
la puede dejar sin modificar, en cambio dan dedicar mas al creativo, que es el que cada instrucción. Los estados tambié
para la parte de señal salieron unos nuevos rinde beneficios económicos e intelectua- mados banderas (flags en inglés) form
circuitos jungla que son mejores y mas ba- les. parte del registro que llamamos “regi
ratos, así que cambia el diseño para adap- Una rutina se define como un bloque de estado” (status) cuando presentam
tar alguno de ellos. o procedimiento independiente para reali- características generales del PIC16C8
En el diseño de programas la cosa no zar una tarea específica. A esa rutina se la el F84). Este registro está localizado e
es muy diferente. Un programador no podrá llamar desde cualquier parte del forma fija en la posición de memoria
puede partir desde cero cada ves que debe programa principal. Como cada rutina tiene tres bits que son los más impor
crear un programa, porque entonces su realiza una labor particular, como operar y sobre los que tenemos que ejercer u
trabajo de creación seria enorme. Un pro- un relé o establecer una base de tiempos vigilancia para determinar la ejecució

Saber Electrónica Nº 157 4 41


Electrónica y Computación
los siguientes pasos del programa que registros de fuente, destino y los es-
tenemos que ejecutar. El bit menos tados del registro status Z DC y C,
significativo o bit cero (bit0) es el co- pero primero vamos a aprender el al-
rrespondiente al estado de acarreo o goritmo de la suma en binarios. Ver
Carry. El siguiente (bit1) corresponde figura 14.2.2.
al DC (de Digit Carry) o acarreo de El algoritmo de la suma es el
dígito y el tercero de ellos (bit2) es el mismo que conocemos desde la es-
correspondiente al estado Z (de Ze- cuela primaria, sólo que aplicado a
ro). Por ahora todo esto puede pare- los números binarios. Realicemos la
cer confuso, pero luego se irá aclaran- suma de la izquierda. Comencemos
do con ejemplos. sumando la última columna 1+0 es 1
Cuando escribimos un programa, que colocamos como resultado; ob-
no debemos olvidar algo fundamental serve que en este caso no hay acarreo
que es el formato de las instrucciones. a la siguiente columna. Luego debe-
Recuerde que primero se escribe el re- mos sumar la penúltima columna
gistro fuente y a continuación el re- 1+0 que es 1 y así sucesivamente has-
gistro destino de la instrucción que está nocemos y se llama ADDWF; en la figura ta llegar a la primer columna. El resultado
realizando. Se llama registro fuente a 14.2.1 se pueden observar todos los deta- se puede expresar con sólo ocho números
aquel registro que se utiliza como origen lles de su ejecución. o lo que es lo mismo que el acarreo hacia
de la información y registro destino a En este momento de nuestro estudio, una columna extra da cero, cosa que ex-
aquel que se utiliza para almacenar la in- lo que más nos interesa analizar son los es- presamos con un cero a la izquierda del
formación procesada. Este formato puede tados que se afectan, ya que ellos nos pue- resultado.
tener excepciones para aquellos casos mas de servir para tomar diferentes decisiones Ahora vamos a hacer lo mismo con el
utilizados: por ejemplo si deseamos que el en nuestro programa. En la operación de segundo par de números. En la última co-
registro de destino sea el registro W pode- suma el estado C (carry) no tiene impor- lumna tenemos que 1 + 1 es 2, pero el dos
mos optar por escribir la W en la instruc- tancia sobre el resultado, pero puede que- lo expresamos en binarios como 10 así
ción o escribir 0. Si deseamos que el regis- dar alterado y esa alteración se la puede que colocamos el cero en el resultado y el
tro destino sea el mismo registro fuente, utilizar para tomar alguna decisión en el uno lo acarreamos arriba a la columna an-
podemos escribir un 1 o no escribir abso- resto del programa. Un buen ejercicio pa- terior. Ahora tenemos que sumar la penúl-
lutamente nada. Todo esto se puede acla- ra entender todo esto es realizar un ejem- tima columna como 1 + 0 + 1 = 2 o 10
rar con un ejemplo de instrucciones que plo utilizando directamente números bi- en binario; otra ves tenemos que colocar
parecen diferentes pero que en realidad narios para observar como se afectan los un cero en el resultado y acarrear el uno
producen el mismo resultado, tal como se
observa en la tabla 1. Tabla 1
Las rutinas mas utilizadas, son aque-
llas que corresponden a las cuatro opera- incf--------12,w es igual a incf-----------12,0
ciones elementales de suma resta multipli- (incrementar en una unidad el registro f y el resultado volcarlo en W)
cación y división. Muchas veces se ingre-
san al PIC uno o mas números (por ejem- iorwf---------14 es igual a iorwf---------14,1
plo si queremos construir una calculadora (realizar la operación lógica OR entre el registro F y el registro W)
con un PIC) y luego se desea realizar algu-
na operación matemática con ellos. En es-
tos casos debemos tener guardadas rutinas
para la suma, la resta, la división y la mul-
tiplicación.

14.2 LA OPERACIÓN
DE SUMA

En los PICs basta con una sola ins-


trucción para implementar una suma. La
instrucción que se debe utilizar ya la co-

42 Saber Electrónica Nº 157


Cómo se Diseñan los Programas para PICs
nocer que se llenó el registro
cuando DC o C llegan al punto
de sobreflujo, saltando afuera del
loop del programa.

14.3 LA OPERACION
DE RESTA

Similarmente a la suma, esta


operación se ejecuta con un solo
paso de programa utilizando la
instrucción SUBWF. En la figura
hacia la columna anterior. Así continua- meros (2 elevado a la cuarta potencia) o 14.3.1 se pueden observar los detalles de
mos hasta llegar a la primer columna en 15 incluyendo al cero. El estado Z se acti- esa operación.
donde el resultado vuelve a ser 10; ahora va sólo cuando el resultado de la suma es En la operación de resta, el estado C
dejamos el cero en el resultado y el uno lo igual a cero, que es lo mismo que decir (carry) no tiene importancia sobre el re-
sumamos a una columna imaginaria, ante- que el registro destino tiene un valor nulo. sultado, pero puede quedar alterado y esa
rior a la primera, que tiene un cero en Si Ud. se pregunta cómo se pueden alteración se la puede utilizar para tomar
ambos números así que se transporta co- tomar decisiones en el programa basándo- alguna decisión en el resto del programa.
mo está al resultado (el PIC tiene destina- se en el registro de estado, le podemos Un buen ejercicio para entender todo esto
dos sólo 8 dígitos para el resultado y por aclarar que ese registro se puede explorar es realizar un ejemplo utilizando directa-
lo tanto este último número rebasa su ca- con una sentencia BTFSC f,b (pro- mente números binarios para observar co-
pacidad y no queda acumulado en el re- bar bit b de f y saltar si es cero). Por ejem- mo se afectan los registros fuente, destino
gistro destino). plo se puede utilizar un loop en donde se y los estados del registro status Z DC y C,
En la figura 14.2.3 tenemos una tabla adiciona una unidad a un número y reco- pero primero vamos a aprender el algorit-
con la operación resumi- mo de la resta en bina-
da de los números del rios. Ver figura 14.3.2.
ejemplo anterior y de dos Observe que el algo-
operaciones más de su- ritmo es idéntico al que
ma. conocemos para números
Observe el valor del decimales; solo hay que
carry C; cuando una su- tener en cuenta que
ma lleva acarreo igual a 1 cuando el número supe-
significa que se superó el rior de una columna es
valor máximo de 8 dígi- menor que el inferior, en
tos que puede acumular lugar de pedir 10 unida-
un registro (0FF en he- des a la columna de la iz-
xadecimal o 225 en deci- quierda se le pide 2 uni-
mal). En caso contrario dades. Ahora sí, realice-
el acarreo es nulo, que mos la operación. Co-
también se indica como menzamos por la colum-
que no se produjo sobre- na menos significativa
flujo. El acarreo de dígi- (derecha) la primer resta
to o DC es algo similar a es de 1 menos 0 que da
lo anterior, pero sólo so- como resultado un 1. En
bre el nible (grupo de 4 la siguiente columna el
dígitos) menos significa- numero superior es me-
tivo (el de la derecha). nor que el inferior, por lo
Esto tiene como límite el tanto esta columna le pi-
hexadecimal 0F o el de- de 2 unidades a la de la
cimal 15 (recuerde que izquierda y la operación
con cuatro bits solo se es 2 – 1 = 1. Pero el dos
pueden generar 16 nú- en binario se escribe co-

Saber Electrónica Nº 157 43


Electrónica y Computación
y tenemos que tener los conceptos bien
claros sobre ellas.
Nosotros conocemos las dos instruc-
ciones de rotación desde hace mucho
tiempo, inclusive realizamos con una de
ellas un sencillo dispositivo que rotaba el
encendido de un conjunto de leds. Sin
embargo hay ciertos detalles de estas ope-
raciones que no fueron analizados en pro-
fundidad por razones didácticas. Anterior-
mente, no mencionamos que la rotación
mo 10 y por lo tanto en la columna si- sultado de la resta es igual a cero, que es incluía el valor cargado en el carry C tal
guiente queda un 1, al que se le resta 0 lo mismo que decir que el registro destino como ocurre en realidad. Recuerde que las
quedando como resultado un 1. La si- tiene un valor nulo. operaciones de rotación eran dos, hacia la
guiente columna puede ejecutarse sin in- derecha y hacia la izquierda. En la figura
convenientes y así sucesivamente hasta lle- 14.4 LAS INSTRUCCIONES 14.4.1 encontramos un detalle de la rota-
gar a las dos columnas mas significativas DE ROTACION ción a la derecha y en la figura 14.4.2 un
donde vuelve a ocurrir que el número su- detalle de rotación a la izquierda.
perior es menor que el inferior. En la se- Tal ves le resulte extraño que este mo- Mucho más claramente que en las
gunda operación siempre ocurre que el mento expliquemos la operación de rota- descripciones anteriores se puede visuali-
numero superior es mayor que el inferior ción. En efecto, si habíamos quedado en zar el efecto de las rotaciones como lo
y por lo tanto no se presenta ningún pedi- que analizaríamos las cuatro operaciones mostramos en la figura 14.4.3.
do de unidades entre las columnas. En la fundamentales ¿porque explicamos la ope- Observe que en este caso el carry C
figura 14.3.3 resumimos estas operaciones ración de rotación?. Lo hacemos porque opera activamente en el resultado. Para
y agregamos otras dos. las operaciones de multiplicación y divi- que Ud. observe qué relación existe entre
En una sustracción, el carry C se colo- sión emplean las operaciones de rotación la operación de rotación, el producto y el
ca en uno cuando el resul- cociente, le adelantamos que
tado de la resta es un nu- una operación RRF equivale a
mero positivo. Esto se hace un producto por dos y una
porque no tenemos otra RLF equivale a una división
modo de indicar el signo por dos. Como ejercicio para
del resultado, ya que los el lector le proponemos que
ocho dígitos del registro es- tome un número, lo multipli-
tán cubiertos con la cifra que por dos y luego escriba los
significativa del resultado. dos números obtenidos en no-
El signo se guarda por lo tación binaria y observe que se
tanto en el carry del regis- produjo una perfecta rotación
tro status. Si el resultado es de los bits.
negativo C se hace igual a
cero. 14.5 LA OPERACIÓN
Con el acarreo de dígi- DE MULTIPLICACION
to, se realiza algo similar
pero considerando solo el La operación de multipli-
nibble menos significativo. cación se puede resolver de di-
Es decir que DC será uno ferentes modos. Uno de esos
cuando el nibble menos modos es resolver el algoritmo
significativo del registro de de la multiplicación tal como
trabajo w es menor que el lo hacemos con los números
nibble menos significativo decimales, pero adaptado al
del registro fuente. En caso trabajo con números binarios.
contrario DC se ubica en 1. Sin embargo para los micro-
Por ultimo, el estado Z procesadores es fácil resolver
se activa solo cuando el re-

44 Saber Electrónica Nº 157


Cómo se Diseñan los Programas para PICs
una multiplicación ción; entendiéndose por más eficaz a
utilizando su defini- aquella rutina que resuelve el problema en
ción, es decir como el menor tiempo.
una suma reiterada, Algo para tener en cuenta, cuando se
debido a su enorme desea diseñar una rutina para el producto
velocidad de cálculo. es que el resultado siempre va a ser bas-
Tomemos un ejemplo; tante mas grande que el multiplicador y el
si deseo multiplicar el multiplicando. Esto significa que si deseo
número 41 por el nú- multiplicar números de 8 bits (que llama-
mero 25, puedo sumar remos octetos) debo acumular el resultado
25 veces el numero 41 en un registro de 16 bits; como tal regis-
y obtendré el resultado tro no existe usaremos dos registros comu-
buscado ya que 41 x nes de 8 bits. Uno de esos registros carga-
25 es igual a: rá al octeto alto del resultado y el otro car-
gará el octeto bajo.
41+41+41+41........+41 En la figura 14.5.1 mostramos el dia-
veinticinco veces. grama de flujo de nuestra rutina y en la fi-
gura 14.5.2 la rutina completa. Muchos
Con números bi- lectores me comentan que les resulta más
narios ocurre exacta- fácil entender el programa, que el diagra-
mente igual y por eso ma de flujo. Eso es porque nosotros da-
una rutina para expre- mos programas con una gran cantidad de
sar el producto de dos comentarios; pero muchas veces se encon-
números emplea la trará con programas que no los tienen y
operación de suma. entonces el diagrama de flujo le prestará
En realidad, la ru- una gran utilidad. Acostúmbrese a utilizar
tina mas eficaz es una a ambos, pero si prefiere entender primero
que combina las dos el programa explicado y luego el diagrama
posibilidades de solu- de flujo, hágalo como lo desee.

Saber Electrónica Nº 157 45


Electrónica y Computación
14.6 LA OPERACIÓN DE mienza siendo igual a 1. Asi se continúa programas completos, sino simplemente
DIVISION hasta que el resultado de la resta sea nega- partes de un programa o rutinas que son
tivo, en ese momento se calcula el divi- llamadas por el programa principal. Po-
Así como una multiplicación implica dendo definitivo sumando el contenido dríamos diseñar un programa de prueba
una operación de suma reiterada, la divi- del registro W al último dividendo calcu- de las rutinas, pero no tiene mayor senti-
sión se puede realizar por restas sucesivas lado. En la figura 14.6.1 damos el diagra- do porque por ahora no tenemos modos
donde el divisor se utiliza como sustraen- ma de flujo de la división en tanto que en de visualizar el resultado. Justamente todo
do volcándolo en el registro de trabajo W. la figura 14.6.2 entregamos la rutina co- lo que acabamos de explicar está dirigido
El minuendo en tanto es igual divisor. Si rrespondiente. a la conversión de los resultados (que has-
el resultado de la resta es positivo (carry C Tanto este programa como el de la ta ahora sólo son estados del puerto de sa-
= 1) significa que debe incrementarse el multiplicación, no pueden ser empleados lida que representan a un número binario)
número utilizado como cociente y que co- directamente ya que en realidad no son en algún tipo de numeración que pueda
ser visualizada en un display. Cuando se-
pamos visualizar los resultados será el mo-
mento oportuno para crear algún progra-
ma que permita visualizar el resultado de
un cociente o un producto.

14.7 CONCLUSIONES

Este fue un artículo poco práctico, ya


que de él no emerge ningún dispositivo
que se pueda construir. Espero que nues-
tros lectores no se sientan defraudados,
pero para pasar a la realización de futuros
dispositivos que utilizan al PIC como
componente central, necesitábamos ad-
quirir el conocimiento volcado en este ar-
ticulo.
Inclusive el autor considera que enten-
der perfectamente como funcionan estas
rutinas no es algo imprescindible. Si sus
conocimientos de matemáticas no son
profundos, es muy posible que se haya
perdido en nuestras explicaciones de cómo
se realiza un producto o un cociente. No
se preocupe, emplee las rutinas aunque no
las entienda completamente. El avance de
la ciencia es tal, que no se puede tratar de
entender todo. Es muy probable que in-
clusive no recuerde bien el algoritmo de la
división de dos números decimales, ya que
el uso de la calculadora nos evita la tedio-
sa tarea de utilizarlo. No se preocupe, uti-
lice las rutinas como una máquina de cal-
cular y mantenga tranquila su conciencia.
En el próximo artículo, va a tener
oportunidad de conectar un display de
siete segmentos a un PIC y poco a poco,
vamos a explicarle cómo se puede ingresar
información para que este display nos re-
sulte de utilidad en futuros diseños. ✪

46 Saber Electrónica Nº 157

S-ar putea să vă placă și