Date post: | 22-Dec-2015 |
Category: |
Documents |
Upload: | jorge-mendoza |
View: | 49 times |
Download: | 10 times |
UNIVERSIDAD PRIVADA ANTENOR ORREGO
MICROCONTROLADOR PIC DE MICROCHIP
INGENIERÍA ELECTRÓNICA
Ing. Lenin Llanos León
Familias de uC PIC
Podemos dividirlos en tres grandes familias:
PIC 10F
Gama Baja
PIC 12F
PIC 16F
Gama Media
PIC 18F
Gama Alta
PIC 24F
DSPIC PIC32
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 16FP
IC
16F
84A
1.75KB18 pin
8 bit – Timer
PIC
16
F62
8A
3.5KB18 pin
8 bit – Timer16 bit – Timer
USART
PIC
16
F87
6A14KB28 pin
8 bit – Timer16 bit – Timer
USARTSPI – I2C
ADCP
IC
16F
877A
14KB40 pin
8 bit – Timer16 bit – Timer
USARTSPI – I2C
ADC
PIC
16
F88
7KB18 pin
8 bit – Timer16 bit – Timer
USARTSPI – I2C
ADC
PIC 16F88
18 Pines
7 KB memoria de
programa
368 bytes memoria RAM
256 bytes EEPROM
2 Comparadores
7 Canales A/D
1 Canal PWM
Comunicación Serial, SPI,
I2CP
IC
16F
88
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
PIC
16
F88
PIC
16
F84
A
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
Assembler
Alto Nivel
C – Basic – Otros
Lenguaje Assembler
VENTAJAS DESVENTAJAS
Velocidad rápida en ejecución.
Ahorro en memoria de
programa.
Pocas instrucciones.
Conocimiento a fondo del
funcionamiento del
microcontrolador.
Entorno de desarrollo gratuito
(MPLAB)
Un poco difícil para el
principiante.
Susceptible a errores.
Ardua tarea para encontrar
errores.
Lenguaje de Alto Nivel
VENTAJAS DESVENTAJAS
Es de fácil programación.
Recomendado para programas
extensos.
Ideal para hacer programas con
operaciones matemáticas
complejas.
Poseen una extensa colección
de librerías.
No compatible entre marcas
entre si.
Mayor consuma de memoria.
Costo elevado.
Hardware de Programación
Tipos de Programadores
Herramientas de Simulación
UNIVERSIDAD PRIVADA ANTENOR ORREGO
MICROCONTROLADOR PIC 16F88
INGENIERÍA ELECTRÓNICA
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
INGENIERÍA ELECTRÓNICA
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
MOVF f,d(f) → (destino)
d=0 : destino = wd=1 : destino = f
Z
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
RLF f,dRota (f) a la izquierda a
través del carry → (destino) C
RRF f,dRota (f) a la derecha a
través del carry → (destino) C
SWAPF f,dIntercambia los niveles de
(f) → (destino) Ninguno
XORLW k (w) xor k → (w) Z
XORWF f,d (w) xor (f) → (destino) Z
INSTRUCCIONES DE BIT
NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS
BCF f,bPone a cero el bit ‘b’ del
registro f Ninguno
BSF f,bPone a uno el bit ‘b’ del
registro f Ninguno
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
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 dirección ‘k’ Ninguno
INSTRUCCIONES PARA MANEJO DE SUBRUTINAS
NEMÓNICO DESCRIPCIÓN FLAGS AFECTADOS
CALL k Llamada a subrutina Ninguno
RETFIERetorno de una
Interrupción Ninguno
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
SLEEPEntra en modo bajo
consumo /TO, /PD
PRIMER PROGRAMA
Encender un LED conectado en RB0 cada vez que el interruptor este cerrado.
RA7/OSC1/CLKIN16
RB0/INT/CCP16
RB1/SDI/SDA7
RB2/SDO/RX/DT8
RB3/CCP19
RB4/SCK/SCL10
RB5/SS/TX/CK11
RB6/AN5/T1OSO/T1CKI12
RB7/AN6/T1OSI13
RA0/AN017
RA1/AN118
RA2/AN2/CVREF/VREF-1
RA3/AN3/C1OUT/VREF+2
RA4/AN4/T0CKI/C2OUT3
RA6/OSC2/CLKOUT15
RA5/MCLR4
U1
PIC16F88
FREQ=4MHz
R110k
R2
10k
R3
330
D1LED-GREEN
PRIMER PROGRAMA
1º Crear un fichero *asm, donde irá nuestro código.
PRIMER PROGRAMA
2º Guardamos nuestro fichero *asm, donde irá nuestro código.
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 Programación y Compilador (MPASM).
PRIMER PROGRAMA
7º Seleccionamos el Nombre y la Ubicación 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 código.
PRIMER PROGRAMA
Diagrama de Flujo para la solución:
SINO
INICIO
Definición de PIC y Variables
Configuración de Puertos
Led Apagado
Pulsador Presionado
?
Prender Led
Apagar Led
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
org 0x00goto Inicioorg 0x05
Inicio bsf STATUS,RP0bsf TRISA,0bcf TRISB,0 clrf ANSELbcf STATUS,RP0
Configuración de Puertos
bcf PORTB,Led
Led Apagado
PRIMER PROGRAMA
Pulsador Presionado
?
Prender Led
Apagar Led
btfsc PORTA,Pulsador
Bucle
SI NO
bsf PORTB,Led
goto Apagar
Apagar
bcf PORTB,Led
goto Bucle
PRIMER PROGRAMA
PRIMER PROGRAMA
RA7/OSC1/CLKIN16
RB0/INT/CCP16
RB1/SDI/SDA7
RB2/SDO/RX/DT8
RB3/CCP19
RB4/SCK/SCL10
RB5/SS/TX/CK11
RB6/AN5/T1OSO/T1CKI12
RB7/AN6/T1OSI13
RA0/AN017
RA1/AN118
RA2/AN2/CVREF/VREF-1
RA3/AN3/C1OUT/VREF+2
RA4/AN4/T0CKI/C2OUT3
RA6/OSC2/CLKOUT15
RA5/MCLR4
U1
PIC16F88
FREQ=4MHz
R110k
R2
10k
R3
330
D1LED-GREEN
RA7/OSC1/CLKIN16
RB0/INT/CCP16
RB1/SDI/SDA7
RB2/SDO/RX/DT8
RB3/CCP19
RB4/SCK/SCL10
RB5/SS/TX/CK11
RB6/AN5/T1OSO/T1CKI12
RB7/AN6/T1OSI13
RA0/AN017
RA1/AN118
RA2/AN2/CVREF/VREF-1
RA3/AN3/C1OUT/VREF+2
RA4/AN4/T0CKI/C2OUT3
RA6/OSC2/CLKOUT15
RA5/MCLR4
U1
PIC16F88
FREQ=4MHz
R110k
R2
10k
R3
330
D1LED-GREEN