Professional Documents
Culture Documents
Juan XXIII
Computadoras Electrónicas
Gustavo A. Yarce
1. Microcontroladores 9
1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2. Estructura de un microcontrolador . . . . . . . . . . . . . . . . . . 10
2. El PIC16f873 13
2.1. Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2. El reloj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3. Osciladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4. Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3. Estructura de la memoria 19
3.1. Memoria de Programa . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2. Memoria de Datos(RAM) . . . . . . . . . . . . . . . . . . . . . . . 20
3.3. Registros Específicos - El PC . . . . . . . . . . . . . . . . . . . . . 20
3.3.1. La pila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.4. Direccionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.5. Los Puertos del PIC . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.6. Puerto A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.7. Puerto B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.8. Puerto C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.9. El Registro de Estado . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.10. El acumulador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4. Lenguaje Ensamblador 31
4.1. Instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2. Instrucciones del MPLAB . . . . . . . . . . . . . . . . . . . . . . . 34
4.3. Estructura de un programa ASM . . . . . . . . . . . . . . . . . . . 35
5. Programación 37
5.1. CALL - RETURN . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.2. Rutinas de retardo . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3
4 Gustavo A. Yarce
2.1. pic16f873 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2. Esquema del Ciclo de Instrucción . . . . . . . . . . . . . . . . . . . . 16
5
6 Gustavo A. Yarce
Índice de tablas
7
Prologo
Este documento no pretende ser un libro completo sobre microcontroladores,
es una ayuda para el alumno, para su utilización como guía de aprendizaje.
Se tiene como objetivo presentar los conceptos básicos y las características
generales de los dispositivos microprogramables, para el desarrollo y resolución
de problemas que se presentan en el ámbito técnico.
Los temas tratados y el desarrollo que se realiza sobre ellos persiguen la enseñanza
en entornos educativos técnicos de nivel medio que necesitan conocimientos sobre
estas tecnologías.
Se prioriza la enseñanza de una metodología de programación correcta tratando
de conservar la facilidad de uso como herramienta. Siempre se considera que lo
más importante es adquirir una base de conocimientos que permita una posterior
evolución hacia conocimientos relacionados con la Electrónica y la programación.
Capítulo 1
Microcontroladores
1.1. Introducción
Antes de ver qué es un microcontrolador y de analizar sus puntos fuertes y sus
defectos, será útil hacer un repaso relativo a la estructura de cualquier sistema
programable, que pueda hacer uso de un microcontrolador.
9
10 Gustavo A. Yarce
La memoria RAM
Un bus de interconexión
de manejo de bits, muy útiles para las entradas/salidas. En ciertos circuitos, esta
unidad central está dotada de un gran número de registros internos, que sirven de
memoria RAM, por lo que puede parecer que ésta última está ausente de algunos
esquemas.
Algo más delicado es hacer un esquema tipo para los circuitos de interfaz, ya
que es un punto donde se distinguen los diferentes microcontroladores, en función
de las aplicaciones que pretenden. No obstante se pueden encontrar los siguientes
elementos básicos:
El PIC16f873
2.1. Estructura
Microcontrolador diseñado por la empresa Microchip (http://www.microchip.com),
que se fabrica en varias versiones de las cuales se analizará con más detalle el
pic16f873. Son idénticas en cuanto a su arquitectura interna todos los pic de la
familia 16f87x a excepción de la memoria ROM y la memoria RAM y puertos.
13
14 Gustavo A. Yarce
Interrupciones 13
Temporizadores 3
Módulos de Captura/Comparacion/PWM 2
Conjunto de 35 instrucciones
2.2. El reloj
La frecuencia de trabajo del microcontrolador es un parámetro fundamental a
la hora de establecer la velocidad de ejecución de instrucciones y el consumo de
energía.
Cuando un PIC16F873 funciona a 20 MHz, que es su máxima frecuencia, le
corresponde un ciclo de instrucción de 200 ns, puesto que cada instrucción tarda
en ejecutarse 4 períodos de reloj, o sea,
4 4
Ciclo de instrucción = = = 200ns
fOSC 20M HZ
2.3. Osciladores
Los PIC admiten cuatro tipos de osciladores externos para aplicarles la
frecuencia de funcionamiento, se colocan entre las pins OSC1 y OSC2. El tipo
empleado debe especificarse en dos bits de la “Palabra de Configuración”, como se
comentará más adelante. Los tipos que se pueden emplear son:
2.4. Reset
Cuando se aplica un nivel lógico bajo a la pin MCLR# el microcontrolador
reinicializa su estado. Dos acciones importantes se producen en la reinicialización
o Reset:
Estructura de la memoria
19
20 Gustavo A. Yarce
3.3.1. La pila
La memoria de stack o pila es una area de memoria completamente separada de
la memoria de datos y la memoria de programa. El stack consta de 8 niveles de 13
bits cada uno. Esta memoria es usada por la CPU para almacenar las direcciones
de retorno de subrutinas. El apuntador de stack no es ni legible ni escribible.
Cuando se ejecuta una instrucción CALL o es reconocida una interrupción el PC es
guardado en el stack y el apuntador de stack es incrementado en 1 para apuntar a la
siguiente posición vacía. A la inversa, cuando se ejecuta una instrucción RETURN,
RETLW o RETFIE el contenido de la posición actual del stack es colocado en el
PC.
El Stack o Pila, es una zona de memoria, transparente al usuario, con la cual se
salvan las direcciones cuando se ejecuta la instrucción CALL y las interrupciones,
en esta zona se guarda el valor del PC(3.3). Es de vital importancia no sobrepasar
el límite de 8 niveles en la realización de programas. PCLATH no se modifica
en ninguna de estas operaciones y cuando el apuntador de stack ya está en la
posición 8 y se ejecuta otro CALL se reinicia a la posición 1 sobrescribiendo en
dicha posición. No existe ningún indicador que avise de esta situación.
Computadoras Electrónicas 23
3.4. Direccionamiento
En los PIC de gama media la memoria de datos está organizada para alojar
un máximo de 4 bancos de 128 bytes cada uno. Los PIC16C84 sólo tienen
implementados los 48 primeros bytes de los bancos 0 y 1. En el resto de los
PIC de esta familia se destinan dos bits del registro ESTADO (RP0 y RP1) para
determinar el banco y otros siete
para elegir una de las 128 posiciones del banco seleccionado, tal y como muestra
la figura 8.
3.6. Puerto A
3.7. Puerto B
3.8. Puerto C
RC3/SCK/SCL: E/S, puede ser también señal de reloj en modo SPI ó señal
de reloj en modo I2C.
Z: Cero
1: El resultado de una instrucción lógico-aritmética ha sido cero.
0: El resultado de una instrucción lógico-aritmética no ha sido cero.
3.10. El acumulador
Lenguaje Ensamblador
4.1. Instrucciones
El juego de instrucciones de un microprocesador o microcontrolador es el con-
junto de entradas binarias que producen acciones definidas durante un ciclo de
instrucción. Un juego de instrucciones es para el microcontrolador lo mismo que
una tabla de verdad es para una puerta lógica, un registro de desplazamiento o
un sumador. Por supuesto, las acciones que realiza un microcontrolador con cada
instrucción, son más complejas que las que realizan los dispositivos y puertas antes
mencionados.
31
32 Gustavo A. Yarce
Notas:
En las tablas siguientes, por orden alfabético, veremos todos los datos de interés
sobre las 35 instrucciones.
Algunos son de poca importancia. En cambio otros, como la operación,
la sintaxis, el comportamiento del registro STATUS y los ejemplos, son
imprescindibles para comprender su funcionamiento.
Aparte de estas 35 instrucciones, hay otro tipo de instrucciones usadas para
simplificar la tarea de programar, y que generalmente están formadas por dos
instrucciones básicas. Estas no las trataremos a fondo, pero las veremos en un
resumen después de comprender el funcionamiento de las 35 instrucciones básicas.
<label>EQU <expr>
Programación
En la familia PIC de gama media la pila tiene ocho niveles de memoria del
tipo FIFO (primero en entrar, último en salir). Si se produce la llamada a una
subrutina durante la ejecución de otra subrutina, la dirección de retorno de esta
segunda es colocada en la cima de la pila sobre la dirección anterior. Esta segunda
dirección es la primera en salir de la pila mediante la instrucción RETURN. Con
la pila de ocho niveles, una subrutina puede llamar a otra y ésta, a su vez, llamar a
otra hasta un máximo de ocho. La gama baja sólo puede realizar dos llamadas de
este tipo al poseer una pila de sólo dos niveles. Las subrutinas deben colocarse al
comienzo de las páginas debido a que el bit 8 del contador del programa es puesto
a 0 por la instrucción CALL (o por cualquier instrucción que modifica el PC). Las
subrutinas deben colocarse en la mitad inicial de las páginas (las 256 palabras).
37
38 Gustavo A. Yarce
{3} 1 ciclo
{4} 1 ciclo
{5} {6} 3*(k1-1)+2 ciclos
{7} 1 ciclo
{8} 2 ciclo
Total 7+(3*(k1-1) ciclos
{5} 1 ciclo
{6} 1 ciclo
{A} A ciclos
{9} 1 ciclo
{10} 2 ciclos
[(1+1+A+1+2)*(k2-1)]+[1+1+A+2]= [(5+A)*(k2-1]+[4+A]ciclos
B=[(5+A)*(k2-1)]+[4+A]
C=[(1+1+B+1+2)*(k3-1)]+[1+1+B+2]=[(5+B)*(k3-1)]+[4+B]=
42 Gustavo A. Yarce
A=[3*(k1-1)+2]
B=[(5+A)*(k2-1)]+[4+A]
C=[(5+B)*(k3-1)]+[4+B]
D = 2 + 1 +1 +C + 2
A=[3*(255-1)+2]=764 ciclos
B=[(5+764)*(255-1)]+[4+764] = [195326]+[768] = 196064 ciclos
C=[(5+196094)*(255-1)]+[4+196094] = 50005244 ciclos
D= 50.005250 segundos
Índice alfabético
acumulador, 29 Return, 37
ROM, 9, 10
Call, 37 Rutina simple, 38
ciclo de instrucción, 15
contador de programa, 17, 20 sistema programable, 9
SRAM, 11
direccionamiento, 23
direccionamiento directo, 23
direccionamiento indirecto, 23
instrucciones, 31
memoria de datos, 20
osciladores, 16
PC, 20, 22
PIC, 24
pic16f873, 13, 14
pila, 22
puerto a, 24
puerto b, 25
puerto c, 26
RAM, 10, 20
registro de estado, 27
reloj, 15
reset, 17
Retardo, 38
43