Está en la página 1de 55

MICROPROCESADOR PIC 16F84A

CARACTERISTICAS

Caractersticas del Procesador del PIC16F84 A Procesador segmentado pipeline Procesador tipo RISC Disponer de arquitectura HARVARD Formato de instrucciones ortogonal Una misma longitud de instrucciones (14 bits) Arquitectura en banco de registros

Procesador Pipeline

Procesador Pipeline

Ejemplo: Busqueda 1 Ejecuta 1 1. MOVLW 55h Busqueda 2 Ejecuta2 2 .MOVWF PORTB Busqueda 3 Ejecuta 3 3. CALL SUB_1 Busqueda 4 Salir 4. BSF PORTA,BIT3 Busqueda SUB_1

Ejecuta SUB_1

Tipos de Procesadores

CISC: (Complex Instruction Set Computer) Computadores de juego de instrucciones complejo, que disponen de un repertorio de instrucciones elevado (unas 80), algunas de ellas muy sofisticadas y potentes, pero que como contrapartida requieren muchos ciclos de mquina para ejecutar las instrucciones complejas. RISC: (Reduced Instruction Set Computer) Computadores de juego de instrucciones reducido, en los que el repertorio de instrucciones es muy reducido (en nuestro caso 35), las instrucciones son muy simples y suelen ejecutarse en un ciclo mquina. Adems los RISC debe de tener una estructura pipeliney ejecutar todas las instrucciones a la misma velocidad SISC:(Specific Instriction Set Computer) Computadores de juego de instrucciones especfico.

MICROPROCESADOR MODELO HARVARD


Bus Datos CPU Bus Instrucciones

Memoria de Datos

Memoria de Instrucciones

Reloj

MICROPROCESADOR MODELO DE VON NEUMANN


Bus Datos

Memoria de RAM

Memoria de ROM

CPU

Reloj

Bus Direcciones

Arquitectura Ortogonal

Arquitectura Ortogonal: En los controladores PIC la salida de la ALU puede ir al registro W y tambin a la memoria de datos. Por lo tanto el resultado puede guardarse en cualquiera de los dos destinos.Cualquier instruccin puede utilizar cualquier elemento de la arquitectura como fuente o destino.

Arquitectura Ortogonal

MEMORIA DE DATOS

MEMORIA DE DATOS

ALU

ALU

ACUMULADOR

Arquitectura de otros microcontroladores

Arquitectura de los PIC

Arquitectura basada en banco de registros


BANCO DE REGISTGROS INDIRECTO REGISTRO DE INSTRUCCIONES BUS DE DATOS 8 TMRO PC STATUS FSR MPX w PORTA PORTB PORTC REGISTROS DE PRPOSITO GENERAL

ALU 8

MICROPROCESADOR PIC 16F84A

Patillaje PIC 16F84A


OSC1/CLKIN: Entrada externa de los impulsos de reloj o conexin con el cristal de cuarzo. OSC2/CLKOUT: Salida de Fosc/4 en modo oscilador R-C o conexin con el cristal de cuarzo VPP/MCCLR#: En modo grabacin por esta patilla se introduce la tensin VPP (12-14V). En funcionamiento normal esta patilla soporta la peticin de Reset. RA0-RA3: Lneas de E/S del Puerto A RA4/TOCK1: Lneas E/S del Puerto A o entrada de impulsos de reloj para TMR0 RB0/INT : Lnea de E/S de la Puerto B o peticin de Interrupcin. RB1- RB7: Lneas de E/S del Puerto B

Diagrama de Bloques PIC 16F84A

Arquitectura del PIC16F84A Memoria de Programa EEPROM de 1Kx14bits. Memoria de datos dividida en dos reas: rea RAM formada por 22 registros de propsito especfico (SFR) y 32 de propsito general para el 16C84 y 68 para el 16F84A. rea EEPROM formada por 64 bytes ALU de 8 bits y registro de trabajo W, del que normalmente recibe un operando y enva el resultado, mientras que el otro operando puede ser cualquier registro, memoria puerto o el propio cdigo de instruccin. Recursos conectados al bus de datos: Puerto A, Puerto B, Temporizador TMR0, etc.

EL Contador de Programa

Cdigo de Operacin

EL Contador de Programa para las instrucciones CALL y GOTO

Cdigo de Operacin

Organizacin de la memoria de Programa

D ir e c c i n R e g is tr o 00h d i r. I n d i r e c . TM R0 PCL S TAT U S FSR P O R TA PO RTB d i r. I n d i r e c . O P T IO N _ R E G PCL S TAT U S FSR T R IS A T R IS B

D ire c c i n R e g is tr o 80h 81h 82h 83h 84h 85h 86h 87h E E D ATA EEADR P C LAT H IN T C O N ECO N1 ECON2 P C LATH IN T C O N 88h 89h 8Ah 8Bh 8C h

Mapa de direcciones de registros

01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0C h

68 P o s ic io n e s d e p r o p o s ito g e n e ra l SRAN

M apa de acceso en Banco 0

4Fh 50h

CFh D0h

7Fh B anco 0 B anco 1

FFh

Relacin de registros SFR

Memoria de Instrucciones PIC 16F84

Las posiciones ID de Identificacin sirven para que el usuario grabe en sus 14 bits de menos peso los cdigos que desee. Lo que le permite referenciar el modelo, la aplicacin , la versin del dispositivo, etc..

0000 IMPLEMENTADO 03FF NO IMPLEMENTADO 1FFF 2000 ID ID ID ID RESERVADO RESERVADO RESERVADO 2007 200F NO IMPLEMENTADO 3FFF
PALABRA CONFIGURACION

TIL CAPACIDAD MXIMA

PALABRAS IDENTIFICACIN

MEMORIA DE CONFIGURACIN

RESERVADO

10

Direccin Registro 00h dir.Indirec. TMR0 PCL STATUS FSR PORTA PORTB dir.Indirec.

Direccin Registro 80h

