You are on page 1of 93

Microcontroladores

Ing.Ricardo Vega
ingRicardovega@hotmail.com

Al trmino del curso, el alumno ser


capaz de:
Explicar

el funcionamiento de los
microcontroladores, a partir del anlisis
de su arquitectura.
Desarrollar programas en lenguaje
ensamblador con base en las
arquitecturas de microcontroladores
estudiadas.
Desarrollo de subrutinas matemticas
con base en las arquitecturas de
microcontroladores estudiadas.
Identificar distintas aplicaciones de los
microcontroladores.

Criterios de evaluacin
Parcial:
Tareas
Practicas
Examen

20%
30%
50%

Semestral

Primer parcial
Segundo parcial
Tercer parcial
Proyecto final
Semestral

20%
20%
20%
20%
20%

1. MICROCONTROLADORES
Introduccin.
2. Comparacin entre microcontrolador
y microprocesador.
3. Arquitectura de microcontroladores.
4. Microcontroladores pic
1. Descripcin de la familia
2. Pic16f84a
1.

1.1 Introduccin

Es uncircuito integradoprogramable, capaz


ejecutar las rdenes grabadas en su memoria.

de

Un microcontrolador incluye en su interior las tres


principales
unidades
funcionales
de
unacomputadora:unidad
central
de
procesamiento,memoriayperifricosde
entrada/salida.

Es decir: es un computador completo de


capacidades limitadas que est contenido en un
circuito integrado y se destina a gobernar una tarea o

1.2 Comparacin entre


microcontrolador y
microprocesador.
Los microprocesadores tienen una
arquitectura destinada al
procesamiento de la informacin.

En el caso de los
microcontroladores
tienen una
arquitectura
destinada a procesos

1.2 Arquitectura de
microcontroladores
Un
microcontrolador
posee
todos
los
componentes de un computador, pero con
algunas caractersticas fijas que no pueden
alterarse. Las partes principales de un
microcontrolador son:

Procesador.
Memoria no voltil para contener el
programa.
Memoria de lectura y escritura para
guardar datos.
Recursos auxiliares:
Lneas
de
E/S
para
controlar
los
Circuito de reloj.
perifricos:
Temporizadores.
Comunicacin paralelo.
Perro guardin.
Comunicacin serie.
Conversores AD y DA
Diversos puertos de comunicacin.
Comparadores analgicos.
Proteccin contra fallos de
alimentacin.
Estado de reposo o de bajo

Unidad Aritmtica Lgica ALU


Esta compuesta por un circuito combinacional
complejo que se encarga de realizar las
operaciones aritmticas (suma, multiplicacin...),
lgicas (AND, OR...) desplazamientos, etc.
Como
se
utiliza:Normalmente uno de
los datos de entrada proviene
del
registro
acumulador
(ACUM) y el otro de un
registro interno, una posicin
de memoria o como literal de
la propia instruccin.

Arquitectura

Reloj
Para que el microprocesador genere todas las
seales necesarias para controlar los restantes
bloques del sistema y para que todo el sistema
est sincronizado (que cada elemento funcione
cuando le corresponde), se parte de ondas
cuadradas de frecuencia constante generadas
normalmente por un cristal de cuarzo.
La frecuencia de este reloj se mide en Khz, Mhz o
GHz y determina la velocidad de funcionamiento y
proceso de todo el sistema.

El periodo de tiempo de esta seal de reloj se


denomina ciclo de reloj.

Unidad Central de Proceso o


CPU
Es la parte mas importante del sistema
microprogramable. Es donde se realiza la
interpretacin
y
ejecucin
de
las
instrucciones, se generan todas las rdenes
de control para gobernar todo el sistema y se
realizan las operaciones aritmticas y lgicas.
Todas sus funciones se
realizan en sincrona con la
seal del reloj, por ello, la
frecuencia del reloj define la
velocidad del sistema.

Ciclo mquina

A partir de esta seal de reloj, se genera el denominado


ciclo mquina, que est formado por dos fases:

Fase de bsqueda (Fetch cycle):En esta fase se realiza la bsqueda de


una instruccin en memoria y se guarda en el registro correspondiente.

Fase de ejecucin (Execute cycle):En esta fase se ejecuta o realiza la


transferencia de datos ordenada.

Este

ciclo mquina tarda en realizarse mas o menos


tiempo dependiendo del fabricante.

