MICROCONTROLADOR PIC
16F628
PROFESORES:
Para diseñar un sistema micro controlado debemos tener presentes los alcances del proyecto
para asi determinar la cantidad de memoria y periféricos de entrada/salida necesarios, para
estos dispositivos el diseño del hardware es muy sencillo bastando con un par de componentes
adicionales. La complejidad se centra en la programación y el conocimiento interno del micro.
Es importante conocer los registros que manejan los diferentes dispositivos y su configuración,
esto es cierto tanto para la programación utilizando lenguaje ASM como para lenguajes de alto
nivel como Basic o C; sin embargo estos últimos nos proveen de un set de librerías que
simplifican la programación a costa de un mayor espacio de memoria.
Presentación general
Características del microcontrolador
a) Transferencia.
b) Operaciones.
c) Control de flujo.
Reducción del conjunto de instrucciones a instrucciones básicas simples, con la que pueden
implantarse todas las operaciones complejas.
Arquitectura del tipo load-store (carga y almacena). Las únicas instrucciones que tienen acceso
a la memoria son 'load' y 'store'; registro a registro, con un menor número de acceso a
memoria.
Casi todas las instrucciones pueden ejecutarse dentro de un ciclo de reloj. Con un control
implantado por hardware (con un diseño del tipo load-store), casi todas las instrucciones se
pueden ejecutar cada ciclo de reloj, base importante para la reorganización de la ejecución de
instrucciones por medio de un compilador.
Pipeline (ejecución simultánea de varias instrucciones). Posibilidad de reducir el número de
ciclos de máquina necesarios para la ejecución de la instrucción, ya que esta técnica permite
que una instrucción puede empezar a ejecutarse antes de que haya terminado la anterior.
El hecho de que la estructura simple de un procesador RISC conduzca a una notable reducción
de la superficie del circuito integrado, se aprovecha con frecuencia para ubicar en el mismo,
funciones adicionales:
Unidad para el procesamiento aritmético de punto flotante.
Unidad de administración de memoria.
Funciones de control de memoria cache.
Implantación de un conjunto de registros múltiples.
Descripción de pines
PORTA: RA0-RA7:
PILA
La pila contiene 8 niveles, y se accede a ellos mediante las llamadas CALL (que funciona como
PUSH) y RETURN, RETFIEY RETLW (que funcionan como POP)
PLANO DE MEMORIA
REGISTROS DE PROPOSITOS
ESPECIALES (SFRs)
STATUS (registros de estado del procesador)
OPTION (registro de configuraciones)
INTCON (autorización de interrupciones)
PIE1 (autorización de interrupciones)
PIR1 (registro de indicadores de interrupciones)
PCON (registro de configuración)
PROGRAM COUNTER
INDF y FSR (direccionamiento indirecto)
Memoria EEPROM
-Los datos se pueden guardar ya que la memoria es no volátil
- la lectura y escritura no son instantáneas.
EEDATA:
Contiene los datos de lectura y escritura
EEADR:
Indica las direcciones de memoria de los datos
EECON1:
Indica el tipo de operación a realizar
INTERRUPCIONES
Una interrupción es un evento que hace que el microcontrolador deje de ejecutar la tarea que
está realizando para atender dicho acontecimiento y luego regrese y continue la tarea que
estaba realizando antes de que se presentara la interrupción. El pic 16F628 (y el 16F628A)
tiene 10 fuentes de interrupción, si las interrupciones están habilitadas cada vez que una de
estos acontecimientos se presente el pic dejará de ejecutar el programa para ir a atender la
interrupción y al termino de la misma continuará ejecutando el programa donde lo había
dejado. Las fuentes de interrupción son:
Los registros asociados con las interrupciones son el registro de control de interrupcion
INTCON, el registro habilitacion de interrupciones de perifericos PIE1 y el registro de
interrupciones de perifericos PIR1. En el registro INTCON se encuentra el bit de habilitacion
global de interrupciones GIE, el bit de habilitacion de interrupcion por perifericos PEIE y los bits
de habilitacion de algunas interrupciones como la interrupcion externa del pin RB0 (INTE), la
interrupcion por cambio de estado en los pines RB4 a RB7 (RBIE) y la interrupcion por
desborde del timer 0 (T0IE), asi como las banderas correspondientes a cada interrupcion (INTF,
RBIF y T0IF). En el registro PIE1 se encuentran los bits de habilitacion de las demas
interrupciones y en el registro PIR1 se encuentran las banderas asociadas con cada
interrupcion.
La ventaja de utilizar interrupciones es que mientras se espera a que se presente el evento que
produce la interrupción el microcontrolador puede estar ejecutando cualquier otra tarea. De
ese modo el micro no esta ciclado en una sola tarea sino que puede seguir trabajando en otras
hasta que una interrupción haga que el programa salte y ejecute la tarea que se quiera y al
terminarla el programa continuara su ejecución en el punto en el que se encontraba en el
momento de presentarse la interrupciónFuentes de interrupción
Este módulo al igual que el Timer 0 puede funcionar en modo temporizador y en modo
contador. En modo temporizador el par de registros TMR1 se incrementa en cada ciclo de
instrucción, este modo se selecciona poniendo a 0 el bit TMR1CS del registro T1CON. En modo
contador el par de registros TMR1 se incrementa en cada flanco ascendente de una señal de
reloj externa, este modo se selecciona poniendo a 1 el bit TMR1CS del registro T1CON.
El preescalador del Timer 1 tiene un valor máximo de 8 y se selecciona con los bits
T1CKPS1:T1CKPS0 de la siguiente manera:
00 = 1:1
01 = 1:2
10 = 1:4
11 = 1:8
A diferencia del Timer 0, el Timer 1 tiene la posibilidad de activar o detener la cuenta mediante
el bit TMR1ON del registro T1CON.
La configuración del Timer 1 se realiza mediante las líneas “movlw b’01100000'” y “movwf
T1CON“. Mediante estas lineas se configura el timer en modo temporizador (TMR1CS = 0) y se
selecciona el preescalador máximo (T1CKPS1:T1CKPS0 = 11). Una vez configurado el timer 1 se
limpia el puerto B y la bandera TMR1IF del registro PIR1. Posteriormente se realiza la precarga
cargando un 0xE7 al registro TMR1H y un 0×96 al registro TMR1L. Nótese que antes de realizar
la carga se detuvo el timer poniendo a 0 el bit TMR1ON, esto se hace para evitar errores al
momento de cargar el valor a los registros TMR1, después de realizar la carga se enciende el
timer poniendo a 1 el bit TMR1ON y en ese momento la temporización comienza.
Este temporizador, al igual que el Timer 1, puede habilitarse y deshabilitarse mediante el bit
TMR2ON.
El preescalador se selecciona con los bits T2CKPS1:T2CKPS0 y el post-escalador con los bits
T0UTPS3:TOUTPS0 de la siguiente manera:
Preescalador Post-escalador
00 = 1:1 0000 = 1:1
01 = 1:4 0001 = 1:2
1x = 1:16 0010 = 1:3
.
.
.
1111 = 1:16
ESCRITURA DE PROGRAMAS
Instrucciones de octetos
‘f’: registro de 0 a 7Fh
‘d’: destino
Si d=0 el resultado se almacena en W
Si d=1 el resultado se almacena en f
Esta predefinido que d=1
SET DE INSTRUCCIONES EN ASM
CONCLUSIÓN
El pic 16f628 es un microcontrolador de gama baja que permite realizar desarrollos tendientes
a solucionar problemas de baja complejidad. Puede encontrarse en aplicaciones tales como:
alarmas, aparatos electrodomésticos, colectores de datos (data loggers), etc.
El microcontrolador pic16F628 posee una memoria de programa del tipo FLASH EPROM con
una capacidad de 2K, también posee una memoria EEPROM de 128 bytes capaz de almacenar
datos permanentemente (por ejemplo numero de serie del producto, parámetros de
aplicación, etc).
Posee una UART que permite la comunicación serie RS-232, 16 pines de entrada/salida
configurables divididos en dos puertos (PORTA y PORTB). Una capacidad interesante en este
micro es la inclusión de comparadores analógicos .
Sus principales limitaciones son la falta de conversor A/D interno y la poca cantidad de pines
I/O.