Vous êtes sur la page 1sur 20

TCNICAS DIGITALES 2

PIC18Fxxx
INSTRUCCIONES Y
MODOS DE DIRECCIONAMIENTO
Autor: Ing. GUILLERMO A. FERNNDEZ
Carrera de Ingeniera Electrnica Facultad de Ingeniera
Universidad Nacional de Misiones
Ober Misiones Argentina

- Ao 2014 -

INTRODUCCIN
ESTRUCTURA BSICA DE UN MICROCONTROLADOR

Perifricos

MICROCONTROLADOR = SISTEMA CERRADO

CLK
Genera la seal
que permite
ejecutar el
programa.

CPU
- Unidad Aritmtico-Lgica (ALU).
- Registros de trabajo (WREG).
- Registro Contador de Programa (PC).
- Registro de estado (STATUS), etc.

MEMORIA DE PROGRAMA
- Almacenamiento del programa.
- ROM, EPROM, FLASH, OTP (PROM).

BUSES
BUS DE DIRECCIONES: Mediante el mismo
la CPU puede seleccionar direcciones
relacionadas con memorias o dispositivos
de E/S. Es unidireccional.

UNIDAD DE E/S
- Interface con el exterior.
- Mltiples pines con configuracin
individual como E/S.

MEMORIA DE DATOS
- Almacenamiento de datos.
- SRAM (Voltil).
- A veces tambin EEPROM (No voltil)

BUS DE DATOS: A travs del mismo la


CPU intercambia informacin (datos
e instrucciones) con los dems
dispositivos. Es bidireccional.

BUS DE CONTROL: Son lneas individuales


salientes o entrantes a la CPU. Llevan
seales tales como: Lectura/escritura en
memoria, reloj, reset, etc.

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Ing. Guillermo A. Fernndez

INTRODUCCIN
ARQUITECTURA DE LOS MICROCONTROLADORES
VON NEUMANN

CISC: Complex Instruction Set Computer


Instrucciones potentes (efectan operaciones complejas), esto optimiza el uso de
memoria. Instrucciones complejas utilizan varios ciclos de reloj para la ejecucin.
Varios modos de direccionamiento, esto dificulta el aprendizaje de la programacin.

- Arquitectura clsica, solo tres buses.


- Los dispositivos ubicados en un slo mapa de memoria.
- Arquitectura sencilla.
- Bus de datos compartido para instrucciones y datos.
- Ancho de palabra de instruccin limitada al ancho de
palabra de datos.
- No puede acceder a datos e instrucciones en forma
simultnea (un solo bus de datos).
- Reduccin en la velocidad de procesamiento de las
instrucciones.

HARVARD

RISC: Reduced Instruction Set Computer


Instrucciones sencillas que pueden ser ejecutadas en un slo ciclo de mquina. Esto
aumenta velocidad de procesamiento pero los programas ocupan mas memoria
debido a la mayor cantidad de instrucciones para una tarea determinada. Pocos
modos de direccionamiento, lo cual facilita el aprendizaje de la programacin.

- Arquitectura con mltiples buses.


- Los dispositivos ubicados en distintos mapas de memoria.
- Arquitectura ms compleja.
- Bus de datos independientes para instrucciones y datos.
- Ancho de palabra de instruccin diferente al ancho de
palabra de datos. Permite que las instrucciones puedan
ocupar una sola palabra en la memoria de programa (ms
fcil de ejecutar y pudindose hacer esto en un solo ciclo).
- Puede acceder a datos e instrucciones en forma
simultnea (procesamiento paralelo, pipeline).
- Aumento en la velocidad de procesamiento de las
instrucciones.

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Ing. Guillermo A. Fernndez

INTRODUCCIN
Dispositivos de la firma Microchip Technology Inc.

PIC18Fxxx
MCUs de 8 bits con arquitectura
HARVARD y set de instrucciones
RISC.

PIC = PERIPHERAL INTERFACE CONTROLLER


U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Ing. Guillermo A. Fernndez

INTRODUCCIN
INSTRUCCIN
Las instrucciones corresponden a cdigos binarios, que al ejecutarse llevan al microcontrolador
a efectuar una tarea determinada. Las instrucciones poseen dos campos.
Campo 1

Campo 2

Cdigo
Operacional

LENGUAJE ASSEMBLER

