Está en la página 1de 64

UNIVERSIDAD PRIVADA ANTENOR ORREGO

INGENIERA ELECTRNICA

MICROCONTROLADOR PIC DE
MICROCHIP
Ing. Lenin Llanos Len

Familias de uC PIC

Podemos dividirlos en tres grandes familias:

Gama Media
Gama Baja

PIC
10F

PIC
12F

Gama Alta
PIC
16F

PIC
18F

PIC
24F

DSPIC

PIC32

Familias de uC PIC

Cada una de estas familias ofrecen distintas


prestaciones y caractersticas, que permiten al
usuario escoger el que ms se adapte a sus
necesidades.

En esta primera parte nos enfocaremos al estudio


de

microcontroladores

particular al PIC 16F88.

de

gama

media,

en

14KB
28 pin
8 bit Timer
16 bit Timer
USART
SPI I2C
ADC

14KB
40 pin
8 bit Timer
16 bit Timer
USART
SPI I2C
ADC

PIC
16F88

3.5KB
18 pin
8 bit Timer
16 bit Timer
USART

PIC
16F877A

PIC
16F628A

1.75KB
18 pin
8 bit Timer

PIC
16F876A

PIC
16F84A

Familia 16F

7KB
18 pin
8 bit Timer
16 bit Timer
USART
SPI I2C
ADC

PIC 16F88

18 Pines

7 KB memoria de
368 bytes memoria RAM
256 bytes EEPROM
2 Comparadores
7 Canales A/D
1 Canal PWM
Comunicacin Serial, SPI,
I2C

PIC
16F88

programa

PIC 16F88

Una de las razones de que se seleccion este PIC


es que podemos exportar fcilmente cdigo
existente de otras referencias.
Por ejemplo si tenemos cdigo para el PIC
16F84A, lo podremos utilizar con nuestro PIC

PIC
16F84A

16F88
PIC
16F88

Herramientas para Programacin

Entorno de Desarrollo, es decir el software que


nos permitir escribir nuestro cdigo fuente y
traducirlo a lenguaje de mquina para que
nuestro microcontrolador lo entienda.

Lenguajes de Programacin
Bajo Nivel
Assembler

Alto Nivel
C Basic Otros

Lenguaje Assembler
VENTAJAS
Velocidad rpida en ejecucin.
Ahorro en memoria de
programa.
Pocas instrucciones.
Conocimiento a fondo del
funcionamiento del
microcontrolador.
Entorno de desarrollo gratuito
(MPLAB)

DESVENTAJAS
Un poco difcil para el
principiante.
Susceptible a errores.
Ardua tarea para encontrar
errores.

Lenguaje de Alto Nivel


VENTAJAS
Es de fcil programacin.
Recomendado para programas
extensos.
Ideal para hacer programas con
operaciones matemticas
complejas.
Poseen una extensa coleccin
de libreras.

DESVENTAJAS
No compatible entre marcas
entre si.
Mayor consuma de memoria.
Costo elevado.

Hardware de Programacin

Tipos de Programadores

Herramientas de Simulacin

UNIVERSIDAD PRIVADA ANTENOR ORREGO


INGENIERA ELECTRNICA

MICROCONTROLADOR PIC
16F88
Ing. Lenin Llanos Len

Pines del PIC 16F88

Circuito de Alimentacin

Circuito de Reloj

Circuito de Reloj con Cristal

Circuito de Reloj con Resonador

Circuito de Reloj RC

Circuito de Reloj Interno

Pin Reset (Master Clear)

Circuito de Reset

Arquitectura Interna

Procesador Central
Memoria de Programa
Memoria de Datos

Memoria de Programa

Memoria de Programa

Memoria Flash de 4K
palabras (14 bits) y
direccionada por el PC
que tiene un tamao
de 13 bits.
Pila con 8 niveles de
profundidad.
El vector de reset
ocupa la direccin
0000h y el vector de
interrupcin la 0004h.

Memoria de Datos

Posiciones implementadas en RAM y otra


en EEPROM.
En la RAM se alojan los registros
fundamentales para el funcionamiento del
procesador y manejo de perifricos
(STATUS, TRISA, PORTA), as como los
registro de Propsito General.
La memoria EEPROM sirve para guardar
datos de forma no voltil.

Memoria de Datos

La RAM consta de 4 bancos con 128 bytes


cada uno.
Para seleccionar el banco que se desea
acceder se usan los bits 5 (RP0) y 6 (RP1)
del registro ESTADO (STATUS).
RP0

RP1

BANCO

BANCO 1

BANCO 2

BANCO 3

BANCO 4

Memoria de Datos

Tamaos de Memoria

REGISTRO ESTADO (STATUS)

Es el registro ms usado pues sus bits


estn
destinados
a
controlar
las
funciones vitales del procesador.

Est duplicado en las cuartas posiciones


de cada banco (03h,83h,103h,183h)

REGISTRO ESTADO (STATUS)

