Académique Documents
Professionnel Documents
Culture Documents
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
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)
INTRODUCCIN
ARQUITECTURA DE LOS MICROCONTROLADORES
VON NEUMANN
HARVARD
INTRODUCCIN
Dispositivos de la firma Microchip Technology Inc.
PIC18Fxxx
MCUs de 8 bits con arquitectura
HARVARD y set de instrucciones
RISC.
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
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)
MEMORIA DE DATOS
Nmero de banco
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).
TOSC = 1/FOSC
PIC18Fxxx
Un ciclo de
instruccin
(TCY)
TCY = 4
TOSC
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
Ejemplos:
Mnemnico
Operando
Comentarios
Instruccin 1
CLRWDT
Instruccin 2
NOP
; No opera
Instruccin 3
RESET
; Resetea el Micro
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
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
Instruccin 1
MOVWF
Instruccin 2
Instruccin 3
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>.
Ejemplos:
Mnemnico
Operando
Comentarios
Instruccin 1
BNZ
FORMATO 1
Instruccin 2
BRA
FORMATO 2
Instruccin 3
GOTO
FORMATO 3
Instruccin 4
CALL
n,s
FORMATO 4
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.
INDF0 = FEFh
INDF1 = FE7h
INDF2 = FDFh
Ejemplo:
Mnemnico
Operando
Comentarios
LFSR
0, 0xA1
CLR
INDF0
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:
Ejemplos:
Mnemnico
Operando
Comentarios
CLRF
POSTDEC2
MOVWF
POSTINC0
ADDWF
PREINC1,F
MOVFF
PLUSW0,0x1A
MODO INMEDIATO
DIRECTO A REGISTRO
FORMATO 1
FORMATO 2
FORMATO 3
(32 bits)
DIRECTO A BIT
k: Literal de 8 bits (dato)
f: Direcc. del dato (8 bits)
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
FORMATO 3
(32 bits)
FORMATO 4
(32 bits)
Instrucciones Branch
LEE
E1FB
Opcode = E1
Offset (n) = FB = 1111 1011 = -5
Direccin destino:
(PC) + 2 + 2n PC
000018h
24d + (-10d)= 14d = 00000Eh
Entonces al ejecutarse bnz LEE, el programa salta a
la instruccin ubicada en la posicin 00000E para
ejecutarla.
Saltos largos
GOTO n
CALL n,s
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