Memoria de datos RAM PIC 16X84


Consta de 2 bancos de128 bytes cada uno. El PIC 16F84A solo tiene implementadas las primeras 80 direcciones de cada banco En las 12 primeras posiciones se ubican los registros de propsito especfico(SFR). En las 68 posiciones siguientes los registros de propsito general (GPR) Los 80 registros de propsito general del Banco 1 se mapean sobre el banco 0, dejando reducidos a 68 los registros operativos
SFR

01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch

OPTION_REG 81h PCL STATUS FSR TRISA TRISB 82h 83h 84h 85h 86h 87h

EEDATA EEADR PCLATH INTCON

ECON1 ECON2 PCLATH INTCON

88h 89h 8Ah 8Bh 8Ch 16C84

2Fh Registros de proposito general

68 Posiciones de proposito general SRAN

Mapa de acceso en Banco 0 16F84

4Fh 50h

CFh D0h

7Fh Banco 0 Banco 1

FFh

Direccionamiento Directo

Los 7 bits de menor peso del cdigo de operacin de la instruccin proporcionan la posicin del registro de un banco. Los bits RP1 y RP0 del Registro de Status <6:5>, seleccionan el banco a acceder. En el caso de del PIC16F84 solo se usa el bit RP0 por tener implementado solo 2 bancos

11

Direccionamiento Indirecto

El operando de la instruccin hace referencia al registro INDF, que ocupa la posicin 0 del rea de datos. Se accede a la posicin que apunta el registro FSR, que se encuentra en la posicin 4 del banco 0. Los 7 bits de menos peso del FSR seleccionan la posicin y su bit de ms peso junto al bit IRP de registro de Status <7>, seleccionan el banco.

Funcionamiento de las instrucciones de Direccionamiento Indirecto


Memoria RAM de Datos W
2Ah

Memoria RAM de Datos W


B2h

FSR
14h

14h

2Ah

FSR
14h

14h

B2h

Posicin

Contenido Posicin Contenido

Al ejecutar movwf INDF

Al ejecutar movf INDF,W

12

Ejemplo: direccionamiento Indirecto


Este programa borra las posiciones del rea de memoria de datos comprendidas entre las direcciones 20h y 2F, usando el direccionamiento indirecto. . . movlw 0x20 ;Inicializa el puntero movf FSR ;de memoria RAM Bucle clrf INDF ;Borra el registro INDF inc FSR ; Incrementa el registro FSR btfss FSR,4 ;Comprueba si el bit 4 del FSR y si es 1 salta a la ;siguiente instruccin goto Bucle ;Si el bit 4 del FSR es 0 se borra la direccin que ;apunta . .

Registros Especiales

13

Registro de Control (Status) direccin: 03h,83h

(1)

IRP RP1 RP0 TO# PD# Z


R/W R/W R/W R R R/W

DC
R/W

C
R/W

C : Sealizador de acarreo en el octavo bit 1: Acarreo en la suma y no en la resta 0: Acarreo en la resta y no en la suma Este bit tambin se utiliza en las instrucciones de rotacin DC: Sealizador de acarreo en el 4 bit de menos peso. 1: Acarreo en la suma 0 : No acarreo en la suma En la resta lo contrario
Z: Sealizador de cero 1: el resultado de la ltima operacin aritmtica o lgica es cero 0: El resultado de la ltima operacin es distinto de cero

Comprobacin de que un registro es mayor o menor que otro


Operacin A-B A>B A<B A=B
Movlw Sublw Movlw Subwf

Resultado Positivo Negativo Cero

Bits de Carry y Zero C=1 y Z=0 C=0 y Z=0 C=1 y Z=1

Dato_B ;Dato_B W Dato_A ;DatoA W W o Dato_B ;Dato_B W Dato_A,W ;Dato_A-W

14

Registro de Control (Status) direccin: 03h,83h

(2)

IRP RP1 RP0 TO# PD# Z


R/W R/W R/W R R R/W

DC
R/W

C
R/W

PD : Power Down 1: Tras conectar VDD o al ejecutar la instruccin CLRWDT 0: Al ejecutar la instruccin SLEEP TO: Timer Out 1:Tras conectar VDD o ejecutar CLRWDT o SLEEP 0 :Al desbordar el temporizador de WDT
RP<1:0>:Seleccin del banco para el direccionamiento directo 00 Banco 0 (00-7Fh) 01 Banco 1 (80-FFh) 10 Banco 2 (100-17Fh) 11 Banco 3 (180-1FFh)

Registro de Control (Status) direccin: 03h,83h

(3)

IRP RP1 RP0 TO# PD# Z


R/W R/W R/W R R R/W

DC
R/W

C
R/W

IRP: Seleccin de bancos para el direccionamiento indirecto 1: Bancos 2 y 3 (100-1FFh) 0: Bancos 0 y 1 (00-FFh)

15

Registro OPTION direccin 81h


RBPU# INTEDG T0CS
bit 7 bit 6 bit 5

(1)

T0SE
bit 4

PSA
bit 3

PS2
bit 2

PS1
bit 1

PS0
bit 0

PS2:PS0: Rango con el que acta el Divisor de frecuencia PS2 PS1 PS0 Divisor del TMR0 Divisor del WDT 0 0 0 1:2 1:1 0 0 1 1:4 1:2 0 1 0 1:8 1:4 0 1 1 1:16 1:8 1 0 0 1:32 1:16 1 0 1 1:64 1:32 1 1 0 1:128 1:64 1 1 1 1:256 1:128

Registro OPTION direccin 81h


RBPU# INTEDG T0CS
bit 7 bit 6 bit 5

(2)

T0SE
bit 4

PSA
bit 3

PS2
bit 2

PS1
bit 1

PS0
bit 0

PSA: Asignacin del divisor de frecuencia


1: El divisor de frecuencia se asigna al WDT 0: El divisor de frecuencia se asigna al TMR0

T0SE: Tipo de flanco en TOCK1


