49
Práctica 1 Microcontroladores y DSPs Benemérita Universidad Autónoma de Puebla Facultad de ciencias de la electrónica Licenciatura Ingeniería Mecatrónica Práctica 1 Equipo 8 Microcontroladores PIC18 Profesor: M. C. Nicolás Quiroz Hernández Materia: Microcontroladores y DSPs Alumnos: Celia Rosario Guerrero Sergio Iván López Villegas Dana Hernández de la Luz Fitzgerald Odín Morales Vargas Septiembre 2015

Sumador cuatro bits en ensamblador

Embed Size (px)

DESCRIPTION

sumador de cuatro bits realizado en el PIC18F4550 haciendo uso de codigo ensamblador y la interfaz de MPLAB

Citation preview

Page 1: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Benemérita Universidad Autónoma de

Puebla

Facultad de ciencias de la electrónica

Licenciatura Ingeniería Mecatrónica

Práctica 1

Equipo 8

Microcontroladores PIC18

Profesor: M. C. Nicolás Quiroz Hernández

Materia: Microcontroladores y DSPs

Alumnos:

Celia Rosario Guerrero

Sergio Iván López Villegas

Dana Hernández de la Luz

Fitzgerald Odín Morales Vargas

Septiembre 2015

Page 2: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Objetivos

Identificar las características de los microcontroladores (uC) PIC de la familia

PIC18.

Identificar los pines del PIC18F4550.

Analizar el funcionamiento de los puertos, oscilador y reset.

Conectar el circuito de reset (MClr) del PIC.

Identificar el software MPLAB, para realizar un programa en lenguaje ensamblador.

Realizar un programa en lenguaje ensamblador para sumar dos datos de 4 bits

(Puerto B) y mostrar el resultado en 5 leds conectados en puerto D.

Realizar el algoritmo del punto anterior.

Realizar la simulación del código en ensamblador.

Simular en el software Proteus el circuito completo.

Programar el microcontrolador (Pickit2, ICD2, Master-Pro, etc.).

Probar el programa para obtener los resultados.

Introducción

Como primera práctica se dio la tarea de hacer un sumador de 4 bits, en un

microcontrolador, específicamente el PIC18F4550. Las entradas provienen de un Deep

switch, es decir los números a ser sumados y las salidas que representan la suma, serán

leds que encenderán cuando su valor sea uno y están apagadas en cero.

Por lo que lo primero que se tuvo que hacer fue conocer de forma general la estructura

interna del microcontrolador seleccionado, sus pines, osciladores y memoria.

Llevar a cabo el sumador será posible mediante el desarrollo de un código en lenguaje

ensamblador, desarrollado en el software MPLAB v8.92, el cual luego de comprobarlo en

el mismo programa, se obtendrá su archivo hexadecimal, para implementarlo en Proteus

para así tener una simulación más completa ya a nivel componentes, en cuestión de la

conexión del micro con los leds y sus resistencias y así poder llevarlo después al modelo

real. Ahí el PIC y el resto de los elementos serán conectados en una tablilla de

experimentos, para después pasar a probar cada uno de los casos posibles, es decir cada

suma de 4 bits, con dos entradas, sea posible. Una vez que obtuvimos los resultados que

de cada suma mediante el encendido y apagado de leds, el sumador estará listo.

Marco teórico

Código Ensamblador

Es un código mnemónico de fácil comprensión para representar las secuencias de 0 y 1.

Escribir un programa en mnemónicos es más sencillo, porque son una versión abreviada de

la operación que realiza una instrucción. Además de que es una alternativa de escribir

instrucciones en código binario también conocido como código máquina.

Page 3: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Microcontroladores

Un microcontrolador es aquel que integra en un chip de microprocesador con memoria,

interfaces de entrada/salida y otros dispositivos periféricos como temporizadores. Un

microcontrolador común tiene terminales para la conexión externa de entradas salidas,

alimentación eléctrica y señales de reloj y de control.

PIC18F4550

1. Características generales Características del puerto USB:

Modos de manejo de potencia:

• Corrientes modo inactivo Abajo para corriente típica de 5.8 uA

• Corrientes Modo Sleep hasta 0,1 uA Típica

• Timer1 Oscilador: 1.1 uA Típica, 32 kHz, 2V

• Temporizador de vigilancia: 2,1 uA Típica

• Dos velocidades Oscilador de puesta en marcha

Características generales del oscilador:

• Cuatro modos de cristal, incluyendo alta precisión PLL para USB

• Dos modos de reloj externos, de hasta 48 MHz

• Bloque Interno del Oscilador:

- 8 frecuencias seleccionables por el usuario, desde 31 kHz a 8 MHz

- Usuario-ajustable para compensar Frequency Drift

• Oscilador Secundario usando Timer1 a 32kHz

• Opciones de doble oscilador permiten microcontroladores y Módulo USB para funcionar

a diferentes velocidades de reloj

• Fail-Safe Monitor de reloj:

- Permite la parada segura si alguna reloj se detiene

Periféricos Destacados:

• De alta corriente para Lavabo / Fuente: 25 mA / 25 mA

• Tres interrupciones externas

•Cuatro módulos de tiempo(Timer 0 a Timer 3)

• Hasta 2 Capture/ Compare/ PWM módulos (CCP):

- Capture es de 16 bits, máx. Resolución 5.2 ns (TCY / 16)

- Compare es de 16 bits, máx. Resolución 83.3 ns (TCY)

- Salida PWM: resolución PWM es de 1 a 10 bits

• Mejorada Capture / Compare / PWM (PECC) módulos:

Page 4: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

- Múltiples modos de salida

- Polaridad seleccionable

- Deadtime programable

- Auto-apagado y reinicio automático

- Soporte de bus LIN

• Módulo Master Synchronous Serial Port (MSSP)

Apoyado a 3 hilos SPI (los 4 modos) y I2C ™

Modos: maestro y esclavo

• 10 bits, hasta 13 canales de analógico a digital

