laboratorio 1_2

24
LABORATORIO 1 DE SISTEMAS EMBEBIDOS: PROGRAMACIÓN DEL UC EN ASSEMBLER – PARTE 2 MSc. Roberto Furukawa Abril 2015

Upload: ryder-jhymsen

Post on 15-Jan-2016

34 views

Category:

Documents


0 download

DESCRIPTION

mt-136

TRANSCRIPT

Page 1: Laboratorio 1_2

LABORATORIO 1 DE SISTEMAS EMBEBIDOS:PROGRAMACIÓN DEL UC EN ASSEMBLER – PARTE 2

MSc. Roberto Furukawa

Abril 2015

Page 2: Laboratorio 1_2

LABORATORIOS

Laboratorio Tema a evaluar Fecha

Laboratorio 1 Programación en Assembler Semana 6

Laboratorio 2 Uso de periféricosUso de interrupciones

Semana 9

Laboratorio 3 Programación en C Semana 10

Laboratorio 4 Uso de periféricos (teclado y LCD)Uso de conversor AD y Comunicación serial

Semana 12

Proyecto final

Módulo de visiónMódulo de motores (desplazamiento)Módulo de motores (manipulador)

Semana 15

Page 3: Laboratorio 1_2

Laboratorio N°1

Fecha: 18 y 25 de Abril Instalación y uso del proteus 8 Instalación y uso del MPLab IDE 8.0 Desarrollo de guía MPLAB V8.00 Tutorial de simulación en Proteus

Page 4: Laboratorio 1_2

Alfredo Granados Ly

Primeros Programas

Este programa muestra las trasferencias entre los registros de la memoria de datos y el registro W.

Nota:

Después de un RESET el PC apunta a la dirección 0000H.

Hay que utilizar las direcciones implementadas de acuerdo a la familia del mC.

Page 5: Laboratorio 1_2

Alfredo Granados Ly

Primeros Programas

Este programa muestra el rango de direcciones que se puede acceder de manera indirecta.

Después de un RESET, el bit IRP del registro de ESTADO toma el valor de 0, el cual le permite acceder a los primeros 256 bytes de manera indirecta (00H - FFH).

Con IRP=1 accederemos mediante el FSR e INDF a los siguientes 256 bytes (100H - 1FFH).

Page 6: Laboratorio 1_2

Alfredo Granados Ly

Primeros Programas

Problema No3:

Realizar un programa que transfiera los datos de las direcciones 20H,21H,22H,23H a las direcciones: 120H,121H,122H,123H de manera indirecta.

Colocar 4 valores en la memoria de datos utilizando la ventana de Modify.

Page 7: Laboratorio 1_2

Alfredo Granados Ly

Manejo de los Puertos de Entrada/Salida

Este programa muestra como configurar a los pines del Puerto A para que trabajen como:

RA0 Input.

RA1 Input.

RA2 Salida.

RA3 Salida.

RA4 Input.

RA5 Salida.

Nota:

Configurar si las líneas del puerto A son analógicas o digitales en el registro ADCON1 del Banco 1.

Page 8: Laboratorio 1_2

Alfredo Granados Ly

AplicacionesEscriba un programa para generar una cuenta de 8 bits por el puerto B y que el pin de entrada RA0 del puerto A funcione como control de cuenta:

Si RA0 = 0 => cuenta ascendente.

Si RA0 = 1 => cuenta descendente.

Page 9: Laboratorio 1_2

Alfredo Granados Ly

AplicacionesLos PIC16F8X ejecutan una instrucción cada 1us ya que cada ciclo de instrucción consta de 4 pulsos de reloj y la frecuencia del cristal (4MHz) se divide internamente entre 4 (la segmentación le permite buscar la siguiente instrucción y ejecutar la instrucción en curso, por lo que se considera que el PIC ejecuta una instrucción en 1 ciclo de instrucción).

Page 10: Laboratorio 1_2

Alfredo Granados Ly

AplicacionesRealizar un programa para que el PIC16F84 se comporte como un decodificador para un display de 7 segmentos (ánodo común).

Page 11: Laboratorio 1_2

Alfredo Granados Ly

AplicacionesRealizar una rutina para realizar una multiplicación de 2 números de 8 bits c/u.

Solución:

Definimos nuestras variables de trabajo:

mulcnd: contiene el multiplicando.

mulprl: contiene el multiplicador.

H_byte: Byte alto del resultado.

L_byte: Byte bajo del resultado.

count: Contador para las operaciones sucesivas.

Page 12: Laboratorio 1_2

Alfredo Granados Ly

Construcción de Lazos

Page 13: Laboratorio 1_2

Laboratorio N°1

Primer Tutorial de programación básica en ASEMBLER (Prender un led, el "HOLA MUNDO DE LOS PIC") 17:38

https://www.youtube.com/watch?v=Z67GlpBZJYA

