Vous êtes sur la page 1sur 75

Universidad de Oviedo

6. Microcontroladores. PIC

Introduccin

Tecnologa Electrnica

Universidad de Oviedo

Microcontroladores

Son circuitos integrados que incorporan todos los bloques funcionales de un Sistema Microprocesador en un nico encapsulado.

6. Microcontroladores. PIC

Necesitan una tensin continua (5V, 3.3V, 2.5V, 1.5V...) y un oscilador para funcionar.
Interpretan (decodifican) combinaciones de bits (instrucciones) y generan seales digitales internas y/o externas. Ejecutan de manera continua una secuencia de instrucciones (programa) que permite controlar un sistema o subsistema electrnico.
2

Tecnologa Electrnica

Sistema mnimo microprocesador


CPU, Central Process Unit o Unidad Central de Proceso. Formada por dos bloques: Unidad de Control y Unidad de Proceso. Memoria, donde residen las instrucciones del programa y sus datos. Mdulos E/S, elementos encargados de recibir y entregar informacin al exterior.

Universidad de Oviedo

El sistema mnimo est basado en la estructura de von Newman. Sus bloques bsicos son los siguientes:

Bus de Direcciones CPU MEMORIA UDS. E / S

6. Microcontroladores. PIC

Bus de Datos Bus de Control Reloj

Los tres mdulos estn conectados entre s por medio de los Buses de Comunicacin. Cada bus est formado por un conjunto de conductores por los cuales se transmite la informacin digital.
Tecnologa Electrnica

Universidad de Oviedo

Microprocesadores y microcontroladores
Sistema Microprocesador (varios C.I. en una PCB)

6. Microcontroladores. PIC

Microcontrolador (nico C.I.)

Tecnologa Electrnica

Universidad de Oviedo

Microprocesadores y microcontroladores
Tarjeta de Sistema Microprocesador para control 6. Microcontroladores. PIC

C.I. Microcontrolador
Tecnologa Electrnica

Sistemas empotrados

Universidad de Oviedo

Sistemas que incorporan microcontroladores (o microprocesadores) para una tarea especfica pero que no son programables directamente por el usuario Los microcontroladores de 8 bits dominan en la mayora de las aplicaciones 6. Microcontroladores. PIC El microcontrolador es el ncleo del sistema electrnico verstil de bajo coste y reducido tamao que es capaz de detectar las seales de entrada y generar las salidas de un equipo, sistema o instrumento Por su reducido tamao y coste permiten la fcil implantacin de sistemas deinteligencia distribuida a lo largo de sistemas ms complejos Los microcontroladores son los semiconductores ms abundantes de todos en la actualidad.
Tecnologa Electrnica

Sistemas empotrados

Universidad de Oviedo

6. Microcontroladores. PIC

Evolucin Microprocesadores: Computadores

Evolucin Microcontroladores: Sistemas Empotrados

75 Millones Microprocesadores/ao Tecnologa Electrnica

Microcontroladores PIC

Universidad de Oviedo

Arquitectura Harvard: buses internos separados para memoria de datos (8 bits) y de programa (12, 14 16 bits depende de la familia) Microprocesador RISC: juego de instrucciones reducido 6. Microcontroladores. PIC Estructura pipe-line: durante la ejecucin de una instruccin, se est accediendo a la memoria de programa para traer la siguiente instruccin a ejecutar. (salvo un salto o llamada a subpr.) Todas las instrucciones ocupan una posicin de memoria de programa

Todas las instrucciones se ejecutan en un ciclo de instruccin = 4 ciclos de reloj (salvo las instrucciones de salto)
Ortogonalidad de los registros: se opera entre el registro de trabajo W y cualquier otro registro, el resultado puede almacenarse en W
Tecnologa Electrnica

Universidad de Oviedo

ARQUITECTURA HARVARD

6. Microcontroladores. PIC

El tiempo de acceso se mejora respecto a la arquitectura von Neumann donde programa y datos se traen a la CPU usando el mismo bus. La arquitectura Harvard tiene memoria de programa y memoria de datos separadas y se accede a ellas a travs de buses separados.
Tecnologa Electrnica

Microcontroladores PIC. Caractersticas

Universidad de Oviedo

Eficiencia del cdigo: permiten gran compactacin de programas Rapidez de ejecucin: a f de 20MHz 5 millones de instr./seg. Seguridad en acceso: Separa memoria de datos y de programa 6. Microcontroladores. PIC Juego reducido de instrucciones Compatibilidad de pines y cdigo entre dispositivos (familias) Gran variedad de versiones en distintos encapsulados (8 - 84 pines) Herramientas de desarrollo software y hardware abundantes y de bajo coste

Tecnologa Electrnica

10

Familias de PIC
Familia PIC16C5X Encapsulados de 14, 18, 20 y 28 pines Instrucciones de 12 bits Juego de 33 instrucciones Es la familia base de partida de los PIC

Universidad de Oviedo

6. Microcontroladores. PIC

Familia PIC16CXXX/16FXXX Encapsulados desde 18 hasta 68 pines (DIP, SSOP, PLCC, QFP) Instrucciones de 14 bits en Memoria de Programa Juego de 35 instrucciones Gran variedad de mdulos integrados
Tecnologa Electrnica

11

Familia PIC16CXXX/16FXXX
Puertos de Entrada/Salida
Puerto Esclavo Paralelo (PSP) Temporizadores/contadores (TMR0, TMR1, TMR2) 6. Microcontroladores. PIC Captura / Comparacin / PWM (CCP1 y CCP2) Conversin Analgica / Digital (A/D) Transmisor Receptor Asncrono Sncrono Universal (USART) Puerto Serie Sncrono (BSSP MSSP) Memoria EEPROM de datos

Universidad de Oviedo

FLASH EEPROM de programa modificable desde el cdigo


Tecnologa Electrnica

12

Familia PIC16CXXX/16FXXX
Microcontrolador PIC16F877 (gama media)
8K x 14 368 x 8

Universidad de Oviedo

6. Microcontroladores. PIC

Temporizadores

Puerto Esclavo Paralelo Conversor A/D

Mdulos CCP SSP

Tecnologa Electrnica

256 x 8

USART

Puertos de E/S

