Documente Academic
Documente Profesional
Documente Cultură
Elaborado por:
Revisado por:
SENA
CENTRO DE DISEÑO E INNOVACIÓN TECNOLÓGICA INDUSTRIAL
REGIONAL RISARALDA
NOVIEMBRE 2009
El presente proyecto tiene como objetivo servir de manual para todas aquellas
personas interesadas en la programación de microcontroladores, consta de un
conjunto de prácticas de diferente complejidad, así como el funcionamiento de
estos dispositivos.
Capitulo 1
Introducción a los PIC
3- Tipos de Memoria
La memoria interna de datos del PIC, también llamada archivos de registro,
esta dividida en dos grupos: Los registros especiales, y los registros de
propósito general. Los primeros ocupan por lo general los primeros lugares, por
ejemplo en el PIC 16F877, en el banco 0, los registros especiales están entre
00h y 1Fh, los registros de propósito general van desde 20h, hasta 7Fh.
Las memorias EEPROM y FLASH son muy útiles al permitir que los
microcontroladores que las incorporan puedan ser reprogramados “en circuito”,
es decir, sin tener que sacar el circuito integrado de la tarjeta. Así, un
dispositivo con este tipo de memoria incorporado al control del taxímetro de un
automóvil publico, al variar los valores del precio por recorrido, el programador
solo tendrá que reprogramar el chip en el circuito, con los valores actuales, sin
necesidad de extraer el microcontrolador, ni comprando un nuevo taxímetro.
5- Reloj Principal
Todos los microcontroladores disponen de un circuito oscilador que genera una
onda cuadrada de alta frecuencia, que configura los impulsos de reloj usados
en la sincronización de todas las operaciones del sistema.
6- Recursos especiales
Cada microcontrolador incorpora características diferentes a los demás, estas
características dependen del fabricante y versión del microcontrolador,
simplemente estos recursos deben representar alguna ventaja o facilidad a la
hora de hacer un diseño.
La labor del diseñador es encontrar el modelo mínimo que satisfaga todos los
requerimientos de su aplicación.
• Puerta paralela esclava para poder conectarse con los buses de otros
microprocesadores.
• USB (Universal Serial Bus), que es un moderno bus serie para los PC.
• Bus I2C, que es un interfaz serie de dos hilos desarrollado por Philips.
6.11 Interrupciones
Se trata de un acontecimiento que hace que el micro deje de lado lo que se
encuentra realizando, atienda ese suceso y luego regrese y continúe con lo
suyo.
Existen dos tipos de interrupciones posibles, una es mediante una acción
externa (es decir por la activación de uno de sus pines), la otra es interna (por
ejemplo cuando ocurre el desbordamiento de uno de sus registros)
8. Microcontroladores PIC
Son los dispositivos que más se usan en nuestra región, la realidad es que no
hay una repuesta concreta de la explicación del uso de PIC en vez del Motorola
(su uso se esta popularizando en los últimos tiempos) o cualquier otra familia
de microcontroladores. Pero puede ser su velocidad, el precio, su facilidad de
uso, la información, su pequeño tamaño… Todo esto es lo que produce esa
imagen de sencillez y utilidad que al parecer le agradan tanto a un diseñador
de microcontroladores, pero en un futuro alguna otra familia le puede arrebatar
ese “algo”.
Queremos constatar que para las aplicaciones más habituales (casi un 90%) la
elección de una versión adecuada de PIC es la mejor solución; sin embargo,
dado su carácter general, otras familias de microcontroladores son más
eficaces en aplicaciones específicas, especialmente si en ellas predomina una
característica concreta, que puede estar muy desarrollada en otra familia.
Una de las razones del éxito de los PIC se basa en su utilización. Cuando se
aprende a manejar uno de ellos, conociendo su arquitectura y su repertorio de
instrucciones, es muy fácil emplear otro modelo.
8.1.1 Arquitectura.
Aunque los PIC bajas sólo tienen 8 pines, pueden destinar hasta 6 como
líneas de E/S para los periféricos porque disponen de un oscilador interno R-C.
Se trata de una serie de PIC de recursos limitados, pero con una de la mejores
relaciones coste/prestaciones. Sus versiones están encapsuladas con 18 y 28
patitas y pueden alimentarse a partir de una tensión de 2,5 V, lo que les hace
ideales en las aplicaciones que funcionan con pilas teniendo en cuenta su bajo
consumo (menos de 2 mA a 5 V y 4 MHz). Tienen un repertorio de 33
instrucciones cuyo formato consta de 12 bits. No admiten ningún tipo de
interrupción y la Pila sólo dispone de dos niveles.
c. Código de protección
Cuando se procede a realizar la grabación del programa, puede protegerse
para evitar su lectura. También disponen los PIC de posiciones reservadas
para registrar números de serie, códigos de identificación, prueba, etc.
El temporizador TMR1 que hay en esta gama tiene un circuito oscilador que
puede trabajar asincrónicamente y que puede incrementarse aunque el
microcontrolador se halle en el modo de reposo (“sleep”), posibilitando la
implementación de un reloj en tiempo real.
Las líneas de E/S presentan una carga “pull-up” activada por software.
C: Acarreo en el 8º bit
1 = acarreo en la suma y no en la resta.
0 = acarreo en la resta y no en la suma
Z: Zero
1 = El resultado de alguna operación es 0.
0 = El resultado es distinto de 0
11. INSTRUCCIONES
11.1 Características generales
1º Inmediato: El valor del dato está incluido en el propio código OP, junto a la
instrucción.
2º Directo: La dirección del dato está incluido en el propio código OP, junto a la
instrucción.
Descripción: Realiza la Descripción: Borra el bit b del Descripción: Activa el bit b del
operación lógica AND entre los registro f registro f
registros W y f. Si d es 0, el
resultado se almacena en W, si d Ejemplo: BSF REG,7
es 1 se almacena en f. Ejemplo: BCF REG,7
Ejemplo: ANDWF REG,0 Antes: REG = 0x0A
Antes: W = 0x17., REG = 0xC2 Antes: REG = 0xC7 Después: REG = 0x8A
Después: W = 0x17, Después: REG = 0x47
REG = 0x02
BTFSC Test de bit y salto BTFSS Test de bit y salto CALL Salto a subrutina
Sintaxis: BTFSC f,d Sintaxis: BTFSS f,d Sintaxis: CALL k
Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Operandos: 0 ≤ k ≤ 2047
Operación: Salto si (f<b>) = 0 Operación: Salto si (f<b>) = 1 Operación: PC ⇒ Pila; k ⇒ PC
Flags afectados: Ninguno Flags afectados: Ninguno Flags afectados: Ninguno
Código OP: 01 10bb bfff ffff Código OP: 01 11bb bfff ffff Código OP: 10 0kkk kkkk kkkk
Sintaxis: MOVLW f
Sintaxis: IORLW k Sintaxis: IORWF f,d
Operandos: 0 ≤ f ≤ 255
Operandos: 0 ≤ k ≤ 255 Operandos: d ∈ [0,1], 0 ≤ f ≤ 127
Operación: (k) ⇒ (W)
Operación: (W) OR (k)⇒ (W) Operación: (W) OR (f) ⇒ (dest)
Flags afectados: Ninguno
Flags afectados: Z Flags afectados: Z
Código OP: 11 00xx kkkk kkkk
Código OP: 11 1000 kkkk kkkk Código OP: 00 0100 dfff ffff
Descripción: El literal k pasa al
Descripción: Se realiza la Descripción: Realiza la
registro W.
operación lógica OR entre el operación lógica OR entre los
contenido del registro W y k, registros W y f. Si d es 0, el
Ejemplo: MOVLW 0x5A
guardando el resultado en W. resultado se almacena en W, si d
Después:
es 1 se almacena en f.
W = 0x5A
Ejemplo: IORLW 0x35
Ejemplo: IORWF REG,0
Antes: W = 0x9A Antes: W = 0x91, REG = 0x13
Después: W = 0xBF Después: W = 0x93, REG = 0x13
RLF Rota f a la izquierda RRF Rota f a la derecha SLEEP Modo bajo consumo
Sintaxis: RLF f,d
Operandos: d ∈ [0,1], 0 ≤ f ≤ 127 Sintaxis: RRF f,d Sintaxis: SLEEP
Operación: Rotación a la Operandos: Ninguno
Operandos: d ∈ [0,1], 0 ≤ f ≤ 127
izquierda Operación: 0x00 ⇒ WDT,
Operación: Rotación a la derecha
Flags afectados: C
Flags afectados: C 1 ⇒ / TO 0 ⇒ WDT
Código OP: 00 1101 dfff ffff
Código OP: 00 1100 dfff ffff Preescaler, 0 ⇒ / PD
Descripción: El contenido de f se
Descripción: El contenido de f se Flags afectados: / PD, / TO
rota a la izquierda. El bit de
rota a la derecha. El bit de menos Código OP: 00 0000 0110 0011
menos peso de f pasa al carry
peso de f pasa al carry (C), y el Descripción: El bit de energía se
(C), y el carry se coloca en el de
carry se coloca en el de mayor pone a 0, y a 1 el de descanso. El
mayor peso. Si d es 0, el
peso. Si d es 0, el resultado se WDT y su preescaler se borran. El
resultado se almacena en W, si d
almacena en W, si d es 1 se micro para el oscilador, yendo al
es 1 se almacena en f.
almacena en f. modo “durmiente”.
Ejemplo: RRF REG,0
Ejemplo: RRF REG,0 Ejemplo: SLEEP
Antes: REG = 1110 0110, C = 1 Preescales WDT = 0,
Antes: REG = 1110 0110, C = 0
Después: REG = 1110 0110, /TO = 1, /PD = 1
Después: REG = 1110 0110,
W = 01110 0011, C = 0
W = 1100 1100, C = 1
Directivas
• Controlan el proceso de ensamblado del programa, pero no son parte del
Mismo (también se conocen como pseudo instrucciones).
END
Es la única directiva obligatoria. Indica al ensamblador dónde debe
Detener el proceso. Debe colocarse en la última línea del programa.
LIST P=16F877
Indica el tipo de microcontrolador utilizado.
13. MPLAB
El MPLAB es un entorno de desarrollo integrado que permite escribir y codificar
los microcontroladores PIC de Microchip para ejecutarlos.
Por medio de este software podremos programar microcontroladores en
lenguaje C y/o ensamblador. En este manual nos centraremos en la
programación en ASM, pero también explicaremos el lenguaje C, con un
diferente compilador.
Programa en ASM:
Abrimos nuevo proyecto en MPLAB, definimos nombre y la ubicación en la cual
será guardado, abrimos un nuevo documento y seleccionas el PIC 16F877,
como dispositivo a usar, y la configuración de los BITS.
En la hoja del documento nuevo empezamos a crear nuestro programa.
Cuando tenemos el programa listo, debemos guardar este fichero y para esto,
seleccionamos en la barra de herramientas: “File – Save As” luego
examinamos la ubicación donde vamos a guardar y por ultimo le asignamos un
nombre y como extensión le ponemos ASM; por ejemplo si el nombre del
archivo es display, lo guardaremos como display.asm, si no le ponemos la
extensión, el programa nos generara error al compilar.
Al compilar el programa sin error, nos generara un archivo .hex, este fichero es
el que cargamos al microcontrolador a programar o simular.
Comenzamos con la segunda parte del manual: ¿Cómo funciona una matriz de
Led?; en este apartado explicaremos el funcionamiento, ¿Cómo multiplexarla?
Y su programación.
Una matriz de led’s consiste básicamente en una matriz de pixeles similar a los
de una pantalla de televisor o de un computador, por lo general es de un solo
color (La mayoria de veces rojo), pero también hay bicolor o multicolores, estos
ultimos utilizan diodos RGB, que puede mostrar cualquier color.
Como dijimos antes, la pantalla está formada por una serie de filas y columnas.
La intersección entre ambas contiene un LED. Para que este encienda, tiene
que recibir simultáneamente un “0” en la fila, y un “1” en la columna. Cuando se
dan estas condiciones, la electrónica de la placa se encarga del encendido del
LED en cuestión.
1 columna: 111
2 columna: 95
3 columna: 0
4 columna: 255
5 columna: 255
Hay que tener en cuenta que esta programación se puede simplificar, por
ejemplo podemos usar una tabla, en donde se van a guardar los valores de las
letras.
Bibliografía:
www.wikipedia.org
www.ucontrol.com.ar/
www.unicrom.com/
www.neoteo.com/
Curso Avanzado de Microcontroladores PIC (Cekit)