Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1. CPU
2. Memorias
3. Temporizadores
4. Circuitos de reloj, etc.
MICROPROCESADOR Y MICROCONTROLADOR
MICROCONTROLADORES PIC
Estructura y arquitectura
Los microcontroladores de Microchip combinan un alto desempeño a un bajo
costo, en un empaquetado pequeño; ofreciendo la mejor relación
precio/rendimiento en la industria. Más de 200 millones de estos productos se
distribuyen cada año para satisfacer los consumibles: periféricos de
computadora, automatización de oficinas, sistemas de control automotriz,
aplicaciones en seguridad y telecomunicaciones. La combinación de los
microcontroladores de 8-bit, con las tecnologías de OTP avanzadas, EEPROM,
memoria FLASH, memoria ROM y la industria, hacen de Microchip un líder
proveedor en el desarrollo de herramientas para ajustarse mejor a las
necesidades reales.
El alto nivel de integración reduce notablemente la cantidad de componentes
externos y los costos de desarrollo, mejoran el desempeño del sistema, reduce
la interferencia electromagnética, minimiza el consumo de potencia y agiliza el
tiempo de realización. Los microcontroladores cuentan además con un set de
instrucciones compatible, y una gran variedad de periféricos y un amplio rango
de empaquetados y rangos de voltaje, todo esto para ajustarse mejor a las
demandas en los sistemas actuales.
La arquitectura RISC de 8-bit de los microcontroladores PIC se ha vuelto
estándar alrededor del mundo. Todos los microcontroladores PIC emplean una
arquitectura RISC modificada y un poderoso set de instrucciones que reduce
dramáticamente los ciclos de ejecución y el costo.
Combinando las características RISC con una arquitectura Harvard de bus-dual,
los microcontroladores PIC de 8-bit de Microchip son más rápidos y flexibles y
es el núcleo de la arquitectura más popular para los nuevos diseños de
microcontroladores.
MICROCONTROLADOR PIC16F84A
Reconocimiento de los pines del PIC16F84A
DIAGRAMA DE PINES 1. Pin 1:……… RA2
2. Pin 2:……… RA3
3. Pin 3:……… RA4/TOCKI
4. Pin 4:……… /MCLR
5. Pin 5:……… Vss (GND)
6. Pin 6:……… RBO/INT
7. Pin 7:……… RB1
8. Pin 8:……… RB2
9. Pin 9:……… RB3
10. Pin 10:…….. RB4
11. Pin 11:…….. RB5
12. Pin 12:…….. RB6
13. Pin 13:…….. RB7
14. Pin 14:…….. VDD
15. Pin 15:…….. OSC2/CLKOUT
16. Pin 16:…….. OSC1/CLKIN
17. Pin 17:…….. RA0
18. Pin 18:…….. RA1
El PIC16F84A consta de 2 puertas: Puerta A y puerta B.
La Puerta A esta formada de 5 líneas (pines) E/S digitales y la Puerta B constan de 8
líneas.
Descripción de los pines
Microcontroladores de 8 bits.
Son PIC’s de bajo costo, alto desempeño, tecnología CMOS y completamente
estático.
Emplean una arquitectura RISC avanzada.
Presentan una pila de 8 niveles de profundidad y múltiples fuentes de
interrupción.
Son µCo de arquitectura Harvard debido a la separación de los buses de
instrucción y data, ello permite palabras de instrucción de 14 bits de ancho y un
bus de data de 8 bits de ancho separados.
Todas las instrucciones pueden ser ejecutadas en un ciclo instrucción excepto
las de salto, las cuales requieren dos ciclos (pipeline).
Requieren sólo un total de 35 instrucciones (conjunto de instrucciones
reducido).
Poseen un largo conjunto de registros que son usados para realizar un alto
nivel de desempeño.
El PIC16F84A tiene hasta 68 bytes de RAM, 64 bytes de memoria EEPROM de
datos y 13 pines I/O. Un temporizador/contador también está disponible.
Tiene características especiales para reducir los componentes externos, así
como reducción de costos, mejoramiento de la fidelidad del sistema y
reducción del consumo de energía.
Hay cuatro opciones de oscilador, de los cuales el oscilador RS de pin único
provee una solución de bajo costo, el oscilador LP minimiza el consumo de
energía, el XT es un cristal estándar y el HS es para cristales de alta velocidad.
El modo SLEEP ofrece un ahorro de energía. El usuario puede despertar el chip
desde sleep a través de muchas interrupciones internas, externas y reset.
Un temporizador Watchdog altamente confiable con su propio oscilador on
chip, provee protección contra estancamiento por software.
El PIC16F84A encaja perfectamente en aplicaciones alcanzando desde una alta
velocidad automotriz y aplicación al control de motor hasta baja energía de
sensores remotos, cerrojos electrónicos, dispositivos de seguridad y tarjetas
inteligentes.
La tecnología Flash/EEPROM promueve la habituación de programas de
aplicación (códigos de transmisor, velocidades de motor, frecuencias de
receptor, códigos de seguridad, etc.) en extremadamente rápidos y
convenientes.
Los empaquetados de pequeña footprint hacen a este microcontrolador
perfecto para aplicaciones con limitaciones de espacio.
El bajo costo, baja energía, alto desempeño, fácil uso y flexibilidad de I/O hacen
del PIC16F84A muy versátil aún en áreas donde el microcontrolador no ha sido
considerado antes (por ejemplo, funciones de temporización; comunicación
serial; funciones de captura, comparación y PWM; y aplicaciones de co-
procesador).
Explicación:
F : frecuencia de la señal proveniente del circuito oscilador externo
Tosc: Periodo de oscilación
TIPOS DE OSCILADORES
La velocidad de ejecución de las instrucciones depende de la frecuencia de trabajo del
µC.
El PIC16F84A – 20/P funciona con una frecuencia máxima de 20 MHz, luego le
corresponde un ciclo de instrucción de 200 ns.
Cada ciclo de instrucción demora en ejecutarse 4 periodos de reloj, es decir:
El oscilador tipo HS, ofrece una alta velocidad, variando entre los 4 y 10 MHz y está
basado en un cristal de cuarzo o un resonador cerámico.Ω
Observación: todos estos osciladores, excepto el RC, van conectados entre los pines
OSC1 y OSC2.
Todas las instrucciones se ejecutan en un sólo ciclo de instrucción excepto las de salto,
que tardan dos ciclos de instrucción.
Los impulsos de reloj provenientes del circuito oscilador externo entran por la patita
OSC1/CLKIN
(Pin 16) y se divide internamente en 4 señales: Q1, Q2, Q3 y Q4.
ORGANIZACIÓN DE LA MEMORIA
En el PIC16F84A hay 2 bloques de memorias. Estos son la memoria de programa y la
memoria de datos. Cada uno de estos bloques cuenta con su propio bus, pero el
acceso a cada bloque puede ocurrir durante el mismo ciclo del oscilador.
La memoria de datos se encuentra fraccionada dentro de la RAM, formando los
registros de propósito general y los registros de función específico (SFRs).
El área de la memoria de datos también contiene la memoria de datos EEPROM. Esta
memoria no es mapeada directamente dentro de la memoria de datos, pero si
indirectamente. Esta memoria EEPROM tiene una capacidad de 64 bytes.
REGISTROS DE FUNCIÓN ESPECÍFICA
REGISTRO STATUS
El registro STATUS contiene el estado aritmético del ALU, el estado RESET y los bits de
selección de banco de la memoria de datos.
El registro STATUS puede ser también el destino para cualquier instrucción como
cualquier otro registro. Si el registro STATUS es el destino de una instrucción que
afecta a Z, los bits DC o C, luego la escritura a estos bits es deshabilitada. Estos bits son
puestos a uno o borrados de acuerdo con la lógica del dispositivo. Más allá, los bits /TO
y /PD indican el estado del procesador y no son escribibles.
Por ejemplo, CLRF STATUS borrará los tres bits superiores y pondrá a uno el bit Z. Esto
deja al registro STATUS como 000u u1uu (donde u = sin cambio).
Es recomendado, sin embargo, que sólo las instrucciones BCF, BSF, SWAP y MOVF sean
usadas para alterar el registro STATUS, porque estas instrucciones no afectan a los bits
Z, C o DC del registro STATUS.
REGISTRO OPTION_REG
La principal misión de este registro es controlar TMR0 y el Divisor de Frecuencias.
Ocupa la posición 0x81 de la memoria de datos RAM en el banco 1.
El registro OPTION_REG es un registro leíble y escribible, el cual contiene varios bits de
control para configurar el prescalador de TMR0/prescalador de WDT, las
Interrupciones Externas INT, el TMR0 y las pull-ups débiles en PORTB.
El bit TOCS permite seleccionar la procedencia de los impulsos de reloj, que pueden
ser los del oscilador interno o los provenientes del exterior a través de la patita TOCKI.
El bit TOSE selecciona el flanco activo de los impulsos externos.
El bit PSA asigna el Divisor de Frecuencia al TMR0 (PSA=0) o al WDT si PSA=1.
Los tres bits de menos peso del registro OPTION_REG seleccionan el rango por el que
divide el Divisor de Frecuencia los impulsos que se le aplican a su entrada.
El bit INTEDG selecciona el flanco activo de interrupción externa.
El bit RBPU# activa o desactiva las resistencias pull-up de la Puerta B.
Nota: Ejecutar una asignación de 1:1 al prescalador para el registro TRM0, asigna el
prescalador al Temporizador de Watchdog.
☻ PORTA
☻ PORTB
La Puerta A posee 5 líneas digitales PORTA<4:0>, y una de ellas soporta dos funciones
multiplexados.
El pin RA4 está multiplexado con la entrada de reloj del módulo Timer0 para volverse
el pin RA4/T0CKI. El pin RA4/T0CKI es una entrada Schmitt Trigger y una salida drenaje
abierto.
La Puerta B tiene 8 líneas digitales PORTB<7:0>, y también tiene una línea con
funciones multiplexadas, se trata del pin RB0/INT, que además de una línea de E/S
digital, también sirve como patita por la que se reciben los impulsos externos que
producen una interrupción.
Cada una de estas líneas pueden ser configuradas independientemente como E/S,
según se ponga a 1 o 0 al bit asociado del registro de configuración de cada puerta.
El registro TRISA permite configurar PORTA. Un 1 representa una entrada y un 0, una
salida
El registro TRISB permite configurar PORTB. Un 1 representa una entrada y un 0, una
salida
Registros PORTA y TRISA
PORTA es un puerto bidireccional de 5 bits de ancho.
Las líneas PORTA<3:0> tienen niveles de entrada TTL y manejadores de salida todos
CMOS.
PORTA<4> multiplexa su función de E/S con la de entrada de impulsos externos para el
TMR0.
El registro TRISA permite configurar a las líneas de PORTA. Poniendo a uno un bit de
TRISA volverá el pin de PORTA correspondiente una entrada. Borrando un bit de TRISA
(=0) volverá el pin de PORTA correspondiente una salida.
Direcci Nombr Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valor en: Valor en
ón e Power on todos los
Reset otros
resets
05h PORTA - - - RA4 RA3 RA2 RA1 RA0 ---x xxxx ---u uuuu
85h TRISA - - - Registro de Dirección de Data de PORTA ---1 1111 ---1 1111
Entre los recursos más importantes que cuentan los µC PIC esta el TEMPORIZADOR/
CONTADOR TMR0.
El PIC16F84A posee un temporizador/contador de 8 bits, llamado TMR0 que actúa en
dos formas diferentes:
1) Como Temporizador, el registro TMR0 se incrementa con cada ciclo de instrucción
(Fosc/4) hasta que se desborda (FFH a 00H) poniéndose a 1 un señalizador y/o
provocando una interrupción.
☻ El TMR0
☻ El Wachdog (WDT)
☻ EECON1
☻ EECON2 (Registro físicamente no implementado)
☻ EEDATA
☻ EEADR
Proceso de Lectura
Pasos:
1. Colocar la dirección ha acceder en el registro EEADR
2. Poner a 1 el bit RD del registro EECON1
El dato leído estará disponible en el registro EEDATA en el siguiente ciclo y
permanecerá en él hasta que se realice una nueva lectura o escritura en la EEPROM.
Proceso de escritura
Pasos:
1. Cargar la dirección de la posición ha escribir en el registro EEADR
2. Cargar a escribir se almacena en el registro EEDATA
En el proceso de escritura de la EEPROM de datos interviene el registro EECON2, el
cual no se encuentra físicamente implementado asumiendo sólo funciones de
seguridad en el proceso, cargándose en él con los siguientes valores: 0x55 y 0xaa.
;------------------------------------------------------------------------------------------------------------------
-----------
movlw 0x55
movwf EECON2
movlw 0xaa
movwf EECON2
bsf EECON1,WR
;------------------------------------------------------------------------------------------------------------------
-----------
INTERRUPCIONES
Las interrupciones son desviaciones del flujo de control del programa originadas
asincrónicamente por causas que escapan de la supervisión de las instrucciones.
Dichos sucesos pueden ser internos o externos al sistema.
Ante una interrupción el µC se comporta de manera similar al de la instrucción CALL
(llamada a subrutina originada por instrucción).
Ante ambas situaciones se detiene la ejecución normal del programa salvándose la
dirección actual del Contador de Programa (PC) en la Pila y se carga el PC con la
dirección 04H (dirección reservada a la Rutina de Servicios de interrupción: Vector de
Interrupción) en el caso de interrupción o con la dirección especificada en la
instrucción CALL cuando se llama a subrutina en forma síncrona.
La posición 0x04 de la memoria de programa está destinada al Vector de Interrupción
donde se suele colocar una instrucción de salto incondicional (goto), que traslada el
flujo de control a la zona de la memoria de programa destinada a contener la acción
especificada ante una interrupción.
REGISTRO INTCON
El registro INTCON es un registro leíble y escribible, que contiene varios bits de
habilitación y flags para el desbordamiento del registro TMR0, cambio de Puerto RB e
interrupciones externas de pin RB0/INT
Nota: Los bits de flag de interrupción se ponen a uno cuando una condición de
interrupción ocurre, indiferente del estado del bit de habilitación correspondiente o el
bit de habilitación global GIE (INTCON<7>). El software de usuario debe asegurarse que
los bits de flag de interrupción apropiados sean borrados previos a habilitar una
interrupción.
DECFSZ f,d (f)-1 destino y si resultado es 00 1011 dfff ffff Ninguno 1.2
0 salta
INCFSZ f,d (f)+1 destino y si resultado es 00 1111 dfff ffff Ninguno 1.2
0 salta
RLF f,d Rota f a la izq a través del carry 00 1101 dfff ffff C 1.2
destino
RRF f,d Rota f a la dcha a través del 00 1100 dfff ffff C 1.2
carry destino
BSF f,d Pone a 1 el bit b del registro f 01 01bb bfff ffff Ninguno 1.2
BTFSC f,d Skip si el bit b del reg. f es 0 01 10bb bfff ffff Ninguno 3
BTFSS f,d Skip si el bit b del reg. f es 1 01 11bb bfff ffff Ninguno 3
Notas.-
☺ Al modificar un registro de E/S con una operación sobre él mismo ( ejemplo
MOVF PORTB, 1), el valor utilizado es el que se halle presente en los pines del
PORTB. Por ejemplo, si el biestable tiene un "1" para una patilla configurada
como entrada y se pone a nivel bajo desde el exterior, el dato se volverá a
escribir como "0".
☺ Si se ejecuta esta instrucción sobre el TMR0 y d= 1, será borrado el divisor de
frecuencia (Preescalador), si está asignado al TMR0.
☺ Si se modifica el Contador de Programa (PC) o una condición de prueba es
verdadera, la instrucción requiere dos ciclos máquina. El segundo ciclo se
ejecuta como un NOP
REFERENCIAS BIBLIOGRAFICAS
Microcontroladores PIC, la solución en un chip
J. Ma. Angulo Usategui, E. Martin Cuenca y J. Angulo Martínez
Editorial Paraninfo, 1997
Aplicaciones de los microcontroladores PIC de Microchip
J. Ma. Angulo Usategui, E. Martin Cuenca y J. Angulo Martínez
Editorial McGraw Hill, 1998
Microchip PIC Microcontrollers
Data Book, Microchip Technology Inc.
Microchip, The embedded control solutions company, 1997
Problemas de metodología de la programación
Luis Joyanes Aguilar
Editorial McGraw Hill, 1996