13

PIC. Proceso de diseo

Universidad de Oviedo

Diseo software: el micro sin un programa cargado en su memoria no hace nada, cuando el micro est grabado con un programa eficiente el conjunto empezar a funcionar 6. Microcontroladores. PIC

Diseo del programa y escritura del cdigo fuente en ensamblador o en C Pruebas, verificacin y modificacin del cdigo: Simulacin del programa (puro software) o emulacin dentro del circuito de aplicacin (software y hardware) Grabacin del cdigo mquina en la memoria del microcontrolador
Emulacin o Depuracin sobre PCB Edicin del cdigo, 1 depuracin y Tecnologa Electrnica simulacin

Grabacin del micro

14

Universidad de Oviedo

6. Microcontroladores. PIC

PIC 16F877 ORGANIZACIN DE LA MEMORIA

Copyright ATE

Tecnologa Electrnica

15

Organizacin de la memoria
El PIC16F877 dispone de tres tipos de memoria:

Universidad de Oviedo

Consta de 8192 posiciones (8Kwords) y contiene el programa con las instrucciones que gobiernan la aplicacin. Es no voltil.
6. Microcontroladores. PIC

Memoria de programa

Guarda las variables y datos. Est formada por registros de 8 bits. Es voltil.

Memoria de datos RAM

Es una pequea rea de memoria de datos de lectura y escritura no voltil que permite garantizar que determinada informacin estar siempre disponible al reiniciar el programa.
Tecnologa Electrnica

Memoria EEPROM de datos

16

Memoria
Memoria de programa

Universidad de Oviedo

Memoria de datos RAM

6. Microcontroladores. PIC

Memoria EEPROM
Tecnologa Electrnica

EEPROM

156 X 8

17

Memoria de programa
La informacin contenida en esta memoria se graba previamente mediante un equipo (programador o grabador).

Universidad de Oviedo

Almacena todas las instrucciones del programa en ejecucin, y queda grabada de forma permanente.
6. Microcontroladores. PIC

En el PIC16F877 esta memoria es no voltil del tipo ROM Flash y admite unas 1000 grabaciones. Est organizada en palabras de 14 bits cada una. Todas las instrucciones ocupan una posicin de memoria de programa A la posicin 0 se accede tras un RESET y a la posicin 4 tras una interrupcin.
Tecnologa Electrnica

18

Memoria de programa. Contador de programa, PC.

Universidad de Oviedo

Para acceder a la memoria de programa de los PIC16FXXX se utiliza un registro de 13 bits que acta como puntero de la instruccin que se debe ejecutar en el siguiente ciclo de instruccin. Este registro es el Contador de Programa PC que permite direccionar 8K posiciones de memoria de 14 bits (recordar que cada posicin corresponde a una instruccin) por tanto, el PC es capaz de direccionar 8K instrucciones. Resulta fcil saber si un PIC tiene memoria de programa suficiente para una determinada aplicacin.
19

6. Microcontroladores. PIC

Tecnologa Electrnica

Memoria de programa. Contador de programa, PC.

Universidad de Oviedo

Lneas de direcciones (direccionamiento)

6. Microcontroladores. PIC

Lneas de datos de la memoria de programa

ACCESO A LA MEMORIA DE PROGRAMA

Tecnologa Electrnica

20

Memoria de programa. Contador de programa, PC.


Los 8K de memoria de programa disponible estn divididos en 4 pginas de 2K cada una (0h7FFh, 800h-FFFh, 1000h17FFh y 1800h-1FFFh). Esto se debe a que las instrucciones de salto y llamada a subprograma permiten cargar slo 11 bits en el PC (desplazamiento en 211 = 2K) Si se estn ejecutando instrucciones secuencialmente, el contador de programa pasar de una pgina a otra. Para saltar entre pginas de la memoria de programa los 2 bits ms altos del PC deben modificarse. Esto se realiza escribiendo en el registro PCLATH (es un registro situado en la memoria de datos).
Tecnologa Electrnica

Universidad de Oviedo

6. Microcontroladores. PIC

21

Memoria de programa. Contador de programa, PC.


Universidad de Oviedo

CONTADOR DE PROGRAMA El contador de programa (PC) es un registro de 13 bits que se descompone en 2 registros: PCH y PCL El byte bajo PC<0:7> se denomina PCL y est disponible en la memoria de datos. Es un registro que se puede leer y escribir directamente desde el programa. El cuasibyte alto PC<12:8> se denomina PCH y no est disponible en la memoria de datos. Este registro no se puede leer ni escribir directamente. La escritura debe realizarse usando como registro intermedio el registro PCLATH que s es un registro de 8 bits accesible en la memoria de datos del microcontrolador. El contenido del registro PCLATH se transfiere a la parte alta del PC en el momento en que se escribe en el registro PCL. Tambin aporta dos bits al PC en los saltos o llamadas a subprogramas.
Tecnologa Electrnica

6. Microcontroladores. PIC

22

Universidad de Oviedo

La pila
La pila permite almacenar las direcciones a donde debe retornar el programa cuando se finaliza una llamada a una subrutina o cuando se finaliza la ejecucin de una rutina de interrupcin. Los microcontroladores de la familia PIC16 tienen una pila de 8 niveles x 13 bits, que por tanto permite como mximo 8 llamadas a subrutinas (CALLs) o ejecuciones de rutinas de interrupcin (salto a 0004h). El espacio de memoria para la pila no forma parte de la memoria de programa ni de la memoria de datos que tiene el microcontrolador. Es un espacio de memoria totalmente independiente. El puntero de pila no se puede leer ni escribir. La pila es gestionada por el hardware.
Tecnologa Electrnica

6. Microcontroladores. PIC

23

Universidad de Oviedo

Memoria RAM de datos

6. Microcontroladores. PIC

La memoria de datos est distribuida en 4 posibles bancos de 128 bytes cada uno. Por tanto, la mxima cantidad de memoria disponible en los microcontroladores PIC16 es de 512 bytes. No obstante, no estn implementadas todas las posiciones de memoria en todos los bancos. Por ejemplo, un PIC16F876 slo tiene implementadas 368 posiciones de memoria de datos. A cada posicin de memoria se le denomina registro. La memoria de datos se organiza en bancos de 128 bytes porque cuando se indica una direccin de operando fuente, slo se pueden incluir 7 bits en la codificacin: 27=128 bytes