(A / D) módulos con programable tiempo de adquisición

• Comparadores analógicos duales con multiplexación de entrada.

Características especiales del microcontrolador:

• C Arquitectura de Compilador Optimizada con opcional Set de instrucción extendida

• 100.000 Borrar / Ciclo Enhanced Write flash

Memoria de programa típico

• 1.000.000 Borrar / escritura de EEPROM Ciclo de Datos de memoria típica

• Flash / Datos EEPROM de retención:> 40 años

• Auto-programable bajo control de software

• Los niveles de prioridad para Interrupciones

• 8 x 8Single-Ciclo Hardware Multiplicador

• Extended Watchdog Timer (WDT):

- Período programable de 41 ms a 131s

• Programable Protección Código

• Single-Supply 5V en circuito de serie

Programación ™ (ICSP ™) a través de dos pines

• Rango de voltaje de funcionamiento ancha (2.0V a 5.5V)

Múltiples opciones de oscilador y características

Todos los dispositivos en la familia PIC18 F2455/2550/4455/4550 ofrece doce opciones de

oscilador diferentes, lo que permite a los usuarios tener una amplia gama de opciones en el

desarrollo de aplicaciones de hardware. Éstas incluyen:

•Cuatro modos de Cristal utilizando cristales o resonadores de cerámica.

• Cuatro modos de reloj externos, ofreciendo la opción de usar dos pasadores (entrada del

oscilador y un divisor por 4, salida de reloj) o un pin (entrada del oscilador, con el segundo

pasador reasignado como general de E / S).

• Un bloque oscilador interno que proporciona un reloj de 8 MHz (± 2% de precisión) y una

INTRC fuente (aproximadamente 31 kHz, estable a temperatura y VDD), así como una

gama de 6 frecuencias de reloj seleccionables por el usuario, entre 125 kHz a 4 MHz, para

un total de 8

Page 5: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Frecuencias de reloj. Esta opción libera un pasador de oscilador para utilizar como un

propósito general adicional de E / S.

• Fase Lock Loop (PLL) multiplicador de frecuencia, disponible tanto a la alta velocidad de

Cristal y modos de oscilador externo, lo que permite una amplia gama de velocidades de

reloj de 4 MHz a 48 MHz.

• La operación asíncrona reloj dual, permite que el módulo USB se ejecute desde una alta

frecuencia del oscilador mientras que el resto del microcontrolador tiene una velocidad de

reloj de un oscilador de baja potencia interna. Además de su disponibilidad como fuente de

reloj, el bloque interno de oscilador proporciona una fuente de referencia estable que da

características de la familia adicionales para operaciones pesadas:

• Fail-Safe Monitor de reloj: Esta opción constantemente supervisa la principal fuente de

reloj contra una señal de referencia proporcionada por el interior oscilador. Si se produce

un error de reloj, el controlador es conmutado al bloque oscilador interno, lo que permite

para la operación de baja velocidad continua o una caja fuerte apagado de la aplicación.

• Dos velocidades de puesta en marcha: Esta opción permite al oscilador interno servir

como fuente de reloj de Power-on Reset, o activar del modo Sleep, hasta que la fuente de

reloj primaria esté disponible.

Tabla 1.1 Características de los dispositivos de la familia F18

Page 6: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Figura 1.1 Diagrama a bloques del PIC18F4550 de 40 pines

Page 7: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Nombre del Pin

Número de Pin Tipo de Pin

Tipo de Buffer

Descripción

PDIP QFN TQFP

MCLR/VPP/RE3 MCLR VPP RE3

1

18

18

I P I

ST ST

Borrado (entrada) o tensión de programación (entrada). Borrado (Reinicio) de entrada. Este pin es un activo de baja Restablecer el dispositivo. Entrada de tensión de programación. entrada digital

OSC1/CLKI OSC1 CLKI

13

32

30

I I

Analógico Analógico

Oscilador de cristal o de entrada de reloj externo. Oscilador de entrada de cristal o de entrada de la fuente de reloj externa. Entrada de la fuente de reloj externa. Siempre asociado con Función OSC1 pin. (Ver pin OSC2 / CLKO.)

OSC2/CLKO/RA6 OSC2 CLKO RA6

14 33 31 O O I/O

TTL

Oscilador de cristal o de salida de reloj. Salida de oscilador de cristal. Se conecta a cristal o resonador en modo oscilador de cristal. En el modo RC, el pin OSC2 salidas CLKO que tiene un cuarto la frecuencia de OSC1 y denota la instrucción tasa de ciclo. Propósito general de I / O pin.

Tabla 1.2 Descripción de los pines I/O del PIC18F4550 de 40 pines

Page 8: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Nombre del Pin Número de Pin Tipo de Pin

Tipo de Buffer

Descripción

PDIP QFN TQFP

RA0/AN0 RA0 AN0 RA1/AN1 RA1 AN1 RA2/AN2/VREF-/ CVREF RA2 AN2 VREF- CVREF RA3/AN3/VREF+ RA3 AN3 VREF+ RA4/T0CKI/C1OUT/ RCV RA4 T0CKI C1OUT RCV RA5/AN4/SS/ HLVDIN/C2OUT RA5 AN4 SS HLVDIN C2OUT RA6

2 3 4 5 6 —

19 20 21 22 23 —

19 20 21 22 23 —

I/O I I/O I I/O I I O I/O I I I/O I O I I/O I I I O

TTL Analógico TTL Analógico TTL Analógico Analógico Analógico TTL Analógico Analógico ST ST — TTL TTL Analógico TTL Analógico — —

El Puerto A es bidireccional I/O Digital I/O Entrada Analógica 0 Digital I/O Entrada Analógica 1 I/ O digital. Entrada analógica 2. Una referencia de tensión / D (bajo) de entrada. Salida de referencia comparador analógico EI/O digital. Entrada analógica 3. Una referencia de tensión / D (alto) de entrada I / O digital. Timer0 entrada de reloj externo. Comparador 1 salida. Entrada VN transceptor USB externa. I/O digital. Entrada analógica 4. SPI esclavo de selección de entrada. Alta / baja tensión Detección de entrada. Comparador 2 de salida. Ver el OSC2 / CLKO / pin RA6