PIC18Fxxx
Poseen 77 instrucciones, 73
- Datos.
de 16 bits y 4 de 32 bits.
- Direcciones de los datos.
- Bits para seleccin (ej.: bancos de memoria)
- Etc.

Para no trabajar con nmeros binarios o hexadecimales que representan a las instrucciones, los
fabricantes de microcontroladores disponen del lenguaje ASSEMBLER o ENSAMBLADOR, donde a
cada cdigo operacional se asigna un apodo denominado MNEMONICO.
Ejemplos:
Mnemnico

Operando

Instruccin 1

movwf

f,a

Instruccin 2

movf

f,d,a

Instruccin 3

movff

fs,fd

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Ing. Guillermo A. Fernndez

PROGRAMACIN
CONCEPTO
La programacin de un microcontrolador consiste en cargarle a su memoria de programa una
secuencia de instrucciones que deber ejecutar para que el mismo realice una tarea determinada.
Esta secuencia de instrucciones constituye el programa o algoritmo lgico del microcontrolador
(Firmware).

MEMORIA DE PROGRAMA
MICROCONTROLADOR

INSTRUCCIONES
(Almacenadas en la Memoria de Programa)
16 bits

Memoria
de Programa

Memoria
de Programa

(FLASH)
En Assembler
(Cdigo Fuente)
Todo en binario
(Cdigo Mquina)

PIC18F1320
Memoria de programa:
4K palabras de 16 bits
(0000 a 1FFFh bytes)

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Ing. Guillermo A. Fernndez

MEMORIA DE DATOS
Nmero de banco

Direccin del dato en el banco


Direccin del dato

SRAM
PIC18F1320

PIC18Fxxx
PIC18Fxxx: Direccionable 16 bancos de 256 bytes cada uno.
(Bank 0 Bank 15)
PIC18F1320: Slo posee 128 bytes en el Banco 0.
(Access RAM = 00 a 7Fh).

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Ing. Guillermo A. Fernndez

EJECUCIN DEL PROGRAMA


EJECUCIN DE LAS INSTRUCCIONES
EJECUCIN NO SEGMENTADA (Tpico de Von Neumann)

EJECUCIN SEGMENTADA, PIPELINING (Tpico de Harvard)


Consiste en ejecutar y buscar a la vez.

TOSC = Ciclo del Oscilador (CLK)


TCY = Ciclo de Instruccin o de
Mquina

TOSC = 1/FOSC
PIC18Fxxx
Un ciclo de
instruccin
(TCY)

TCY = 4
TOSC

Q1: Decodifica el cdigo operacional de la instruccin buscada anteriormente.


Q2: Lee el operando de la instruccin.
Q3: Procesa el operando.
Q4: Escribe el resultado de la operacin.
U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Ing. Guillermo A. Fernndez

CLASIFICACIN DE LAS INSTRUCCIONES


En la hoja de datos correspondiente a los microcontroladores PIC18Fxxx, las instrucciones estn
clasificadas segn la operacin que cumplen. A continuacin es presentada esta clasificacin.

A) INSTRUCCIONES ORIENTADAS A OPERACIONES CON BYTES


CDIGO DE
MQUINA

En este grupo pueden encontrarse


instrucciones que realizan diferentes
operaciones con bytes. En la tabla
estn indicados algunos ejemplos.
OPERACIONES ARITMTICAS
Y LGICAS
OPERACIONES PARA TRANSFERENCIA
DE DATOS

Fuente: PIC18F1220/1320 Data Sheet (DS39605F)


U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Ing. Guillermo A. Fernndez

CLASIFICACIN DE LAS INSTRUCCIONES


B) INSTRUCCIONES ORIENTADAS A OPERACIONES CON BITS

Fuente: PIC18F1220/1320 Data Sheet (DS39605F)

OPERACIONES PARA MODIFICAR EL ESTADO DE UN BIT


OPERACIONES PARA TESTEAR EL ESTADO DE UN BIT

C) INSTRUCCIONES ORIENTADAS A OPERACIONES CON LITERALES (DATOS)

Fuente: PIC18F1220/1320 Data Sheet (DS39605F)

OPERACIONES PARA ARITMTICAS Y LGICAS CON LITERALES


OPERACIONES PARA MOVIMIENTO DE LITERALES
U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Ing. Guillermo A. Fernndez

CLASIFICACIN DE LAS INSTRUCCIONES