Tecnologa Electrnica

24

Memoria RAM de datos


Se distinguen dos tipos de registro:

Universidad de Oviedo

Sirve para almacenar todos los datos que se manejan en un programa.

Registros de funciones especiales: Son los primeros registros. Cada uno de ellos cumple un propsito especial en el control del PIC. 6. Microcontroladores. PIC Registros de propsito general: Se pueden usar para guardar datos temporales. El PIC16F877 dispone de 368. Cuenta con cuatro bancos de memoria: Bancos 0, 1, 2 y 3. Los registros de funciones especiales aparecen de la direccin 00h a 1Fh del Banco 0, de 80h a 9Fh del Banco 1, de 100h a 10F en el Banco 2 y de 180h a 18Fh del Banco 3. Algunos son accesibles desde dos o ms bancos. Los registros de propsito general ocupan 368 posiciones de memoria.
Tecnologa Electrnica

25

STATUS

La memoria de datos
STATUS STATUS PORTB

Universidad de Oviedo
STATUS

PORTB

6. Microcontroladores. PIC
Tecnologa Electrnica

26

Memoria de datos

Universidad de Oviedo

MODOS DE DIRECCIONAMIENTO
La memoria de datos est distribuida en 4 posibles bancos de 128 bytes cada uno. Existen 2 modos de direccionamiento para acceder a cualquiera de las posiciones de la memoria de datos: Direccionamiento directo Direccionamiento indirecto Direccionamiento directo: La posicin de memoria con la que se trabaja viene directamente definida en el cdigo de la instruccin. Direccionamiento indirecto: La posicin de memoria con la que se trabaja viene definida por el contenido del registro FSR (Posicin 04h, 84h, 104h o 184h), es decir, el registro FSR acta como puntero de la posicin de memoria con la que se pretende operar.

6. Microcontroladores. PIC

Tecnologa Electrnica

27

Memoria de datos: Direccionamiento.

Universidad de Oviedo

DIRECCIONAMIENTO DIRECTO
6. Microcontroladores. PIC
BANCO 0 1 RP1:RP0 00 01

2
3

10
11

Tecnologa Electrnica

28

Direccionamiento indirecto
1) 2)

Universidad de Oviedo

SE LEE EL REGISTRO CONTENIDO EN EL CODIGO DE LA INSTRUCCIN. SI EL REGISTRO ES DISTINTO DEL CORRESPONDIENTE A INDF (00h,80h,100h 180h) LA INSTRUCCIN SE EJECUTA SOBRE EL REGISTRO INDICADO EN LA INSTRUCCIN COMPLEMENTADO CON LOS BITS RP1:RP0 DEL REGISTRO STATUS (DIRECCIONAMIENTO DIRECTO) SI EL REGISTRO CORRESPONDE A LA POSICION DE INDF (00h,80h,100h 180h), LA INSTRUCCIN SE EJECUTA SOBRE EL REGISTRO INDICADO EN EL REGISTRO FSR COMPLEMENTADO CON EL BIT IRP DEL REGISTRO STATUS

6. Microcontroladores. PIC

3)

Sencillo ejemplo de direccionamiento indirecto donde se limpian las posiciones de memoria de datos comprendidas entre la posicin 20h y la 2Fh (ambas incluidas)
Tecnologa Electrnica

NEXT

BCF STATUS, IRP MOVLW 0x20 MOVWF FSR CLRF INDF INCF FSR,F BTFSS FSR,4 GOTO NEXT :

CONTINUE

; dir. Indirecto, bancos 0/1 ; Inicializa puntero a RAM ; ; limpia registro INDF ; Inc puntero ; Todo limpio? ; NO, limpia siguiente ; ; SI, continua

29

Registro de estado

Universidad de Oviedo

6. Microcontroladores. PIC
Tecnologa Electrnica

30

Registro option

Universidad de Oviedo

6. Microcontroladores. PIC
Tecnologa Electrnica

31

Registro intcon

Universidad de Oviedo

6. Microcontroladores. PIC
Tecnologa Electrnica

32

PIE1

Universidad de Oviedo

6. Microcontroladores. PIC
Tecnologa Electrnica

33

PIR1

Universidad de Oviedo

6. Microcontroladores. PIC
Tecnologa Electrnica

34

Universidad de Oviedo

6. Microcontroladores. PIC

CARACTERSTICAS ESPECIALES DE LOS PIC

Tecnologa Electrnica

35

Universidad de Oviedo

CARACTERSTICAS ESPECIALES DE LOS PIC


Estas caractersticas suelen ser los aspectos que ms distinguen la CPU de estos dispositivos con otros microprocesadores. Oscilador: ms simple y con menos elementos adicionales necesarios

6. Microcontroladores. PIC

Resets y Watchdog: seguridad en el arranque, reinicio y autovigilancia Sleep: modo de bajo consumo para aplicaciones con bateras Interrupciones: lgica de mscaras y eventos y posicin comn del PTI Proteccin de cdigo: para evitar la copia de programas grabados ICSP e ICSP LVP: (In-Circuit Serial Programming) programacin en serie ya en la tarjeta de la aplicacin y a baja tensin (Low Voltage Program) Modo depuracin ICD: (In-Circuit Debugger) modo especial que permite depurar el cdigo pero ya con el MCU conectado con el resto del circuito.

Tecnologa Electrnica

36

PALABRA DE CONFIGURACIN
Todos los microcontroladores PIC tienen una posicin de memoria denominada palabra de configuracin en la que cada bit tiene un significado y configura las caractersticas especiales. Los bits de configuracin estn fuera del espacio de memoria de programa de usuario por lo que slo son accesibles durante la programacin del micro y no durante la ejecucin de un programa. Las herramientas que ofrece MICROCHIP nos dan dos alternativas para fijar los valores de estos bits de configuracin: a travs del men Configure > Configuration_Bits del entorno MPLAB mediante la inclusin de una directiva de configuracin en el cdigo del programa.

Universidad de Oviedo

6. Microcontroladores. PIC

Tecnologa Electrnica