Los tres bits de menos peso son los sealizadores


de ciertas condiciones en las operaciones lgico
aritmticas.

Z: Sealizador de cero. Se pone a 1 cuando el resultado


es cero.
C: Acarreo llevada del 8 bit. Se pone a uno
automticamente cuando existe un acarreo en el bit de
ms peso en las instrucciones de suma. Tambin acta
como sealizador en las instrucciones de resta, pero en
este caso la correspondencia es inversa, si vale 0 es
llevada.
DC: Acarreo llevada del 4 bit. Funciona igual que el
sealizador C, pero para el 4 bit.

REGISTRO ESTADO (STATUS)

Los sealizadores PD# y TO#, son activos por


nivel bajo (#) y sirven para indicar la causa que
ha provocado la reinicializacin del procesador.

PD#: Se activa a 0 al ejecutarse la instruccin SLEEP.


Se pone a uno automticamente tras la conexin de
alimentacin o bien al ejecutarse la instruccin
CLRWDT
TO#: Se activa a nivel bajo al desbordarse el perro
guardin. Toma el valor 1 tras la conexin de
alimentacin o al ejecutarse las instrucciones CLRWDT
o SLEEP.

REGISTRO ESTADO (STATUS)

Finalmente los tres bits de ms peso del


registro de estado se emplean para seleccionar
el banco de la RAM al que se desea acceder.
El bit IRP se usa conectado con el bit de ms
peso del registro FSR para elegir el banco de
RAM en el direccionamiento indirecto.
RP0

RP1

BANCO

BANCO 1

BANCO 2

BANCO 3

BANCO 4

UNIVERSIDAD PRIVADA ANTENOR ORREGO


INGENIERA ELECTRNICA

LENGUAJE ASSEMBLER
Ing. Lenin Llanos Len

Lenguaje Assembler

Lenguaje de Mquina

Lenguaje Assembler

Instrucciones de Programa

REPERTORIO DE INSTRUCCIONES

Est compuesto por 35 instrucciones que


pueden ser agrupadas en los siguientes
grupos:

Instrucciones
Instrucciones
Instrucciones
Instrucciones
Instrucciones
Instrucciones
Instrucciones

de carga.
aritmticas.
lgicas.
de bit.
de salto.
para manejo de subrutinas.
especiales.

INSTRUCCIONES DE CARGA
NEMNICO

DESCRIPCIN

FLAGS AFECTADOS

CLRF f

00 (f)

CLRW

00 (w)

MOVF f,d

(f) (destino)
d=0 : destino = w
d=1 : destino = f

MOVLW k

k (W)

Ninguno

MOVWF f

(w) (f)

Ninguno

INSTRUCCIONES ARITMTICAS

NEMNICO

DESCRIPCIN

FLAGS AFECTADOS

ADDLW k

(w) + k (w)

C, DC, Z

ADDWF f,d

(w) + (f) (destino)

C, DC, Z

DECF f,d

(f) 1 (destino)

INCF f,d

(f) + 1 (destino)

SUBLW k

k (w) (w)

C, DC, Z

SUBWF f,d

(f) (w) (destino)

C, DC, Z

INSTRUCCIONES LGICAS
NEMNICO

DESCRIPCIN

FLAGS AFECTADOS

ANDLW k

(w) and k (w)

ANDWF f,d

(w) and (f) (destino)

COMF f,d

(/f) (destino)

IORLW k

(w) or k (w)

IORWF f,d

(w) or (f) (destino)

INSTRUCCIONES LGICAS
NEMNICO

DESCRIPCIN

FLAGS
AFECTADOS

RLF f,d

Rota (f) a la izquierda a


travs del carry (destino)

RRF f,d

Rota (f) a la derecha a


travs del carry (destino)

SWAPF f,d

Intercambia los niveles de


(f) (destino)

Ninguno

XORLW k

(w) xor k (w)

XORWF f,d

(w) xor (f) (destino)

INSTRUCCIONES DE BIT
NEMNICO

DESCRIPCIN

FLAGS AFECTADOS

BCF f,b

Pone a cero el bit b del


registro f

Ninguno

BSF f,b

Pone a uno el bit b del


registro f

Ninguno

INSTRUCCIONES DE SALTO
NEMNICO

DESCRIPCIN

FLAGS
AFECTADOS

BTFSC f,b

Salta si el bit b de f es cero

Ninguno

BTFSS f,b

Salta si el bit b de f es uno

Ninguno

decfsz f,d

(f) 1 (destino)
y salta si es cero

Ninguno

incfsz f,d

(f) + 1 (destino)
y salta si es cero

Ninguno

goto k

Salta a la direccin k

Ninguno

INSTRUCCIONES PARA MANEJO DE


SUBRUTINAS

NEMNICO

DESCRIPCIN

FLAGS
AFECTADOS

CALL k

Llamada a subrutina

Ninguno

RETFIE

Retorno de una
Interrupcin

Ninguno

RETLW k

Retorno con un literal en w

Ninguno

RETURN

Retorno de una subrutina

Ninguno

INSTRUCCIONES ESPECIALES

NEMNICO

DESCRIPCIN

FLAGS AFECTADOS

CLRWDT

Borra Timer del Watchdog

/TO, /PD

NOP

No operacin

Ninguno

SLEEP

Entra en modo bajo


consumo

/TO, /PD

PRIMER PROGRAMA

Encender un LED conectado en RB0 cada


vez que el interruptor este cerrado.
R2
10k

U1
16
15
FREQ=4MHz

RA7/OSC1/CLKIN
RA0/AN0
RA6/OSC2/CLKOUT
RA1/AN1
RA2/AN2/CVREF/VREFRA5/MCLR RA3/AN3/C1OUT/VREF+
RA4/AN4/T0CKI/C2OUT

R1

RB0/INT/CCP1
RB1/SDI/SDA
RB2/SDO/RX/DT
RB3/CCP1
RB4/SCK/SCL
RB5/SS/TX/CK
RB6/AN5/T1OSO/T1CKI
RB7/AN6/T1OSI

10k

PIC16F88

17
18
1
2
3
6
7
8
9
10
11
12
13

R3
330

D1
LED-GREEN

PRIMER PROGRAMA

1 Crear un fichero *asm, donde ir


nuestro cdigo.

PRIMER PROGRAMA

2 Guardamos nuestro fichero *asm,


donde ir nuestro cdigo.

PRIMER PROGRAMA

3 Crear nuestro proyecto. (Click Proyect Wizard..)

PRIMER PROGRAMA

4 Click en Siguiente.

PRIMER PROGRAMA

5 Seleccionamos el Pic con el que deseamos trabajar.

PRIMER PROGRAMA

6 Seleccionamos el Lenguaje de Programacin y


Compilador (MPASM).

PRIMER PROGRAMA

7 Seleccionamos el Nombre y la Ubicacin donde se


guardar nuestro proyecto.

PRIMER PROGRAMA

8 Agregamos nuestro Archivo (*asm) a nuestro


proyecto y siguiente.

PRIMER PROGRAMA

9 Click Finalizar.

PRIMER PROGRAMA

10 Nos aparecer la siguiente ventana.

PRIMER PROGRAMA

11 Doble Click en nuestro archivo *asm y abrir la


ventana para escribir nuestro cdigo.

PRIMER PROGRAMA

Diagrama de Flujo para la solucin:


INICIO

Definicin de
PIC y Variables
Configuracin
de Puertos
Led Apagado

SI

Pulsador
NO

Presionado
?
Prender
Led

Apagar
Led

PRIMER PROGRAMA
Definicin de
PIC y Variables

list p=16f88
#include p16f88.inc
__CONFIG _CONFIG1, _CPD_OFF & _CP_OFF & _DEBUG_OFF &
_LVP_OFF & _MCLR_ON & _PWRTE_ON & _WDT_OFF
&_WRT_PROTECT_OFF & _XT_OSC & _BODEN_OFF
Led equ 0
Pulsador equ 0

PRIMER PROGRAMA
Configuracin
de Puertos

org 0x00
goto Inicio
org 0x05
Inicio
bsf STATUS,RP0
bsf TRISA,0
bcf TRISB,0
clrf ANSEL
bcf STATUS,RP0

Led Apagado

bcf PORTB,Led

PRIMER PROGRAMA
Bucle
btfsc PORTA,Pulsador
SI

Pulsador
Presionado
?

goto Apagar
NO
Apagar
Led

Prender
Led

Apagar

bsf PORTB,Led

bcf PORTB,Led
goto Bucle

PRIMER PROGRAMA

RA0/AN0
RA1/AN1
VREF/VREFQ=4MHz
OUT/VREF+
0CKI/C2OUT

B0/INT/CCP1
B1/SDI/SDA
/SDO/RX/DT
RB3/CCP1
B4/SCK/SCL
B5/SS/TX/CK
1OSO/T1CKI
7/AN6/T1OSI

PRIMER PROGRAMA
U1
16
17
15
18
1
24
3

6
R1
7
10k
8
9
10
11
12
13

R2

R2

10k

10k

RA7/OSC1/CLKIN
RA0/AN0
RA6/OSC2/CLKOUT
RA1/AN1
RA2/AN2/CVREF/VREFRA5/MCLR RA3/AN3/C1OUT/VREF+
RA4/AN4/T0CKI/C2OUT

R3
330

PIC16F88

RB0/INT/CCP1
RB1/SDI/SDA
RB2/SDO/RX/DT
D1 RB3/CCP1
LED-GREEN
RB4/SCK/SCL
RB5/SS/TX/CK
RB6/AN5/T1OSO/T1CKI
RB7/AN6/T1OSI

17
18
1
2
3
6
7
8
9
10
11
12
13

R3
330

D1
LED-GREEN