Tabla 1.2 Descripción de los pines I/O del PIC18F4550 de 40 pines (continuación)

Page 9: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Nombre del Pin Número de Pin Tipo de Pin

Tipo de Buffer

Descripción

PDIP QFN TQFP

RB0/AN12/INT0/ FLT0/SDI/SDA RB0 AN12 INT0 FLT0 SDI SDA RB1/AN10/INT1/SCK/ SCL RB1 AN10 INT1 SCK SCL RB2/AN8/INT2/VMO RB2 AN8 INT2 VMO RB3/AN9/CCP2/VPO RB3 AN9 CCP2(1) VPO RB4/AN11/KBI0/CSSPP RB4 AN11 KBI0 CSSPP RB5/KBI1/PGM RB5 KBI1

33 3 34 35 36 37 38

9 20 10 11 12 14 15

8 20 9 10 11 14 15

I/O I I I I I/O I/O I I I/O I/O I/O I I O I/O I I/O O I/O I I O I/O I

TTL Analógico ST ST ST ST TTL Analógico ST ST ST TTL Analógico ST — TTL Analógico TTL — TTL Analógico TTL — TTL TTL

PORT B es un puerto I / O bidireccional. I/O digital. Entrada analógica 12. Interrupción externa 0. Entrada mejorada PWM Falla (módulo ECCP1). Datos SPI en. I ,Datos I 2C ™ / S. I/O digital. Entrada analógica 10. Interrupción externa 1. Entrada síncrona en serie de reloj / salida para el modo SPI/salida para el modo I2C. I/O digital. Entrada analógica 8. Interrupción externa 2. Salida VMO transceptor USB externa. I/O digital. Entrada analógica 9. Captura 2 de entrada / salida de comparación 2 / salida PWM2. Salida de VPO transceptor USB externa I/O digital. Entrada analógica 11. Interrumpir-al-cambiar pin. SPP selección de chip de salida de control. I/Odigital. Interrumpir-al-cambiar pin.

Tabla 1.2 Descripción de los pines I/O del PIC18F4550 de 40 pines (continuación)

Page 10: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

PGM RB6/KBI2/PGC RB6 KBI2 PGC RB7/KBI3/PGD RB7 KBI3 PGD RC0/T1OSO/T13CKI RC0 T1OSO T13CKI RC1/T1OSI/CCP2/ UOE RC1 T1OSI CCP2(2) UOE RC2/CCP1/P1A RC2 CCP1 P1A RC4/D-/VM RC4 D- VM RC5/D+/VP RC5 D+ VP

39 40 15 16 17 23 24

16 17 34 35 36 42 43

16 17 32 35 36 42 43

I/O I/O I I/O I/O I I/O I/O O I I/O I I/O O I/O I/O O I I/O I I I/O I

ST TTL TTL ST TTL TTL ST ST — ST ST CMOS ST — ST ST TTL TTL — TTL TTL — TTL

Baja tensión ICSP ™ I/O digital. Interrumpir-al-cambiar pin. Depurador en circuito y programación ICSP pin de reloj EI/O digital. Interrumpir-al-cambiar pin. Depurador en circuito y el pin de datos de programación ICSP PORTC es un puerto I / O bidireccional. I/O digital. Salida del oscilador Timer1. Timer1 / Temporizador 3 entrada de reloj externo. I/O digital. Entrada del oscilador Timer1. Captura 2 de entrada / salida de comparación 2 / salida PWM2. Salida OE transceptor USB externa I/O digital. Captura 1 entrada / 1 salida de comparación / salida PWM1. Salida PWM CCP1, canal A. Entrada digital. Línea diferencial negativo USB (entrada / salida). Transmisor-receptor USB externo de entrada VM. Entrada digital. Diferencial USB plus línea (entrada / salida). Entrada VP transceptor USB externa.

Page 11: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

RC6/TX/CK RC6 TX CK RC7/RX/DT/SDO RC7 RX DT SDO RD0/SPP0 RD0 SPP0 RD1/SPP1 RD1 SPP1 RD2/SPP2 RD2 SPP2 RD3/SPP3 RD3 SPP3 RD4/SPP4 RD4 SPP4 RD5/SPP5/P1B RD5 SPP5 P1B

25 26 19 20 21 22 27 28 29

44 1 38 39 40 41 2 3 4

44 1 38 39 40 41 2 3 4

I/O O I/O I/O I I/O O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O O

ST — ST ST ST ST — ST TTL ST TTL ST TTL ST TTL ST TTL ST TTL —

I/O digital. EUSART de transmisión asíncrona. EUSART reloj síncrono (ver RX / DT). I/O digital. Asíncrono EUSART reciben. EUSART datos síncronos (ver TX / CK). Datos de salida SPI . PORTD es un puerto bidireccional Puerto Paralelo (SPP). Estos pines tienen buffers de entrada TTL cuando se habilita el módulo de SPP. I/O digital. Streaming datos del puerto paralelo I/O digital. Streaming datos del puerto paralelo I/O digital. Streaming datos del puerto paralelo I/O digital. Streaming datos del puerto paralelo I/O digital. Streaming datos del puerto paralelo I/O digital. Streaming datos del puerto paralelo. Salida PWM CCP1 mejorado, el canal B.

Page 12: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

RD6/SPP6/P1C RD6 SPP6 P1C RD7/SPP7/P17 RD7 SPP7 P1D

30

5

5

I/O I/O O I/O I/O O

ST TTL — ST TTL —

I/O digital. Streaming datos del puerto paralelo. Salida PWM CCP1 mejorado, el canal C. I/O digital. Streaming datos del puerto paralelo. Salida PWM CCP1 mejorado, el canal C.

TTL = entrada compatibles

