Professional Documents
Culture Documents
Ing.Ricardo Vega
ingRicardovega@hotmail.com
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
de
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
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.
Ciclo mquina
Este
El
1.3 Microcontroladores
pic
Son
una
familia
demicrocontroladores
tipoRISCfabricados porMicrochip Technology Inc.
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
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
2.2 Terminales
2.5.1 Memoria de
programa
La
En
La
2.5.1 Memoria de
programa
Registros
Un
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
6.-
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
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
Estructura de un programa
en ensamblado
Instrucciones
Instrucciones
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.
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.5.3 Instrucciones de
control
Responde a la sintaxis nemnico k,
siendo k una constante de 8 a 11 bits,
dependiendo de la instruccin.
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 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
La pila
La
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
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