veces para completar la ejecucin de una instruccin se


requiere mas de un ciclo mquina.

El

nmero de ciclos mquina necesarios para procesar por


completo una instruccin se denomina ciclo de instruccin.

1.3 Microcontroladores
pic

Son
una
familia
demicrocontroladores
tipoRISCfabricados porMicrochip Technology Inc.

Estos se pueden clasificar, segn el


tamao de sus instrucciones, en tres
grandes grupos o gamas:
Gama baja:
12 bits.
Gama media:
bits.
Gama alta:
16 bits.

microcontroladores de
microcontroladores de 14
microcontroladores de

1.4 Familia de
microcontroladores PIC
Tambin
los
microcontroladores
se
pueden clasificar atendiendo la longitud
de los datos nativos que manejan las
instrucciones que corresponde con el
tamao del bus de datos y el de los
registros de la CPU, que pueden ser de
4,8,16,32 bits.
Agosto

Clasificacin de los micro controlador PIC


de 8 bits: La gama base se caracteriza:
Juego de 33 instrucciones mquina de 12 bits.
Memoria de programa hasta 2K palabras.
Pila de dos niveles de profundidad.
No tiene interrupciones.
Esta organizada en pginas de 512 palabras
cada una.
Memoria de datos organizada en bancos de hasta
32 registros cada uno.
Recursos limitados.
Compuesta por 14 modelos. Seis estn encapsulado
solo con 6 terminales.

Clasificacin de los micro controlador PIC


de 8 bits: La gama media se caracteriza:
Juego de 35 instrucciones mquina de 14 bits.
Pila de 8 niveles de profundidad.
Dispone de un vector de interrupciones.
Un amplio repertorio de capacidad de memoria y
recursos.
Memoria de programa (palabra) mnima 896 y
14336 mxima
Memoria de programa organizada en pginas de 2k
palabras.
Memoria de datos 64 bytes mnima y 368 bytes
mxima.
Memoria de datos organizada en bancos de 120
registros cada uno, con cuatro bancos como
mximo.
Interrupciones internar y externas.

Clasificacin de los micro controlador PIC


de 8 bits: La gama Mejorada se caracteriza:
Juego de 77 instrucciones mquina de 16 bits.
Pila de 31 niveles de profundidad.
Dispone de dos vector de interrupciones.
Perifricos especializados.
Multiplicador por hardware.
Encapsulados mximo de 80 terminales.
Memoria de programa hasta 128KBytes
Memoria RAM hasta 3963 bytes.
Gama de 71 modelos diferentes.

2. Descripcin de PIC16F84A
1.
2.
3.
4.
5.

Descripcin general.
Terminales.
Siclo maquina y siclo reloj.
Descripcin del pipeline.
Organizacin de memoria.
1. Memoria de programa
2. Memoria de datos

2. 1 Descripcin general

Solo contiene 35 palabras de instrucciones.

Todas las instrucciones se ejecutan en un ciclo, excepto la


de salto que se ejecutan en dos ciclos.

Velocidad mxima del reloj de entrada es de 20MHZ.

1024 palabras de memoria del programa.

Ancho de la palabra de instruccin de 14 bits.

68 bytes de memoria de datos (RAM).

Ancho de la memoria de datos de 8 bits.

64 bytes de memoria de datos (EEPROM).

15 Registro de hardware de funciones especiales.

Pila de 8 niveles de profundidad.

Tres modos de direccionamiento (directo, indirecto y bit a


bit).

