Sie sind auf Seite 1von 49

Tema 2

ARQUITECTURA DEL PIC18

Microcontroladores: Tema1

Microcontroladores de 8 bits

http://ww1.microchip.com/downloads/en/DeviceDoc/39630h.pdf
2

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

Caractersticas generales PIC18

Puertos paralelos (I/O)


Timers
PWM
SPI e I2C
USART
Convertidor A/D
Comparador anlogo

Modos de bajo
consumo
SRAM y EEPROM
Flash y EPROM
CAN/USB/Ethernet
LCD
Mas de 1000 nmeros
de parte disponibles

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

PIC18(L)F2X/45K50

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

PIC18(L)F45K50

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

Organizacin de memoria

Address

Content

Address Direccin de la memoria a acceder


[Address] Contenido de la memoria

Ing. Procopio Villarreal Garza

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

Inside the MCU

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

Espacios de Memoria

Direccionamiento de memoria de programa


221= 2097152 = 2Mbytes
Direccionamiento de memoria de datos
212= 4096 =4Kbytes

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

10

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

Banco 0
Banco 1
Banco 2
******
Banco 15

11

Ing. Procopio Villarreal Garza

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

Ing. Procopio Villarreal Garza

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

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

EEPROM
Se cuentan con 256 bytes de memoria para
escritura y lectora no voltiles.

No se encuentra mapeada a memoria de


programa o de datos

Se accesa indirectamente mediante los


registros SFR

14

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

15

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

Registros del CPU

16

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

Registros del CPU

17

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

Registro de STATUS
Contiene el estado aritmtico del ALU

18

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

19

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

20

Ing. Procopio Villarreal Garza

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

Ing. Procopio Villarreal Garza

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)

Ing. Procopio Villarreal Garza

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

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

Formato de instrucciones
Instrucciones literales
8

15
OPCODE

24

0
k

Ing. Procopio Villarreal Garza

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)

Ing. Procopio Villarreal Garza

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

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

Formato de instrucciones
Instrucciones de control (BRA)
11 10

15
OPCODE

27

0
n<10:0>(literal)

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

Formato de instrucciones
Instrucciones de control (BC)
8

15
OPCODE

28

0
n<7:0>(literal)

Ing. Procopio Villarreal Garza

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

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

Modos de direccionamiento
Inmediato
addlw 0x20

movlw 0x15

movlb 3

0X20

0X15

+
Value + 0X20

30

Value

BSR

0X15

Value

Value

BSR

Ing. Procopio Villarreal Garza

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

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

Modos de direccionamiento
Indirecto
11

0x000
FSRnH

FSRnL

Data memory location

FSRn

FSR0 = FSR0H:FSR0L
FSR1 = FSR1H:FSR1L
FSR2 = FSR2H:FSR2L

32

0XFFF

Ing. Procopio Villarreal Garza

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)

Autodecrementar despues el FSRn = POSTDECn (n=0..3)

Autoincrementar despues el FSRn = POSTINCn (n=0..3)

Autoincrementar antes el registro FSRn = PREINCn (n=0..3)

Sumar el registro W (con signo) al FSRn = PLUSWn*

*El valor de FSRn no se altera


33

Ing. Procopio Villarreal Garza

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

Ing. Procopio Villarreal Garza

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

Ing. Procopio Villarreal Garza

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

Ing. Procopio Villarreal Garza

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

Ing. Procopio Villarreal Garza

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

Ing. Procopio Villarreal Garza

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

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

Instrucciones bsicas
Instrucciones de movimiento de datos
INSTRUCT

DESC

BINARY

ESTATUS

lfsr f,k

Load FSR

1110 1110 00ff kkkk

-------------

1111 0000 kkkk kkkk


movf f,d,a

Move f

0101 00da ffff ffff

ZyN

movff fs,fd

Move fs to fd

1100 ffff

ffff ffff

-------------

1111 ffff

ffff ffff

-------------

movwf f,a

Move W to fs

0110 111a ffff ffff

-------------

swapf f,d,a

Swapp nibbles in f

0011 10da ffff ffff

-------------

movlb

Move literal to BSR 0000 0001 kkkk kkkk

-------------

Movlw

Move literal to W

-------------

40

0000 1110 kkkk kkkk

Ing. Procopio Villarreal Garza

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

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

Instrucciones bsicas
Instrucciones de suma

42

INSTRUCT

DESC

addwf f,d,a

Add WREG and f

addwfc f,d,a

Add WREG, carry bit and f

addw k

Add literal to W

Ing. Procopio Villarreal Garza

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

Ing. Procopio Villarreal Garza

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

;Suma W al registro 30h y dejalo en 30n

addwf 0x31,F,A
31h

;Suma W al registro 31h y dejalo en

addwf 0x32,F,A
32h

;Suma W al registro 32h y dejalo en

Ing. Procopio Villarreal Garza

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

;Mueve el contenido de 40h a W

addwf 0x41,W,A

;Suma W al registro 30h y dejalo en W

addwf 0x42,W,A
31h

;Suma W al registro 31h y dejalo en

movwf 0x50,A

;Mueve el contenido de W a 50h

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

Instrucciones bsicas
Ejemplos con Instrucciones de suma
Escriba una secuencia para sumar 10 unidades a los registros
0x300 a 0x303
Movlw 0x0A

;Mover el valor de 10 al registro W

Lfsr FSR0,0x300

;Carga al registro de dir indirecto 0x300

addwf POSTINC0,F

;Suma W a FSR0 y FSR0 = 0x300 +1

addwf POSTINC0,F

;Suma W a FSR0 y FSR0 = 0x301 +1

addwf POSTINC0,F

;Suma W a FSR0 y FSR0 = 0x302 +1

addwf POSTINC0,F

;Suma W a FSR0 y FSR0 = 0x303 +1

46

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

Instrucciones bsicas
Instrucciones de resta

47

IINSTRUCT

DESC

subwb f,d,a

Substract f from W with borrow

subwf f,d,a

Substract W from f

subwfb f,d,a

Substract W from f with borrow

sublw k

Substract WREG from literal

Ing. Procopio Villarreal Garza

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

;Resta W al registro 50h y dejalo en 50n

subwf 0x51,F,A
51h

;Resta W al registro 51h y dejalo en

subwf 0xr52,F,A
52h

;Resta W al registro 52h y dejalo en

Ing. Procopio Villarreal Garza

Microcontroladores: Tema1

Ejemplos usando MPLAB

49

Ing. Procopio Villarreal Garza

Das könnte Ihnen auch gefallen