TTL CMOS = CMOS De entrada o salida:

ST = Schmitt Trigger con niveles CMOS

I = entrada

O = Salida P = Potencia

Nota 1: Asignación alternativo para CCP2 cuando se borra poco Configuración CCP2MX.

2: Asignación por defecto para CCP2 cuando se establece bits de configuración CCP2MX.

3: Estos pines son No Conectar a menos que se establece el bit de configuración ICPRT.

Para NC / ICPORTS, el pasador es n

Conecte menos ICPRT se establece y el bit de configuración DEBUG se borra.

Page 13: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Nombre del Pin Número de Pin Tipo de Pin

Tipo de Buffer

Descripción

PDIP QFN TQFP

RE0/AN5/CK1SPP RE0 AN5 CK1SPP RE1/AN6/CK2SPP RE1 AN6 CK2SPP RE2/AN7/OESPP RE2 AN7 OESPP

8 9 10

25 26 27

25 26 27

I/O I O I/O I O I/O I O

ST Analógico — ST Analógico — ST Analógico RE3

PORTE es un puerto bidireccional, de entrada/salida. I/O digital. Entrada analógica 5. SPP reloj 1 salida. I/O digital. Entrada analógica 6. SPP reloj 2 salida. I/O digital. Entrada analógica . Salida SPP salida de habilitación

RE3 —

— —

Ver el pin MCLR/VPP/RE3

VSS 12,31 6,30, 31

5,29 P —

Referencia de tierra para la lógica y pines I / O.

VDD 11, 32 7,8, 28, 29

7, 28 P —

Alimentación positiva para la lógica y pines I / O.

VUSB 18 37 37 P — 3.3V salida del regulador de tensión USB interna y positiva de suministro para el transceptor USB

NC/ICCK/ICPGC(3) ICCK ICPGC

— 12 12 I/O I/O

ST ST

Sin conexión o dedicada CIE / Reloj puerto ICSP ™. Depurador en circuito reloj. Reloj programador ICSP

NC/ICDT/ICPGD(3) ICDT ICPGD

— — 13 I/O I/O

ST ST

Sin conexión o dedicada reloj puerto CIE / ICSP. In-Circuit datos depurador. Datos de programación ICSP.

NC/ICRST/ICVPP(3) ICRST ICVPP

— — 33 I P

— —

Sin conexíon o dedicada puerto Restablecer CIE / ICSP. Borrado (Reinicio) de entrada. Entrada de tensión de programación.

NC/ICPORTS(3) ICPORTS

34

P

Sin Connect o emulación de dispositivos de 28 pines. Activar emulación de dispositivos

Tabla 1.2 Descripción de los pines I/O del PIC18F4550 de 40 pines (continuación)

Page 14: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

de 28 pines cuando se conecta a VSS.

NC — 13 — — — No conectado

TTL = entrada compatibles

TTL CMOS = CMOS De entrada o salida:

ST = Schmitt Trigger con niveles CMOS

I = entrada

O = Salida P = Potencia

Nota 1: Asignación alternativo para CCP2 cuando se borra poco Configuración CCP2MX.

2: Asignación por defecto para CCP2 cuando se establece bits de configuración CCP2MX.

3: Estos pines son No Conectar a menos que se establece el bit de configuración ICPRT.

Para NC / ICPORTS, el pasador es n

Conecte menos ICPRT se establece y el bit de configuración DEBUG se borra.

1.2 Oscilador Control del oscilador

El funcionamiento del oscilador en el PIC18F4550 que se controla a través de dos registros

de configuración y dos registros de control. Los registros de configuración, CONFIG1L y

CONFIG1H, selecciona el modo de oscilador y opciones prescaler / postscaler USB.

Como los bits de configuración, éstos se establecen cuando el dispositivo está programado

y se deja en esa configuración hasta que el dispositivo se reprograma.

El registro OSCCON (Registro 2-2) selecciona el Modo Activo del reloj; que se utiliza

principalmente en el control de reloj, el cambio en los modos logra potencia.

El registro OSCTUNE (Register 2-1) se utiliza para recortar la fuente de frecuencia

INTRC, así como seleccionar el fuente de reloj de baja frecuencia que impulsa varias

características especiales.

Tipos de oscilador

El PIC18F455 ofrece doce modos de oscilador distintos. Cuatro de ellos implican el uso de

dos tipos de oscilador a la vez.

Los usuarios pueden programar el FOSC3: Configuración FOSC0

bits para seleccionar uno de estos modos:

1. XT Crystal / Resonador

2. HS de alta velocidad Crystal / Resonador

3. HSPLL alta velocidad Crystal / Resonador con PLL Activado

4. CE reloj externo con FOSC / 4 de salida

5. ECIO reloj externo con E / S en RA6

6. ECPLL reloj externo con PLL Activado y FOSC / 4 de salida en RA6

7. ECPIO reloj externo con PLL Habilitado,

E / S en RA6

Page 15: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

8. INTHS oscilador interno utilizado como fuente de reloj, SA Oscilador utilizado como

Fuente de Reloj USB

9. intio oscilador interno utilizado como fuente de reloj, EC Oscilador utilizado como USB

fuente de reloj, E / S digital en RA6

10. INTCKO oscilador interno utilizado como fuente de reloj, EC Oscilador utilizado como

USB fuente de reloj, FOSC / 4 de salida en RA6.

Figura 1.1.1 Diagrama del Clock

Page 16: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

1.3 Organización de la memoria

Figura 1.3.1 Mapa de la memoria

Page 17: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Access Bank

Un Banco de Access, permite a los usuarios acceder a un bloque de memoria asignado sin

especificar un BSR. El Banco de acceso consta de los primeros 96 bytes de memoria (00h-

5Fh) en el banco 0 y los últimos 160 bytes de memoria (60h-FFh) en el Bloque 15. La

mitad inferior es conocida como la "memoria RAM de acceso" y se compone de GPRS. El