37

OSCILADOR

Universidad de Oviedo

6. Microcontroladores. PIC

Los PIC16F87X pueden funcionar con 4 modos distintos de oscilador. El usuario puede programar dos bits de configuracin para seleccionar uno de estos 4 modos: LP Low Power Crystal (cristal de cuarzo resonador cermico hasta 200KHz) XT Crystal/Resonator (cristal de cuarzo resonador cermico hasta 4MHz) HS High Speed Crystal/Resonator (cristal de cuarzo entre 4MHz y 20MHz) RC Resistor/Capacitor (red RC externa hasta 4MHz)

Tecnologa Electrnica

38

CICLO DE INSTRUCCIN

Universidad de Oviedo

6. Microcontroladores. PIC

Un ciclo de instruccin es el tiempo que se tarda en ejecutar una instruccin (salvo saltos) en el microcontrolador. En los PIC16, un ciclo de instruccin dura 4 ciclos de reloj (Q1, Q2, Q3, Q4). En una primera etapa, la instruccin es trada a la CPU. Esto lleva un ciclo de instruccin. En la segunda etapa se ejecuta la instruccin. Esto lleva otro. No obstante, debido al solapamiento (pipelining) de traer la instruccin actual y ejecucin de la instruccin previa, una instruccin se trae y otra se ejecuta cada ciclo de instruccin. Se produce un ciclo de instruccin de retardo si el resultado de ejecutar la instruccin anterior modifica el contenido del Contador de Programa (Ej: GOTO CALL).

Tecnologa Electrnica

39

MODO SLEEP

Universidad de Oviedo

6. Microcontroladores. PIC

Los microcontroladores PIC pueden trabajar en dos modos distintos: Modo Normal: ejecutando las instrucciones Modo Dormido o de bajo consumo: se suspende la ejecucin El consumo de un microcontrolador depende de su frecuencia de trabajo, a ms frecuencia ms consumo. El modo dormido supone un ahorro de consumo porque el oscilador del microcontrolador deja de oscilar, por tanto no se ejecutan instrucciones. En este modo dormido se entra por software cuando se ejecuta la instruccin SLEEP

Tecnologa Electrnica

40

MODO SLEEP

Universidad de Oviedo

Al entrar en modo dormido, el bit PD (STATUS<3>) se pone a 0 y el bit TO (STATUS<4>) se pone a 1, estos bits indican que se entr en ese modo para conocimiento posterior en tiempo de ejecucin. A continuacin el oscilador deja de oscilar. Los pines asociados a Puertos de Entrada/Salida mantienen el valor previo a la ejecucin de la instruccin SLEEP. Si est habilitado el WATCHDOG (en la palabra de configuracin), su temporizador se pondr a cero al ejecutar la instruccin SLEEP, pero se mantendr corriendo y podra desbordar ya que el Watchdog tiene un oscilador RC independiente del propio del microcontrolador. El microcontrolador puede salir del modo de bajo consumo por alguno de los siguientes motivos: 1. Un RESET externo provocado en el pin MCLR. 2. Desbordamiento del WATCHDOG. 3. Interrupcin provocada por algn evento de los perifricos que pueden generarlos sin la presencia del oscilador.

6. Microcontroladores. PIC

Tecnologa Electrnica

41

RESET DEL MCU


Los PIC16F87X tienen 6 posibles fuentes de RESET del MCU:

Universidad de Oviedo

6. Microcontroladores. PIC

Power-on Reset (POR) -> Reset de Alimentacin del Microcontrolador MCLR Reset durante funcionamiento normal -> Activacin del pin de Reset en modo normal MCLR Reset durante SLEEP -> Activacin del pin de Reset en modo de bajo consumo WDT Reset (durante funcionamiento normal) -> Desbordamiento del Watchdog en modo normal WDT Wake-up (durante SLEEP) -> Desbordamiento del Watchdog en modo de bajo consumo Brown-out Reset (BOR) -> Reset por cada temporal de la alimentacin La mayora de los registros del mapa de memoria de datos no se ven afectados por ningn tipo de RESET. No obstante, hay muchos otros registros que son reseteados a un valor determinado si se produce un POR, un MCLR Reset WDT Reset durante funcionamiento normal, un MCLR Reset durante SLEEP un BOR.

Tecnologa Electrnica

42

PERRO GUARDIN O WATCHDOG

Universidad de Oviedo

El temporizador Watchdog es un temporizador existente en el microcontrolador basado en un oscilador RC interno, independiente del oscilador del microcontrolador Este oscilador RC interno no tiene nada que ver con un posible oscilador RC externo conectado a la patilla OSC1/CLKI. Si est activo, durante el funcionamiento normal del microcontrolador, un desbordamiento ( time-out) del Watchdog provoca un Reset del microcontrolador (Watchdog Timer Reset). Para que no se desborde, cada cierto tiempo y antes de que llegue al lmite, se debe ejecutar una instruccin CLRWDT que limpia el Watchdog y le hace comenzar una nueva cuenta desde cero.

6. Microcontroladores. PIC

Si el dispositivo est en modo dormido, un desbordamiento del watchdog provoca que el micro despierte y continue con el funcionamiento normal (Watchdog Timer Wake-Up) con la instruccin que sigue a SLEEP.
El bit TO del registro STATUS se pone a cero tras un desbordamiento del Watchdog.

Tecnologa Electrnica

43

Universidad de Oviedo

PERRO GUARDIN O WATCHDOG

Un preescaler es un divisor de frecuencia que puede hacer que se cuente antes el nmero de desbordamientos del WDT y hacer as que el tiempo que tarda en resetear al microcontrolador sea ms largo. Ese divisor de frecuencia est compartido con el TMR0 y por tanto, si se usa para el TMR0 no se puede usar para el WATCHDOG y viceversa. El divisor de frecuencia del WATCHDOG viene definido por unos bits del registro OPTION: PSA: a quin se le asigna el divisor. PS2-PS1-PS0: cul es el factor de divisin de la frecuencia:
000: 001: 010: 011: 1:2 para TMR0 / 1:1 para WDT. 1:4 para TMR0/ 1:2 para WDT. 1:8 para TMR0 / 1:4 para WDT. 1:16 para TMR0 / 1:8 para WDT. 100: 101: 110: 111: 1:32 para TMR0 / 1:16 para WDT. 1:64 para TMR0 / 1:32 para WDT. 1:128 para TMR0 / 1:64 para WDT. 1:256 para TMR0 / 1:128 para WDT.