1: Incremento de TMR0 cada flanco descendente 0: Incremento de TMR0 cada flanco ascendente

T0CS: Tipo de Reloj para TMR0


1: Pulsos introducidos a travs de T0CK1 (Contador) 0: Pulsos de reloj interno Fosc/4 (Temporizador)

16

Registro OPTION direccin 81h


RBPU# INTEDG T0CS
bit 7 bit 6 bit 5

(3)

T0SE
bit 4

PSA
bit 3

PS2
bit 2

PS1
bit 1

PS0
bit 0

INTEDG: Flanco activo control de interrupciones


1: Flanco Ascendente 0: Flanco Descendente

RBPU# : Resistencia Pull-up Puerto B


1: Desactivadas para el PIC16F84A (para el 16C84 es al contrario) 0: Activadas para el PIC16F84A (para el 16C84 es al contrario)

Registro de Control INTCON direccin 0Bh

(1)

GIE EEIE T0IE INTE RBIE T0IFINTFRBIF


bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

RBIF: Sealizador de estado del Port B 1:Cuando cambia de estado cualquier lnea de PB (RB<7:4> ). Se borra por software 0:Ninguna entrada de PB ha cambiado INTF: Sealizador de estado de la interrupcin externa
1:La entrada de la interrupcin se ha activado. Se borra por software 0:No hay interrupcin externa

T0IF: Sealizador de rebosamiento del TMR0


1: El TMR0 se ha desbordado. Se borra por software 0: El TMR0 no se ha desbordado

17

Registro de Control INTCON direccin 0Bh

(2)

GIE EEIE T0IE INTE RBIE T0IFINTFRBIF


bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

RBIE: Activacin de la interrupcin del Port B 1: Interrupcin activada 0: Interrupcin desactivada INTE: Activacin de la interrupcin externa
1: Interrupcin activada 0: Interrupcin desactivada

T0IE: Activacin de la interrupcin del TMR0


1: Interrupcin activada 0: Interrupcin desactivada

Registro de Control INTCON direccin 0Bh

(3)

GIE EEIE T0IE INTE RBIE T0IFINTFRBIF


bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

EEIE: Activacin de la interrupcin de la memoria EEPROM 1: Interrupcin activada 0: Interrupcin desactivada GIE:Activacin Global de Interrupciones
1: Concedido el permiso de interrupciones 0: No hay posibilidad de interrupciones

18

Interrupciones en el PIC16F84
Lgica que gobierna la generacin de una interrupcin

(4)

TOIF TOIE INTF INTE RBIF RBIE EEIF EEIE GIE

Activa si est en modo de reposo

Interrupcin

Palabra de Configuracin direccin 2007h


CP PWRTE WDTE FOSC1 FOSC2
13 12 11 10 9 8 7 6 5 4 3 2 1 0

Bit 4: CP, bit de configuracin proteccin de cdigo


1: Proteccin de cdigo desactivado 0: Proteccin de cdigo activado

Bit 3: PWRTE (Power-up Timer)


1: Proporciona un retardo de 72 ms desde el momento de la conexin a la alimentacin.

Bit 2: bit de configuracin habilitacin del Watchdog (WDT)


1: WDT activado 0: WDT desactivado

Bit1 y 2: FOSC<1:0>
11: Oscilador RC 10 Oscilador HS ( 8 - 20 MHz) 01 Oscilador XT ( 100 KHz- 4MHz) 00 Oscilador LP (Bajo consumo 32- 200 Hz)

19

MICROPROCESADOR PIC 16F84

SET DE INSTRUCCIONES

Descripcin de los campos de los cdigos de operacin


Campo f W B K X D Label TOS PC PCLATH GIE WDT TO PD Dest [] () <> Descripcin Nombre del registro comprendido ente las posiciones (0x00 a la 0x7F) Registro de trabajo (Acumulador) Nmero de bit de los 8 de un registro Campo de un literal, dato constante o etiqueta Valor indeterminado puede ser 0 1 Nombre de etiqueta Parte alta del Stack Contador de Programa Latch parte alta del Contador de Programa Bit de permiso global de interrupciones Perro guardin (Watchdog Timer/Counter) Time-Out bit (Bit de tiempo fuera) Power-down bit (Bit de alimentacin) Destino Opciones Contenido Asignacin Campo de un bit de un registro En el conjunto de

20

Constantes numricas y alfanumricas


TIPO
Decimal

SINTAXIS
D<cantidad> d<cantidad> . <cantidad> H <cantidad> h <cantidad> 0x<cantidad> <cantidad>H <cantidad>h O<cantidad> o<cantidad> B<cantidad> b<cantidad> A<carcter> a<carcter> <carcter> <string>

EJEMPLO
movlw D109 movlw d109 movlw .109 movlw H6D movlw h6D movlw 0x6D movlw 6DH movlw 6Dh movlw O155 movlw o155 movlw B01101101 movlw b01101101 movlw AM movlw aM movlw M DT Estudia DPE

Hexadecimal

Octal Binario ASCII

Stringo Cadena de Caracteres

INSTRUCCIONES DE CARGA
NEMONICO DESCRIPCIN CDIGO DE OPERACIN FLAGS AFECTADOS

clrf f clrfw movf f,d movlw k movwf f

00 (f) 00 (w) (f) (destino) K (w) (W) (f)

00 0001 1fff ffff 00 0001 0xxx xxxx 00 1000 dfff ffff 11 00xx kkkk kkkk 00 0000 1fff ffff

Z Z Z Ninguno Ninguno

21

INSTRUCCIONES DE BIT
NEMONICO DESCRIPCIN CDIGO DE OPERACIN FLAGS AFECTADOS

Bcf f,b Bsf f,b

Pone a 0 el bit b del registro f Pone a 1 el bit b del registro f

01 00 bb bffff ffff 01 01bb bfff ffff

Ninguno Ninguno

INSTRUCCIONES ARITMTICAS
NEMONICO DESCRIPCIN CDIGO DE OPERACIN FLAGS AFECTADOS