medio superior es donde se asignan SFRs del dispositivo. Estas dos áreas se asignan de

forma contigua en el Banco del acceso y se puede abordar de forma lineal por una dirección

de 8 bits (Figura 5-5). El Banco de acceso es utilizado por instrucciones PIC18 centrales

que incluyen el bit de acceso RAM (la 'a' parámetro la instrucción). Cuando 'a' es igual a '1',

la instrucción utiliza el BSR y la dirección de 8 bits incluido en el código de operación para

la dirección de memoria de datos. Cuando 'a' es '0', Sin embargo, la instrucción se ve

obligada a utilizar el mapa de direcciones del Banco de Acceso; el valor actual de la BSR

es ignorado por completo. Para las direcciones de 8 bits de 60h y anteriormente, esto

significa que los usuarios pueden evaluar y operar en SFRs más eficiente. La memoria

RAM de acceso a continuación 60h es un buen lugar para los valores de datos que pueda

necesitar el usuario para acceder rápidamente, como computacional inmediata resultados o

variables del programa comunes. Acceso RAM también permite contexto eficiente código

más rápido y más el ahorro y el cambio de variables. El mapeo del Banco El acceso es

ligeramente diferente cuando el conjunto de instrucciones extendido esté activado (XINST

Bit de configuración = 1). Esto se discute en más detalle en la Sección 5.6.3 "Mapeando el

Banco de acceso en Indexado Literal modo Offset.

Figura 1.3.2 Uso del registro del banco de memoria (direccionamiento

directo)

Page 18: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

1.4 Resumen de operaciones El PIC18F4550 incorpora un conjunto estándar de 75 instrucciones básicas PIC18, así

como un conjunto extendido de ocho nuevas instrucciones para el optimización de código

que es recursivo o que utiliza una pila de software.

Tabla 1.4.1 Set de Operaciones

Page 19: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

2. Manejo de MPLAB

Barra de Herramientas y Menús:

MPLAB contiene 4 barras de herramientas personalizables según la tarea que se está

realizando. La primera es la barra USER, que por defecto es la única que utilizo, bueno tu

elegirás la que más te agrade. La segunda es la barra EDIT, todo lo relacionado a la Edición

de texto. La tercera es la barra DEBUG, con todo lo necesario para simular nuestro

programa, depurarlo, etc. Finalmente la barra PROJECT, todo lo referido al proyecto que

estás realizando.

Menú de Archivo (file menú):

NEW: Crea un nuevo archivo con extensión .asm

OPEN: Abre un archivo que puede ser .asm/.obj/.c/.err/.h/.lkr/.map/.hex/.lst

VIEW: Abre un archivo en modo solo lectura. y lo más común.

SAVE (Guardar), SAVE AS (guardar como), SAVE ALL (guardar todo).

CLOSE (cerrar un proyecto), CLOSE ALL (cerrar todos los proyectos abiertos).

PRINT (Imprime), y PRINT SETUP te permite configurar el modo de

impresión, EXIT cierra MPLAB, y finalmente los 5 últimos archivos utilizados.

Menú del Proyecto (Project Menú):

Como MPLAB te permite trabajar con varios archivos y todos los elementos y herramientas

a la vez es bueno crear un proyecto y tener en él todo lo necesario para realizar tu tarea,

como ser; codificar, ensamblar, simular, etc. Este menú contiene

NEW PROJECT: Abre un cuadro de diálogo para crear un nuevo proyecto y en él

todo lo que necesites para tenerlo más a tu alcance.

OPEN PROJECT: Abrir un proyecto

CLOSE PROJECT: Cerrar un proyecto

SAVE PROYECT: Guardar Proyecto

EDIT PROJECT: Similar a New Project, pero referido a un proyecto ya abierto, al

que se le puede agregar nodos, librerías y la forma en que desarrollaras el proyecto

en cuestión.

MAKE PROJECT: Ensambla; crea archivo .HEX la cual compara con el archivo

.asm del que ensamblo. Si este tiene una fecha más reciente que el archivo .HEX

asociado, debido digamos a una actualización del código, entonces ensamblará

nuevamente el proyecto. En caso de que la fecha sea anterior al archivo .HEX

Page 20: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

generado (es decir, archivo .ASM más viejo que el .HEX) este no hará

nada.(extraído textualmente de no recuerdo donde, pero igual, yo jamás lo utilicé)

BUILD ALL: Le importa nada la fecha y ensambla todo.

BUIL NODE: Ensamblar un nodo que hayamos asociado al proyecto.

INSTALL LANGUAGE TOOL: Es para configurar el lenguaje a utilizar, que en

nuestro caso es el ASM de Microchip.

Menú de edición (Menú Edit):

UNDO: Deshacer, y en ese orden Cortar, Copiar y Pegar

SELECT ALL: Seleccionar todo SELECT WORD: Selecciona la palabra sobre la

que está el cursor.

DELETE LINE: Borra la línea sobre la que está el cursor.

DELETE EOL: Borra desde donde está el cursor hasta el final de la línea.

GOTO LINE: Abre un cuadro de diálogo para saltar a una determinada línea (Line

to go to), te indica además la cantidad total de líneas (Last Line) y la línea en que

tienes el cursor (Current Line), es algo así como el "Ir a" de Word.

FIND: Es para buscar algún texto dentro de nuestro código.

REPLACE: Es para reemplazar un texto o una pequeña frase.

REPEAT FIND: Es para repetir la búsqueda si es que hay otra palabra o frase

igual. REPEAT REPLACE: Es para repetir el reemplazo.

TEMPLATE: Pues como todos los templates, para crear unos archivos

personalizados o plantillas, y así no estas reescribiendo todo un código nuevamente.

TEXT: También tiene sus opciones; Transpose intercambia los caracteres que

están a ambos lados del cursor; Upper case cambiar a mayúsculas; Lower case

cambiar a minúsculas; Indent mantiene la tabulación de la línea anterior; Un-

Indent lo opuesto.

