Está en la página 1de 53

UNIVERSIDAD PRIVADA ANTENOR ORREGO

MICROCONTROLADOR PIC DE
MICROCHIP

Ing. Lenin Llanos León


Familias de uC PIC
 Podemos dividirlos en tres grandes familias:

Gama Media
Gama Baja Gama Alta

PIC
PIC PIC 16F PIC PIC
DSPIC PIC32
10F 12F 18F 24F
Familias de uC PIC

 Cada una de estas familias ofrecen distintas prestaciones y


características, que permiten al usuario escoger el que más se
adapte a sus necesidades.

 En esta primera parte nos enfocaremos al estudio de


microcontroladores de gama media, en particular al PIC
16F88.
Familia 16F

16F877A
PIC
16F876A
16F628A

PIC
16F84A

16F88
PIC

PIC
PIC

1.75KB 3.5KB 14KB 14KB 7KB


18 pin 18 pin 28 pin 40 pin 18 pin
8 bit – Timer 8 bit – Timer 8 bit – Timer 8 bit – Timer 8 bit – Timer
16 bit – Timer 16 bit – Timer 16 bit – Timer 16 bit – Timer
USART USART USART USART
SPI – I2C SPI – I2C SPI – I2C
ADC ADC ADC
PIC 16F88

❑ 18 Pines
❑7 KB memoria de programa
❑368 bytes memoria RAM

16F88
❑256 bytes EEPROM

PIC
❑2 Comparadores
❑7 Canales A/D
❑1 Canal PWM
❑Comunicación Serial, SPI, I2C
PIC 16F88
 Una de las razones de que se seleccionó este PIC es que
podemos exportar fácilmente código existente de otras
referencias.

 Por ejemplo si tenemos código para el PIC 16F84A, lo


podremos utilizar con nuestro PIC 16F88

16F84A
16F88

PIC
PIC
Herramientas para Programación

 Entorno de Desarrollo, es decir el software que nos permitirá


escribir nuestro código fuente y traducirlo a lenguaje de
máquina para que nuestro microcontrolador lo entienda.
Lenguajes de Programación

Bajo Nivel Alto Nivel

❑ Assembler ❑ C – Basic – Otros


Lenguaje Assembler

VENTAJAS DESVENTAJAS

❑ Velocidad rápida en ejecución. ❑ Un poco difícil para el principiante.


❑ Ahorro en memoria de programa. ❑ Susceptible a errores.
❑ Pocas instrucciones. ❑ Ardua tarea para encontrar errores.
❑ Conocimiento a fondo del funcionamiento
del microcontrolador.
❑ Entorno de desarrollo gratuito (MPLAB)
Lenguaje de Alto Nivel

VENTAJAS DESVENTAJAS

❑ Es de fácil programación. ❑ No compatible entre marcas entre si.


❑ Recomendado para programas ❑ Mayor consuma de memoria.
extensos. ❑ Costo elevado.
❑ Ideal para hacer programas con
operaciones matemáticas complejas.
❑ Poseen una extensa colección de
librerías.
Hardware de Programación
Tipos de Programadores
Herramientas de Simulación
UNIVERSIDAD PRIVADA ANTENOR ORREGO

MICROCONTROLADOR PIC 16F88

Ing. Lenin Llanos León


Pines del PIC 16F88
Circuito de Alimentación
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 tamaño de 13 bits.
 Pila con 8 niveles de
profundidad.
 El vector de reset ocupa la
dirección 0000h y el vector
de interrupción 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
periféricos (STATUS, TRISA, PORTA), así como los
registro de Propósito General.
 La memoria EEPROM sirve para guardar datos de
forma no volátil.
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


0 0 BANCO 1
0 1 BANCO 2
1 0 BANCO 3
1 1 BANCO 4
Memoria de Datos
Tamaños de Memoria
REGISTRO ESTADO (STATUS)
 Es el registro más usado pues sus bits están
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 señalizadores de


ciertas condiciones en las operaciones lógico –
aritméticas.
 Z: Señalizador de cero. Se pone a 1 cuando el resultado es
cero.
 C: Acarreo – llevada del 8º bit. Se pone a uno
automáticamente cuando existe un acarreo en el bit de más
peso en las instrucciones de suma. También actúa como
señalizador 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
señalizador C, pero para el 4º bit.
REGISTRO ESTADO (STATUS)

 Los señalizadores PD# y TO#, son activos por nivel


bajo (#) y sirven para indicar la causa que ha
provocado la reinicialización del procesador.
 PD#: Se activa a 0 al ejecutarse la instrucción SLEEP. Se
pone a uno automáticamente tras la conexión de
alimentación o bien al ejecutarse la instrucción CLRWDT
 TO#: Se activa a nivel bajo al desbordarse el perro
guardián. Toma el valor 1 tras la conexión de
alimentación o al ejecutarse las instrucciones CLRWDT o
SLEEP.
REGISTRO ESTADO (STATUS)

 Finalmente los tres bits de más 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 más peso del
registro FSR para elegir el banco de RAM en el
direccionamiento indirecto.
RP0 RP1 BANCO
0 0 BANCO 1
0 1 BANCO 2
1 0 BANCO 3
1 1 BANCO 4
UNIVERSIDAD PRIVADA ANTENOR ORREGO

LENGUAJE ASSEMBLER

Ing. Lenin Llanos León


Lenguaje Assembler
 Lenguaje de Máquina
Lenguaje Assembler
 Instrucciones de Programa
REPERTORIO DE INSTRUCCIONES

 Está compuesto por 35 instrucciones que pueden ser


agrupadas en los siguientes grupos:
 Instrucciones de carga.
 Instrucciones aritméticas.

 Instrucciones lógicas.

 Instrucciones de bit.

 Instrucciones de salto.

 Instrucciones para manejo de subrutinas.

 Instrucciones especiales.
INSTRUCCIONES DE CARGA

NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS

CLRF f 00 → (f) Z

CLRW 00 → (w) Z

(f) → (destino)
MOVF f,d d=0 : destino = w Z
d=1 : destino = f

MOVLW k k → (W) Ninguno

MOVWF f (w) → (f) Ninguno


INSTRUCCIONES ARITMÉTICAS

NEMÓNICO DESCRIPCIÓN 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) Z