addlw k addwf f,d decf f,d incf f,d sublw k subwf f,d

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

(W) (destino) (destino)

11 111x kkkk kkkk 00 0111 dfff ffff 00 0011 dfff ffff 00 1010 dfff ffff 11 110x kkkk kkkk 00 0010 dfff ffff

C, DC, Z C, DC, Z Z Z C, DC, Z C, DC, Z

(f) + 1 (destino) K (w) (f) (W) W (destino)

22

INSTRUCCIONES LGICAS
NEMONICO DESCRIPCIN CDIGO DE OPERACIN FLAGS AFECTADOS

andlw k andwf f,d comf f,d iorlw k iorwf f,d rlf f,d rrf f,d swapf f,d xorlw k xorwf f,d

(W) AND k (W) AND (f) (/f)

(W) (destino) (W) (destino)

11 1001 kkkk kkkk 00 0101 dfff ffff 00 1001 dfff ffff 11 1001 dfff ffff 00 0100 dfff ffff 00 1101 dfff ffff 00 1100 dfff ffff 00 1110 dfff ffff 11 1010 kkkk kkkk 00 0110 dfff ffff

Z Z Z Z Z C C Ninguno Z Z

(destino)

(W) OR k (W) OR (f)

Rota f a la izquierda a travs del Carry (destino) Rota f a la derecha a travs del Carry (destino) Intercambia los nibbles de f (destino) (W) XOR k (W) XOR (f) (W) (destino)

INSTRUCCIONES DE SALTO
NEMONICO DESCRIPCIN CDIGO DE OPERACIN FLAGS AFECTADOS

btfsc f,b btfss f,b decfsz f,d incfsz f,d goto k call k retfie retlw return

Salta si el bit b del f es 0 Salta si el bit b del f es 1 (f)-1 (f)+1 destino y salta si es 0 destino y salta si es 0

01 10bb bfff ffff 01 11bb bfff ffff 00 1011 dfff ffff 00 1111 dfff ffff 10 1kkk kkkk kkkk 10 0kkk kkkk kkkk 00 0000 0000 1001 11 01xx kkkk kkkk 00 0000 0000 1000

Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno

Salta a la direccin k Llamada a subrutina Retorno de interrupcin Retorno con un literal en W Retorno de una subrutina

23

INSTRUCCIONES ESPECIALES
NEMONICO DESCRIPCIN CDIGO DE OPERACIN FLAGS AFECTADOS

Clrwdt Nop Sleep

Borra Timer del Watchdog No operar Entra en modo bajo consumo

00 0000 0110 0100 00 0000 0xx0 0000 00 0000 0110 0011

/TO, /PD Ninguno /TO, /PD

ADDLW
ADD Literal to W Operacin Sintaxis Operadores Cod.Oper. Palabras Ciclos Descripcin (W) + k (W)

ADDLW

[Etiqueta] ADDLW k 0 k 255 0001 11df ffff 1 1 Aade el contenido del registro W al literal k, y almacena el resultado en W. Nota.- Esta instruccin no existe en el PIC 16C5X

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z X

DC X

C X

24

ADDWF
ADD W to F Operacin Sintaxis Operadores Palabras Ciclos Descripcin (W) + (f) (destino)

ADDWF

[Etiqueta] ADDWF f,d 0 f 127 d 0 [0,1] 1 1 Aade el contenido del registro W al contenido del registro f, y almacena el resultado en W si d = 0, y en el registro f si d = 1.

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z X

DC X

C X

ANDLW
AND Literal and W Operacin Sintaxis Operadores Palabras Ciclos Descripcin (W).AND. (k) (W)

ANDLW

[Etiqueta] ANDLW k 0 f 255 1 1 Efecta la operacin AND lgico entre el contenido del registro W y el literal k, y almacena el resultado en W.

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z X

DC -

C -

25

ANDWF
AND W wind F Operacin Sintaxis Operadores Palabras Ciclos Descripcin (W) AND (f) ----> (destino) [Etiqueta] ANDWF f,d 0 f 127 d 0 [0,1] 1 1

ANDWF

Efecta la operacin AND lgico entre el contenido del registro W y el contenido del registro f, y almacena el resultado en W si d = 0, y en f si d = 1.

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z X

DC -

C -

BCF
Bit Clear f Operacin Sintaxis Operadores Palabras Ciclos Descripcin 0 (f<b>)

BCF

[Etiqueta] BCF f,b 0 f 127 0b7 1 1 Pone a cero el bit nmero b del registro f

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z -

DC -

C -

26

BSF
Bit Set f Operacin Sintaxis Operadores Palabras Ciclos Descripcin Pone a 1 el bit b del registro f 1 --> (f<b>) [Etiqueta] BSF f,b 0 f 127 0 b 7 1 1

BSF

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z -

DC -

C -

BTFSC
Bit Test, f Skip if Clear Operacin Sintaxis Operadores Palabras Ciclos Descripcin skip if (f<b>) = 0 [Etiqueta] BTFSC f,b 0 f 127 0b7 1 1 (2)

BTFSC

Si el bit nmero b del registro f es nulo, la instruccin que sigue a sta se ignora y se trata como un NOP (skip). En este caso, y slo en este caso, la instruccin BTFSC precisa dos ciclos para ejecutarse.

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z -

DC -

C -

27

BTFSS
Bit Test, Skip if Set Operacin Sintaxis Operadores Palabras Ciclos Descripcin skip if (f<b>) = 1 [Etiqueta] BTFSS f,b 0 f 127 0 b 7 1 1 (2)

BTFSS

Si el bit nmero b del registro f est a 1, la instruccin que sigue a sta se ignora y se trata como un NOP (skip). En este caso, y slo en este caso, la instruccin BTFSS precisa dos ciclos para ejecutarse.

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z -

DC -

C -

CALL
Call Subrotine Operandos Sintaxis Operacin
0 = k = 2047

CALL