Segundo tutorial de programación de microcontroladores PIC en asembler (juego de luces basico) 11:30

https://www.youtube.com/watch?v=UFzIn7CuFwc

Tercer tutorial de programación de microcontroladores PIC en asembler (contador de 0 a 9) 24:48

https://www.youtube.com/watch?v=MtOqKkRQ4yw

Page 14: Laboratorio 1_2

EJERCICIO 1

Página 12

Page 15: Laboratorio 1_2

EJERCICIO 2

Página 35

Page 16: Laboratorio 1_2

Alfredo Granados Ly

Aplicaciones1.- Realizar una rutina para obtener una base de tiempo de 1 segundo.

2.- Realizar un programa para generar por el pin RB2 del PIC16F84 una señal de

1KHz (DC=50%).

3.- Realizar un programa para generar una secuencia de luces en el Puerto B.

4.- Realizar un programa para contar el número de vueltas por segundo que

realiza un motor de C.C.

Nota: No olvidar de borrar el flag de desordamiento del TIMER0.

Page 17: Laboratorio 1_2

Alfredo Granados Ly

AplicacionesRealizar una rutina para obtener una base de tiempo de 1 segundo.

Para la solución de este problema utilice los lazos anidados. Es muy probable que utilice hasta tres niveles (depende del número de cuentas a realizar por lazo).

Se recomienda realizar como primer paso un lazo con una cuenta de 256 y calcular el tiempo consumido por este.

A continuación anide este lazo en otro y calcule el tiempo.

Para comparar los cálculos realizados por Ud, utilice la ventana de StopWatch y para acelerar la velocidad de proceso utilice los puntos de ruptura en el programa (Break Point Setting).

Nota: Considere en todo momento que la frecuencia del Cristal es de 4MHz.

Page 18: Laboratorio 1_2

Alfredo Granados Ly

Generar por el pin RB2 del PIC16F84 una señal de 1KHz (DC=50%).

Para generar una señal de 1KHz utilizamos el TMR0 como temporizador. La señal de reloj se obtiene del Cristal:

Fclk = 4MHz/4=1MHz.

Tclk = 1us.

Sin el pre-escaler la cuenta máxima del TMR0 es de 255 y se llenará en 255us.

Dividiendo Fclk/2 el Tclk = 2us, con lo cual el TMR0 se llena en 512us.

Page 19: Laboratorio 1_2

Alfredo Granados Ly

Realizar un programa para generar una secuencia de luces en el Puerto B

Utilizaremos la instrucción de rotación:

RLF f,d : rota a la izquierda a través

del acarreo.

RRF f,d : rota a la derecha a través

del acarreo.

La rotación se realizará cada 200ms. Para ello se realizará una sub-rutina de tiempo (utilizando el TMR0).

Con el valor del Pre-escaler a “111” tenemos una división de la frecuencia de fxtal/256. Por lo tanto el TMR0 se llenará a los 65,5ms=256us*256cuentas.

Para llegar a los 200ms, el TMR0 debe desbordarse a los 50ms cuatro veces (para ello debe utilizar un contador).

Page 20: Laboratorio 1_2

Alfredo Granados Ly

Realizar un programa para contar el número de vueltas por segundo que realiza un motor de C.C

Solución:

De acuerdo al gráfico vemos que por cada vuelta que da el motor, se genera un pulso de reloj.

La idea es contar cuantos pulsos ingresan al TMR0 en 1 segundo (El TMR0 funcionará como contador). Utilizaremos le rutina que dura aprox. 1 segundo.

El número de vueltas se mostrará en el Puerto B como cuenta binaria.

Page 21: Laboratorio 1_2

Gracias por su atención

Page 22: Laboratorio 1_2

Eventos y Artículos

Page 23: Laboratorio 1_2

Tutoriales

PIC-MPLAB https://www.youtube.com/watch?v=FwUme53kl4M http://

centros.edu.xunta.es/iesperdouro/files/MPLAB-V8.00.pdf Arduino https://www.youtube.com/watch?v=eDD_lqotbFw http://www.luisllamas.es/tutoriales-de-arduino/ DSP http://www.ti.com/lit/ug/spru301c/spru301c.pdf https://www.youtube.com/watch?v=TFP_0G_im7s FPGA http://www.xilinx.com/training/fpga-tutorials.htm https://www.youtube.com/watch?v=Ob7B6x5g6tw

Page 24: Laboratorio 1_2

Simulador PIC y Proteus

https://www.youtube.com/watch?v=5xvxQvLghW0

http://www.marcombo.com/Descargas/9788426714954-COMPILADOR%20C%20CCS%20Y%20SIMULADOR%20PROTEUS%20PARA%20MICROCONTROLADORES%20PIC/descargar_primer_capitulo_libro_compiladorcccs_simulador_proteus.pdf