Cuatro fuentes de interrupciones (RB0/INT, desbordamiento


TMR0,interrupcin por cambio de estado y escritura de
datos completa EEPROM.

2.1 Descripcin general


PIC16F84A:
Caractersticas de los perifricos
13 E/S configurables.
Alta corriente en las terminales (25mA de fuente y drenaje por
terminal).
TMR0(timer/counter) de 8 bits con prescalador programable de 8
bits.
Caractersticas especiales del microcontrolador
10,000 ciclos de lectura/escritura en la memoria FLASH de
programa.
10,000,000 ciclos de lectura/escritura de la memoria EEPROM de
datos con una retencin mayor a 40
aos.
Programacin ICSP va dosTecnologa
lneas.
FLASH/EEPROM
Rango
de(PWRT),
operacin
comercial
2v a
Poweron Reset (POR), Powerup
Timer
Oscilador
Startup
5.5V.
timer (OST).
Bajo consumo de energa (tpico):
Watchdog Timer (WDT).
< 2mA a 5V, 4MHz.
Proteccin de cdigo.
15uA a 2V, 32KHz.
Modo de ahorro de energa. < o.5uA en standby a 2V.
Diferentes tipos de oscilador.

2.2 Terminales

2.3 Ciclo mquina-reloj.


Un ciclo mquina es la unidad bsica de
tiempo que utiliza el microcontrolador.
Para el PIC16F84 el ciclo mquina
equivale a 4 ciclos de reloj, por lo tanto
el tiempo que tarda en producirse un
ciclo mquina es igual a cuatro veces el
periodo del oscilador.

2.3 Ciclo mquina-reloj


Las instrucciones del microcontrolador
PIC16F84 necesitan 1 ciclo mquina
para ejecutarse, excepto la de salto
que necesitan de dos ciclos.
Por lo tanto un ciclo de instruccin es
el
tiempo
en
ejecutarse
una
instruccin, que pueden ser de 1 a
dos ciclos, dependiendo el tipo de
instruccin.

2.4 Descripcin del


pipeline
Un
procesador
segmentado
o
Pipeline realiza simultneamente la
ejecucin y la bsqueda de cdigo
de la siguiente, de esta manera se
puede ejecutar una instruccin en un
ciclo.

2.5.1 Memoria de
programa
La

memoria de programa est organizada


con palabras de 14 bits con un total de 1
K, del tipo Flash, que durante el
funcionamiento es de solo lectura.

En

una sola palabra se agrupa el cdigo de


la instruccin y el operando o su direccin.

La

pila o stack, de 8 niveles, Se utiliza


cuando ejecutamos un subproceso o
subrutina.

2.5.1 Memoria de
programa

2.5.2 Memoria de datos.


Est organizada en dos pginas o
bancos de registro, banco 0 y banco
1. Para cambiar de pgina se utiliza
un bit del registro STATUS (RP0).
Cada banco se divide a su vez en
dos reas:
RFS (Registros de Funciones
Especiales)
RGP (Registros de Propsito General)

Registros
Un

registro es un espacio en la memoria de


datos del microcontrolador en el que podemos
guardar informacin, existen tambin unos
registros en los cuales podemos configurar el
microcontrolador o saber el estado de este o
algunos de sus perifricos.
Un registro est compuesto por 8 bits los
cuales se representan dndoles un numero
segn su posicin, de esta manera el bit
menos significativo (LSB) se le da el nmero 0
y el ms significativo (MSB) el 7.

Donde X puede ser 1 0.

A los bits del 0 al 3 se les denomina nibbles inferior, y del 4 al 7


se denominan nibbles superior.

Bancos

Banco 0

Banco 1

Registro de Status

Option registro

Intcon register

Configuration Word

3.- Ensamblador
1.2.3.4.5.-

Definicin
Instrucciones
Elementos de una instruccin
flags
Instrucciones de PIC16F84A

5.1 Instrucciones orientadas a bytes


5.2 Instrucciones orientadas a bits
5.5 Instrucciones de control

6.-

Elementos del lenguaje


ensamblador

3.1 Definicin
Es
unlenguaje
de
programacindebajo
nivelpara los computadores,microprocesadores,
microcontroladoresy otroscircuitos integrados
programables.
Implementa una
representacin simblica
de loscdigos de
mquinabinarios y otras
constantes necesarias para
programar una
arquitecturadada deCPUy
constituye la
representacin ms directa
delcdigo mquina

Cdigo mquina y lenguaje ensamblador


Cualquier

microcontrolador y microprocesador
ejecutan instrucciones en su lenguaje mquina. El
lenguaje o cdigo mquina esta constituido por
cdigos binarios de las instrucciones que puede
ejecutar el microcontrolador o microprocesador.

Elaborar

programas directamente en lenguaje


mquina es difcil, para reducir el nivel de
dificultad, se crearon los lenguajes ensambladores,
en los cuales las instrucciones que en lenguaje
mquina se representaban por grupos de bits, son
representados por smbolos mnemotcnicos.

Elementos del lenguaje


ensamblador
Un programa en lenguaje ensamblador
es una secuencia de lneas de texto,
cada una de las cuales puede ser:
Instruccin del repertorio de
instrucciones del microcontrolador.
Directiva del ensamblador.
Macroinstruccin, o simplemente macro.
Comentario.
Etiqueta.
Lnea en blanco.

Estructura de un programa
en ensamblado

Instrucciones

Columna 1:Etiquetas.Las etiquetas se rigen por las


siguientes normas:
Debe situarse en la primera columna.
Debe contener nicamente caracteres alfanumricos.
El mximo de caracteres es de 31.
Columna 2:Operacin.En esta columna se situarn las
instrucciones. El campo del cdigo de operacin es el
nico que nunca puede estar vaco; ste siempre
contiene una instruccin o una directiva del ensamblador.

Instrucciones

Columna 3:OperandosEl campo de operandos o de


direccin puede contener una direccin o un dato, o puede
estar en blanco. Normalmente contendr registros o
literales con los que se operar (f, l o k , b y w).
Columna 4:Comentario.El campo del comentario o de
etiquetas es opcional. Aqu se situar cualquier
comentario personalizado que deseemos. Estos son tiles
para saber qu hace un programa sin tener que descifrar
el cdigo entero. El compilador (ensamblador) ignorar
todo texto ms all del carcter punto y coma ";".

3.3 Elementos de una


instruccin
En el caso del PIC16F84A y los de los PIC de
la gama media cada instruccin est
formada por una palabra de 14 bits que
utiliza un tipo de cdigo denominado
OPCODE(Cdigo
de
Operacin),
que
especifica elmnemnicode la operacin y
los operandos que correspondan, que son
los datos con los que opera la instruccin.

F (file register)
Este carcter se usa para definir
registros de cualquier tipo. Cualquier
instruccin que contenga este campo,
contendr la direccin de un registro, no
su contenido.
En el caso de los registros especiales
en vez de la direccin podemos poner
directamente el nombre del registro que
el ensamblador se encargar luego de
traducir a las direccin real.

W (working register)
Wno es un registro situado en un banco
de memoria, si no que es independiente.
A diferencia de lo anterior, cuando nos
referimos a l, nos referimos al
contenido.
Su uso es muy sencillo, pues lo usaremos
principalmente para pasar informacin
de un registro a otro, o para contener la
informacin
entre
dos
o
ms
instrucciones.

B (bit addres dentro de un


registro)
B es la direccin de un bit dentro de un
byte. En ciertas ocasiones en vez de
modificar o acceder a bytes tendremos
que modificar o acceder a bits. De esta
manera podemos especificar a una
instruccin que posicin ocupa el bit
sobre el cual recaer la accin que esta
ejecute. Al igual que en los registros
especiales,
podemos
poner
directamente el nombre de un bit
dentro de un registro.

l o k(literal)
Este valor ser almacenado en la
propia instruccin en tiempo de
ensamblado, esto significa que son
los valores que introducimos en las
instrucciones para que trabaje con
ellos.

D (destiny bit)
Donde encontremos d, debemos
especificar donde se almacenar el
resultado de una instruccin,
enwo en un registro.
Esto se define a travs de dos
valores:
1: El resultado se almacenar enf.
0: El resultado se almacenar enw.

3.4 Flags o Banderas


Los Flags o banderas son marcadores, representados por bits
dentro del registro deSTATUS, los mas importantes son:
Z:Flag de cero, se pone a 1 cuando una operacin que le afecta
da como resultado un 0.
C:Flag de Carry, se pone a 1 cuando la operacin que le afecta
sobrepasa el nivel de representacin del procesador, en nuestro
caso es 8 bits, de esta manera si sumamos a1111 1111
bun0000 0011 bel resultado seria0000 0010 by elbit de
Carrypasara a1.
DC:Flag de carry del nibbles inferior, este se comporta igual que
elbit de Carry, solo que el limite de representacin son los 4 bits
inferiores, de esta manera si tenemos0000 1111 by
sumamos0000 0111 b, el resultado ser0001 0110 by elbit
de DCse pone a 1, elbit de Carryestar a 0 al no superarse los
8 bits y elbit Za 0 al ser el nmero diferente de 0.

3.5.1 Instrucciones orientadas


a bytes
Siendo f y d los
dos operandos
fuente y destino
que se hallan
implementados
por registros de
8 bits de la
memoria
de
datos.

El registro f viene referenciado por la direccin de 7 bits


que ocupa, mientras que el destino slo por uno, que si
vale 0 es el w y si vale 1 es la fuente.

Formato general de las


instrucciones
Cada instruccin en lenguaje mquina (binario)
del PIC contiene un cdigo de operacin
(opcode) el cual puede ser de 3 a 4 o 6 bits,
dependiendo del tipo de instruccin,

Operaciones orientadas a bytes

El bit d especifica el destino del resultado de la operacin:


d = 0: destino w
d = 1: destino f
F = direccin de 7 bits del archivo de registros

3.5.2 Instrucciones orientadas


a bits
Responde a la sintaxis nemnico f,b, siendo f y
b los dos operandos. El registro f viene
referenciado por la direccin de 7 bits que
ocupa, mientras que el operando b representa
la posicin del bit que se desea modificar o
verificar del registro f, siendo 0 y 7 el valor del
bit menos significativo y mas significativo
respectivamente

Formato general de las


instrucciones
Operaciones orientadas a bits

b : Especificacin en tres bits del bit que se va a operar


F = direccin de 7 bits del archivo de registros

3.5.3 Instrucciones de
control
Responde a la sintaxis nemnico k,
siendo k una constante de 8 a 11 bits,
dependiendo de la instruccin.

Formato general de las


instrucciones
Operaciones con literales y de
control

k : Literal = Valor de un operando de 8 bits


Formato para CALL y GOTO

k : Literal = Valor de un operando de 11 bit

Directivas
Las directivas son instrucciones que
van
dirigidas
al
programa
ensamblador no al microcontrolador.
Mediante
directivas
se
puede
controlar
la
operacin
del
ensamblador y se le puede informar
de diversos aspectos de inters para
el correcto proceso de ensamblaje.

Directiva #INCLUDE
Indica que archivos debern tomarse en
cuenta a la hora de compilar el cdigo.
Normalmente se usa para incluir el
archivo de PIC que el ensamblador tiene
entre sus archivos.
Esta lnea debe colocarse al principio, y
tiene la siguiente sintaxis:

Directiva LIST
Este comando sirve para que el
compilador tenga en cuenta sobre
qu procesador se est trabajando.
Este comando debe estar en todo
proyecto,
situado
debajo
del
"include", con la siguiente sintaxis.

__CONFIG
La directiva __config se utiliza para
establecer los fuses (grabado de la
palabra de configuracin).

Directiva ORG
Esta directiva dice al ensamblador a
partir de que posicin de memoria
de programa se situarn las
siguientes instrucciones.
Recordemos que el 16F84A slo
tiene 1024 posiciones de memoria
flash para cdigo.

Directiva ORG
Inicia el programa en la posicin
0000h y luego pasa a la 0005h
para no utilizar la posicin del
vector de interrupcin. (0004 h)

Directiva EQU
El nombre viene de la palabra
"equal", (igual)". La directiva EQU
permite al programador "igualar"
nombres personalizados a datos o
direcciones. Los nombres utilizados
se
refieren
generalmente
a
direcciones de dispositivos, datos
numricos.

Directiva END
Esta debe ir incluida una sola vez
en todo el programa. En concreto,
esta debe situarse al final, para
indicar al ensamblador que el
programa ha finalizado. Esta
siempre debe estar presente,
aunque el flujo de nuestro
programa acabe en un bucle.
end

El direccionamiento
Para el PIC solamente existen 4 modos de
direccionamiento, entre los cuales, tres de
ellos ya fueron vistos de manera intuitiva
cuando vimos las instrucciones. Los modos de
direccionamiento tratan sobre la forma de
mover los datos de unas posiciones de
memoria a otras.
Direccionamiento

Inmediato
Direccionamiento Directo
Direccionamiento bit a bit
Direccionamiento Indirecto

Direccionamiento Inmediato
El
dato
manipulado
por
la
instruccin se codifica con la propia
instruccin. En este caso, el dato en
cuestin se denomina literal.
MOVLW k ;
Coloca el literal k, que es un valor
cualquiera codificado con 8 bits, en
el registro de trabajo w

Direccionamiento Directo
La memoria interna se direcciona de forma directa por
medio de los 8 bits "f" contenidos en las instrucciones que
operan sobre registros. De esta manera se puede
direccionar cualquier posicin desde la 00 a la FF.
En los microcontroladores que tengan ms de un banco,
antes de acceder a alguna variable que se encuentre en la
zona de los bancos de registros, el programador deber
asegurarse de haber programado los bits de seleccin de
banco en el registro OPTION.
Este es el modo ms utilizado, ya que como hemos visto
anteriormente, la memoria RAM est dividida en registros
especficos y en un conjunto de registros de propsito
general. Este modo consiste en codificar el nombre del o de
los registros en cuestin directamente en la instruccin.
MOVWF f ;

Direccionamiento bit a bit


Mediante
este
direccionamiento
se
manipula un bit individual en cualquier
registro. Este modo de direccionamiento
no se utiliza nunca solo, sino que siempre
va emparejado con el modo de
direccionamiento directo.
BCF f,b ;
Pone a cero el bit nmero b del registro f.

Direccionamiento Indirecto
Es el modo ms potente y utiliza los
registrosINDFyFSR. En el registroFSRse
introduce la direccin del registro que se
quiere leer cuando se acceda aINDF.
FSRacta como puntero, es decir, el valor
que guardemos en este registro ser la
direccin de una posicin de memoria. Si
aumentamos o disminuimos con cualquier
operacin
el
contenido
deFSRnos
moveremos
entre
las
posiciones
de
memoria.

Ejercicio 1
Sumar dos registros (suma de 8 bits)
y en caso de corrimiento en el bit de
mayor peso poner en alto el bit 0 del
puerto a y de no haber corrimiento
ponerlo en 0.

Tarea1
Sumar cuatro registros (suma de 16
bits) y en caso de corrimiento en el
bit de mayor peso poner en alto el
bit 0 del puerto a y de no haber
corrimiento ponerlo en 0.

Tarea2
Sumar seis registros (suma de 24
bits) y en caso de corrimiento en el
bit de mayor peso poner en alto el
bit 0 del puerto a y de no haber
corrimiento ponerlo en 0.

Ejercicio 2
Realizar un corrimiento en el puerto
b de la siguiente manera.
Con un retardo
RB
0

RB
1

RB
2

RB
3

RB
4

RB
5

RB
6

RB
7

de
medio
segundo
entre
salto y salto.

Tiempo maquina y
tiempo de reloj
Retardo con un ciclo
Retardo con ciclos
anidados
Calculo de ecuacin

Tarea 3
Realizar un retardos de:
10ms
20ms
5000ms
1000ms

Practica 1

Ejercicio 4
Realizar un programa que lea el RA0
y por cada cambio de estado de
este el RB0 cambiara de estado, es
decir, prenderemos y apagaremos
un led con el botn.

Ejercicio 5
Reste dos registros.

(8 bits)

Tarea no
Reste 4 registros.

(16 bits)

Ejercicio 6
Multiplicar dos registros. (8 bits)

Tarea 4
Multiplicar 4 registros. (16 bits)

Practica 2

La pila
La

pila es una estructura de datos con


organizacin LIFO: lo ltimo que entra a la pila
es lo primero que sale de ella.
La pila tiene una base y un tope. En la base
esta el elemento mas antiguo, mientras que
en el tope esta el dato mas reciente.
La pila tiene un puntero de pila o registro SP
(Stack Pointer).
El SP contiene siempre la direccin del tope de
la pila. Las operaciones de almacenamiento y
extraccin de datos de la pila modifican el
contenido del registro SP. Por ejemplo, al
guardar o extraer un dato de la pila el SP se
puede incrementar o decrementar.

La pila
La

pila se utiliza para almacenar direcciones


de instrucciones y datos, en concreto, para
recordar la direccin de retorno al programa
principal desde una subrutina.
En los microcontroladores PIC de gama media,
la pila tiene caractersticas muy particulares:
La pila se encuentra en un espacio de
memoria separada de los espacios de
memoria de programa y datos.
No existe el registro SP.
En la pila solo se guardan direcciones.
El tamao de la pila es limitado: puede guardar
hasta 8 direcciones.

Subrutinas
Una subrutina es un conjunto de
instrucciones al que se tiene acceso desde
cualquier punto del programa principal. Es
decir, una subrutina es un subprograma
que se ejecuta cada vez que el programa
principal lo necesita.
Programa
Principal
Llamada al
proceso

proceso
return

Llamada al
proceso

Subrutinas anidadas.
Cuando una subrutina llama a otra subrutina se
produce la situacin conocida como anidamiento de
subrutinas, es decir, hay subrutinas anidadas dentro
de otras. Cada call sucesivo sin que intervenga un
Program return crea un nivel adicional de anidamiento.
a
Principal

Llamada a
Subrutina
1
x1

pila

Subrutin
a1

Subrutin
a2

Llamada a
Subrutina
2

Llamada a
Subrutina
3

x2
return

pila
x1

x3
return

Subrutina
3

pila

return

x1

pila

x2

x1

x3

x2

Instrucciones call y return


La localizacin de una subrutina se identifica por la
direccin de su primera instruccin. El efecto de la
instruccin call es provocar que la ejecucin se
transfiera a la subrutina. De esto se desprende que
la instruccin call contenga la direccin de la
primera posicin de memoria ocupada por la
subrutina.
La instruccin return provoca el retorno al programa
principal, la cual debe recordar la localizacin de la
instruccin que le sigue a call. Esto es posible slo si
la direccin de esa instruccin ha sido preservada
en una zona de memoria (PILA).

Directiva macro
Son instrucciones definidas por el
usuario sobre la base de las
instrucciones del microcontrolador y
las directivas del ensamblador.
Una vez que se ha definido el macro,
se le puede llamar o invocar en el
programa fuente.

Directiva macro
Cuando una macro es invocada,
esta es copiada por el ensamblador
en el lugar de la invocacin dentro
del cdigo fuente.
La macro se declara con la directiva
MACRO, y termina con la directiva
ENDM.

Directiva macro
Las macros no son lo mismo que las
subrutinas. El cdigo de las subrutinas
aparece una sola vez en un programa y
la ejecucin del programa salta a la
subrutina. En cambio, el ensamblador
reemplaza cada aparicin del nombre
de la macro con la secuencia
especificada de instrucciones. Por
consiguiente la ejecucin del programa
no salta a la macro como una subrutina.

Directiva macro:
ejemplo

PCL y PCLATH
Como sabemos un programa en
ensamblador est constituido por
una serie de instrucciones que se
ejecutan secuencialmente.
Cada
instruccin
ocupa
una
posicin
de
la
memoria
de
programa,
esta
posicin
esta
apuntada por un registro especial
llamado Contador de Programa.

PCL y PCLATH
Este registro tiene una longitud de 13 bits
<12:0 > y est conformado por dos
registros: PCL y PCLATH.
PCL
contiene
los
8
bits
menos
significativos y PCLATH los 5 bits ms
significativos del Contador de programa,
PCL es el registro ms utilizado.

PCL y PCLATH
Como podemos ver, el PCL lleva la cuenta del
nmero de instrucciones que ponemos en nuestro
programa, si nosotros modificamos el valor del
PCL durante la ejecucin de nuestro programa NO
modificamos la direccin de la instruccindonde
estemos, sino que nos posicionamos hacia la
direccin apuntada por PCL. Por ejemplo,
lainstruccin
GOTO
significa
SALTO
INCONDICIONAL hacia donde se le indique,
realmente lo que la instruccin GOTO hace es
modificar el valor de PCL con el valor
indicadodelante de la instruccin GOTO.

Tablas
Como su nombre lo indica una tabla
es una subrutina que contiene una
tabla de valores de retorno, es
decir, le damos un valor a la tabla y
nos regresa con otro valor, esa es
una razn por las que se usan,
entre
otras
cosas,
para
decodificadores. Las tablas se
hacen con ayuda delregistro PCL.

Display de 7
segmentos

Tabla 7 segmentos
Ahora que conocemos los cdigos en 8
bits de los nmeros en 7 segmentos
procedemos a realizar nuestro programa
de tabla, que nos servir como
decodificador, observe como se utiliza el
registro PCL

Ubicacin de las tablas


Dado que estamos utilizando el PCL
para las tablas debemos considerar
que ste tiene 8 bits de longitud, lo
que indica que el nmero mximo es
255, como es de esperarse debemos
evitar que el PCL se desborde dentro
de una tabla, es decir, las tablas no
pueden superar la direccin 255 dela
memoria de programa, lo cualpuede
ocurrir si el programa es largo y la
tabla esta al final del programa.

Ubicacin de las tablas


As que ellugar ms seguro para ubicar
nuestras tablas ser al inicio del programa, aqu
no estorban y nos permite realizar el
programa principal tan extenso comose
requiera.