Menú de depuración (Menú Debug):

RUN: Inicia la simulación. Verás la parte inferior de la ventana toda pintada de

amarillo (señal de que la simulación está en proceso). Útil cuando colocas algunos

puntos de ruptura (breakpoints) para detener la ejecución y así no estar esperando

que se ejecute todo aquello que sabes que está correcto.

RESET: Resetea el micro y te ubica en la primer línea donde comenzará la

simulación (en ese caso verás toda la línea pintada de negro y las letras blancas)

"listo para comenzar la simulación"

HALT: Detiene la ejecución.

HALT TRACE: Detiene un traceo que se esté haciendo.

Page 21: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

ANIMATE: Es igual que RUN pero lo hace más lento, para que vayas siguiendo la

ejecución, mostrándote línea por línea todo lo que se está ejecutando.

STEP: Paso, es decir, un paso por cada vez que lo presionas (en la barra de

herramientas verás dos huellas de zapato, pues es eso, paso a paso). Simplemente

ejecuta una a una cada línea de código por cada vez que lo presionas.

STEP OVER: Igual que el anterior pero con un pequeño detalle, cada vez que se

encuentre con un call lo ejecuta de modo tan rápido que ni tú te enteras de que ya

pasó, es decir, utilízalo si no quieres perder tiempo con el call.

UPDATE ALL REGISTER: Actualiza el valor de todos los registros.

CHANGE PROGRAM COUNTER: Cambia el valor del PC y te ubica en la

etiqueta del código a la que quieres ir.

EXECUTE AN OPCODE: Te permite ejecutar un código cualquiera desde

cualquier sitio en el que te encuentras, por ejemplo ingresas un goto inicio y hacia

allí irá. independiente a la secuencia del programa.

CONDITIONAL BREAK: Para ejecutar un breakpoint en forma condicional, Por

ejemplo por que cambió el valor de un registro, o porque quieres ver que paso hasta

ese punto.

SIMULATOR STIMULUS: Desde aquí se puede simular que le envías señales al micro

por uno de sus pines, este submenú tiene 4 opciones

ASYNCHRONOUS STIMULUS: Te abrirá un pequeño diálogo con 12 botones

como el que se muestra en la imagen, vendrían a ser como interruptores, nota que al

primero le asigné el pin RA0 (pin 17) y entre paréntesis una T (de TOGGLE).

Imagen 1.1 Ventana Estímulos Asincronos

Si presionas con el botón derecho del mouse en uno de esos botones veras las opciones de

configuración de estos estímulos desde donde los puedes configurar.

Page 22: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Imagen 2.2 Ventana de configuración de los estímulos asíncronos

o ASSIGN PIN: Muestra los pines del puerto para que selecciones aquel que

llevará un estímulo.

o PULSE: un pulso

o LOW: Le asigna un nivel bajo permanente

o HIGH: Lo contrario, nivel alto permanente

o TOGGLE: Cada vez que lo pulses cambiará de nivel de alto a bajo o de bajo

a alto.

PIN STIMULUS: Es para cuando creas un archivo de texto con extensión .sti,

desde aquí lo cargas o lo quitas, se trata de utilizar un archivo que creaste con esta

extensión y que contiene los estímulos ya asignados para cada uno de los pines.

CLOCK STIMULUS: Desde aquí puedes enviarle pulsos de reloj a un

determinado pin, indicando el tiempo que se mantendrá en nivel alto y el tiempo en

nivel bajo, tipo (timer).

Imagen 2.2 Ventana de estímulos registrados

Tiene un par de opciones como ser; Guardarlo como un archivo .sti, Abrir alguno si es que

ya lo tienes creado, Aplicar los cambios, agregarle más impulsos a otros pines, y el help

(por supuesto, la ayuda).

Page 23: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

REGISTER STIMULUS: Es exactamente lo mismo que con los pines, solo que

lleva la extensión .reg y sirve para que en una determinada posición del programa se

cargue un registro con el valor que tú le quieras dar.

CENTER DEBUG LOCATION: Te ubica en la posición en la cual el programa se está

ejecutando, se suele utilizar cuando detienes la ejecución, empiezas a husmear por otro lado

y luego no sabes dónde andabas, pues bueno ahí te lo acercas.

BREAK SETTINGS: Te muestra un diálogo para que le des nombre a los breakpoints y

luego desde aquí los habilitas, los quitas, los guardas etc.

TRIGGER IN/OUT SETTINGS: Son para los emuladores MPLABICE y PICMASTER,

aquellos que dijimos no tener.

CLEAR ALL POINT: Limpia todos los breakpoints y los tracepoints que pusiste a lo

largo del programa.

CLEAR PROGRAM MEMORY: Borra la memoria de programa

SYSTEM RESET: Eso mismo, Resetea el sistema.

POWER ON RESET: Para el caso en que se podría producir un reset en el micro, y así

saber que ocurre o que es lo que hace el micro si esto llegara a ocurrir.

Imagen 2.3 Ventana del power on reset

Sólo le das a Power On Reset y habrás ocasionado un reset en el pin4 del micro (MCLR),

luego le das a "cancel" y continuas con la ejecución para saber qué hace el PIC, y así

asegurarte de que todo está en orden.

Opciones del Menú:

Page 24: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

DEVELOPMENT MODE: Es donde hacemos las configuraciones del proyecto.

WINDOW SETUP: Puedes personalizar totalmente la forma en que vas a trabajar, tus

preferencias, luego Guardarlas (Save Setup), Cargarlas (Load Setup) si es que ya las tienes

guardadas, o utilizar una por defecto (Default Configuration).

CURRENT EDITOR MODES: Es para que personalices el modo de edición.

Imagen 2.4 Ventana de modos de edición actuales

RESET EDITOR MODES: Elimina los cambios que hiciste anteriormente

ENVIRONMENT SETUP: Para una personalización completa.

PROGRAMMER OPTIONS: Son las opciones para configurar el programador que

utilizarás con MPLAB.

