Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Transparencias PIC 16F84A
Transparencias 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.
Memoria de Datos
Memoria de Instrucciones
Reloj
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
ALU 8
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
Cdigo de Operacin
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
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
4Fh 50h
CFh D0h
FFh
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
PALABRAS IDENTIFICACIN
MEMORIA DE CONFIGURACIN
RESERVADO
10
Direccin Registro 00h dir.Indirec. TMR0 PCL STATUS FSR PORTA PORTB dir.Indirec.
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
4Fh 50h
CFh D0h
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.
FSR
14h
14h
2Ah
FSR
14h
14h
B2h
Posicin
12
Registros Especiales
13
(1)
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
14
(2)
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)
(3)
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
(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
(2)
T0SE
bit 4
PSA
bit 3
PS2
bit 2
PS1
bit 1
PS0
bit 0
16
(3)
T0SE
bit 4
PSA
bit 3
PS2
bit 2
PS1
bit 1
PS0
bit 0
(1)
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
17
(2)
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
(3)
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)
Interrupcin
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
SET DE INSTRUCCIONES
20
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
INSTRUCCIONES DE CARGA
NEMONICO DESCRIPCIN CDIGO DE OPERACIN FLAGS AFECTADOS
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
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
11 111x kkkk kkkk 00 0111 dfff ffff 00 0011 dfff ffff 00 1010 dfff ffff 11 110x kkkk kkkk 00 0010 dfff ffff
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
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)
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
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
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.
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
[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.
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
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
Status
PA2 -
PA1 -
PA0 -
__ TO -
__ PD -
Z -
DC -
C -
37
RLF
Rotate Left f through Carry Operacin C Registro
RLF
[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
[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
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
(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
(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)
46
(2)
(3)
(2)
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
49
Interrupcin
PC
PILA
GIE=0
Se almacenan los registros a modificar Retorno (RETFIE) PC PILA Se determina la causa de la Interrupcin GIE=1
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)
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)
Interrupcin
52
02h 03h
3Eh 3Fh
DECODIFICADOR
Registro EECON1
(1)
bit 7
bit 6
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
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
54
55