6. Microcontroladores. PIC

Tecnologa Electrnica

44

INTERRUPCIONES

Universidad de Oviedo

6. Microcontroladores. PIC

Los PIC16F87XA tienen hasta 15 posibles fuentes de interrupcin, entre otras: Escritura o lectura del puerto esclavo paralelo (PSPIF) Desbordamiento del TMR0 Desbordamiento del TMR1 Desbordamiento del TMR2 Captura de un mdulo CCP (CCPxIF). Comparacion del modulo CCP en modo disparo de evento especial. Mdulo SSP al detectar un bit de START STOP Mdulo SSP al transmitir o recibir en modo esclavo Mdulo USART al RX o TX (modo sncrono) (RCIF TXIF). Al finalizar una conversin A/D Al completar una escritura en EEPROM (EEIF). Al modificarse el estado de salida de alguno de los comparadores (CMIF). Interrupcin externa por flanco en el pin RB0/INT (INTF). Interrupcin por cambio en los valores de los pines RB4 a RB7 del PORTB (RBIF).

Tecnologa Electrnica

45

INTERRUPCIONES

Universidad de Oviedo

Se dispone de un bit de habilitacin de interrupciones global GIE (INTCON<7>) que permite deshabilitar todas las interrupciones (si est a 0). Cuando el bit GIE est a 1, si una interrupcin tiene su flag a 1 y sus bits de habilitacin a 1, el microcontrolador terminar la instruccin que se est ejecutando en ese instante y, a continuacin, pasar a ejecutar la posicin 4 de la memoria de programa que corresponde a la posicin del vector de interrupcin y que es el mismo para todas las interrupciones. Las fuentes de interrupcin pueden deshabilitarse individualmente utilizando sus mscaras o bits de habilitacin (bits acabados en E). El bit GIE se pone a 0 tras un RESET. Por tanto, al principio las interrupciones estn desactivadas. Al producirse el salto a la rutina o programa de tratamiento de la interrupcin, el bit GIE se pone a 0 deshabilitando el resto de interrupciones, salvo que por software se vuelva a poner a 1 ese bit GIE. El retorno del programa de tratamiento de interrupcin (RETFIE) coloca en la mscara global GIE el valor 1, adems de recuperar el PC de la pila hardware. Los bits de flags pueden ponerse a 1 independientemente de que sus bits de habilitacin estn o no a 1, ya que indican eventos.
Tecnologa Electrnica

6. Microcontroladores. PIC

46

Lgica de interrupciones

Universidad de Oviedo

6. Microcontroladores. PIC
Tecnologa Electrnica

47

SALVANDO EL CONTEXTO

Universidad de Oviedo

Cuando se produce una interrupcin slo se guarda en la pila hardware interna el valor del PC. Normalmente, se debern salvar algunos otros registros para no perder su contenido al regresar al programa principal y tras haber pasado por la rutina de interrupcin, mxime cuando se ignora cundo se va a producir el salto a ese programa de tratamiento de la interrupcin (PTI) desde el programa principal. Estos registros son al menos el W y el STATUS

6. Microcontroladores. PIC

Tambin puede resultar interesante guardar el registro PCLATH, especialmente si en la rutina de interrupcin se cambia de pgina de memoria de programa.
Como no hay pila en RAM, hay que reservar posiciones de memoria en RAM que habitualmente denominaremos W_TEMP, STATUS_TEMP y PCLATH_TEMP donde se guardan los valores de W, STATUS y PCLATH al entrar en la rutina de interrupcin para luego recuperarlos al salir.

Tecnologa Electrnica

48

SECUENCIA PARA SALVAR EL CONTEXTO DEL PROG. PCPAL.

Universidad de Oviedo

Siempre se debe hacer as o de una manera similar (si se guardan ms registros) al principio de un PTI

;Para salvar el contexto no podemos emplear la instruccin MOVF ;ya que afecta al registro STATUS (al bit Z), para evitarlo ;empleamos la instruccin SWAPF movwf W_tmp swapf STATUS,W bcf STATUS,RP0 bcf STATUS,RP1 movwf STATUS_tmp movf PCLATH,W movwf PCLATH_tmp ;Salvamos el registro W ; y el registro STATUS "girado" en W ;Aseguramos el paso al banco 0 ;poniendo a 0 los dos bits de seleccin de ;banco ;Guardamos en el banco 0 STATUS girado ;Salvamos tambin PCLATH en W ;y ahora en una posicin auxiliar del ;banco 0

6. Microcontroladores. PIC

Tecnologa Electrnica

49

SECUENCIA PARA RECUPERAR EL CONTEXTO DEL PROG. PCPAL.

Universidad de Oviedo

;Para recuperar los registros salvados no podemos usar MOVF ;porque modifica a STATUS, para evitarlo usamos la instruccin ;SWAPF movf PCLATH_tmp,W movwf PCLATH swapf STATUS_tmp,W ;Recuperamos PCLATH ;directamente ;Recuperamos el registro STATUS con ;un SWAPF ;ahora estamos en el banco de partida ;Recuperamos tambin el W con dos ;SWAPF ;para evitar la instruccin MOVF

6. Microcontroladores. PIC

movwf STATUS swapf W_tmp,F


swapf W_tmp,W

retfie

;Ahora ya podemos retornar del PTI

Tecnologa Electrnica

50

Universidad de Oviedo

Programacin en ensamblador
6. Microcontroladores. PIC

Copyright ATE

Tecnologa Electrnica

51

Ensamblador

Universidad de Oviedo

El lenguaje ensamblador expresa las instrucciones de una forma ms natural al hombre que el lenguaje mquina (0 y 1) a la vez que muy cercana al microcontrolador, ya que cada una de esas instrucciones se corresponde con otra en cdigo mquina. El lenguaje ensamblador trabaja con nemnicos, que son grupos de caracteres alfanumricos que simbolizan las rdenes o tareas a realizar. La traduccin de los nemnicos a cdigo mquina la realiza un programa ensamblador: MPASM. El programa escrito en lenguaje ensamblador se denomina cdigo fuente (*.asm). El programa ensamblador proporciona a partir de este fichero el correspondiente cdigo mquina, que suele tener la extensin *.hex.