Vista del Menú:

El más importante de todos, ya que desde aquí nos veremos cara a cara con cada uno de los

bits de los registros del micro, el estado que tienen y como se modifican, claro que lo verás

cuando lo ejecutes en modo "step" (paso a paso) o "Animate" (de forma animada)...

PROGRAM MEMORY: Verás la memoria de programa, y así sabes cuánto

espacio te queda disponible.

STACK: La pila.

Page 25: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Imagen 2.5: Ventana de la pila.

FILE REGISTER: Para que veas como se modifican los registros mientras el

programa se está ejecutando, solo en modo "Step" o "Animate".

Imagen 2.6: Ventana de registros de programa.

SPECIAL FUNCTION REGISTER: Los Registros de funciones especiales con

nombre y todo, trisa/b, porta/b, status, w, se puede ver como se modifican los bits

de entrada y salida de los puertos. Sólo los verás cuando lo ejecutas en modo "Step"

o "Animate".

Page 26: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Imagen 2.7: Ventana de funciones especiales de registro

SHOW SIMBOL LIST: Todos los símbolos utilizados y su respectiva ubicación

(dirección de registro), aquello que definimos al iniciar nuestro código, como

"status equ 0x03".

Imagen 2.8: Ventana de símbolos

STOPWATCH: Para ver el tiempo en milisegundos, consumidos por el micro que

cuenta con un XT de 4 MHz.

Imagen 2.9: Ventana del cronógrafo

PROJECT: Los datos del proyecto que se está realizando

WATCH WINDOW: Para crear una ventana de registros.

MODIFY: Para modificar los valores de algún registro determinado.

Page 27: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Uso del simulador en MPLAB IDE

El software MPLAB IDE incluye un programa simulador, que es una herramienta de

desarrollo sumamente útil, no solamente para localizar errores (bugs) en un programa, sino

también como auxiliar didáctico.

El usuario puede seguir paso por paso cada instrucción del programa, insertar breakpoints,

generar entradas digitales en cualquier bit de los puertos y observar el contenido de

cualquier registro interno del microcontrolador, así como de las localidades de la memoria

de datos y de código, la EEPROM y el Stack.

El simulador cuenta también con la opción de una función “Stopwatch” para medir

tiempos de ejecución.

Para saber más sobre cómo realizar la simulación consulte el video tutorial disponible en

https://youtu.be/VkH4344lgIE

3. Procedimiento y desarrollo de la práctica

Cálculos, diseño y codificación del algoritmo La tarea primordial de esta práctica es realizar un programa en lenguaje ensamblador para

sumar dos datos de 4 bits (Puerto B) y mostrar el resultado en 5 leds conectados en puerto

D.

Después de analizar los requerimientos del problema, se elaboró el diagrama de flujo de

este algoritmo el cual se muestra en la siguiente figura:

Algoritmo 1. Inicio

2. Determinar el PIC con el que se trabaja

3. Configurarlo

4. Utilizar un oscilador externo de 4 MHz

5. Establecer los puertos de E/S

6. Definir las variables (operandos)

7. Leer los datos de entrada (Puerto B)

8. Asignar los datos de entrada a las variables

9. Sumar los datos

10. Mostrarlos a través del puerto D

11. Volver a leer datos en B y repetir el ciclo completo

12. Fin

Page 28: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Imagen 3.1 Diagrama de flujo y algoritmo asociados al problema

Este algoritmo se codificó en el software MPLAB; dicho código se muestra a continuación.

Los cuadros en naranja son la descripción genera de cada parte del código. A manera de

comentarios dentro del mismo código se explican el porqué de cada línea en el código.

Page 29: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Page 30: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Ensamble y simulación en MPLAB IDE 8.92 Una vez codificado el algoritmo en MPLAB IDE se ensambló para obtener el archivo

.HEX que es el que se carga al PIC.

Se selecciona Make en el menú proyect

Page 31: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Imagen 3.2 Ensamble del código

Si el código no tiene errores de sintaxis aparece la siguiente ventana donde nos dice

que se ha ensamblado correctamente; esto no necesariamente significa que el

programa realizará lo que queremos pero nos indica que a menos está bien escrito.

Imagen 3.3 Ensamble exitoso

Automáticamente en la carpeta donde esté guardado el proyecto aparecerá el

archivo .HEX

Page 32: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Imagen 3.4 Creación automática del archivo .HEX

Luego se simula el código en el mismo software. Esta simulación nos sirve para probar el

manejo de puertos.

En el menú VIEW habilitamos la vista de File registers, Special function registers

y Program memory que mientras se ejecuta el programa nos permitirán ver cómo

se modifican los registros, como se modifican los bits de entrada y salida de los

puertos saber cuánto espacio te queda disponible en la memoria.

Page 33: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Imagen 3.5 Prerrequisitos para la simulación 1

En el menú Debugger se habilita la vista de Stopwatch que, como vimos en el

marco teórico, nos permite visualizar el tiempo en milisegundo consumidos por el

micro que cuenta con un XT de 4 MHz.

Page 34: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Imagen 3.6 Prerrequisitos para la simulación 2

En ese mismo menú seleccionar ANIMATE QUE empieza a correr el programa

Imagen3.7 Ventana para iniciar animación

Las siguientes imágenes muestran parte de la simulación realizada. El archivo completo

para realizar y visualizar la simulación se encuentra en la carpeta de archivos de código.

Page 35: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Imagen 3.8.1 Animación del programa. Imagen 1

Page 36: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Imagen 3.8.2 Animación del programa

Page 37: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Imagen 3.9 Animación del programa

Page 38: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Simulación en Proteus 8.0 La simulación del circuito completo se realizó en el software Proteus 8.0. Professional Para

esta primera práctica, el circuito para simular en Proteus y armar físicamente en la tablilla

de experimentos no se diseñó por el equipo sino que fue proporcionado por el profesor.

Implementación Una vez simulado el código en ensamblador se prosiguió a armar el circuito físicamente en