D) INSTRUCCIONES ORIENTADAS AL CONTROL
OPERACIONES PARA CONTROL DEL
FLUJO DE PROGRAMA (SALTOS)
- SALTOS RELATIVOS (Ej: BNC n)
(CONDICIONALES)
- SALTOS ABSOLUTOS (Ej: GOTO n)
(INCONDICIONALES)

OPERACIONES PARA CONTROL


DEL FUNCIONAMIENTO DEL
MICROCONTROLADOR
Permiten alterar de alguna
forma el funcionamiento del
microcontrolador.
Fuente: PIC18F1220/1320 Data Sheet (DS39605F)

E) INSTRUCCIONES ORIENTADAS A OPERACIONES ENTRE MEMORIA


DE DATOS Y DE PROGRAMA
Este grupo de instrucciones permite
transferir informacin desde la memoria
de programa a la de datos y viceversa.
Fuente: PIC18F1220/1320 Data Sheet (DS39605F)
U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Ing. Guillermo A. Fernndez

MODOS DE DIRECCIONAMIENTO
CONCEPTO
El modo de direccionamiento de un operando o una instruccin, es la forma en que la
CPU accede al mismo, para utilizarlo en la ejecucin de determinada instruccin.

PIC18Fxxx
Modos de
Direccionamiento

A) INHERENTE O IMPLCITO
B) INMEDIATO
C) DIRECTO A REGISTRO y DIRECTO A BIT
D) RELATIVO AL CONTADOR DE PROGRAMA
E) INDIRECTO

A) DIRECCIONAMIENTO INHERENTE O IMPLCITO


En este modo de direccionamiento el operando
se encuentra implcito en el opcode, es decir el
operando ya est incluido en el mnemnico de
la instruccin. Por lo tanto una instruccin con
este modo de direccionamiento ocupar slo
una palabra de 16 bits de la memoria de
programa.

Ejemplos:
Mnemnico

Operando

Comentarios

Instruccin 1

CLRWDT

; Borra el perro guardin

Instruccin 2

NOP

; No opera

Instruccin 3

RESET

; Resetea el Micro

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Ing. Guillermo A. Fernndez

MODOS DE DIRECCIONAMIENTO
B) DIRECCIONAMIENTO INMEDIATO
En este modo de direccionamiento el
dato se encuentra inmediatamente
luego del opcode.

Ejemplos:
Mnemnico

Operando

Comentarios

Instruccin 1

MOVLW

; WREG k

Instruccin 2

ADDLW

; WREG k + (WREG)

Instruccin 3

ANDLW

; WREG k & (WREG)

C1) DIRECCIONAMIENTO DIRECTO A REGISTRO


En este modo de direccionamiento se trabaja con la direccin del dato o de la instruccin a utilizar. Para indicar la
direccin de un dato, debe especificarse el banco de memoria RAM en que se encuentra la misma. Para esto el
operando incluye el bit a. El operando de la instruccin tambin puede incluir el destino correspondiente al
resultado de la ejecucin de la instruccin, para esto se utiliza el bit d. Hay una sola instruccin que utiliza dos
direcciones en el operando (ambas del Banco 0), una para el origen y la otra para el destino.

Ejemplos:
Mnemnico

Operando

Comentarios

f, a

; Reg. f (WREG).
; Si a=0 Reg. f es del Banco 0.
; Si a=1 Reg. f es del banco definido por BSR<3:0>.

COMF

f, d, a

; Si d=W: WREG
/(Reg. f) (complemento)
; Si d=F : Reg. f /(Reg. f) (complemento)
; Si a=0 Reg. f es del Banco 0.
; Si a=1 Reg. f es del banco definido por BSR<3:0>.

MOVFF

fs, fd

; Reg. fd (Reg. fs) . Ambas direcciones en el Banco 0.

Instruccin 1

MOVWF

Instruccin 2

Instruccin 3

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Ing. Guillermo A. Fernndez

FORMATO 1
FORMATO 2
FORMATO 3

MODOS DE DIRECCIONAMIENTO
C2) DIRECCIONAMIENTO DIRECTO A BIT
En este modo de direccionamiento, el operando posee la direccin del dato, informacin referente al banco de
memoria en que se encuentra el dato (bit a) y el nmero de bit sobre el cual va a operar la instruccin (b= 07).

Ejemplo:
Mnemnico
Instruccin 1

BCF

Operando
f, b, a

Comentarios
; Borra el bit nmero b del Reg. f.
; Si a=0 Reg. f es del Banco 0.
; Si a=1 Reg. f es del banco definido por BSR<3:0>.

