Diapositiva 1

Download Report

Transcript Diapositiva 1

PICmicro GAMA MEDIA: PIC16F84 [I]

1

PICmicro GAMA MEDIA: PIC16F84 ARQUITECTURA

2

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.

3

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.

4

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 de Programa es PC .

se denomina Contador (Program Counter) y su acrónimo – 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 5

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 debido a que las instrucciones de salto y (0h–7FFh, 800h-FFFh, 1000h- 17FFh y 1800h-1FFFh). Esto es llamada a subprograma permiten cargar sólo (desplazamiento en 2 11 = 2K) 11 bits en el PC – 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 el menos de 2K de memoria , como PIC16F84 , no necesitan paginado.

6

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 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 (Banco 0, 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 peso saltos relativos afectan a los 8 bits de menor peso los aporta el PCLATH. En las instrucciones GOTO y CALL , los PC se suministran desde el código de operación, los del PC (PCL) y los 5 bits de mayor 11 bits de menor peso 2 bits de más peso del 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.

PC 12 8 7 PCL 0 12 11 10 0 7 6 5 4 5 0 PCLATH 7 6 5 2 4 3 2 1 0 11 EN GOTO y CALL PROCEDEN DEL CÓDIGO DE PROGRAMA

7

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”)

8

PICmicro GAMA MEDIA: PIC16F84

• VECTOR DE RESET – El vector de RESET posición 0000h está siempre en la de la memoria de programa.

– Cualquier reset ( posición.

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 – El RESET también registro PCLATH .

limpia el contenido del 9

PICmicro GAMA MEDIA: PIC16F84

• VECTOR DE INTERRUPCIÓN – El vector de INTERRUPCION en la posición 0004h programa.

está siempre de la memoria de – 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 cargado en el 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 10

PICmicro GAMA MEDIA: PIC16F84

• MEMORIA DE DATOS – La memoria de datos esta distribuida

hasta en 4 posibles bancos de 128 bytes (2 bancos.

7 ) 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

A cada posición de memoria se le denomina

registro .

11

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.

12

PICmicro GAMA MEDIA: PIC16F84

• MEMORIA DE DATOS (PIC16F84) – RAM 68x8 bit – Memoria disponible total 68 posiciones.

0Ch a 4Fh (12 a 79), en – Registros especiales en bancos 0 y 1 repartidos en 15 Registros distintos 13

PICmicro GAMA MEDIA: PIC16F84

• MODOS DE DIRECCIONAMIENTO DE DATOS – Existen varios modos de direccionamiento para acceder a cualquiera de las posiciones de datos: • Direccionamiento directoDireccionamiento indirectoDireccionamiento indexadoDireccionamiento inmediatoDireccionamiento 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 14

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 : y se carga en el registro.

– Direccionamiento de BIT : El valor del dato inmediato lo contiene el código de operación iorlw K La dirección del dato es un bit.

Bcf STATUS,RP0 15

PICmicro GAMA MEDIA: PIC16F84

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

7 bits para direccionar la RAM (9 bits)* Dir. Directo: 7 bits . Con los bits STATUS (RP1 y RP0) se obtiene el banco Dir. Indirecto 7 bits (8 bits)* (X bits)* en otros PIC de la GAMA

16

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 peso del FSR (posición en el banco) con el bit IRP del registro STATUS y el bit de mayor (selección del banco). [El PIC16F84 no utiliza el bit IRP –solo 2 bancos-].

17

PICmicro GAMA MEDIA: PIC16F84

• MODOS DE DIRECCIONAMIENTO INDIRECTO: INDF y FSR •

EL DIRECCIONANMIENTO INDIRECTO UTILIZA EL EN EL REGISTRO FSR.

INDF, NO ES UN REGISTRO FÍSICO.

DIRECCIONANDO INDF SE DIRECCIONA REALMENTE EL REGISTRO CUYA DIRECCIÓN CONSTA 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 10h REGISTRO POSICIÓN 06h CONTIENE 0Ah CARGA DE 05h EN EL REGISTRO FSR LECTURA DE INDF DA UN VALOR DE 10h INCREMENTAR EL CONTENIDO DE FSR (FRS=06h) LECTURA DE INDF DA UN VALOR DE 0Ah

18

INDF : TMR0 PCL : : Contiene datos para direccionamiento indirecto Contador del timer Parte baja del contador de programa STATUS : FSR PORTA : PORTB EEDATA : EEADR PCLATH : INTCON OPTION_REG TRISB EECON1 EECON2 : : : : : TRISA : : : : Flag de resultados Puntero del direccionamiento indirecto PORTA I/O PORTB I/O Dato a grabar en EEPROM Dirección de grabación de EEPROM Modifica la parte alta del contador de programa Control de Interrupción Configuración timer, prescaler Configuración PORTA Configuración PORTB Registro de control de la EEPROM Escritura de datos en modo protección EEPROM INDF y EECON2 son utilizados por otros registros

19

PICmicro GAMA MEDIA: PIC16F84

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

R = W = -n = Bit de lectura Bit de escritura Valor en reset 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): bits.

lo mismo que el anterior pero esta vez nos avisa si el número no cabe en cuatro Z (zero) (bit 2): ha sido cero.

Se pone a "1" si la operación anterior ha sido cero. Y pasa a "0" si la operación anterior no 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.

20

PICmicro GAMA MEDIA: PIC16F84

• REGISTROS ESPECIALES: PUERTOS ENTRADA/SALIDA

Puerto A: 5 bits RA4/TOCK1 RA3 RA2 RA1 RA0 Puerto B: 8 bits RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0/INT0 Definición IN-OUT por TRIS f Nivel IN-OUT por PORT f BSF STATUS,RP0 Para trabajar con BANCO 1 TRIS f BCF STATUS,RP0 Para trabajar con BANCO 0 PORT f

21

PICmicro GAMA MEDIA: PIC16F84

• REGISTROS ESPECIALES: PUERTOS ENTRADA/SALIDA

Definición IN-OUT por TRIS f Salida: 0 Entrada: 1 Nivel IN-OUT por PORT f Guardar el contenido del Puerto en W

22

PICmicro GAMA MEDIA: PIC16F84 Puertos de entrada/salida

Definición IN-OUT por TRIS f Salida: 0 Entrada: 1 BSF Status, RP0 CLRF TRISA MOVLW b’11111111’ MOVWF TRISB BCF Status, RP0 ;Banco 1 ;Puerto A OUT ;Puerto B IN ;Banco 0

BSF TRISf,x BCF TRISf,x MOVLW b’xxxxxxxx’ MOVWF TRISf

Nivel IN-OUT por PORT f Guardar el contenido del Puerto en W ;SI PUERTO f ES DE SALIDA MOVLW MOVWF b'01010101‘ ;Guarda en W el valor PORTB ;Lo envía a la salida ; SI PUERTO f ES DE ENTRADA MOVF PORTB,W ;Guarda los datos en W

23

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

Vcc BSF OPTION_REG,RBPU BCF 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 24

PICmicro GAMA MEDIA: PIC16F84

• SEGÚN FUNCIONALIDAD

DATA SHEET

25

PICmicro GAMA MEDIA: PIC16F84

• SEGÚN FUNCIONALIDAD 26

PICmicro GAMA MEDIA: PIC16F84

• SEGÚN FUNCIONALIDAD 27