1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

47
1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3

Transcript of 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

Page 1: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

1

PICmicro GAMA MEDIA: PIC16F84 [I]

DTO. INGENIERIA ELECTRÓNICA

TEM

A

3

Page 2: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

2

GAMA MEDIA (MID-RANGE ARCHITECTURE)La gama media incluye miembros de la familias PIC12 y PIC16 [PIC12F6XX,PIC16FXX] con una arquitectura de palabras de programa de 14-bits.

Los microcontroladores PIC de la gama media disponen de una amplia gama de versiones con distintos número de patillaje y opciones de memoria FLASH y OTP. Los productos FLASH ofrecen rangos de tensión de 2.0V a 5.5V, encapsulados de pequeño tamaño, manejo de interrupciones y una pila más amplia, varios canales A/D y memoria de datos EEPROM. Todas estás características suministra a la gama media una relación entre la potencia de trabajo y el coste muy buena. Los dispositivos PIC16 de la gama media ofrecen también un amplio rango de encapsulados, altos niveles de integración de periféricos tales como USB, SPI, I2C™, USART, LCD y convertidores A/D

• Amplio rango de encapsulados: 8 – 64 pins.• Memoria de programa FLASH.• Bajo consumo.• Amplio juego de periféricos.• Capacidad para 5 MIPS.• Optima relación coste-potencia de trabajo.

PICmicro GAMA MEDIA: PIC16F84

Page 3: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

3

PICmicro GAMA MEDIA: PIC16F84• Memoria de programa de 1K x 14 bit de tipo Flash-EEPROM

Memoria de datos EEPROM de 64 bytes

Memoria de datos RAM de 68 bytes

13 líneas de E/S con control individual

25 mA in/out max por pin

Frecuencia de funcionamiento máxima de 20 Mhz.

Cuatro fuentes de interrupción

Activación de la patilla RB0/INT

Desbordamiento del TMR0

Cambio de estado en alguna patilla RB4-RB7

Desbordamiento de escritura de la EEPROM de datos

Temporizador/contador TMR0 programable de 8 bits

Perro Guardián o WatchDog

35 instrucciones

Modos de direccionamiento directo, indirecto e indexado

Page 4: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

4

VDD: alimentación VSS: masa OSC1/CLKIN-OSC2/CLKOUT: conexión del oscilador VPP/MCLR: tensión de programación y reset RA0-RA3: líneas de E/S de la puerta A RA4: línea de E/S de la puerta A o entrada de impulsos para TMR0 RB0/INT: línea de E/S de la puerta B o petición de interrupción RB1-RB7: líneas de E/S de la puerta B

COMPARATIVA

DISTRIBUCIÓN DE PATILLAJE

PICmicro GAMA MEDIA: PIC16F84

Page 5: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

5

PICmicro GAMA MEDIA: PIC16F84

• ARQUITECTURA

Page 6: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

6

PICmicro GAMA MEDIA: PIC16F84• Dentro del PIC16F84 se distinguen tres bloques de memoria:

–Memoria de programa• En sus 1024 posiciones (1Kwords) contiene el programa con las instrucciones que gobiernan la aplicación. Es del tipo no volátil.

–Memoria de datos RAM• Guarda las variables y datos. Son 68 registros de 8 bits. Es volátil.

–Memoria EEPROM de datos• Es una pequeña área de memoria (64x8) de datos de lectura y escritura no volátil que permite garantizar que determinada información estará siempre disponible al reinicializarse el programa. Se gestiona de manera distinta a la memoria de datos RAM.

Page 7: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

7

PICmicro GAMA MEDIA: PIC16F84

• MEMORIA DE PROGRAMA

– Almacena todas las instrucciones del programa en ejecución, que estará grabado de forma permanente.

– La información contenida en esta memoria se graba previamente mediante un equipo físico denominado programador o grabador.

– El PIC16F84 tiene una memoria de programa no volátil denominada ROM Flash que admite unas 1000 grabaciones.

– La memoria de programa está organizada en palabras de 14 bits cada una.

– Todas las instrucciones ocupan una posición de memoria de programa.

– A la dirección 0 se accederá tras un RESET y a la posición 4 tras una interrupción cualquiera.