D) DIRECCIONAMIENTO RELATIVO AL CONTADOR DE PROGRAMA


Este modo de direccionamiento es para acceder a instrucciones. Es utilizado especficamente con instrucciones de salto
condicional e incondicional. En el caso de los saltos condicionales, la instruccin suma un offset al registro PC para
ocasionar el salto a una direccin de memoria no necesariamente consecutiva a la que se est ejecutando. El offset es un
nmero en formato de C2, para poder efectuar saltos hacia adelante (saltos con offset positivos) o hacia atrs (saltos con
offset negativos) en el mapa de memoria de programa. En el caso de las instrucciones de salto incondicional, el registro PC
es cargado con un valor especificado en la misma instruccin.

Ejemplos:
Mnemnico

Operando

Comentarios

Instruccin 1

BNZ

; Si el bit ZERO = 0 (de STATUS), salta a la instruccin en


; la direccin de memoria obtenida a travs de (PC) + n.

FORMATO 1

Instruccin 2

BRA

; Salta incondicionalmente a la instruccin en la


; direccin de memoria obtenida a travs de (PC) + n.

FORMATO 2

Instruccin 3

GOTO

; Salta incondicionalmente a la posicin de mem. n.

FORMATO 3

Instruccin 4

CALL

n,s

; Salta a la subrutina ubicada en la posicin de memoria


; n. ; Si s=0 No se guardan los reg. WREG, STATUS y BSR.
; Si s=FAST Se guardan los reg. WREG, STATUS y BSR.

FORMATO 4

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Ing. Guillermo A. Fernndez

MODOS DE DIRECCIONAMIENTO
F) DIRECCIONAMIENTO INDIRECTO
En este modo de direccionamiento se utiliza un registro de funcin especial (SFR) para apuntar a la posicin de
memoria que ser escrita o leda por la instruccin. Es decir, en el registro SFR mencionado se almacena la
direccin del dato con que trabajar la instruccin. Estos registros son tres: FSR0, FSR1 y FSR2 (registros de 16
bits). Almacenada la direccin en alguno de los registros FSRx, la instruccin deber trabajar con el
correspondiente registro de direccionamiento indirecto. Existen tres registros para direccionamiento indirecto:
INDF0, INDF1 y INDF2 (registros de 8 bits). De esta forma, en el direccionamiento indirecto, si la instruccin lee
o escribe sobre el registro INDF0, lo estar haciendo sobre la direccin de memoria almacenada en el registro
FSR0 (es decir a donde apunta FSR0). Lo mismo sucede para los dems registros INDFx, con su respectivo FSRx.

FSR0 = FSR0H : FSR0L (FEAh : FE9h)


FSR1 = FSR1H : FSR1L (FE2h : FE1h)
FSR2 = FSR2H : FSR2L (FDAh : FD9h)

INDF0 = FEFh
INDF1 = FE7h
INDF2 = FDFh

Ejemplo:
Mnemnico

Operando

Comentarios

LFSR

0, 0xA1

; Carga el registro FSR0 con A1h, direccin del dato.

CLR

INDF0

; Borra el dato en la posicin de memoria A1h.

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Ing. Guillermo A. Fernndez

MODOS DE DIRECCIONAMIENTO
El modo de direccionamiento indirecto tiene un potencial importante, ya que permite considerar al dato como
una variable. Para esto existen distintas variantes del modo, las cuales se indican a continuacin:

-POSTINCx: Auto incremento de la direccin del dato, despus de ejecutar la instruccin.


-POSTDECx: Auto decremento de la direccin del dato, despus de ejecutar la instruccin.
-PREINCx: Auto incremento de la direccin del dato, antes de ejecutar la instruccin.
-PLUSWx: Indirecto con offset. La direccin del dato es obtenida mediante la suma (FSRx) + (WREG).
El contenido de WREG es considerado como un nmero con signo en complemento a 2. Los
registros no son modificados al ejecutar la instruccin.
Estas variantes permiten operar con bloques de datos que estn ubicados en varias posiciones de memoria
consecutivas (tablas), de manera sencilla utilizando pocas lneas de programa.

Ejemplos:

Mnemnico

Operando

Comentarios

CLRF

POSTDEC2

; Borra el dato ubicado en la direccin que apunta FSR2,


; luego decrementa en uno la direccin cargada en este
; el registro FSR2.