[Etiqueta] CALL k (PC)+1 Top of Stack k PC <10:0>; PCLATCH (<4:3>) PC (<12,11>) 1 2 Salvaguarda la direccin de vuelta en la Pila y despus llama a la subrutina situada en la direccin cargada en el PC. El modo de clculo de la direccin efectiva difiere segn la familia PIC utilizada. Tambin hay que posicionar PA2, PA1 y PA0 (PIC 16C5X) o el registro PCLATCH (En los dems PIC) antes de ejecutarse la instruccin.

Palabras Ciclos Descripcin

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z -

DC -

C -

28

CLRF
Clear f Operacin Sintaxis Operadores Palabras Ciclos Descripcin 00h f 1 Z [Etiqueta] CLRF f 0 f 127 1 1 Se borra el contenido del registro f y el flag Z se activa

CLRF

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z 1

DC -

C -

CLRW
Clear W Operacin Sintaxis Operadores Palabras Ciclos Descripcin 00h 1 (W) Z

CLRW

[Etiqueta] CLRW No tiene 1 1 El registro de trabajo W se carga con 00h. El flag Z se pone a 1

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z 1

DC -

C -

29

CLRWDT
Clear Watchdog Timer Operacin 0 00h WDT WDT preescaler __ 1 T0 __ 1 PD

CLRWDT

Sintaxis Operadores Palabras Ciclos Descripcin

[Etiqueta] CLRWDT No tiene 1 1 Se borra tanto el registro WDT (Watchdog) como su preescaler. Los bits T0 y PD del registro de estado se ponen a 1".

Status

PA2 -

PA1 -

PA0 -

__ TO 1

__ PD 1

Z -

DC -

C -

COMF
Complement f Operacin Sintaxis Operadores Palabras Ciclos Descripcin _ (f) (dest)

COMF

[Etiqueta] COMF f,d 0 f 127 d 0 [0,1] 1 1 Hace el complemento del contenido del registro f bit a bit. El resultado se almacena en el registro f si d = 1 y en el registro W si d = 0, en este caso f no vara.

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z X

DC -

C -

30

DECF
Decrement f Operacin Sintaxis Operadores Palabras Ciclos Descripcin (f)-1 --> (dest) [Etiqueta] DECF f,d 0 f 127 d 0 [0,1] 1 1

DECF

Se decrementa el contenido del registro f en una unidad. El resultado se almacena en f si d=1 y en W si d=0, en este caso f no vara.

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z X

DC -

C -

DECFSZ
Decrement f , Skip if 0 Operacin Sintaxis Operadores Palabras Ciclos Descripcin (f) -1 --> (dest) ; skip if result =0 [Etiqueta] DECFSZ f,d 0 f 31 d [0.1] 1 1 (2)

DECFSZ

Decrementa el contenido del registro f en una unidad, el resultado se almacena en f si d=1 y en W si d=0, en este caso, f no vara. Si el resultado es cero, se ignora la siguiente instruccin y, en ese caso la instruccin tiene una duracin de dos ciclos.

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z -

DC -

C -

31

GOTO
Go to direccion Operacin Sintaxis Operadores Palabras Ciclos Descripcin K PC <10:0> (PCLATH <4:3>) (PC <12:11>) [Etiqueta] GOTO k 0 k 2047 1 2

GOTO

Salto incondicional, normalmente se utiliza para llamar a la subrutina situada en la direccin que se carga en PC. El modo de clculo de la instruccin caga de bit 0 al 10 del valor de la constante k en el PC y los bits 4 y 3 del registro PCLATH

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z -

DC -

C -

INCF
Increment f Operacin Sintaxis Operadores (f) + 1 (dest)

INCF

[Etiqueta] INCF f,d 0 f 127 d 0 [0,1] (f) + 1 (dest) 1 1 Se incrementa en una unidad el contenido del registro f, si d=1 el resultado se almacena en f, si d= 0 el resultado se almacena en W, en este caso el resultado de f no vara.

Palabras Ciclos Descripcin

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z X

DC -

C -

32

INCFSZ
Increment f, SKIP if 0 Operacin Sintaxis Operadores Palabras Ciclos Descripcin (f) +1 (dest) , skip if result = 0

INCFSZ

[Etiqueta] <INCFSZ f,d 0 f 127 d 0 [0,1] 1 1 (2) Incrementa el contenido del registro f en una unidad. El resultado se almacena de nuevo en f si d=1, y en W si d=0, en este caso f no vara. Si el resultado es cero, se ignora la siguiente instruccin y , en ese caso la, instruccin tiene una duracin de dos ciclos.

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z -

DC -

C -

IORLW
Inclusive OR Literal wirh W Operacin Sintaxis Operadores Palabras Ciclos Descripcin (W).OR.k (W)

IORLW

[Etiqueta] IORLW k 0 k 255 1 1 Se realiza la operacin lgica OR entre el registro W y el literal k. El resultado se almacena en el registro W.
__ TO __ PD -

Status

PA2 -

PA1 -

PA0 -

Z X

DC -

C -

33

IORWF
Inclusive OR W with f Operacin Sintaxis Operadores Palabras Ciclos Descripcin (W) .OR.(f) (dest)

IORWF

[Etiqueta] IORWF f,d 0 f 31 d [0,1] 1 1 Efecta la operacin lgica OR entre el contenido del registro W y el contenido del registro f, y almacena el resultado en f si d=1 y en W si d=0.

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z X

DC -

C -

MOVLW
Move liteal to W Operacin Sintaxis Operadores Palabras Ciclos Descripcin k (W)

MOVLW

[Etiqueta] MOVLW k 0 f 255 1 1 El registro W se carga con el valor de 8 bits del literal k

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z X

DC -

C -

34

MOVF
Move f Operacin Sintaxis Operadores Palabras Ciclos Descripcin (f) (dest)

MOVF