Page 8: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

8

Al realizar un reset, power up o un WDT el PC va a la dirección almacenada en este registro

Idem cuando ocurre una interrupción

Programa de usuario iniciaen 0005h hasta 03FFh (1K 16F84)

Org 0X00

goto INICIO

Org 0X04

goto INTERRUP

Org 0x05

INICIO bcf STATUS,5

……………………………..

Ejemplo ensamblador en Compilador MPLAB

PICmicro GAMA MEDIA: PIC16F84

• MEMORIA DE PROGRAMA

Page 9: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

9

PICmicro GAMA MEDIA: PIC16F84

• CONTADOR DE PROGRAMA (PC)– A la memoria de programa de los PIC16 se accede mediante un registro de 13 bits que actúa como puntero de la instrucción que se debe ejecutar en el siguiente ciclo de instrucción.– Este registro de 13 bits se denomina Contador de Programa (Program Counter) y su acrónimo es PC.– Con este contador de programa de 13 bits se pueden direccionar 8K posiciones de memoria de 14 bits cada una. La memoria se organiza en páginas de 2K de tamaño.– Como cada instrucción ocupa una posición de memoria resulta mucho más fácil saber si un dispositivo tiene memoria de programa suficiente para una aplicación.

LÍNEAS DE DIRECCIÓN

LÍNEAS DE DATOS DE MEMORIA

Page 10: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

10

PICmicro GAMA MEDIA: PIC16F84

• CONTADOR DE PROGRAMA (PC)– Los 8K de memoria de programa disponible están divididos en 4 páginas de 2K cada una (0h–7FFh, 800h-FFFh, 1000h- 17FFh y 1800h-1FFFh). Esto es debido a que las instrucciones de salto y llamada a subprograma permiten cargar sólo 11 bits en el PC (desplazamiento en 211 = 2K)– Si se están ejecutando instrucciones secuencialmente, el contador de programa pasará de una página a otra sin necesidad de intervención por parte del usuario o programador.– Para saltar entre páginas de la memoria de programa los 2 bits más altos del PC deben modificarse. Esto se realiza escribiendo en el registro PCLATH (es un registro situado en la memoria de datos).– Los dispositivos con menos de 2K de memoria, como el PIC16F84, no necesitan paginado.

Page 11: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

11

PICmicro GAMA MEDIA: PIC16F84• CONTADOR DE PROGRAMA (PC)

– El PC de 13 bits se divide en dos registros: PCH (parte alta) y PCL (parte baja).

– El byte bajo PC<0:7> se denomina PCL y está disponible en la memoria de datos (Banco 0, posición 02h), es un registro que se puede leer y escribir directamente desde 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 los 5 bits menos significativos del registro PCLATH que sí es un registro de 8 bits accesible en la memoria de datos (Banco 0, posición 08h).– Los saltos relativos afectan a los 8 bits de menor peso del PC (PCL) y los 5 bits de mayor peso los aporta el PCLATH. En las instrucciones GOTO y CALL, los 11 bits de menor peso del PC se suministran desde el código de operación, los 2 bits de más peso del PC se cargan con los bits [4:3] del PCLATH. Con los 11 bits se posicionan los 2K de cada página y con los 2 bits se posiciona una de las 4 páginas.

12 11 10 0

2

4 3

7 6 5 2 1 0

11

EN GOTO y CALL PROCEDEN DEL CÓDIGO DE PROGRAMA

PCL

12 8 7 0

5

047 6 5

PC

PCLATH

Page 12: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

12

PICmicro GAMA MEDIA: PIC16F84• CONTADOR DE PROGRAMA (PC)

12 11 10 0

2

4 3

7 6 5 2 1 0

11

EN GOTO y CALL PROCEDEN DEL CÓDIGO DE PROGRAMA

PCL

12 8 7 0

5

047 6 5

PC

PCLATH

PAGINA DIRECCION PCLATH

43 210

PCL

0 0000h07FFh

0000000000000111

0000000011111111

1 0800h0FFFh

0000100000001111

0000000011111111

2 1000h17FFh

0001000000010111

0000000011111111

3 1800h1FFFh

0001100000011111

0000000011111111

Page 13: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