MOVWF

POSTINC0

; Carga el contenido de WREG en la direccin apuntada


; por FSR0 , luego incrementa en uno la direccin
; cargada en este el registro FSR0.

ADDWF

PREINC1,F

; Suma el contenido de WREG al dato de la direccin


; apuntada por FSR1 previo incrementado en 1. Luego de
; ejecutar la instruccin El registro FSR1 queda
; incrementado en 1. El resultado de la suma queda en la
; direccin resultante en FSR1.

MOVFF

PLUSW0,0x1A

; Mueve el dato que est en la direccin que resulta de


; sumar el contenido de WREG con FSR0, a la direccin 1Ah.

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Ing. Guillermo A. Fernndez

FORMATOS DE LAS INSTRUCCIONES


MODO INHERENTE
O IMPLCITO

MODO INMEDIATO

Slo para la instruccin


LFSR f,k el literal k es
de 12 bits y la instruccin
utiliza 32 bits.

DIRECTO A REGISTRO
FORMATO 1
FORMATO 2

FORMATO 3
(32 bits)

Bit a: Banco de memoria RAM


0 ( A) Banco 0 (Access Bank)
1 ( BANKED) Banco definido
por BSR<3:0>
Bit d: Destino del resultado
0 ( W) destino = WREG
1 ( F) destino = ffff ffff

Slo para MOVFF fs,fd

DIRECTO A BIT
k: Literal de 8 bits (dato)
f: Direcc. del dato (8 bits)

fs: Direcc. origen del dato (12 bits)


fd: Direcc. destino del dato (12 bits)

bbb: Posicin del bit

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Ing. Guillermo A. Fernndez

MODOS DE DIRECCIONAMIENTO
RELATIVO AL PC
(Direccionamiento a instruccin)

FORMATO 1
n: Offset en complemento a 2, que se suma al reg.
PC para efectuar el salto condicional (8 bits).

FORMATO 2

Slo para BRA n

n: Offset en complemento a 2, que se suma al reg.


PC para efectuar el salto condicional (11 bits).

FORMATO 3
(32 bits)

Slo para GOTO n

La direccin n se carga al reg.PC


para efectuar un salto incondicional

FORMATO 4
(32 bits)

Slo para CALL n,s

La direccin n se carga al reg.PC


para efectuar un salto incondicional
n: Direccin de la siguiente instruccin (20 bits)
Bit s: Fast Bit
0 No guarda los reg. STATUS, WREG y BSR
1 Guarda automticamente los reg.
STATUS, WREG y BSR
U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Ing. Guillermo A. Fernndez

EJECUCIN DE INSTRUCCIONES DE SALTO


SALTOS CORTOS (BRANCH)

Instrucciones Branch

Son los saltos producidos sumando un offset al contenido del


registro PC. El offset es un valor n de ocho bits
representado en complemento a 2 (-128 n +127), para que
las instrucciones puedan efectuar saltos hacia adelante y
hacia atrs en el programa.

Obtencin de la direccin destino del salto:


bnz

LEE

E1FB

Opcode = E1
Offset (n) = FB = 1111 1011 = -5
Direccin destino:

(PC) + 2 + 2n PC

Archivo *.lst generado al ensamblar el programa


(Muestra cdigo mquina y cdigo fuente)

000018h
24d + (-10d)= 14d = 00000Eh
Entonces al ejecutarse bnz LEE, el programa salta a
la instruccin ubicada en la posicin 00000E para
ejecutarla.

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Ing. Guillermo A. Fernndez

EJECUCIN DE INSTRUCCIONES DE SALTO


SALTOS LARGOS
Son saltos producidos reemplazando el valor del registro PC
por un valor n que contiene la instruccin. Este valor es
una direccin de 20 bits. La direccin reemplaza los 20 bits
mas significativos del registro PC (A20.A1), permaneciendo
el bit A0=0.

Saltos largos

GOTO n
CALL n,s

Obtencin de la direccin destino del salto:


goto

STOP

EF0C F000
EF 0C
F0 00

Direccin destino:

PC<A20:A1> = 0000C
PC<A0> = 0
Archivo *.lst generado al ensamblar el programa
(Muestra cdigo mquina y cdigo fuente)

PC = 000000000000000011000 = 000018h

U.Na.M. Facultad de Ingeniera Tcnicas Digitales 2 Ing. Guillermo A. Fernndez

Vous aimerez peut-être aussi