[Etiqueta] MOVF f,d 0 f 31 d [0,1] 1 1 El contenido del registro f se carga en el registro destino dependiendo del valor de d. Si d=0 el destino es el registro W, si d=1 el destino es el propio registro f . Esta instruccin permite verificar dicho registro ya que el flag Z queda afectado.

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z X

DC -

C -

MOVWF
Move W to f Operacin Sintaxis Operadores Palabras Ciclos Descripcin (W) (f)

MOVWF

[Etiqueta] MOVWF f 0 f 31 1 1 Mueve el contenido del registro W al registro f

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z -

DC -

C -

35

NOP
No operation Operacin Sintaxis Operadores Palabras Ciclos Descripcin no operacin [Etiqueta] NOP No tiene 1 1

NOP

No realiza operacin alguna. En realidad, se consume un ciclo de instruccin sin hacer nada.

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z -

DC -

C -

RETFIE
Return from Interrupt Operacin Sintaxis Operadores Palabras Ciclos Descripcin TOS PC 1 GIE [Etiqueta] RETFIE No tiene 1 2

RETFIE

Carga el PC con el valor que se encuentra en la parte alta de la Pila, asegurando as la vuelta de la interrupcin. Pone a 1 el bit GIE, con el fin de autorizar de nuevo que se tengan en cuenta las interrupciones. Esta instruccin no existe en los PIC 16C5X __ TO __ PD -

Status

PA2 -

PA1 -

PA0 -

Z -

DC -

C -

36

RETLW
Retur with Literal in W Operacin Sintaxis Operadores Palabras Ciclos Descripcin k (W); TOS PC [Etiqueta] RETLW k 0 f 255 1 2

RETLW

Carga el registro W con el literal k, y despus carga el PC con el valor que se encuentra en la parte superior de la PILA, efectuando as un retorno de subrutina.

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z -

DC -

C -

RETURN
Return from Subroutine Operacin Sintaxis Operadores Palabras Ciclos Descripcin Retorno de subrutina PC = TOS TOS PC

RETURN

[Etiqueta] RETURN No tiene 1 2

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z -

DC -

C -

37

RLF
Rotate Left f through Carry Operacin C Registro

RLF

Sintaxis Operadores Palabras Ciclos Descripcin

[Etiqueta] RLF f,d 0 f 31 d [0,1] 1 1 Rotacin de un bit a la izquierda del contenido del registro f, pasando por el bit de acarreo C. Si d= 1 el resultado se almacena en f, si d =0 el resultado se almacena en W. C Registro

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z -

DC -

C X

RRF
Operacin Rotate Right f through Carry C Registro

RRF

Sintaxis Operadores Palabras Ciclos Descripcin

[Etiqueta] RRF f,d 0 f 31 d [0,1] 1 1 Rotacin de un bit a la derecha del contenido del registro f, pasando por el bit de acarreo C. Si d = 1 el resultado se almacena en f, si d = 0 el resultado se almacena en W. C Registro

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z -

DC -

C X

38

SLEEP
Sleep Operacin 00h 0 1 0 Sintaxis Operadores Palabras Ciclos Descripcin WDT WDT prescaler __ TO __ PD [Etiqueta] SLEEP No tiene 1 1 Pone al circuito en modo Sleep con parada del oscilador.

SLEEP

Status

PA2 -

PA1 -

PA0 -

__ TO 1

__ PD 0

Z -

DC -

C -

TO PD

Se pone a 1 al ejecutar la instruccin SLEEP o CLRWDT Se pone a 0 al ejecutar la instruccin SLEEP

SUBLW
Subtract W from Literal Operacin Sintaxis Operadores Palabras Ciclos Descripcin k - (W) (W)

SUBLW

[Etiqueta] SUBLW k 0 k 255 1 1 Resta en complemento a dos el contenido del literal k el contenido del registro W, y almacena el resultado en W.

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z X

DC X

C X

39

SUBWF
Subtract W from f Operacin Sintaxis Operadores Palabras Ciclos Descripcin (f) - (W) (dest)

SUBWF

[Etiqueta] SUBW f,d 0 f 31 d [0,1] 1 1 Resta en complemento a dos el contenido del registro f menos el contenido del registro W almacena el resultado en W si d=0 y en f si d=1.

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z X

DC X

C X

SWAPF
Swap Nibbles in f Operacin Sintaxis Operadores Palabras Ciclos Descripcin (f<3:0>) (f<7:4>) (dest <7:4>) (dest <3:0>)

SWAPF

[Etiqueta] SWAPF f,d 0 f 31 d [0,1] 1 1 Los cuatro bits de ms peso del registro f se intercambian con los 4 bits de menos peso del mismo registro. Si d=0 el resultado se almacena en W, si d=1 el resultado se almacena en f.

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z -

DC -

C -

40

XORLW
Exclusive OR Literal With k Operacin Sintaxis Operadores Palabras Ciclos Descripcin (W).XOR.k (W)

XORLW

[Etiqueta] XORLW k 0 f 255 1 1 Realiza la funcin OR-Exclusiva entre el contenido del registro W y la constante k de 8 bits. El resultado se almacena en W

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z X

DC -

C -

XORWF
Exclusive OR With f Operacin Sintaxis Operadores Palabras Ciclos Descripcin (W).XOR.(f) (des)

XORWF

[Etiqueta] XORWF f,d 0 f 127 d [0,1] 1 1 Realiza la funcin OR-Exclusiva entre el contenido del registro W y el contenido del registro f, y almacena el resultado en f si d=1 y en W si d=0

Status

PA2 -

PA1 -

PA0 -

__ TO -

__ PD -

Z X

DC -

C -

41

SET DE INSTRUCCIONES La gama baja de los PIC tiene 2 instrucciones que no existen en la gama media: OPTION: Carga al registro OPTION TRIS: Carga al registro TRIS La gama media dispone de 4 instrucciones que no existen en la baja: ADDLW: Suma un valor inmediato al reg. W RETFIE: Retorno de interrupcin RETURN: Retorno de subrutina SUBLW: Resta W de un inmediato

