1
CARACTERISTICAS
MICROPROCESADORPIC 16F84A
Características 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
2
Procesador Pipeline
Procesador Pipeline
Ejemplo: Busqueda 1 Ejecuta 11. MOVLW 55h Busqueda 2 Ejecuta22 .MOVWF PORTB Busqueda 3 Ejecuta 33. CALL SUB_1 Busqueda 4 Salir4. BSF PORTA,BIT3 Busqueda SUB_1 Ejecuta SUB_1
3
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 máquina 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 máquina. Además 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 específico.
MICROPROCESADORMODELO HARVARD
Memoriade Datos
CPU Memoria de Instrucciones
Reloj
BusDatos
BusInstrucciones
4
MICROPROCESADORMODELO DE VON NEUMANN
Memoriade RAM CPUMemoria de
ROMReloj
Bus Datos
Bus Direcciones
Arquitectura Ortogonal
Arquitectura Ortogonal: En los μcontroladores PIC la salida de la ALU puede ir al registro W y también a la memoria de datos. Por lo tanto el resultado puede guardarse en cualquiera de los dos destinos.Cualquier instrucción puede utilizar cualquier elemento de la arquitectura como fuente o destino.
5
Arquitectura Ortogonal
WMEMORIADE DATOS
ALU
ACUMULADOR
ALU
MEMORIADE DATOS
Arquitectura de los PICArquitectura de otrosmicrocontroladores
Arquitectura basada en banco de registros
INDIRECTO
TMRO
PC
STATUS
FSR
PORTA
PORTB
PORTC
REGISTROSDE
PRPOSITOGENERAL
REGISTRO DEINSTRUCCIONES
w
ALU
MPX
BUS DE DATOS
8
8
BANCO DE REGISTGROS
6
MICROPROCESADORPIC 16F84A
• OSC1/CLKIN: Entrada externa de los impulsos de reloj o conexión con el cristal de cuarzo.
• OSC2/CLKOUT: Salida de Fosc/4 en modo oscilador R-C o conexión con el cristal de cuarzo
• VPP/MCCLR#: En modo grabación por esta patilla se introduce la tensión VPP (12-14V). En funcionamiento normal esta patilla soporta la petición de Reset.
• RA0-RA3: Líneas de E/S del Puerto A• RA4/TOCK1: Líneas E/S del Puerto A o
entrada de impulsos de reloj para TMR0• RB0/INT : Línea de E/S de la Puerto B o
petición de Interrupción.• RB1- RB7: Líneas de E/S del Puerto B
Patillaje PIC 16F84A
7
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 propósito específico (SFR) y 32 de propósito 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 envía el resultado, mientras que el otro operando puede ser cualquier registro, memoria puerto o el propio código de instrucción.• Recursos conectados al bus de datos: Puerto A, Puerto B, Temporizador TMR0, etc.
8
EL Contador de Programa
Código de Operación
EL Contador de Programa para las instrucciones CALL y GOTO
Código de Operación
9
Organización de la memoria de Programa
Mapa de direcciones de registros
d i r. I n d i r e c . d i r. I n d i r e c .
T M R 0 O P T IO N _ R E G
P C L P C L
S T A T U S S T A T U S
F S R F S R
P O R T A
P O R T B
T R I S A
T R I S B
E E D A T A E C O N 1
E C O N 2E E A D R
P C L A T H P C L A T H
I N T C O N I N T C O N
6 8P o s ic io n e s
d e p r o p o s i t og e n e r a lS R A N
M a p ad e
a c c e s oe n B a n c o 0
D i r e c c ió n R e g i s t r o D i r e c c ió n R e g i s t r o
0 0 h 8 0 h
0 1 h 8 1 h
0 2 h 8 2 h
0 3 h 8 3 h
0 4 h 8 4 h
0 5 h 8 5 h
0 6 h 8 6 h
0 7 h 8 7 h
0 8 h 8 8 h
0 9 h 8 9 h
0 A h 8 A h
0 B h 8 B h
0 C h 8 C h
4 F h
5 0 h
7 F h
C F h
D 0 h
F F h
B a n c o 0 B a n c o 1
10
Relación de registros SFR
Memoria de Instrucciones PIC 16F84
• Las posiciones ID de Identificación sirven para que el usuario grabe en sus 14 bits de menos peso los códigos que desee. Lo que le permite referenciar el modelo, la aplicación , la versión del dispositivo, etc..
IMPLEMENTADO
NOIMPLEMENTADO
IDIDIDID
RESERVADORESERVADORESERVADO
PALABRACONFIGURACION
RESERVADO
NOIMPLEMENTADO
3FFF
200F
2007
20001FFF
0000
03FFÚTIL
CAPACIDADMÁXIMA
PALABRASIDENTIFICACIÓN
MEMORIA DECONFIGURACIÓN
11
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 propósito específico(SFR).
• En las 68 posiciones siguientes los registros de propósito general (GPR)
• Los 80 registros de propósito general del Banco 1 se mapean sobre el banco 0, dejando reducidos a 68 los registros operativos
dir.Indirec. dir.Indirec.
TMR0 OPTION_REG
PCL PCL
STATUS STATUS
FSR FSR
PORTA
PORTB
TRISA
TRISB
EEDATA ECON1
ECON2EEADR
PCLATH PCLATH
INTCON INTCON
68Posiciones
de propositogeneralSRAN
Mapade
accesoen Banco 0
Dirección Registro Dirección Registro
00h 80h
01h 81h
02h 82h
03h 83h
04h 84h
05h 85h
06h 86h
07h 87h
08h 88h
09h 89h
0Ah 8Ah
0Bh 8Bh
0Ch 8Ch
4Fh
50h
7Fh
CFh
D0h
FFh
Banco 0 Banco 1
Registrosde proposito
general
SFR
2Fh
16F84
16C84
• Los 7 bits de menor peso del código de operación de la instrucción proporcionan la posición 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
Direccionamiento Directo
12
• El operando de la instrucción hace referencia al registro INDF, que ocupa la posición 0 del área de datos. Se accede a la posición que apunta el registro FSR, que se encuentra en la posición 4 del banco 0.
• Los 7 bits de menos peso del FSR seleccionan la posición y su bit de más peso junto al bit IRP de registro de Status <7>, seleccionan el banco.
Direccionamiento Indirecto
Funcionamiento de las instrucciones de Direccionamiento Indirecto
W
FSR 2Ah14h
14h
2Ah
Memoria RAMde Datos
Al ejecutar movwf INDF
W
FSR B2h14h
14h
B2h
Memoria RAMde Datos
Al ejecutar movf INDF,W
Posición ContenidoPosición Contenido
13
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 punteromovf FSR ;de memoria RAM
Bucle clrf INDF ;Borra el registro INDFinc FSR ; Incrementa el registro FSRbtfss FSR,4 ;Comprueba si el bit 4 del FSR y si es 1 salta a la
;siguiente instruccióngoto Bucle ;Si el bit 4 del FSR es 0 se borra la dirección que
;apunta..
Ejemplo: direccionamiento Indirecto
Registros Especiales
14
Registro de Control (Status) (1)
dirección: 03h,83h
• C : Señalizador de acarreo en el octavo bit1: Acarreo en la suma y no en la resta0: Acarreo en la resta y no en la sumaEste bit también se utiliza en las instrucciones de rotación
• DC: Señalizador de acarreo en el 4º bit de menos peso.1: Acarreo en la suma0 : No acarreo en la sumaEn la resta lo contrario
• Z: Señalizador de cero–1: el resultado de la última operación aritmética o lógica es cero–0: El resultado de la última operación es distinto de cero
IRP RP1 RP0 TO# PD# Z DC CR/W R/W R/W R R R/W R/W R/W
Comprobación de que un registro es mayor o menor que otro
C=1 y Z=1CeroA=B
C=0 y Z=0NegativoA<B
C=1 y Z=0PositivoA>B
Bits de Carry y ZeroResultadoOperación A-B
Movlw Dato_B ;Dato_B WSublw Dato_A ;DatoA – W W
oMovlw Dato_B ;Dato_B WSubwf Dato_A,W ;Dato_A-W W
15
Registro de Control (Status) (2)
dirección: 03h,83h
• PD : Power Down1: Tras conectar VDD o al ejecutar la instrucción CLRWDT0: Al ejecutar la instrucción SLEEP
• TO: Timer Out1:Tras conectar VDD o ejecutar CLRWDT o SLEEP0 :Al desbordar el temporizador de WDT
• RP<1:0>:Selección del banco para el direccionamiento directo00 Banco 0 (00-7Fh) 01 Banco 1 (80-FFh) 10 Banco 2 (100-17Fh)11 Banco 3 (180-1FFh)
IRP RP1 RP0 TO# PD# Z DC CR/W R/W R/W R R R/W R/W R/W
Registro de Control (Status) (3)
dirección: 03h,83h
• IRP: Selección de bancos para el direccionamiento indirecto1: Bancos 2 y 3 (100-1FFh)0: Bancos 0 y 1 (00-FFh)
IRP RP1 RP0 TO# PD# Z DC CR/W R/W R/W R R R/W R/W R/W
16
Registro OPTION (1)
dirección 81h
RBPU# INTEDG T0CS T0SE PSA PS2 PS1 PS0bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
• PS2:PS0: Rango con el que actúa el Divisor de frecuenciaPS2 PS1 PS0 Divisor del TMR0 Divisor del WDT
0 0 0 1:2 1:10 0 1 1:4 1:20 1 0 1:8 1:40 1 1 1:16 1:81 0 0 1:32 1:161 0 1 1:64 1:321 1 0 1:128 1:641 1 1 1:256 1:128
Registro OPTION (2)
dirección 81h
• PSA: Asignación del divisor de frecuencia1: El divisor de frecuencia se asigna al WDT0: El divisor de frecuencia se asigna al TMR0
• T0SE: Tipo de flanco en TOCK11: Incremento de TMR0 cada flanco descendente0: Incremento de TMR0 cada flanco ascendente
• T0CS: Tipo de Reloj para TMR01: Pulsos introducidos a través de T0CK1 (Contador)0: Pulsos de reloj interno Fosc/4 (Temporizador)
RBPU# INTEDG T0CS T0SE PSA PS2 PS1 PS0bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
17
Registro OPTION (3)
dirección 81h
• INTEDG: Flanco activo control de interrupciones1: Flanco Ascendente0: Flanco Descendente
• RBPU# : Resistencia Pull-up Puerto B1: Desactivadas para el PIC16F84A (para el 16C84 es al contrario)0: Activadas para el PIC16F84A (para el 16C84 es al contrario)
RBPU# INTEDG T0CS T0SE PSA PS2 PS1 PS0bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
Registro de Control INTCON (1)
dirección 0Bh
• RBIF: Señalizador de estado del Port B1:Cuando cambia de estado cualquier línea de PB (RB<7:4> ). Se borra por software 0:Ninguna entrada de PB ha cambiado
• INTF: Señalizador de estado de la interrupción externa1:La entrada de la interrupción se ha activado. Se borra por software 0:No hay interrupción externa
• T0IF: Señalizador de rebosamiento del TMR01: El TMR0 se ha desbordado. Se borra por software 0: El TMR0 no se ha desbordado
GIE EEIE T0IE INTERBIE T0IFINTFRBIFbit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
18
Registro de Control INTCON (2)
dirección 0Bh
• RBIE: Activación de la interrupción del Port B1: Interrupción activada0: Interrupción desactivada
• INTE: Activación de la interrupción externa1: Interrupción activada0: Interrupción desactivada
• T0IE: Activación de la interrupción del TMR01: Interrupción activada0: Interrupción desactivada
GIE EEIE T0IE INTERBIE T0IFINTFRBIFbit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
Registro de Control INTCON (3)
dirección 0Bh
• EEIE: Activación de la interrupción de la memoria EEPROM1: Interrupción activada0: Interrupción desactivada
• GIE:Activación Global de Interrupciones1: Concedido el permiso de interrupciones0: No hay posibilidad de interrupciones
GIE EEIE T0IE INTERBIE T0IFINTFRBIFbit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
19
Lógica que gobierna la generación de una interrupción
Interrupciones en el PIC16F84 (4)
Activa si estáen modo de reposo
Interrupción
TOIFTOIE
INTFINTE
RBIFRBIE
EEIFEEIE
GIE
Palabra de Configuracióndirección 2007h
• Bit 4: CP, bit de configuración protección de código– 1: Protección de código desactivado– 0: Protección de código activado
• Bit 3: PWRTE (Power-up Timer)– 1: Proporciona un retardo de 72 ms desde el momento de la conexión a la
alimentación.• Bit 2: bit de configuración habilitación 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)
CP PWRTE WDTE FOSC1 FOSC213 12 11 10 9 8 7 6 5 4 3 2 1 0
20
SET DE INSTRUCCIONES
MICROPROCESADORPIC 16F84
Descripción de los campos de los códigos de operación
Campo Descripciónf Nombre del registro comprendido ente las posiciones
(0x00 a la 0x7F)W Registro de trabajo (Acumulador)B Número de bit de los 8 de un registroK Campo de un literal, dato constante o etiquetaX Valor indeterminado puede ser 0 ó 1DLabel Nombre de etiquetaTOS Parte alta del StackPC Contador de ProgramaPCLATH Latch parte alta del Contador de ProgramaGIE Bit de permiso global de interrupcionesWDT Perro guardián (Watchdog Timer/Counter)TO Time-Out bit (Bit de tiempo fuera)PD Power-down bit (Bit de alimentación)Dest Destino[ ] Opciones( ) Contenido
Asignación<> Campo de un bit de un registroε En el conjunto de
21
Constantes numéricas y alfanuméricas
DT “Estudia DPE”“<string>”“String”o Cadena de Caracteres
movlw A’M’movlw a’M’movlw ‘M’
A’<carácter>’a’<carácter>’‘<carácter>
ASCII
movlw B’01101101’movlw b’01101101’
B’<cantidad>’b’<cantidad>’
Binario
movlw O’155’movlw o’155’
O’<cantidad>’o’<cantidad>’
Octal
movlw H’6D’ movlw h’6D’movlw 0x6Dmovlw 6DHmovlw 6Dh
H ’<cantidad>’h ’<cantidad>’0x<cantidad><cantidad>H<cantidad>h
Hexadecimal
movlw D’109’movlw d’109’movlw .109
D’<cantidad>’d’<cantidad>’. <cantidad>
Decimal
EJEMPLOSINTAXISTIPO
INSTRUCCIONES DE CARGA
Ninguno 00 0000 1fff ffff(W) → (f)movwf f
Ninguno11 00xx kkkk kkkkK → (w)movlw k
Z00 1000 dfff ffff(f) → (destino)movf f,d
Z00 0001 0xxx xxxx00 → (w)clrfw
Z00 0001 1fff ffff00 → (f)clrf f
FLAGSAFECTADOS
CÓDIGO DE OPERACIÓN
DESCRIPCIÓNNEMONICO
22
INSTRUCCIONES DE BIT
Ninguno01 01bb bfff ffffPone a 1 el bit “b” del registro f
Bsf f,b
Ninguno01 00 bb bffff ffffPone a 0 el bit “b” del registro f
Bcf f,b
FLAGSAFECTADOS
CÓDIGO DE OPERACIÓN
DESCRIPCIÓNNEMONICO
INSTRUCCIONES ARITMÉTICAS
C, DC, Z00 0010 dfff ffff(f) – (W) (destino)subwf f,d
C, DC, Z11 110x kkkk kkkkK – (w) Wsublw k
Z00 1010 dfff ffff(f) + 1 (destino)incf f,d
Z00 0011 dfff ffff(f)-1 (destino)decf f,d
C, DC, Z00 0111 dfff ffff(W)+(f) (destino)addwf f,d
C, DC, Z11 111x kkkk kkkk(W) + k (W)addlw k
FLAGSAFECTADOS
CÓDIGO DE OPERACIÓN
DESCRIPCIÓNNEMONICO
23
INSTRUCCIONES LÓGICAS
Z00 0110 dfff ffff(W) XOR (f) (destino)xorwf f,dZ11 1010 kkkk kkkk(W) XOR k (W)xorlw k
Ninguno00 1110 dfff ffffIntercambia los nibbles de f (destino)
swapf f,d
C00 1100 dfff ffffRota f a la derecha a través del Carry (destino)
rrf f,d
C00 1101 dfff ffffRota f a la izquierda a través del Carry (destino)
rlf f,d
Z00 0100 dfff ffff(W) OR (f) (destino)iorwf f,dZ11 1001 dfff ffff(W) OR k (W)iorlw k
Z00 1001 dfff ffff(/f) (destino)comf f,d
Z00 0101 dfff ffff(W) AND (f) (destino)andwf f,dZ11 1001 kkkk kkkk(W) AND k (W)andlw k
FLAGSAFECTADOS
CÓDIGO DE OPERACIÓN
DESCRIPCIÓNNEMONICO
INSTRUCCIONES DE SALTO
Ninguno00 0000 0000 1000Retorno de una subrutinareturn
Ninguno11 01xx kkkk kkkkRetorno con un literal en Wretlw
Ninguno00 0000 0000 1001Retorno de interrupciónretfie
Ninguno10 0kkk kkkk kkkkLlamada a subrutinacall k
Ninguno10 1kkk kkkk kkkkSalta a la dirección “k”goto k
Ninguno00 1111 dfff ffff(f)+1 destino y salta si es 0incfsz f,d
Ninguno00 1011 dfff ffff(f)-1 destino y salta si es 0decfsz f,d
Ninguno01 11bb bfff ffffSalta si el bit “b” del “f” es 1btfss f,b
Ninguno01 10bb bfff ffffSalta si el bit “b” del “f” es 0btfsc f,b
FLAGSAFECTADOS
CÓDIGO DE OPERACIÓN
DESCRIPCIÓNNEMONICO
24
INSTRUCCIONES ESPECIALES
/TO, /PD00 0000 0110 0011Entra en modo bajo consumoSleep
Ninguno00 0000 0xx0 0000No operarNop
/TO, /PD00 0000 0110 0100Borra Timer del WatchdogClrwdt
FLAGSAFECTADOS
CÓDIGO DE OPERACIÓN
DESCRIPCIÓNNEMONICO
ADDLW ADDLWADD Literal to W
Operación (W) + k (W)
Sintaxis [Etiqueta] ADDLW k
Operadores 0 ≤ k ≤ 255
Cod.Oper. 0001 11df ffff
Palabras 1
Ciclos 1
Descripción Añade el contenido del registro W al literal k, y almacena el resultado enW.Nota.- Esta instrucción no existe en el PIC 16C5X
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - X X X
Status
25
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - X X X
ADDWF ADDWFADD W to F
Operación (W) + (f) (destino)
Sintaxis [Etiqueta] ADDWF f,d
Operadores 0 ≤ f ≤127d 0 [0,1]
Palabras 1
Ciclos 1
Descripción Añade el contenido del registro W al contenido del registro f, y almacenael resultado en W si d = 0, y en el registro f si d = 1.
Status
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - X - -
ANDLW ANDLWAND Literal and W
Operación (W).AND. (k) (W)
Sintaxis [Etiqueta] ANDLW k
Operadores 0 ≤ f ≤ 255
Palabras 1
Ciclos 1
Descripción Efectúa la operación AND lógico entre el contenido del registro W y elliteral k, y almacena el resultado en W.
Status
26
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - X - -
ANDWF ANDWFAND W wind F
Operación (W) AND (f) ----> (destino)
Sintaxis [Etiqueta] ANDWF f,d
Operadores 0 ≤ f ≤ 127d 0 [0,1]
Palabras 1
Ciclos 1
Descripción Efectúa la operación AND lógico entre el contenido del registro W y elcontenido 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 DC C
- - - - - - - -
BCF BCFBit Clear f
Operación 0 (f<b>)
Sintaxis [Etiqueta] BCF f,b
Operadores 0 ≤ f ≤ 1270 ≤ b ≤ 7
Palabras 1
Ciclos 1
Descripción Pone a cero el bit número b del registro f
Status
27
BSF BSFBit Set f
Operación 1 --> (f<b>)
Sintaxis [Etiqueta] BSF f,b
Operadores 0 ≤ f ≤ 1270 ≤ b ≤7
Palabras 1
Ciclos 1
Descripción Pone a 1 el bit b del registro f
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - - - -
Status
BTFSC BTFSCBit Test, f Skip if Clear
Operación skip if (f<b>) = 0
Sintaxis [Etiqueta] BTFSC f,b
Operadores 0 ≤ f ≤ 1270 ≤ b ≤ 7
Palabras 1
Ciclos 1 (2)
Descripción Si el bit número b del registro f es nulo, la instrucción que sigue a ésta seignora y se trata como un NOP (skip). En este caso, y sólo en este caso, lainstrucción BTFSC precisa dos ciclos para ejecutarse.
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - - - -
Status
28
BTFSS BTFSSBit Test, Skip if Set
Operación skip if (f<b>) = 1
Sintaxis [Etiqueta] BTFSS f,b
Operadores 0 ≤ f ≤ 1270 ≤ b ≤7
Palabras 1
Ciclos 1 (2)
Descripción Si el bit número b del registro f está a 1, la instrucción que sigue a ésta seignora y se trata como un NOP (skip). En este caso, y sólo en este caso, lainstrucción BTFSS precisa dos ciclos para ejecutarse.
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - - - -Status
CALL CALL Call Subrotine
Operandos 0 = k = 2047
Sintaxis [Etiqueta] CALL k
Operación (PC)+1 Top of Stackk PC <10:0>;
PCLATCH (<4:3>) PC (<12,11>)
Palabras 1
Ciclos 2
Descripción Salvaguarda la dirección de vuelta en la Pila y después llama a la subrutinasituada en la dirección cargada en el PC.El modo de cálculo de la dirección efectiva difiere según la familia PICutilizada. También hay que posicionar PA2, PA1 y PA0 (PIC 16C5X) o elregistro PCLATCH (En los demás PIC) antes de ejecutarse la instrucción.
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - - - -
Status
29
CLRF CLRFClear f
Operación 00h f1 Z
Sintaxis [Etiqueta] CLRF f
Operadores 0 ≤ f ≤ 127
Palabras 1
Ciclos 1
Descripción Se borra el contenido del registro f y el flag Z se activa
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - 1 - -Status
CLRW CLRWClear W
Operación 00h (W)1 Z
Sintaxis [Etiqueta] CLRW
Operadores No tiene
Palabras 1
Ciclos 1
Descripción El registro de trabajo W se carga con 00h. El flag Z se pone a 1
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - 1 - -
Status
30
CLRWDT CLRWDTClear Watchdog Timer
Operación 00h WDT0 WDT preescaler
__1 T0 __1 PD
Sintaxis [Etiqueta] CLRWDT
Operadores No tiene
Palabras 1
Ciclos 1
Descripción Se borra tanto el registro WDT (Watchdog) como su preescaler. Losbits T0 y PD del registro de estado se ponen a Α1".
PA2 PA1 PA0__TO
__PD Z DC C
- - - 1 1 - - -
Status
COMF COMFComplement f
Operación _(f) (dest)
Sintaxis [Etiqueta] COMF f,d
Operadores 0 ≤ f ≤ 127d 0 [0,1]
Palabras 1
Ciclos 1
Descripción Hace el complemento del contenido del registro f bit a bit. El resultado sealmacena en el registro f si d = 1 y en el registro W si d = 0, en este caso fno varía.
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - X - -
Status
31
DECF DECFDecrement f
Operación (f)-1 --> (dest)
Sintaxis [Etiqueta] DECF f,d
Operadores 0 ≤ f ≤ 127d 0 [0,1]
Palabras 1
Ciclos 1
Descripción Se decrementa el contenido del registro f en una unidad. El resultado sealmacena en f si d=1 y en W si d=0, en este caso f no varía.
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - X - -
Status
DECFSZ DECFSZDecrement f , Skip if 0
Operación (f) -1 --> (dest) ; skip if result =0
Sintaxis [Etiqueta] DECFSZ f,d
Operadores 0 ≤ f ≤31d ∈ [0.1]
Palabras 1
Ciclos 1 (2)
Descripción Decrementa el contenido del registro f en una unidad, el resultado sealmacena en f si d=1 y en W si d=0, en este caso, f no varía. Si elresultado es cero, se ignora la siguiente instrucción y, en ese caso lainstrucción tiene una duración de dos ciclos.
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - - - -
Status
32
GOTO GOTOGo to direccion
Operación K PC <10:0>(PCLATH <4:3>) (PC <12:11>)
Sintaxis [Etiqueta] GOTO k
Operadores 0 ≤k ≤2047
Palabras 1
Ciclos 2
Descripción Salto incondicional, normalmente se utiliza para llamar a la subrutinasituada en la dirección que se carga en PC.El modo de cálculo de la instrucción caga de bit 0 al 10 del valor de laconstante k en el PC y los bits 4 y 3 del registro PCLATH
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - - - -
Status
INCF INCFIncrement f
Operación (f) + 1 (dest)
Sintaxis [Etiqueta] INCF f,d
Operadores 0 ≤ f ≤ 127d 0 [0,1]
(f) + 1 (dest)
Palabras 1
Ciclos 1
Descripción Se incrementa en una unidad el contenido del registro f, si d=1 elresultado se almacena en f, si d= 0 el resultado se almacena en W, en estecaso el resultado de f no varía.
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - X - -
Status
33
INCFSZ INCFSZIncrement f, SKIP if 0
Operación (f) +1 (dest) , skip if result = 0
Sintaxis [Etiqueta] <INCFSZ f,d
Operadores 0 ≤ f ≤ 127d 0 [0,1]
Palabras 1
Ciclos 1 (2)
Descripción Incrementa el contenido del registro f en una unidad. El resultado sealmacena de nuevo en f si d=1, y en W si d=0, en este caso f no varía. Siel resultado es cero, se ignora la siguiente instrucción y , en ese caso la,instrucción tiene una duración de dos ciclos.
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - - - -
Status
IORLW IORLWInclusive OR Literal wirh W
Operación (W).OR.k (W)
Sintaxis [Etiqueta] IORLW k
Operadores 0 ≤ k ≤ 255
Palabras 1
Ciclos 1
Descripción Se realiza la operación lógica OR entre el registro W y el literal k. Elresultado se almacena en el registro W.
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - X - -
Status
34
IORWF IORWFInclusive OR W with f
Operación (W) .OR.(f) (dest)
Sintaxis [Etiqueta] IORWF f,d
Operadores 0 ≤ f ≤31d ∈[0,1]
Palabras 1
Ciclos 1
Descripción Efectúa la operación lógica OR entre el contenido del registro W y elcontenido del registro f, y almacena el resultado en f si d=1 y en W sid=0.
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - X - -
Status
MOVLW MOVLWMove liteal to W
Operación k (W)
Sintaxis [Etiqueta] MOVLW k
Operadores 0 ≤ f≤ 255
Palabras 1
Ciclos 1
Descripción El registro W se carga con el valor de 8 bits del literal k
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - X - -
Status
35
MOVF MOVFMove f
Operación (f) (dest)
Sintaxis [Etiqueta] MOVF f,d
Operadores 0 ≤ f ≤ 31d ∈ [0,1]
Palabras 1
Ciclos 1
Descripción El contenido del registro f se carga en el registro destino dependiendo delvalor de d. Si d=0 el destino es el registro W, si d=1 el destino es elpropio registro f . Esta instrucción permite verificar dicho registro ya queel flag Z queda afectado.
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - X - -
Status
MOVWF MOVWFMove W to f
Operación (W) (f)
Sintaxis [Etiqueta] MOVWF f
Operadores 0 ≤ f ≤ 31
Palabras 1
Ciclos 1
Descripción Mueve el contenido del registro W al registro f
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - - - -
Status
36
NOP NOPNo operation
Operación no operación
Sintaxis [Etiqueta] NOP
Operadores No tiene
Palabras 1
Ciclos 1
Descripción No realiza operación alguna. En realidad, se consume un ciclo deinstrucción sin hacer nada.
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - - - -
Status
RETFIE RETFIEReturn from Interrupt
Operación TOS PC1 GIE
Sintaxis [Etiqueta] RETFIE
Operadores No tiene
Palabras 1
Ciclos 2
Descripción Carga el PC con el valor que se encuentra en la parte alta de la Pila,asegurando así la vuelta de la interrupción. Pone a 1 el bit GIE, con el finde autorizar de nuevo que se tengan en cuenta las interrupciones.Esta instrucción no existe en los PIC 16C5X
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - - - -
Status
37
RETLW RETLWRetur with Literal in W
Operación k (W);TOS PC
Sintaxis [Etiqueta] RETLW k
Operadores 0 ≤ f ≤ 255
Palabras 1
Ciclos 2
Descripción Carga el registro W con el literal k, y después carga el PC con el valorque se encuentra en la parte superior de la PILA, efectuando así unretorno de subrutina.
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - - - -
Status
RETURN RETURNReturn from Subroutine
Operación TOS PC
Sintaxis [Etiqueta] RETURN
Operadores No tiene
Palabras 1
Ciclos 2
Descripción Retorno de subrutinaPC = TOS
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - - - -
Status
38
RLF RLFRotate Left f through Carry
Operación C Registro
Sintaxis [Etiqueta] RLF f,d
Operadores 0 ≤ f ≤31d ∈ [0,1]
Palabras 1
Ciclos 1
Descripción Rotación de un bit a la izquierda del contenido del registro f, pasando porel bit de acarreo C. Si d= 1 el resultado se almacena en f, si d =0 elresultado se almacena en W.
C Registro
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - - - X
Status
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - - - X
RRF RRFRotate Right f through Carry
Operación C Registro
Sintaxis [Etiqueta] RRF f,d
Operadores 0 ≤ f ≤ 31d ∈[0,1]
Palabras 1
Ciclos 1
Descripción Rotación de un bit a la derecha del contenido del registro f, pasando por elbit de acarreo C. Si d = 1 el resultado se almacena en f, si d = 0 elresultado se almacena en W.
C Registro
Status
39
SLEEP SLEEPSleep
Operación 00h WDT 0 WDT prescaler __ 1 TO __ 0 PD
Sintaxis [Etiqueta] SLEEP
Operadores No tiene
Palabras 1
Ciclos 1
Descripción Pone al circuito en modo Sleep con parada del oscilador.
PA2 PA1 PA0__TO
__PD Z DC C
- - - 1 0 - - -
TO Se pone a 1 al ejecutar la instrucción SLEEP o CLRWDTPD Se pone a 0 al ejecutar la instrucción SLEEP
Status
SUBLW SUBLWSubtract W from Literal
Operación k - (W) (W)
Sintaxis [Etiqueta] SUBLW k
Operadores 0 ≤ k ≤ 255
Palabras 1
Ciclos 1
Descripción Resta en complemento a dos el contenido del literal k el contenido delregistro W, y almacena el resultado en W.
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - X X X
Status
40
SUBWF SUBWFSubtract W from f
Operación (f) - (W) (dest)
Sintaxis [Etiqueta] SUBW f,d
Operadores 0 ≤ f ≤ 31d ∈ [0,1]
Palabras 1
Ciclos 1
Descripción Resta en complemento a dos el contenido del registro f menos elcontenido del registro W almacena el resultado en W si d=0 y en f si d=1.
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - X X X
Status
SWAPF SWAPFSwap Nibbles in f
Operación (f<3:0>) (dest <7:4>)(f<7:4>) (dest <3:0>)
Sintaxis [Etiqueta] SWAPF f,d
Operadores 0 ≤ f ≤ 31d ∈ [0,1]
Palabras 1
Ciclos 1
Descripción Los cuatro bits de más peso del registro f se intercambian con los 4 bits demenos peso del mismo registro. Si d=0 el resultado se almacena en W, sid=1 el resultado se almacena en f.
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - - - -
Status
41
XORLW XORLWExclusive OR Literal With k
Operación (W).XOR.k (W)
Sintaxis [Etiqueta] XORLW k
Operadores 0 ≤f ≤ 255
Palabras 1
Ciclos 1
Descripción Realiza la función OR-Exclusiva entre el contenido del registro W y laconstante k de 8 bits. El resultado se almacena en W
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - X - -
Status
XORWF XORWFExclusive OR With f
Operación (W).XOR.(f) (des)
Sintaxis [Etiqueta] XORWF f,d
Operadores 0 ≤ f ≤ 127d ∈ [0,1]
Palabras 1
Ciclos 1
Descripción Realiza la función OR-Exclusiva entre el contenido del registro W y elcontenido del registro f, y almacena el resultado en f si d=1 y en W si d=0
PA2 PA1 PA0__TO
__PD Z DC C
- - - - - X - -
Status
42
• 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 interrupción– RETURN: Retorno de subrutina– SUBLW: Resta W de un inmediato
SET DE INSTRUCCIONES
Prescaler de TMR0/WDT
43
• 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 activación de los impulsos a contar se selecciona con el bit T0SE del registro OPTION.– T0SE = 1 flanco descendente– T0SE = 0 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 activación global de interrupciones GIE.
El TRM0 como Contador (1)
El TRM0
44
EL TMR0
Foosc/4
Bus de datos
El bit T0IF sepone a 1 si hayoverflow
T0SE
RA4/T0CKIpin
Sincronizacióncon el reloj
internoTMR0
8
0
11
0
T0CS
PreescalerProgramable
PS2,PS1,PS0 PSA
3
PSout
PSout(Retardo de 2 ciclos)
El TRM0
CLKOUT (=Foosc/4) Bus de datos
El bit T0IF sepone a 1 si hayoverflow
T0SE
RA4/T0CKIpin
PS2:PS0
PSA
WDTtime-out
WDT bit de habilitación
MUX
T0CS
0
1
Retardode 2ciclos
Registro TMROMUX
PSA
1
0
MUX
PSA
0
1
Multiplexor 1-8
Preescaler de 8 bits
MUX
PerroGuardián
8
0 1
8
3
PREESCALER
45
EL WATCHDOG (WDT)
• Su función es vigilar que el programa no se “cuelgue”.
• Para ello el Watchdog da un paseo por la CPU cada cierto tiempo, asegurándose 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 oscilación de 18 ms.
• El periodo puede aumentarse haciendo uso del Preescaler con el que se puede conseguir una relación de hasta 1:128 que corresponde a 2,3 seg. de temporización.
46
EL WATCHDOG (WDT)
CLKOUT (=Foosc/4) Bus de datos
El bit T0IF sepone a 1 si hayoverflow
T0SE
RA4/T0CKIpin
PS2:PS0
PSA
WDTtime-out
WDT bit de habilitación
MUX
T0CS
0
1
Retardode 2ciclos
Registro TMROMUX
PSA
1
0
MUX
PSA
0
1
Multiplexor 1-8
Preescaler de 8 bits
MUX
PerroGuardián
8
0 1
8
3
PREESCALER
MODO DE BAJO CONSUMO “SLEEP”
• Es un modo de funcionamiento de ahoro de energía, llamado modo de bajo consumo, reposo, standby o SLEEP.
• Para entra en este modo hay que ejecutar la instrucción SLEEP.
• En este modo se detiene el reloj principal y sus circuitos asociados con el consiguiente ahorro de energía. Al activarse una interrupción, ocasionada por algún acontecimiento esperado, el microcontrolador se despierta y reanuda su trabajo.
(1)
47
MODO DE BAJO CONSUMO “SLEEP”
• Al ejecutarse la instrucción 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 tenían antes de
ejecutar SLEEP.– Los bits /TO y /PD del registro de STATUS toman los valores “1”
y “0” respectivamente.
(2)
MODO DE BAJO CONSUMO “SLEEP”(Status) (2)
dirección: 03h,83h
• PD : Power Down1: Tras conectar VDD o al ejecutar la instrucción CLRWDT0: Al ejecutar la instrucción SLEEP
• TO: Timer Out1: Tras conectar VDD o ejecutar CLRWDT o SLEEP0: Al desbordar el temporizador de WDT
IRP RP1 RP0 TO# PD# Z DC CR/W R/W R/W R R R/W R/W R/W
(3)
48
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,
generándose un reset.– El Watchdog que estaba habilitado cuando se
ejecuto el sleep se desborda y se despierta.– Por una interrupción que no sea el
desbordamiento del TMR0, ya que este no funciona en el modo SLEEP.
(4)
Interrupciones en el PIC16F84(1)
49
El PIC 16F84 tiene 4 posibles causas de interrupción:Sucesos Externos• Activación del pin <6> RB0/INT. • Cambio de estado en una de los 4 pines de mas peso de
port B <RPB7:RPB4>.Sucesos Internos• Finalización de la Escritura en la EEPROM de datos• Desbordamiento del temporizador TMR0
Interrupciones en el PIC16F84(1)
Interrupciones en el PIC16F84A (3)
Interrupción
PC -->PilaGIE = 0
PC=0004h(Vector de Interrupción)
Rutina de atención a la Interrupción
Se almacenan losregistros a modificar
Se determina la causade la Interrupción
Salto a la rutinade servicio corespondiente
Restauración de losregistros
Se Borra el señalizadorde la interrupción
Retorno (RETFIE)PC<-- PILA
GIE=1
50
Interrupción
PC PILA
GIE=0
PC=0004(Vector de Interrupción)
Se almacenan los registrosa modificar
Se determina la causade la Interrupción
Salto a la rutina deservicio a la Interrupción
Restauración de losRegistros guardados
Se borra el señalizadorde la Interrupción
Retorno (RETFIE)
PC PILA
GIE=1
Interrupciones en el PIC16F84A (3)
Cuando se produce una petición de interrupción ocurre lo siguiente:
• Si el bit GIE=1 se atiende la interrupción• Se deposita el contenido del PC en la Pila• Se prohiben nuevas interrupciones poniendo el bit
GIE=0• El PC= 0004h (Vector de interrupciones)
Interrupciones en el PIC16F84(2)
51
Que debe hacer el programa de atención a la interrupción:• Guardar el contenido de los registros que va a utilizar esta
rutina.• Se determina la causa de la interrupción explorando los
señalizadores de las fuentes de interrupción.• Saltar a la rutina de atención a la interrupción
correspondiente.• Devolver el valor de los registros que tenia el programa
antes de atender la interrupción.• Borrar el señalizador de interrupción• Ejecutar RETFIE
Interrupciones en el PIC16F84(3)
Secuencia de instrucciones para guardar los registros al saltar a una interrupción
Salvar movwf W_TEMP ;Guarda el contenido de Wswapf STATUS,W ;Swap el contenido de Estado en Wmovwf STATUS_TEMP ;Guarda el contenido Estado(swapped)
.....................
.....................
Secuencia de instrucciones de finalización de interrupciónRestaurar swapf STATUS_TEMP,W;Devuelve el regisgtro de STATUS
movwf STATUS ;restaura el STATUSswapf W_TEMP,f ;restaura el Wswapf W_TEMP,Wbcf INTCON,INTF ;borrar el señalizador de la interrupciónretfie ;retorno de interrupción
Interrupciones en el PIC16F84(4)
52
Secuencia de instrucciones para explorar cual es la causa de la interrupción.btfsc INTCON,INTF ;Si el flag INTF=0 salta call Inte ;Si el flag INTF=1 salta a Intebtfsc INTCON,T0IF ;Si el flag T0IF = 0 saltacall Timer ;Con T0IF=1, se llama a Timerbtfsc INTCON,RBIF ;Si el flag RBIF=0 salta call Puert_B ; Si el flag RBIF=1 salta a Puerto_Bbsff STATUS,RP0 ; Selecciona el banco 1btfsc EECON1,EEIF ; Si EEIF=0, saltacall Eeprom ; Si el flag INTF=1 salta a Eeprom
Interrupciones en el PIC16F84(6)
Lógica que gobierna la generación de una interrupción
Interrupciones en el PIC16F84(5)
Activa si estáen modo de reposo
Interrupción
TOIFTOIE
INTFINTE
RBIFRBIE
EEIFEEIE
GIE
53
Memoria EEPROM de datos
07h
08h
09h
0Ah
4Fh
50h
0Ch
0Bh
D0h
CFh
8Ch
EEDATA
EEADR
PCLATH
INTCON
DECODIFICADOR
EECON2 89h
8Bh
8Ah
88h
87h
EECON1
PCLATH
INTCON
MAPEADO EN
BANCO 0
7Fh FFh
NO IMPLEMENTADO FISICAMENTE.
(SE LEEN COMO "0").
RB4
RB3
RB2
RB1
RB0
PUERTOB
RB5
RB6
RB7
3Fh
3Eh
01h
00h
03h
02h64 POSICIONES DE MEMORIA DE
DATOSEEPROM.
8BUS DEDATOS
BUS DE INSTRUC
68 REGISTROS
DE PROPOSITO
GENERAL
SFR
(Spe
GP
R
Registro EECON1 (1)
• Bit 4:EEIF, Señalizador de final de operación de escritura1= La operación de escritura se ha completado con éxito0 = La operación de escritura no se ha completado
• Bit 3:WRERR, Señalizador de error de escritura1 = Se pone a 1 cuando una operación de escritura ha terminado prematuramente0 = La operación de escritura se ha completado correctamente
• Bit 2: WREN, Permiso de escritura1 = Permite la escritura de la EEPROM0 = Prohibe la escritura de la EEPROM
- - - EEIF WRERR WREN WR RDbit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
54
Registro EECON1 (2)
• Bit 1: WR, EscrituraSe pone a 1 cuando comienza el ciclo de escritura de la EEPROMSe pone a 0 cuando finaliza el ciclo de escritura de la EEPROM
• Bit 0: RD, LecturaSe pone a 1 cuando se va a realizar un ciclo de lectura de la EEPROM.
Este bit pone a 0 automáticamente cuando termina la lectura de la posición de la EEPROM
- - - EEIF WRERR WREN WR RDbit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
RUTINA DE LECTURA EN LA E2PROM
;EE_Read: Leer un byte de la EEPROM. En W se debe escribir la dirección de ;memoria a leer y en W se devuelve el valor de la posición de memoria leída.EEPROM_LeeDato
movwf EEADR ;Dirección a Leerbsf STATUS,RP0 ;Selección de banco 1bsf EECON1,RD ;Orden de lectura
EEPROM_SigueLeyendobtfsc EECON1,RDgoto EEPROM_SigueLeyendobcf STATUS,RP0 ;Selección de banco 0movf EEDATA,Wreturn
55
Rutina de Escritura en la E2PROM
;EE_Write: Graba un byte en la EEPROM de datos. La dirección será la contenida ;en EEADR y ;el dato se le supone previamente metido en EEDATAEEPROM_EscribeDato
bsf STATUS,RP0 ;Selecciona banco 1bsf EECON1,WREN ;Permiso de escrituramovlw b'01010101'movwf EECON2movlw b'10101010'movwf EECON2 ;Secuencia establecida por Microchipbsf EECON1,WR ;Orden de escritura
EEPROM_TerminaEscribirbtfsc EECON1,WR ;Testear flag de fin de escrituragoto EEPROM_TerminaEscribirbcf EECON1,WREN ;Desautoriza la Escritura en la EEPROMbcf EECON1,EEIF ;Reponer flag de fin de escriturabcf STATUS,RP0 ;Selección banco 0return