la placa de experimentos a fin de comprobar la operación del microcontrolador y

experimentar las diferencias contra los resultados obtenidos por el software de simulación.

Los dispositivos deberán de conectarse como se muestra en la figura siguiente

Imagen 3.10 Circuito con PIC18F4550

Imagen 3.11 Pines del microcontrolador PIC18F4550

Posteriormente agregamos el archivo .HEX al microcontrolador

Page 39: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Imagen 3.12 Ventana para agregar archivo .HEX

La ventana que mostramos aparece al realizar doble clic sobre el microcontrolador buscar y

elegir nuestro archivo .HEX. Finalmente hacemos clic en OK, que nos regresa a la pantalla

donde tenemos el circuito electrónico.

Imagen 3.13 Barra de herramienta de simulación

Page 40: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Una vez cargado el archivo .HEX en la barra de herramienta de simulación (Ilustración 2)

hacemos clic en el botón de PLAY para que empiece la simulación. Y nos aparecerá el

circuito como se muestra a continuación

Imagen 3.14 Circuito en simulación

Cabe mencionar que tanto en el circuito conectado en la protoboard como el realizado en la

simulación tuvieron algunos detalles. Es decir los leds se activaban en cero y se apagaban

en uno.

A continuación se muestra el circuito ya armado en la tablilla de experimentos.

Imagen 3.15 Circuito con PIC18F4550 armado en tablilla de experimentos.

Resultados

Pasos previos. Una vez que ya se ha verificado el funcionamiento y lógica del circuito por medio de la

simulación se procedió al armado y experimentación del circuito en la tablilla de

experimentos.

Page 41: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

- Como primer paso para llegar a los resultados deseados se procedió a programar el

PIC con ayuda de un programador proporcionado por el maestro. La programación

se realizó a través del programa MPLAB.

- Una vez programado el PIC, se realizó el armado del circuito ya mencionado, el

circuito se armó en una tablilla de experimentos que fue alimentada con una fuente

de alimentación regulada proporcionada por el laboratorio.

Imagen 3.16 Circuito armado en la tablilla de experimentos.

Pruebas y errores. Para explicar la fase de pruebas debemos aclarar el orden del circuito:

Imagen 3.17 Asignación del bit menos significativo. E/S

Algunos problemas que surgieron al probar el circuito fueron solo técnicos, ya que el

dipswitch dio problemas por falso contacto, pero eso se arregló buscando un dipswitch

apropiado.

Ahora, se hicieron pruebas con diferentes combinaciones entre la suma de 1 y 15:

Tabla 3.1 Suma, ilustración de los resultados obtenidos en la tablilla de experimentos y esquema en Proteus

Suma Resultado

1+0

Hacia arriba es 0 y

hacia abajo es 1

Bit menos significativo

Page 42: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

1+1

3+1

Page 43: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

3+2

3+3

3+4

Page 44: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

4+4

5+4

Page 45: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

5+5

6+5

6+6

Page 46: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

7+6

7+7

Page 47: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

7+8

Como se puede apreciar, los resultados experimentales concuerdan con los de la simulación

perfectamente, en ninguna combinación hubo discrepancias ni ninguna desviación

importante, además como extra también se probó la combinación de 8+8 y probamos que

solo prende el bit de acarreo como indicaba la simulación. Imagen 3.18 a) y b)

Imagen 3.18 a) Resultado de la suma de 8+8 en la tablilla de experimentos.

Page 48: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

Imagen 3.18 b) Resultado de la suma de 8+8 en la simulación

4. Conclusiones Guiados por el profesor, se llevó a cabo el código en lenguaje ensamblador de un

sumador de cuatro bits donde tuvimos que identificar los pines del microcontrolador

involucrado, así como en algunos casos su correspondiente configuración , para así

poder mandar a llamarlos y llevar las entradas a la memoria, por ejemplo. Por lo que

tuvimos que elegir que oscilador utilizar según nuestras necesidades, ya que el PIC nos

permite escoger uno de sus osciladores internos o también alguno externo. Para poder

llevar acabo el código empleamos el software MPLAB, el cual no todos estábamos

familiarizados con él, lo que nos permitió no solo conocerlo sino comenzar a manejarlo.

En adición, contamos con la ayuda del profesor al mostrarnos las herramientas y el

proceso para simular nuestro contador, ya con el código elaborado, en el programa

Proteus, lo cual nos permitió no solo saber en primera instancia mediante la

compilación exitosa del MPLAB que nuestro código funcionaba, sino también mediante

la simulación, vista con los componentes del circuito, en la que veríamos si funcionaba

como queríamos.

Una vez hecho esto, mediante un archivo .HEX fue programado el PIC18F4550 y dado

que el codigo fue proporcionado por el profesor y fue verificado, no hubo problemas

para después solo mandarlo a programar, finalmente se armó el circuito implementando

el PIC y los resultados fueron completamente exitosos. Esta práctica cumplió con su

objetivo que era enseñarnos lo básico para programar un PIC, desarrollando su código

para después pasarlo a lenguaje ensamblador e implementarlo en un software de

simulación, una vez obtenidos los resultados esperados, poder llevarlo al físico.

Page 49: Sumador cuatro bits en ensamblador

Práctica 1

Microcontroladores y DSPs

5. Bibliografía y referencias

[1] Simulación en MPLAB. Disponible en

https://www.youtube.com/watch?v=VkH4344lgIE. Consultado el 19 de septiembre de

2015

[2]MANUAL PIC 18F4550. Disponible en

http://rapidshare.com/files/268879576/PIC18F4550.pdf

Universidad de Valencia. Consultado el 10 de septiembre de 2015

[3]MPLAB IDE Quick Start Guide - Microchip

Disponible en http://ww1.microchip.com/downloads/en/DeviceDoc/51281d.pdf

Consultado el 19 de septiembre de 2015

[4] William Bolton. (2012.) Mecatrónica. (4a edición).México D.F: Alfaomega.