6. Microcontroladores. PIC

Tecnologa Electrnica

52

Cdigo fuente

Universidad de Oviedo

6. Microcontroladores. PIC

Est compuesto por una sucesin de lneas de texto. Cada lnea puede estructurarse en hasta cuatro campos o columnas separados por uno o ms espacios o tabulaciones entre s. Campo de etiquetas. Expresiones alfanumricas escogidas por el usuario para identificar una determinada lnea. Todas las etiquetas tienen asignado el valor de la posicin de memoria en la que se encuentra el cdigo al que acompaan. Campo de cdigo. Corresponde al nemnico de una instruccin, de una directiva o de una llamada a macro. Campo de operandos y datos. Contiene los operandos que precisa el nemnico utilizado. Segn el cdigo puede haber dos, uno o ningn operando. Campo de comentarios. Dentro de una lnea, todo lo que se encuentre a continuacin de un punto y coma (;) ser ignorado por el programa ensamblador y considerado como comentario.

Tecnologa Electrnica

53

Campo de cdigo
Puede estar ocupado por:

Universidad de Oviedo

Instrucciones: son aquellos nemnicos que son convertidos por el ensamblador en cdigo mquina que puede ejecutar el microcontrolador. Cada nemnico se convierte en una palabra en la memoria de programa.

6. Microcontroladores. PIC

Directivas: Pseudoinstrucciones que controlan el proceso de ensamblado del programa, pero no son parte del cdigo. Son indicaciones al programa ensamblador de cmo tiene que generar el cdigo mquina.
Macros: Secuencia de nemnicos que pueden insertarse en el cdigo fuente del ensamblador de una manera abreviada mediante una simple llamada.

Tecnologa Electrnica

54

Campo de operandos y datos


TIPO SINTAXIS

Universidad de Oviedo

Decimal

D<valor> H<valor> <valor>H O<valor> B<valor> A<carcter>

d<valor> h<valor> <valor>h

.<valor>
0x<valor> . o<valor> b<valor>

6. Microcontroladores. PIC

Hexadecimal Octal

Binario
ASCII Cadena

a<carcter> <cadena>

<carcter>

Las constantes hexadecimales que empiecen por una letra deben ir precedidas de un cero para no confundirlas con una etiqueta.
Tecnologa Electrnica

55

Juego de instrucciones

Universidad de Oviedo

Es un juego reducido de 35 instrucciones muy simples y rpidas.


La mayora de las instrucciones se ejecuta en 4 ciclos de reloj; los saltos se ejecutan en 8. Todas las instrucciones tienen la misma longitud: 14 bits.

6. Microcontroladores. PIC

Instrucciones de CARGA
NEMNICO DESCRIPCIN FLAGS AFECTADOS

clrf clrw

00 (f) 00 (W)

Z Z

movf
movlw

f,d
k

(f) (destino)
k (W)

Z
Ninguno

movwf

(W) (f)

Ninguno 56

Tecnologa Electrnica

Juego de instrucciones
Instrucciones de BIT
NEMNICO DESCRIPCIN

Universidad de Oviedo

FLAGS AFECTADOS

bcf bsf 6. Microcontroladores. PIC

f,b f,b

Pone a 0 el bit b del registro f Pone a 1 el bit b del registro f Instrucciones ARITMTICAS
DESCRIPCIN

Ninguno Ninguno
FLAGS AFECTADOS

NEMNICO

addlw addwf decf incf sublw subwf

k f,d f,d f,d k f,d

(W) + k (W) (W) + (f) (destino) (f) - 1 (destino) (f) + 1 (destino) K - (W) (W) (f) - (W) (destino)

C DC - Z C DC - Z Z Z C DC - Z C DC - Z

Tecnologa Electrnica

57

Juego de instrucciones
Instrucciones LGICAS
NEMNICO DESCRIPCIN

Universidad de Oviedo

FLAGS AFECTADOS

andlw andwf 6. Microcontroladores. PIC comf iorlw iorwf rlf rrf swap xorlw xorwf

k f,d f,d k f,d f,d f,d f,d k f,d

(W) AND k (W) (W) AND (f) (destino) (/f) (destino) (W) OR k (W) (W) OR (f) (destino) Rota (f) a izquierda (destino) Rota (f) a derecha (destino) Intercambia nibbles (f) (destino) (W) XOR k (W) (W) XOR (f) (destino)

Z Z Z Z Z C C Ninguno Z Z

Tecnologa Electrnica

58

Juego de instrucciones
Instrucciones de SALTO
6. Microcontroladores. PIC
NEMNICO DESCRIPCIN

Universidad de Oviedo

FLAGS AFECTADOS

btfsc btfss decfsz incfsz goto

f,b f,b f,d f,d k

Salta si el bit b de f es 0 Salta si el bit b de f es 1 (f) - 1 (destino) y salta si es 0 (f) + 1 (destino) y salta si es 0 Salta a la direccin k

Ninguno Ninguno Ninguno Ninguno Ninguno

Tecnologa Electrnica

59

Juego de instrucciones

Universidad de Oviedo

Instrucciones de manejo de SUBRUTINAS


6. Microcontroladores. PIC
NEMNICO DESCRIPCIN FLAGS AFECTADOS

call retfie retlw return

k k

Llamada a subrutina Retorno de una interrupcin Retorno con un literal en (W) Retorno de una subrutina

Ninguno Ninguno Ninguno Ninguno

Tecnologa Electrnica

60

Juego de instrucciones

Universidad de Oviedo

Instrucciones ESPECIALES 6. Microcontroladores. PIC


NEMNICO DESCRIPCIN FLAGS AFECTADOS

clrwdt
nop sleep

Borra Timer del Watchdog


No operacin Entra en modo de bajo consumo

/TO - /PD
Ninguno /TO - /PD

Tecnologa Electrnica

61

Directivas

Universidad de Oviedo