Prescaler de TMR0/WDT

42

El TRM0 como Contador

(1)

Para que TRM0 funciona como contador de impulsos por el pin RA4/TOCK, hay que poner a 1 el bit T0CS del registro OPTION. El flanco de activacin de los impulsos a contar se selecciona con el bit T0SE del registro OPTION.
T0SE = 1 T0SE = 0 flanco descendente flanco ascendente

Al llegar a FFh se desborda el contador y con el siguiente impulso pasa a 00h, esto hace que active el flag T0IF del registro INTCON si est activado el bit activacin global de interrupciones GIE.

El TRM0

43

EL TMR0

Bus de datos

8 RA4/T0CKI pin Foosc/4 0 1 1 T0SE Preescaler Programable 3 T0CS PS2,PS1,PS0 PSA 0 PSout Sincronizacin con el reloj interno

TMR0 PSout El bit T0IF se pone a 1 si hay overflow

(Retardo de 2 ciclos)

El TRM0
CLKOUT (=Foosc/4) Bus de datos 8 0 M U 1 X T0SE T0CS PSA 1 Retardo de 2 ciclos

RA4/T0CKI pin

M U 0 X

Registro TMRO

PREESCALER
0 Perro Guardin M U 1 X Preescaler de 8 bits 8 Multiplexor 1-8 PSA 0 WDT bit de habilitacin MUX 1 PSA 3 PS2:PS0 El bit T0IF se pone a 1 si hay overflow

WDT time-out

44

EL WATCHDOG (WDT)
Su funcin es vigilar que el programa no se cuelgue. Para ello el Watchdog da un paseo por la CPU cada cierto tiempo, asegurndose que el programa se ejecuta normalmente; en caso contrario (por ejemplo si el control est detenido en un bucle infinito o a la espera de un acontecimiento que no se produce), el Watchdog ladra y provoca un reset, reinicializando el sistema.

EL WATCHDOG (WDT)
El Warchdog es un temporizador de 8 bits cuyo objetivo es generar un reset general cuando se desborda su cuenta. Su control de tiempo es independiente del oscilador principal del controlador y se basa en una red R-C interna que fija un periodo de oscilacin de 18 ms. El periodo puede aumentarse haciendo uso del Preescaler con el que se puede conseguir una relacin de hasta 1:128 que corresponde a 2,3 seg. de temporizacin.

45

EL WATCHDOG (WDT)
CLKOUT (=Foosc/4) Bus de datos 8 0 M U 1 X T0SE T0CS PSA 1 Retardo de 2 ciclos

RA4/T0CKI pin

M U 0 X

Registro TMRO

PREESCALER
0 Perro Guardin M U 1 X Preescaler de 8 bits 8 Multiplexor 1-8 PSA 0 WDT bit de habilitacin MUX 1 PSA 3 PS2:PS0 El bit T0IF se pone a 1 si hay overflow

WDT time-out

(1)

MODO DE BAJO CONSUMO SLEEP


Es un modo de funcionamiento de ahoro de energa, llamado modo de bajo consumo, reposo, standby o SLEEP. Para entra en este modo hay que ejecutar la instruccin SLEEP. En este modo se detiene el reloj principal y sus circuitos asociados con el consiguiente ahorro de energa. Al activarse una interrupcin, ocasionada por algn acontecimiento esperado, el microcontrolador se despierta y reanuda su trabajo.

46

(2)

MODO DE BAJO CONSUMO SLEEP


Al ejecutarse la instruccin SLEEP se provocan los siguientes acontecimientos:
El consumo del microcontrolador baja a unos pocos A. Si el Watchdog est habilitado se refresca su valor, pero seguir funcionando normalmente. El oscilador principal del sistema deja de funcionar. El TMR0 tampoco funciona. Los puertos de E/S mantienen el mismo estado que tenan antes de ejecutar SLEEP. Los bits /TO y /PD del registro de STATUS toman los valores 1 y 0 respectivamente.

(3)

MODO DE BAJO CONSUMO SLEEP(Status)


direccin: 03h,83h

(2)

IRP RP1 RP0 TO# PD# Z


R/W R/W R/W R R R/W

DC
R/W

C
R/W

PD : Power Down 1: Tras conectar VDD o al ejecutar la instruccin CLRWDT 0: Al ejecutar la instruccin SLEEP TO: Timer Out 1: Tras conectar VDD o ejecutar CLRWDT o SLEEP 0: Al desbordar el temporizador de WDT

47

(4)

MODO DE BAJO CONSUMO SLEEP El controlador se despierta por alguna de las siguientes razones:
El pin de reset MCLR es activado a nivel bajo, generndose un reset. El Watchdog que estaba habilitado cuando se ejecuto el sleep se desborda y se despierta. Por una interrupcin que no sea el desbordamiento del TMR0, ya que este no funciona en el modo SLEEP.

Interrupciones en el PIC16F84

(1)

48

Interrupciones en el PIC16F84

(1)

El PIC 16F84 tiene 4 posibles causas de interrupcin: Sucesos Externos Activacin del pin <6> RB0/INT. Cambio de estado en una de los 4 pines de mas peso de port B <RPB7:RPB4>. Sucesos Internos Finalizacin de la Escritura en la EEPROM de datos Desbordamiento del temporizador TMR0

Interrupcin

Interrupciones en el PIC16F84A
(3)

PC -->Pila GIE = 0

PC=0004h (Vector de Interrupcin)

Rutina de atencin a la Interrupcin

Se almacenan los registros a modificar

Se determina la causa de la Interrupcin

Salto a la rutina de servicio corespondiente

Restauracin de los registros

Se Borra el sealizador de la interrupcin

Retorno (RETFIE) PC<-- PILA GIE=1

49

Interrupcin

PC

PILA

GIE=0

Restauracin de los Registros guardados

PC=0004 (Vector de Interrupcin)

Se borra el sealizador de la Interrupcin

Se almacenan los registros a modificar Retorno (RETFIE) PC PILA Se determina la causa de la Interrupcin GIE=1