13

PICmicro GAMA MEDIA: PIC16F84

• CONTADOR DE PROGRAMA (PC)– PILA (STACK)

• La pila permite almacenar las direcciones (PC) a donde debe retornar el programa cuando se finaliza una llamada a una subrutina o cuando se finaliza la ejecución de una rutina de interrupción.• Los microcontroladores de la familia PIC16 tienen una pila de 8 niveles x 13 bits, que por tanto permite concatenar como máximo 8 saltos a subrutinas (CALL) o ejecuciones de rutinas de interrupción (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 es leíble ni escribíble. • Al contrario que en otros micros, no se dispone de una pila en RAM que se pueda gestionar por software (no hay inst.“PUSH” ni “POP”)

Page 14: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

14

PICmicro GAMA MEDIA: PIC16F84

• VECTOR DE RESET

– El vector de RESET está siempre en la posición 0000h de la memoria de programa.– Cualquier reset (interno o externo) que se genere en un microcontrolador hará que su contador de programa pase a tener el valor 0000h y que por tanto el microcontrolador pase a ejecutar la instrucción situada en dicha posición.– El RESET también limpia el contenido del registro PCLATH.

Page 15: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

15

PICmicro GAMA MEDIA: PIC16F84

• VECTOR DE INTERRUPCIÓN

– El vector de INTERRUPCION está siempre en la posición 0004h de la memoria de programa.

– Cualquier interrupción que se fuerce a un microcontrolador hará que su contador de programa pase a tener el valor 0004h y que por tanto el microcontrolador pase a ejecutar la instrucción situada en dicha posición.

– El salto a la rutina de interrupción no modifica el contenido del PCLATH, por lo que cualquier modificación que se realice del PC en la rutina de interrupción debe realizarse con cuidado de lo que se tiene cargado en el PCLATH.

Page 16: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

16

PICmicro GAMA MEDIA: PIC16F84

• MEMORIA DE DATOS– La memoria de datos esta distribuida hasta en 4 posibles

bancos de 128 bytes (27) cada uno. Por tanto, la máxima cantidad de memoria disponible en los microcontroladores PIC16 es de 512 bytes. No obstante, no están implementadas todas las posiciones de memoria en todos los bancos, ni todos los PIC de la gama disponen de todos los bancos.

– A cada posición de memoria se le denomina registro.

Page 17: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

17

PICmicro GAMA MEDIA: PIC16F84

• MEMORIA DE DATOS

– Almacena todas los datos que se manejan en un programa.

– Se distinguen dos tipos de registro:

• Registros de funciones especiales SFR. Son los primeros registros. Cada uno de ellos cumple un propósito especial en el control del PIC.

• Registros de propósito general GPR. Se pueden usar para guardar datos temporales. El PIC16F84 dispone de 68.

– Cuenta con cuatro bancos de memoria: Bancos 0, 1, 2 y 3.

• Algunos SFR son accesibles desde dos o más bancos.

– Existen zonas de memoria no empleadas que devuelven ‘0’ en caso de lectura.

Page 18: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

18

PICmicro GAMA MEDIA: PIC16F84

• MEMORIA DE DATOS (PIC16F84)– RAM 68x8 bit– Memoria disponible 0Ch a 4Fh (12 a

79), en total 68 posiciones.– Registros especiales en bancos 0 y 1

repartidos en 15 Registros distintos

Page 19: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

19

PICmicro GAMA MEDIA: PIC16F84

• MODOS DE DIRECCIONAMIENTO DE DATOS– Existen varios modos de direccionamiento para acceder a cualquiera de las

posiciones de datos:• Direccionamiento directo• Direccionamiento indirecto• Direccionamiento indexado• Direccionamiento inmediato• Direccionamiento de bit

– Direccionamiento directo: La posición de memoria con la que se trabaja viene directamente definida en el código de la instrucción.

mowf TMR0

Page 20: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

20

PICmicro GAMA MEDIA: PIC16F84

• MODOS DE DIRECCIONAMIENTO DE DATOS– Direccionamiento indirecto: La posición de memoria con la que se trabaja viene

definida por el contenido del registro FSR (Posición 04h, 84h), es decir, el registro FSR actúa como puntero de la posición de memoria con la que se pretende operar.

movwf INDF

– Direccionamiento indexado: Se utiliza el PC, concretamente el PCL para direccionar.

addwf PCL,F

– Direccionamiento inmediato: El valor del dato inmediato lo contiene el código de operación y se carga en el registro. iorlw K

– Direccionamiento de BIT: La dirección del dato es un bit. Bcf STATUS,RP0

Page 21: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

21

PICmicro GAMA MEDIA: PIC16F84

• MODOS DE DIRECCIONAMIENTO DE LA MEMORIA DE DATOS (Cont.)

7 bits para direccionar

la RAM(9 bits)*

Dir. Indirecto 7 bits

(8 bits)*

Dir. Directo: 7 bits . Con los bits STATUS (RP1 y RP0)se obtiene el banco

(X bits)* en otros PIC de la GAMA

Page 22: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

22

PICmicro GAMA MEDIA: PIC16F84

• MODOS DE DIRECCIONAMIENTO DE LA MEMORIA DE DATOS (Cont.)– Tanto para el direccionamiento directo como el indirecto la dirección completa

(7 bits) no se puede obtener del código de la operación (5 bits) o del registro FSR (7 bits).

– Para direccionamiento directo, la dirección a operar se obtiene completando la dirección incluida en el código de la instrucción (posición en el banco) con los bits RP1:RP0 del registro STATUS (selección de banco).

– Para direccionamiento indirecto, la dirección se obtiene completando el contenido del registro FSR (posición en el banco) con el bit IRP del registro STATUS y el bit de mayor peso del FSR (selección del banco). [El PIC16F84 no utiliza el bit IRP –solo 2 bancos-].

Page 23: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

23

PICmicro GAMA MEDIA: PIC16F84

• MODOS DE DIRECCIONAMIENTO INDIRECTO: INDF y FSR

• EL DIRECCIONANMIENTO INDIRECTO UTILIZA EL INDF, NO ES UN REGISTRO FÍSICO. DIRECCIONANDO INDF SE DIRECCIONA REALMENTE EL REGISTRO CUYA DIRECCIÓN CONSTA EN EL REGISTRO FSR. El direccionamiento indirecto es muy útil para el procesamiento de posiciones consecutivas de memoria o para el direccionamiento de datos en subrutinas.

REGISTRO POSICIÓN 05h CONTIENE 10hREGISTRO POSICIÓN 06h CONTIENE 0AhCARGA DE 05h EN EL REGISTRO FSRLECTURA DE INDF DA UN VALOR DE 10hINCREMENTAR EL CONTENIDO DE FSR (FRS=06h)LECTURA DE INDF DA UN VALOR DE 0Ah

Page 24: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

24

INDF : Contiene datos para direccionamiento indirecto

TMR0 : Contador del timer

PCL : Parte baja del contador de programa

STATUS : Flag de resultados

FSR : Puntero del direccionamiento indirecto

PORTA : PORTA I/O

PORTB : PORTB I/O

EEDATA : Dato a grabar en EEPROM

EEADR : Dirección de grabación de EEPROM

PCLATH : Modifica la parte alta del contador de programa

INTCON : Control de Interrupción

OPTION_REG

: Configuración timer, prescaler

TRISA : Configuración PORTA

TRISB : Configuración PORTB

EECON1 : Registro de control de la EEPROM

EECON2 : Escritura de datos en modo protección EEPROM

INDF y EECON2 son utilizados por otros registros

PICmicro GAMA MEDIA: PIC16F84• REGISTROS ESPECIALES

Page 25: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

25INDF y EECON2 son utilizados por otros registros

PICmicro GAMA MEDIA: PIC16F84

• REGISTROS ESPECIALES

Page 26: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

26

CARRY (bit 0): bit de desbordamiento. Este bit se pone a "1" cuando la operación anterior ha rebasado la capacidad de un byte.

DC (digit carry) (bit 1): lo mismo que el anterior pero esta vez nos avisa si el número no cabe en cuatro bits.

Z (zero) (bit 2): Se pone a "1" si la operación anterior ha sido cero. Y pasa a "0" si la operación anterior no ha sido cero.

PD (Power - Down bit) (bit3): se pone a "0" después de ejecutar la instrucción SLEEP*, se pone a "1" después de ejecutar la instrucción CLRWDT o después de un power-up.

TO (Timer Up) (bit4): se pone a "0" cuando se acaba el tiempo del WATCHDOG, Se pone a "1" después de ejecutar las instrucciones, CLRWDT o SLEEP o después de un power-up.

RP0 y RP1 (selección de banco) (bit 5 y 6): Como el PIC16F84 solo tiene dos bancos de memoria el RP1 no se usa para nada, la selección del banco se hace mediante RP0 (BIT 5), si está a "0" nos encontramos en el banco 0, y si está a "1" nos encontramos en el banco 1.

IRP (bit 7): En este PIC no se usa para nada.

R = Bit de lectura

W = Bit de escritura

-n = Valor en reset

PICmicro GAMA MEDIA: PIC16F84

• REGISTROS ESPECIALES: STATUS REGISTER (Address 03h,83h)

Page 27: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

27

PICmicro GAMA MEDIA: PIC16F84

• REGISTROS ESPECIALES: PUERTOS ENTRADA/SALIDA

RB7

RB6

RB5

RB4

RB3

RB2

RB1

RB0/INT0

RA4/TOCK1

RA3

RA2

RA1

RA0

Puerto A: 5 bits Puerto B: 8 bits Definición IN-OUT por TRIS fNivel IN-OUT por PORT f

BSF STATUS,RP0 BANCO 1Para trabajar con TRIS f

BCF STATUS,RP0 BANCO 0Para trabajar con PORT f

Page 28: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

28

PICmicro GAMA MEDIA: PIC16F84

• REGISTROS ESPECIALES: PUERTOS ENTRADA/SALIDA

Definición IN-OUT por TRIS fSalida: 0Entrada: 1

Nivel IN-OUT por PORT fGuardar el contenido del Puerto en

W

Page 29: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

29

Puertos de entrada/salida

Definición IN-OUT por TRIS fSalida: 0Entrada: 1

BSF Status, RP0 ;Banco 1CLRF TRISA ;Puerto A OUTMOVLW b’11111111’ ;Puerto B INMOVWF TRISBBCF Status, RP0 ;Banco 0

MOVLW b’xxxxxxxx’ MOVWF TRISf

Nivel IN-OUT por PORT fGuardar el contenido del Puerto en

W

;SI PUERTO f ES DE SALIDA

MOVLW b'01010101‘ ;Guarda en W el valorMOVWF PORTB ;Lo envía a la salida

; SI PUERTO f ES DE ENTRADA

MOVF PORTB,W ;Guarda los datos en W

BSF TRISf,x BCF TRISf,x

PICmicro GAMA MEDIA: PIC16F84

Page 30: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

30

PICmicro GAMA MEDIA: PIC16F84

• REGISTROS ESPECIALES: PUERTOS ENTRADA/SALIDA

PORT B: resistencias de PULL-UP conectadas

Se habilitan o Deshabilitan todas a la vez por registro: OPTION_REG

BSF OPTION_REG,RBPUBCF OPTION_REG,RBPU

Si el puerto se define como SALIDA, las resistencias NO ACTUAN

PORT A: El pin RA4/TOCKI es un COLECTOR ABIERTO

- Si se utiliza de SALIDA: Resistencia EXTERNA de Pull-up

- Como ENTRADA: puede ser utilizada como Trigger-Schmitt

Vcc

Page 31: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

31

PICmicro GAMA MEDIA: PIC16F84

• JUEGO DE INSTRUCCIONES: CÓDIGO MÁQUINA

– El único lenguaje que entienden los microcontroladores es el código máquina formado por ceros y unos del sistema binario.

– El lenguaje ensamblador expresa las instrucciones de una forma más natural al hombre a la vez que muy cercana al microcontrolador, ya que cada una de esas instrucciones se corresponde con otra en código máquina.

– El lenguaje ensamblador trabaja con nemónicos, que son grupos de caracteres alfanuméricos que simbolizan las órdenes o tareas a realizar.

– La traducción de los nemónicos a código máquina entendible por el microcontrolador la lleva a cabo un programa ensamblador.

– El programa escrito en lenguaje ensamblador se denomina código fuente (*.asm). El programa ensamblador proporciona a partir de este fichero el correspondiente código máquina, que suele tener la extensión *.hex.

Page 32: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

32

PICmicro GAMA MEDIA: PIC16F84

• JUEGO DE INSTRUCCIONES: CÓDIGO MÁQUINA

Lenguaje ensamblador 111..10110011

Programa Ensamblador(MPASM)

Código fuente*.asm

Código máquina*.hex

Page 33: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

33

PICmicro GAMA MEDIA: PIC16F84

• CÓDIGO FUENTE– Está compuesto por una sucesión de líneas de texto.– Cada línea puede estructurarse en hasta cuatro campos o columnas

separados por uno o más espacios o tabulaciones entre sí.• Campo de etiquetas. Expresiones alfanuméricas escogidas por el

usuario para identificar una determinada línea. Todas las etiquetas tienen asignado el valor de la posición de memoria en la que se encuentra el código al que acompañan.

• Campo de código. Corresponde al nemónico de una instrucción, de una directiva o de una llamada a macro.

• Campo de operandos y datos. Contiene los operandos que precisa el nemónico utilizado. Según el código, puede haber dos, uno o ningún operando.

• Campo de comentarios. Dentro de una línea, todo lo que se encuentre a continuación de un punto y coma (;) será ignorado por el programa ensamblador y considerado como comentario.

NEXT CLRF INDF ; limpia registro INDF

Page 34: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

34

PICmicro GAMA MEDIA: PIC16F84

Campo de etiquetas

Campo de código

Campo de operandos y

datos

Campo de comentarios

Page 35: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

35

PICmicro GAMA MEDIA: PIC16F84

• CAMPO DE CÓDIGO– Instrucciones: son aquellos nemónicos que son convertidos por el ensamblador

en código máquina que puede ejecutar el núcleo del microcontrolador. En la gama media (PIC16xxx) cada nemónico se convierte en una palabra en la memoria de programa.

– Directivas. Pseudoinstrucciones que controlan el proceso de ensamblado del programa, pero no son parte del código. Son indicaciones al programa ensamblador de cómo tiene que generar el código máquina.

– Macros: Secuencia de nemónicos que pueden insertarse en el código fuente del ensamblador de una manera abreviada mediante una simple llamada.

• CAMPO DE OPERANDOS Y DATOS– El ensamblador MPASM soporta los sistemas de numeración decimal,

hexadecimal, octal, binario y ASCII.– Los nemónicos que tengan una constante como operando deberán incluirla

respetando la sintaxis que se indica a continuación.

Las constantes hexadecimales que empiecen por una letra deben ir precedidas de un cero para no confundirlas con una etiqueta. Ejemplo: movlw 0F7h

Page 36: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

36

PICmicro GAMA MEDIA: PIC16F84

• JUEGO DE INSTRUCCIONES

– Es un juego reducido de 35 instrucciones muy simples. Procesador RISC.

– La mayoría de las instrucciones se ejecuta en 4 ciclos de reloj; los saltos y llamadas a subprogramas se ejecutan en 8 (no se aprovecha pipeline).

– Todas las instrucciones tienen la misma longitud en la gama media: 14 bits.

– Por lo tanto el cálculo del tiempo de ejecución y de lo que ocupa un programa resulta simple.

– Las instrucciones se pueden clasificar atendiendo a dos criterios:

• FORMATO.

• FUNCIONALIDAD.

Page 37: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

37

PICmicro GAMA MEDIA: PIC16F84

• JUEGO DE INSTRUCCIONES: SEGÚN SU FORMATO

1. Orientadas al byte

2. Orientadas al bit

3. Literales y de control

Page 38: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

38

PICmicro GAMA MEDIA: PIC16F84

• SEGÚN FORMATO: INSTRUCCIONES ORIENTADAS A BYTE– NOMENCLATURA

OPERACIÓN FUENTE DESTINO

– FUNCIONAMIENTOOpera con Operando en dir fuente

– CODIFICACIÓN

NEMONICO RESERVADO

7 BITS

1 BIT

d=0 W

d=1 dir. Fuente

Page 39: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

39

PICmicro GAMA MEDIA: PIC16F84

• SEGÚN FORMATO: INSTRUCCIONES ORIENTADAS A BIT– NOMENCLATURA

OPERACIÓN FUENTE BIT

– FUNCIONAMIENTOOpera o explora el bit de la posición #bit del operando fuente

– CODIFICACIÓN

NEMONICO RESERVADO

7 BITS

3 BITS

Page 40: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

40

PICmicro GAMA MEDIA: PIC16F84

• SEGÚN FORMATO: INSTRUCCIONES LITERALES O DE CONTROL– NOMENCLATURA

OPERACIÓN VALOR LITERAL

– FUNCIONAMIENTOOperan con el valor literal directamente.

– CODIFICACIÓN

Con GOTO y CALL

8 BITSCon GOTO y CALL es de 11 bits

NEMONICO RESERVADO

Page 41: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

41

PICmicro GAMA MEDIA: PIC16F84

• INSTRUCCIONES

Page 42: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

42

PICmicro GAMA MEDIA: PIC16F84

• INSTRUCCIONES– Cada ciclo de instrucción dura ¼ de la frecuencia de reloj de entrada

– Estructura pipe-line: durante la ejecución de una instrucción, se está accediendo a la memoria de programa para traer la siguiente instrucción a ejecutar. En cuanto se acaba una instrucción, ya se dispone de la siguiente para ejecutar (salvo que se trate de un salto o llamada a subrutina que ocupan 2 ciclos).P1 MOVF REGX,W R1 ADDWF PCL,F

P2 CALL R1 R2 RETLW 0xB7 P3 MOVWF PORTB R3 RETLW 0x5AP4 . . . R4 . . . Rn RETLW 0xFF T1 Fetch P1T2 Exec P1 Fetch P2T3 Exec P2 Fetch P3T4 Exec NOP...Fetch R1T5 Exec R1 Fetch R2T6 Exec NOP...Fetch RnT7 Exec Rn Fetch RmT8 Exec NOP...Fetch P3 T9 Exec P3 ...

Page 43: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

43

PICmicro GAMA MEDIA: PIC16F84

• SEGÚN FUNCIONALIDAD

DATA SHEET

Page 44: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

44

PICmicro GAMA MEDIA: PIC16F84

• SEGÚN FUNCIONALIDAD

Page 45: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

45

PICmicro GAMA MEDIA: PIC16F84

• SEGÚN FUNCIONALIDAD

NOTA: Ver documentación ”Juego Instrucciones”

Page 46: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

46

PICmicro GAMA MEDIA: PIC16F84

• LENGUAJE ENSAMBLADOR: DIRECTIVAS MPASM

– Controlan el proceso de ensamblado del programa, pero no son parte del mismo (también se conocen como pseudoinstrucciones).

– Hay más de 50 directivas reconocidas por MPASM.

– Las más usadas :

END– Es la única directiva obligatoria. Indica al ensamblador dónde

debe detener el proceso. Debe colocarse en la última línea del programa.

<etiqueta> EQU <expresión>– El valor <expresión> 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 <expresión>– Las instrucciones del código fuente que siguen a esta directiva

se ensamblan a partir de la posición indicada por <expresión>.

Page 47: 1 PICmicro GAMA MEDIA: PIC16F84 [I] DTO. INGENIERIA ELECTRÓNICA TEMA 3.

47

PICmicro GAMA MEDIA: PIC16F84

• LENGUAJE ENSAMBLADOR: DIRECTIVAS MPASM

__CONFIG <expresión> [& <expresión> & ... & <expresión>]– Permite indicar la configuración elegida para la grabación del PIC.

Ejemplo: __CONFIG _CP_OFF & _WDT_OFF & _XT_OSC

LIST P=16F84– Indica el tipo de microcontrolador utilizado.

INCLUDE <p16F84.inc> o INCLUDE “p16F84.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 (¡Ojo! El fichero de inclusión no puede terminar con una directiva END).

(C:\archivos de programa\MPLAB IDE\MCHIP_TOOLS\*.inc)

NOTA: Ver documentación ”DIRECTIVAS MPASM (A y B)”