Controlan el proceso de ensamblado del programa, pero no son parte del mismo (tambin se conocen como pseudoinstrucciones). Hay ms de 50 directivas reconocidas por MPASM. A continuacin veremos algunas de las ms utilizadas.

6. Microcontroladores. PIC

END Es la nica directiva obligatoria. Indica al ensamblador dnde debe detener el proceso. Debe colocarse en la ltima lnea del programa. <etiqueta> EQU <expresin> El valor <expresin> es asignado a <etiqueta>. Estas directivas se suelen colocar al principio del programa y habitualmente se usan para definir constantes y direcciones de memoria.

[<etiqueta>] ORG <expresin> Las instrucciones del cdigo fuente que siguen a esta directiva se ensamblan a partir de la posicin indicada por <expresin>.

Tecnologa Electrnica

62

Directivas
LIST P=16F877 Indica el tipo de microcontrolador utilizado.

Universidad de Oviedo

__CONFIG <expresin> [& <expresin> & ... & <expresin>] Permite indicar la configuracin elegida para la grabacin del PIC. Ejemplo: __CONFIG _CP_OFF & _WDT_OFF & _XT_OSC

6. Microcontroladores. PIC

INCLUDE <p16F877.inc> o INCLUDE p16F877.inc Incluye en el programa un fichero donde se definen las etiquetas con las que se nombra a los diferentes registros y sus bits. Este fichero se encuentra en el directorio principal del programa ensamblador. Puede usarse esta directiva para incluir cualquier otro fichero (El fichero de inclusin no puede terminar con una directiva END).

Tecnologa Electrnica

63

Universidad de Oviedo

6. Microcontroladores. PIC

MANEJANDO LAS INSTRUCCIONES

Luca Marcos

Tecnologa Electrnica

64

Registros FSR ms utilizados y bancos donde se ubican en la RAM


Banco 0:

Universidad de Oviedo

6. Microcontroladores. PIC

PORTA PORTB PORTC PORTD PORTE TMR0 STATUS (en los dos bancos) INTCON (en los dos bancos) PCLATH (en los dos bancos)

Banco 1:

TRISA TRISB TRISC TRISD TRISE OPTION_REG

Despus del RESET de encendido, estamos en el banco 0.


La seleccin de banco se realiza mediante los bits RP0 y RP1 que se encuentran en el registro STATUS
Tecnologa Electrnica

65

Inicializacin

Universidad de Oviedo

La secuencia a seguir en el inicio es: LIST P=16F877 ;Tipo de procesador include P16F877.INC ;incluye fichero de smbolos y etiquetas

6. Microcontroladores. PIC

;se pueden incluir otros ficheros ;aqu reservamos las posiciones de memoria de datos que necesitemos a partir ;de la posicin 0x20 org 0x00 ;inicio en el vector de Reset (posicin 0 de la ;memoria de programa) goto Inicio ;va a la primera instruccin del programa ; si se van a producir interrupciones, debemos tener en cuenta que el vector de ; interrupcin se encuentra en la posicin 4 de la memoria de programa, por lo ; que habr que aadir: org 0x04 ; vector de interrupcin goto trata_interrupcin ; va al programa de tratamiento de la ;interrupcin
Tecnologa Electrnica

66

Configuracin de los puertos

Universidad de Oviedo

Los puertos (que estn en el banco 0) tienen unos registros asociados, TRIS (en el banco 1) que permiten configurar cada una de sus patillas como entrada o salida. Despus del RESET de encendido, estos registros TRIS tienen todos sus bits a 1 (los puertos correspondientes estn configurados como entradas).

6. Microcontroladores. PIC

Ejemplo: Queremos que los bits del puerto A <7:5> sean salidas y los bits <4:0> sean entradas bsf movlw movwf STATUS,RP0 b'00011111' TRISA ;pasamos al banco 1 ;configuramos PORTA<7:5> como ;salidas y PORTA<4:0> como entradas,

;aunque esto ltimo no es necesario.

Tecnologa Electrnica

67

Operaciones con literales


Universidad de Oviedo

Todas las operaciones con literales se realizan con el registro W. Para cargar, sumar, etc. un registro F con un literal se debe hacer en dos pasos: 1- Se realiza la operacin con W 2- Se carga W en el registro F.

6. Microcontroladores. PIC

Ejemplo 1: cargar el registro OPTION_REG con 0000 0110. movlw b'00000110' ;cargamos el registro option_reg... movwf OPTION_REG ;...con el valor indicado Ejemplo 2: sumar dos valores inmediatos (p.e. los decimales 12 y 7) movlw 0x0C ;carga el 1er. sumando en W addlw 0x07 ;le sumamos el 2 sumando movwf Resultado ;guardamos el resultado ;antes hemos reservado una posicin de memoria RAM para el resultado, a partir de la 0X20

(banco 0 en este caso) con la directiva EQU o bien con la directiva CBLOK. ; con EQU: Resultado EQU 0x20 ;con CBLOK:
CBLOK 0x20 Resultado ENDC

Tecnologa Electrnica

68

Universidad de Oviedo

Obtener parte de un registro


Se hace una AND con 1s. Ejemplo : Queremos quedarnos con la parte alta del registro REG.

6. Microcontroladores. PIC

MOVF ANDLW

REG, W 0xF0

;pasamos el contenido del registro a W ;hacemos la AND con F0 para obtener la parte alta

;de REG, el resultado queda en W

Otra forma:
MOVLW ANDWF 0xF0 REG, 0 ;cargamos W con el literal F0 ;hacemos la AND entre W y REG y dejamos el

;resultado en W

Tecnologa Electrnica

69

Comprobar si dos registros son iguales

Universidad de Oviedo

Se utiliza la instruccin XORWF, por lo que se hace la XOR entre W y uno de los registros. Ejemplo: saber si el registro CONTADOR que es un registro que se inicializa a 0 y se va incrementando es igual al registro FIN, en cuyo caso se termina el programa; si no, incrementamos CONTADOR.

6. Microcontroladores. PIC

