microcontroladores y lenguaje ensamblador

64
UNIVERSIDAD PRIVADA ANTENOR ORREGO MICROCONTROLADOR PIC DE MICROCHIP INGENIERÍA ELECTRÓNICA Ing. Lenin Llanos León

Upload: jorge-mendoza

Post on 22-Dec-2015

53 views

Category:

Documents


10 download

DESCRIPTION

la siguiente presentación muestra los conceptos básicos de un microcontrolador y los primeros pasos en programación en lenguaje ensamblador

TRANSCRIPT

Page 1: microcontroladores y lenguaje ensamblador

UNIVERSIDAD PRIVADA ANTENOR ORREGO

MICROCONTROLADOR PIC DE MICROCHIP

INGENIERÍA ELECTRÓNICA

Ing. Lenin Llanos León

Page 2: microcontroladores y lenguaje ensamblador

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

Page 3: microcontroladores y lenguaje ensamblador

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.

Page 4: microcontroladores y lenguaje ensamblador

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

Page 5: microcontroladores y lenguaje ensamblador

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

Page 6: microcontroladores y lenguaje ensamblador

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

Page 7: microcontroladores y lenguaje ensamblador

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.

Page 8: microcontroladores y lenguaje ensamblador

Lenguajes de Programación

Bajo Nivel

Assembler

Alto Nivel

C – Basic – Otros

Page 9: microcontroladores y lenguaje ensamblador

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.

Page 10: microcontroladores y lenguaje ensamblador

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.

Page 11: microcontroladores y lenguaje ensamblador

Hardware de Programación

Page 12: microcontroladores y lenguaje ensamblador

Tipos de Programadores

Page 13: microcontroladores y lenguaje ensamblador

Herramientas de Simulación

Page 14: microcontroladores y lenguaje ensamblador

UNIVERSIDAD PRIVADA ANTENOR ORREGO

MICROCONTROLADOR PIC 16F88

INGENIERÍA ELECTRÓNICA

Ing. Lenin Llanos León

Page 15: microcontroladores y lenguaje ensamblador

Pines del PIC 16F88

Page 16: microcontroladores y lenguaje ensamblador

Circuito de Alimentación

Page 17: microcontroladores y lenguaje ensamblador

Circuito de Reloj

Page 18: microcontroladores y lenguaje ensamblador

Circuito de Reloj con Cristal

Page 19: microcontroladores y lenguaje ensamblador

Circuito de Reloj con Resonador

Page 20: microcontroladores y lenguaje ensamblador

Circuito de Reloj RC

Page 21: microcontroladores y lenguaje ensamblador

Circuito de Reloj Interno

Page 22: microcontroladores y lenguaje ensamblador

Pin Reset (Master Clear)

Page 23: microcontroladores y lenguaje ensamblador

Circuito de Reset

Page 24: microcontroladores y lenguaje ensamblador

Arquitectura Interna

Procesador Central Memoria de Programa Memoria de Datos

Page 25: microcontroladores y lenguaje ensamblador

Memoria de Programa

Page 26: microcontroladores y lenguaje ensamblador

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.

Page 27: microcontroladores y lenguaje ensamblador

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.

Page 28: microcontroladores y lenguaje ensamblador

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

Page 29: microcontroladores y lenguaje ensamblador

Memoria de Datos

Page 30: microcontroladores y lenguaje ensamblador

Tamaños de Memoria

Page 31: microcontroladores y lenguaje ensamblador

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)

Page 32: microcontroladores y lenguaje ensamblador

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.

Page 33: microcontroladores y lenguaje ensamblador

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.

Page 34: microcontroladores y lenguaje ensamblador

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

Page 35: microcontroladores y lenguaje ensamblador

UNIVERSIDAD PRIVADA ANTENOR ORREGO

LENGUAJE ASSEMBLER

INGENIERÍA ELECTRÓNICA

Ing. Lenin Llanos León

Page 36: microcontroladores y lenguaje ensamblador

Lenguaje Assembler

Lenguaje de Máquina

Page 37: microcontroladores y lenguaje ensamblador

Lenguaje Assembler

Instrucciones de Programa

Page 38: microcontroladores y lenguaje ensamblador

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.

Page 39: microcontroladores y lenguaje ensamblador

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

Page 40: microcontroladores y lenguaje ensamblador

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

Page 41: microcontroladores y lenguaje ensamblador

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

Page 42: microcontroladores y lenguaje ensamblador

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

Page 43: microcontroladores y lenguaje ensamblador

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

Page 44: microcontroladores y lenguaje ensamblador

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

Page 45: microcontroladores y lenguaje ensamblador

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

Page 46: microcontroladores y lenguaje ensamblador

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

Page 47: microcontroladores y lenguaje ensamblador

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

Page 48: microcontroladores y lenguaje ensamblador

PRIMER PROGRAMA

1º Crear un fichero *asm, donde irá nuestro código.

Page 49: microcontroladores y lenguaje ensamblador

PRIMER PROGRAMA

2º Guardamos nuestro fichero *asm, donde irá nuestro código.

Page 50: microcontroladores y lenguaje ensamblador

PRIMER PROGRAMA

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

Page 51: microcontroladores y lenguaje ensamblador

PRIMER PROGRAMA

4º Click en Siguiente.

Page 52: microcontroladores y lenguaje ensamblador

PRIMER PROGRAMA

5º Seleccionamos el Pic con el que deseamos trabajar.

Page 53: microcontroladores y lenguaje ensamblador

PRIMER PROGRAMA

6º Seleccionamos el Lenguaje de Programación y Compilador (MPASM).

Page 54: microcontroladores y lenguaje ensamblador

PRIMER PROGRAMA

7º Seleccionamos el Nombre y la Ubicación donde se guardará nuestro proyecto.

Page 55: microcontroladores y lenguaje ensamblador

PRIMER PROGRAMA

8º Agregamos nuestro Archivo (*asm) a nuestro proyecto y siguiente.

Page 56: microcontroladores y lenguaje ensamblador

PRIMER PROGRAMA

9º Click Finalizar.

Page 57: microcontroladores y lenguaje ensamblador

PRIMER PROGRAMA

10º Nos aparecerá la siguiente ventana.

Page 58: microcontroladores y lenguaje ensamblador

PRIMER PROGRAMA

11º Doble Click en nuestro archivo *asm y abrirá la ventana para escribir nuestro código.

Page 59: microcontroladores y lenguaje ensamblador

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

Page 60: microcontroladores y lenguaje ensamblador

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

Page 61: microcontroladores y lenguaje ensamblador

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

Page 62: microcontroladores y lenguaje ensamblador

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

Page 63: microcontroladores y lenguaje ensamblador

PRIMER PROGRAMA

Page 64: microcontroladores y lenguaje ensamblador

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