Salto a la rutina de servicio a la Interrupcin

Interrupciones en el PIC16F84A
(3)

Interrupciones en el PIC16F84

(2)

Cuando se produce una peticin de interrupcin ocurre lo siguiente: Si el bit GIE=1 se atiende la interrupcin Se deposita el contenido del PC en la Pila Se prohiben nuevas interrupciones poniendo el bit GIE=0 El PC= 0004h (Vector de interrupciones)

50

Interrupciones en el PIC16F84

(3)

Que debe hacer el programa de atencin a la interrupcin: Guardar el contenido de los registros que va a utilizar esta rutina. Se determina la causa de la interrupcin explorando los sealizadores de las fuentes de interrupcin. Saltar a la rutina de atencin a la interrupcin correspondiente. Devolver el valor de los registros que tenia el programa antes de atender la interrupcin. Borrar el sealizador de interrupcin Ejecutar RETFIE

Interrupciones en el PIC16F84

(4)

Secuencia de instrucciones para guardar los registros al saltar a una interrupcin


Salvar movwf W_TEMP swapf STATUS,W movwf STATUS_TEMP ..................... ..................... ;Guarda el contenido de W ;Swap el contenido de Estado en W ;Guarda el contenido Estado(swapped)

Secuencia de instrucciones de finalizacin de interrupcin


Restaurar swapf movwf swapf swapf bcf retfie STATUS_TEMP,W;Devuelve el regisgtro de STATUS STATUS ;restaura el STATUS W_TEMP,f ;restaura el W W_TEMP,W INTCON,INTF ;borrar el sealizador de la interrupcin ;retorno de interrupcin

51

Interrupciones en el PIC16F84

(6)

Secuencia de instrucciones para explorar cual es la causa de la interrupcin. btfsc INTCON,INTF ;Si el flag INTF=0 salta call Inte ;Si el flag INTF=1 salta a Inte btfsc INTCON,T0IF ;Si el flag T0IF = 0 salta call Timer ;Con T0IF=1, se llama a Timer btfsc INTCON,RBIF ;Si el flag RBIF=0 salta call Puert_B ; Si el flag RBIF=1 salta a Puerto_B bsff STATUS,RP0 ; Selecciona el banco 1 btfsc EECON1,EEIF ; Si EEIF=0, salta call Eeprom ; Si el flag INTF=1 salta a Eeprom

Interrupciones en el PIC16F84
Lgica que gobierna la generacin de una interrupcin

(5)

TOIF TOIE INTF INTE RBIF RBIE EEIF EEIE GIE

Activa si est en modo de reposo

Interrupcin

52

Memoria EEPROM de datos


RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 4Fh 50h NO IMPLEMENTADO FISICAMENTE. (SE LEEN COMO "0"). 7Fh BUS DE DATOS 8 FFh BUS DE INSTRUC PUERTO B SFR (Spe 07h 08h 09h 0Ah 0Bh 0Ch 68 REGISTROS MAPEADO DE EN PROPOSITO BANCO 0 GENERAL 00h 01h CFh D0h EEDATA EEADR PCLATH INTCON EECON1 EECON2 PCLATH INTCON 87h 88h 89h 8Ah 8Bh 8Ch GPR

64 POSICIONES DE MEMORIA DE DATOS EEPROM.

02h 03h

3Eh 3Fh

DECODIFICADOR

Registro EECON1

(1)

bit 7

bit 6

- EEIF WRERR WREN WR RD


bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

Bit 4:EEIF, Sealizador de final de operacin de escritura 1= La operacin de escritura se ha completado con xito 0 = La operacin de escritura no se ha completado Bit 3:WRERR, Sealizador de error de escritura 1 = Se pone a 1 cuando una operacin de escritura ha terminado prematuramente 0 = La operacin de escritura se ha completado correctamente Bit 2: WREN, Permiso de escritura 1 = Permite la escritura de la EEPROM 0 = Prohibe la escritura de la EEPROM

53

Registro EECON1

(2)

bit 7

bit 6

- EEIF WRERR WREN WR RD


bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

Bit 1: WR, Escritura Se pone a 1 cuando comienza el ciclo de escritura de la EEPROM Se pone a 0 cuando finaliza el ciclo de escritura de la EEPROM Bit 0: RD, Lectura Se pone a 1 cuando se va a realizar un ciclo de lectura de la EEPROM. Este bit pone a 0 automticamente cuando termina la lectura de la posicin de la EEPROM

RUTINA DE LECTURA EN LA E2PROM


;EE_Read: Leer un byte de la EEPROM. En W se debe escribir la direccin de ;memoria a leer y en W se devuelve el valor de la posicin de memoria leda. EEPROM_LeeDato movwf EEADR ;Direccin a Leer bsf STATUS,RP0 ;Seleccin de banco 1 bsf EECON1,RD ;Orden de lectura EEPROM_SigueLeyendo btfsc EECON1,RD goto EEPROM_SigueLeyendo bcf STATUS,RP0 ;Seleccin de banco 0 movf EEDATA,W return

54

Rutina de Escritura en la E2PROM


;EE_Write: Graba un byte en la EEPROM de datos. La direccin ser la contenida ;en EEADR y ;el dato se le supone previamente metido en EEDATA EEPROM_EscribeDato bsf STATUS,RP0 ;Selecciona banco 1 bsf EECON1,WREN ;Permiso de escritura movlw b'01010101' movwf EECON2 movlw b'10101010' movwf EECON2 ;Secuencia establecida por Microchip bsf EECON1,WR ;Orden de escritura EEPROM_TerminaEscribir btfsc EECON1,WR ;Testear flag de fin de escritura goto EEPROM_TerminaEscribir bcf EECON1,WREN ;Desautoriza la Escritura en la EEPROM bcf EECON1,EEIF ;Reponer flag de fin de escritura bcf STATUS,RP0 ;Seleccin banco 0 return

55

También podría gustarte