MOVF CONTADOR,W ; cargamos W con el contenido de CONTADOR XORWF FIN ; hacemos la XOR entre W y FIN BTFSS STATUS,Z ; miramos si el resultado ha sido cero; INCF CONTADOR ; si no, se incrementa CONTADOR GOTO END ; si s, salta la siguiente instruccin y va a GOTO END Otra opcin es restar ambos registros utilizando el registro W; en este ejemplo slo nos interesa saber si son o no son iguales. MOVF CONTADOR, W ;cargamos W con el valor de CONTADOR SUBWF FIN, W ; restamos FIN-CONTADOR y lo dejamos en W BTFSC STATUS,Z ; si Z=0, salta ya que no son iguales GOTO Iguales ; s, son iguales GOTO NoIguales ; no son iguales En este caso hemos utilizado la instruccin BTFSC.

Si la comparacin es entre un registro y un literal, se cargara W con el contenido del registro y se hara la XOR entre W y el literal con la instruccin XORLW
Tecnologa Electrnica

70

Interrupciones

Universidad de Oviedo

En las interrupciones el proceso que se sigue es el que muestra la figura. Cuando se origina una interrupcin el bit GIE (habilitacin global de interrupciones) del registro INTCON es puesto a 0, lo que impide cualquier otra interrupcin. El bit de flag correspondiente se pone a 1 y debe borrarse por

6. Microcontroladores. PIC

software.

La habilitacin de una determinada interrupcin exige poner a 1 el bit GIE y el correspondiente bit de habilitacin de la interrupcin particular; ambos se encuentran en el registro INTCON. La instruccin RETFIE vuelve a poner GIE a 1. El registro INTCON est en el banco 0 y el 1 Tecnologa Electrnica

71

Interrupciones

Universidad de Oviedo

Hay que tener en cuenta que al principio de la interrupcin hay que salvaguardar los registros W y STATUS, a veces tambin el PCLATH. movwf W_tmp swapf STATUS,W bcf STATUS,RP0 bcf STATUS,RP1 movwf STATUS_tmp movf PCLATH,W movwf PCLATH_tmp ;Salvamos el registro W ; y el registro STATUS "girado" en W ;Aseguramos el paso al banco 0 ;poniendo a 0 los dos bits de seleccin de banco ;Guardamos en el banco 0 STATUS girado ;Salvamos tambin PCLATH en W ;y ahora en una posicin auxiliar del banco 0

PTI

6. Microcontroladores. PIC

Al final del PTI, antes de RETFIE hay que recuperarlos.

movf PCLATH_tmp,W movwf PCLATH swapf STATUS_tmp,W movwf STATUS swapf W_tmp,F swapf W_tmp,W retfie

;Recuperamos PCLATH directamente


;Recuperamos el registro STATUS con un SWAPF ;ahora estamos en el banco de partida ;Recuperamos tambin el W con dos SWAPF ;para evitar la instruccin MOVF

Tecnologa Electrnica

72

TMR0

Universidad de Oviedo

6. Microcontroladores. PIC

Es un registro que se encuentra en el banco 0 de la RAM. Es un temporizador que se incrementa con cada pulso del oscilador interno o con un reloj externo que se selecciona mediante el bit T0CS del registro OPTION_REG que se encuentra en el banco 1: T0CS =0 para el reloj interno. Tambin tiene la posibilidad de aplicarle un divisor de frecuencia (prescaler) de 8 bits que comparte con el WDT. El bit PSA (OPTION_REG <3>) a 0 le asigna el prescaler al TMR0 y los bits PS2-PS0 seleccionan por cunto se divide la frecuencia. Se puede leer y escribir en TMR0 y cuando se desborda puede producir una interrupcin. Ejemplo: Se pretende que cada 200ms. se produzca un determinado evento por interrupcin del TMR0 utilizando el oscilador interno de 4 MHz y sabiendo que cada ciclo de instruccin dura 4 ciclos del oscilador. Como un solo desbordamiento del TMR0 slo permite una temporizacin de aproximadamente 65ms tendremos que hacer que se desborde varias veces. Vamos a hacer que se desborde 20 veces para lo que tenemos que precargar el TMR0 para que se desborde a los 10ms
temp TMR0 = [(256 carga) PS + 2] Tinstr Elegimos PS=128 Carga = 180
Hay que cargar el reg. OPTION_REG con el binario: 00000110 Para permitir las interrupciones el registro INTCON debe cargarse con el binario 10100000. (Mirar la configuracin de ambos registros)

Tecnologa Electrnica

73

Interrupcin RBI

Universidad de Oviedo

Interrupcin RBI es una interrupcin producida por el cambio de estado en alguna de las lneas RB4, RB5, RB6 o RB7. Hay que configurar esas lneas como entradas y cargar el INTCON para permitir la interrupcin. Ejemplo: Vamos a utilizar la interrupcin RBI para encender unos LEDs conectados a los bits RB0, RB1, RB2 y RB3

6. Microcontroladores. PIC

BSF STATUS, RP0 ;pasamos al banco 1 para configurar el puerto B MOVLW 0XF0 ;RB<4,7> entradas, RB<0,3> salidas MOVWF TRISB BCF STATUS, RP0 ;volvemos al banco 0 CLRF PORTB ;para inicializar el puerto (LEDs apagados) MOVLW b10001000 ;habilitamos las interrupciones generales MOVWF INTCON ;y la particular poniendo GIE y RBIE a 1 Como en todas las interrupciones al principio del programa hay que poner: ORG 0x04 GOTO PTI Al principio del PTI hay que salvar los registros W y STATUS y al final del mismo hay que recuperarlos y borrar el flag RBIF

Tecnologa Electrnica

74

Suma de valores inmediatos

Universidad de Oviedo

;Escribir un programa que sume dos valores inmediatos (p.e. los decimales 12 y 7) List include p=16F877 P16F877.INC equ 0x00 Inicio 0x05 0x20 ;tipo de procesador ;incluye fichero de smbolos y

6. Microcontroladores. PIC

Resultado org goto org Inicio Stop movlw addlw movwf nop end

;etiquetas ;para almacenar el resultado ;vector de Reset


;saltamos el vector de

0x0C 0x07 Resultado

;interrupcin ;carga el 1er. sumando en W ;le sumamos el 2 sumando ;guardamos el resultado ;ponemos punto de parada ;fin del programa fuente

Tecnologa Electrnica

75

Vous aimerez peut-être aussi