Beruflich Dokumente
Kultur Dokumente
Microcontroladores: Tema1
Microcontroladores de 8 bits
http://ww1.microchip.com/downloads/en/DeviceDoc/39630h.pdf
2
Microcontroladores: Tema1
Modos de bajo
consumo
SRAM y EEPROM
Flash y EPROM
CAN/USB/Ethernet
LCD
Mas de 1000 nmeros
de parte disponibles
Microcontroladores: Tema1
PIC18(L)F2X/45K50
Microcontroladores: Tema1
PIC18(L)F45K50
Microcontroladores: Tema1
Microcontroladores: Tema1
Organizacin de memoria
Address
Content
Microcontroladores: Tema1
Espacios de memoria
21 bit address
bus
12 bit address
bus
PIC18
CPU
Program
16 bit instruction
bus
Data
8 bit data
bus
Microcontroladores: Tema1
Espacios de Memoria
Microcontroladores: Tema1
10
Microcontroladores: Tema1
Banco 0
Banco 1
Banco 2
******
Banco 15
11
Microcontroladores: Tema1
Access Bank
Es como si del cajn 0 y cajn 15 (Banco 0 y Banco
15), apartramos en un par de charolas un grupo
de folders (bytes) de cada uno para trabajar y no
tener que estar abriendo los cajones.
Banco 0
Banco 15
12
Microcontroladores: Tema1
SFR
Special Function Registers: Son registros
empleados para interactuar con el CPU y sus
perifricos y se encuentran mapeados en el
espacio de la memoria de datos.
13
Microcontroladores: Tema1
EEPROM
Se cuentan con 256 bytes de memoria para
escritura y lectora no voltiles.
14
Microcontroladores: Tema1
15
Microcontroladores: Tema1
16
Microcontroladores: Tema1
17
Microcontroladores: Tema1
Registro de STATUS
Contiene el estado aritmtico del ALU
18
Microcontroladores: Tema1
19
Microcontroladores: Tema1
20
Microcontroladores: Tema1
Formato de instrucciones
Instrucciones orientadas a Byte
15
10 9
OPCODE
21
8 7
Result in W
Result in f
0
8 bit file register f
Access bank
BSR Selection
Microcontroladores: Tema1
Formato de instrucciones
Instrucciones orientadas a Byte-Byte
12 11
15
OPCODE
15
f (source register)
12 11
1111
22
0
f (destination register)
Microcontroladores: Tema1
Formato de instrucciones
Instrucciones orientadas a bit
15
12 12
OPCODE
9 8 7
d
000
001
010
011
100
101
110
111
a
0
1
0
8 bit file register f
Access bank
BSR Selection
Bit position in f
23
Microcontroladores: Tema1
Formato de instrucciones
Instrucciones literales
8
15
OPCODE
24
0
k
Microcontroladores: Tema1
Formato de instrucciones
Instrucciones de control (GOTO)
8
15
OPCODE
0
n<7:0>(literal)
15
0
1111
25
n<19:8>(literal)
Microcontroladores: Tema1
Formato de instrucciones
Instrucciones de control (CALL)
9
15
OPCODE
8
S
0
n<7:0>(literal)
15
0
1111
n<19:8>(literal)
S = Fast bit
26
Microcontroladores: Tema1
Formato de instrucciones
Instrucciones de control (BRA)
11 10
15
OPCODE
27
0
n<10:0>(literal)
Microcontroladores: Tema1
Formato de instrucciones
Instrucciones de control (BC)
8
15
OPCODE
28
0
n<7:0>(literal)
Microcontroladores: Tema1
Modos de direccionamiento
Registro directo
movwf 0x1A,BANKED
movwf 0x45,A
BANK [BSR]
BANK 0
movff reg1,reg2
0X000
0X45
0X1A
reg1
0XE8
BANK 15
BANK 15
0XE8
reg2
0XFFF
29
Microcontroladores: Tema1
Modos de direccionamiento
Inmediato
addlw 0x20
movlw 0x15
movlb 3
0X20
0X15
+
Value + 0X20
30
Value
BSR
0X15
Value
Value
BSR
Microcontroladores: Tema1
Modos de direccionamiento
Inherente (operando implicito en opcode)
addlw 0x20
movlw 0x15
movlb 3
0X20
0X15
+
Value + 0X20
31
Value
BSR
0X15
Value
Value
BSR
Microcontroladores: Tema1
Modos de direccionamiento
Indirecto
11
0x000
FSRnH
FSRnL
FSRn
FSR0 = FSR0H:FSR0L
FSR1 = FSR1H:FSR1L
FSR2 = FSR2H:FSR2L
32
0XFFF
Microcontroladores: Tema1
Direccionamiento indirecto
Cada registro FSR tiene cinco registros de operaciones que
indican como ser modificado durante la instruccin de
acceso indirecto
No hacer nada en el registro FSRn = INDFn (n=0..3)
Microcontroladores: Tema1
Direccionamiento indirecto
Copia o mueve el contenido del registro W al contenido del
registro cuya direccin est almacenada en el registro de
FSR0 y no hace nada con el registro FSR0
movwf INDF0
Value
0x000
FSR0
0XFFF
34
Microcontroladores: Tema1
Direccionamiento indirecto
Incrementa el registro FSR0 y copia o mueve el contenido
del registro W al contenido del registro cuya direccin est
almacenada en el registro de FSR0
movwf PREINC0
0x000
FSR0
W
Value
FSR0+1
0XFFF
35
Microcontroladores: Tema1
Direccionamiento indirecto
Pone en cero el contenido de la memoria cuya direccin es
el resultado de sumar el contenido de FSR0 y W sin alterar
al final ni FSR0 ni W
clrf PLUSW0
0x00
0x000
FSR0 + W
0XFFF
36
Microcontroladores: Tema1
Direccionamiento indirecto
Copia o mueve el contenido del registro W al contenido del
registro cuya direccin est almacenada en el registro de
FSR0 y al finalizar, decrementa el registro FSR0
movwf POSTDEC0
0x000
FSR0-1
W
Value
FSR0
0XFFF
37
Microcontroladores: Tema1
Modos de direccionamiento
Directo a bit
Access Bank
bcf PORTB,3,A
7
X
6
X
5
X
4
X
2
X
1
X
Access RAM
low
0
X
0x00
0x5F
0x60
Access RAM
high
(SFR)
PORTA
PORTB
PORTC
PORTD
PORTE
0x80
0x81
0x82
0x83
0xFF
38
Microcontroladores: Tema1
Modos de direccionamiento
Directo a bit
Access Bank
bsf PORTA,4,A
Access RAM
low
0x00
0x5F
0x60
Access RAM
high
(SFR)
PORTA
PORTB
PORTC
PORTD
PORTE
0x80
0x81
0x82
0x83
0xFF
39
Microcontroladores: Tema1
Instrucciones bsicas
Instrucciones de movimiento de datos
INSTRUCT
DESC
BINARY
ESTATUS
lfsr f,k
Load FSR
-------------
Move f
ZyN
movff fs,fd
Move fs to fd
1100 ffff
ffff ffff
-------------
1111 ffff
ffff ffff
-------------
movwf f,a
Move W to fs
-------------
swapf f,d,a
Swapp nibbles in f
-------------
movlb
-------------
Movlw
Move literal to W
-------------
40
Microcontroladores: Tema1
Instrucciones bsicas
Ejemplo con Instrucciones de movimiento de datos
Mover el registro W al registro de datos 0x30
movwf 0x30,A
Mover el registro de datos 0x30 al registro de datos 0x40
movff 0x030,0x040
Mover el registro de datos 0x40 al registro W
movf 0x040,W,A
Cargar el valor 0x200 al registro FSR0
lfsr FSR0,0x200
41
Microcontroladores: Tema1
Instrucciones bsicas
Instrucciones de suma
42
INSTRUCT
DESC
addwf f,d,a
addwfc f,d,a
addw k
Add literal to W
Microcontroladores: Tema1
Instrucciones bsicas
Ejemplos con Instrucciones de suma
Sume el contenido de W y el registro de datos 0x40 en el Access
bank quedando el resultado en W
addwf 0x40,W,A
Sume el contenido de W y el registro de datos 0x40 en el banco
de datos 2
movlb 0x02
43
addwf 0x40,W,BANKED
Microcontroladores: Tema1
Instrucciones bsicas
Ejemplos con Instrucciones de suma
Escriba una secuencia para incremenar en 3 unidades los
registros de datos 0x30 al 0x32
44
movlw 0x03
;Cargar W con 3
addwf 0x30,F,A
addwf 0x31,F,A
31h
addwf 0x32,F,A
32h
Microcontroladores: Tema1
Instrucciones bsicas
Ejemplos con Instrucciones de suma
Escriba una secuencia que sume el contenido de tres registros de
datos localizados en 0x40 a 0x42 y lo dejen en el registro 0x50
45
movf 0x40,W,A
addwf 0x41,W,A
addwf 0x42,W,A
31h
movwf 0x50,A
Microcontroladores: Tema1
Instrucciones bsicas
Ejemplos con Instrucciones de suma
Escriba una secuencia para sumar 10 unidades a los registros
0x300 a 0x303
Movlw 0x0A
Lfsr FSR0,0x300
addwf POSTINC0,F
addwf POSTINC0,F
addwf POSTINC0,F
addwf POSTINC0,F
46
Microcontroladores: Tema1
Instrucciones bsicas
Instrucciones de resta
47
IINSTRUCT
DESC
subwb f,d,a
subwf f,d,a
Substract W from f
subwfb f,d,a
sublw k
Microcontroladores: Tema1
Instrucciones bsicas
Ejemplos con Instrucciones de resta
Escriba una secuencia para decrementar en 9 unidades los
registros de datos 0x50 al 0x52
48
movlw 0x09
;Cargar W con 9
subwf 0x50,F,A
subwf 0x51,F,A
51h
subwf 0xr52,F,A
52h
Microcontroladores: Tema1
49