INCF f,d (f) + 1 → (destino) Z

SUBLW k k – (w) → (w) C, DC, Z

SUBWF f,d (f) – (w) → (destino) C, DC, Z


INSTRUCCIONES LÓGICAS

NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS

ANDLW k (w) and k → (w) Z

ANDWF f,d (w) and (f) → (destino) Z

COMF f,d (/f) → (destino) Z

IORLW k (w) or k → (w) Z

IORWF f,d (w) or (f) → (destino) Z


INSTRUCCIONES LÓGICAS

NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS

Rota (f) a la izquierda a


RLF f,d C
través del carry → (destino)
Rota (f) a la derecha a
RRF f,d C
través del carry → (destino)
Intercambia los niveles de
SWAPF f,d Ninguno
(f) → (destino)
XORLW k (w) xor k → (w) Z

XORWF f,d (w) xor (f) → (destino) Z


INSTRUCCIONES DE BIT

NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS

Pone a cero el bit ‘b’ del


BCF f,b Ninguno
registro f
Pone a uno el bit ‘b’ del
BSF f,b Ninguno
registro f
INSTRUCCIONES DE SALTO

NEMÓNICO DESCRIPCIÓN 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

(f) – 1 → (destino)
decfsz f,d Ninguno
y salta si es cero
(f) + 1 → (destino)
incfsz f,d Ninguno
y salta si es cero
goto k Salta a la dirección ‘k’ Ninguno
INSTRUCCIONES PARA MANEJO DE
SUBRUTINAS

NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS

CALL k Llamada a subrutina Ninguno


Retorno de una
RETFIE Ninguno
Interrupción
RETLW k Retorno con un literal en w Ninguno

RETURN Retorno de una subrutina Ninguno


INSTRUCCIONES ESPECIALES

NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS

CLRWDT Borra Timer del Watchdog /TO, /PD

NOP No operación Ninguno


Entra en modo bajo
SLEEP /TO, /PD
consumo
PRIMER PROGRAMA

 Encender un LED conectado en RB0 cada vez que el


interruptor este cerrado.
R2
10k
U1
16 17
RA7/OSC1/CLKIN RA0/AN0
15 18
RA6/OSC2/CLKOUT RA1/AN1
1
RA2/AN2/CVREF/VREF-
4 2
FREQ=4MHz RA5/MCLR RA3/AN3/C1OUT/VREF+
3
RA4/AN4/T0CKI/C2OUT
R3
R1 RB0/INT/CCP1
6
10k 7
RB1/SDI/SDA 330
8
RB2/SDO/RX/DT
RB3/CCP1
9 D1
10 LED-GREEN
RB4/SCK/SCL
11
RB5/SS/TX/CK
12
RB6/AN5/T1OSO/T1CKI
13
RB7/AN6/T1OSI
PIC16F88
PRIMER PROGRAMA
 Diagrama de Flujo para la solución:
INICIO

Definición de PIC y
Variables
SI Pulsador NO
Presionado?
Configuración de
Puertos
Prender Led Apagar Led

Led Apagado
PRIMER PROGRAMA

Definición 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
Configuración de
Puertos
org 0x00
goto Inicio
org 0x05
Led Apagado
Inicio
bsf STATUS,RP0
bsf TRISA,0 bcf PORTB,Led
bcf TRISB,0
clrf ANSEL
bcf STATUS,RP0
PRIMER PROGRAMA
Bucle
btfsc PORTA,Pulsador
goto Apagar
SI Pulsador
NO
Presionado?

Prender Led Apagar Led

Apagar
bsf PORTB,Led
bcf PORTB,Led
goto Bucle
PRIMER PROGRAMA
PRIMER PROGRAMA
R2 R2
10k 10k
U1
16
17 17
RA0/AN0 RA7/OSC1/CLKIN RA0/AN0
15
18 18
RA1/AN1 RA6/OSC2/CLKOUT RA1/AN1
1 1
VREF/VREF- RA2/AN2/CVREF/VREF-
Q=4MHz 24 RA5/MCLR RA3/AN3/C1OUT/VREF+
2
OUT/VREF+ 3
3 RA4/AN4/T0CKI/C2OUT
0CKI/C2OUT
R3 R3
B0/INT/CCP1
R1
6 RB0/INT/CCP1
6
7
10k 7 330
B1/SDI/SDA 330 RB1/SDI/SDA
8 8
SDO/RX/DT RB2/SDO/RX/DT
9 D1 RB3/CCP1 9 D1
RB3/CCP1 10
10 LED-GREEN
RB4/SCK/SCL LED-GREEN
B4/SCK/SCL 11
11 RB5/SS/TX/CK
B5/SS/TX/CK 12
12 RB6/AN5/T1OSO/T1CKI
1OSO/T1CKI 13
13 RB7/AN6/T1OSI
7/AN6/T1OSI
PIC16F88

También podría gustarte