Laboratorio 1_2
-
Upload
ryder-jhymsen -
Category
Documents
-
view
34 -
download
0
description
Transcript of Laboratorio 1_2
![Page 1: Laboratorio 1_2](https://reader033.fdocuments.es/reader033/viewer/2022061614/55cf8edc550346703b966738/html5/thumbnails/1.jpg)
LABORATORIO 1 DE SISTEMAS EMBEBIDOS:PROGRAMACIÓN DEL UC EN ASSEMBLER – PARTE 2
MSc. Roberto Furukawa
Abril 2015
![Page 2: Laboratorio 1_2](https://reader033.fdocuments.es/reader033/viewer/2022061614/55cf8edc550346703b966738/html5/thumbnails/2.jpg)
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](https://reader033.fdocuments.es/reader033/viewer/2022061614/55cf8edc550346703b966738/html5/thumbnails/3.jpg)
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](https://reader033.fdocuments.es/reader033/viewer/2022061614/55cf8edc550346703b966738/html5/thumbnails/4.jpg)
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](https://reader033.fdocuments.es/reader033/viewer/2022061614/55cf8edc550346703b966738/html5/thumbnails/5.jpg)
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](https://reader033.fdocuments.es/reader033/viewer/2022061614/55cf8edc550346703b966738/html5/thumbnails/6.jpg)
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](https://reader033.fdocuments.es/reader033/viewer/2022061614/55cf8edc550346703b966738/html5/thumbnails/7.jpg)
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](https://reader033.fdocuments.es/reader033/viewer/2022061614/55cf8edc550346703b966738/html5/thumbnails/8.jpg)
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](https://reader033.fdocuments.es/reader033/viewer/2022061614/55cf8edc550346703b966738/html5/thumbnails/9.jpg)
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](https://reader033.fdocuments.es/reader033/viewer/2022061614/55cf8edc550346703b966738/html5/thumbnails/10.jpg)
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](https://reader033.fdocuments.es/reader033/viewer/2022061614/55cf8edc550346703b966738/html5/thumbnails/11.jpg)
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](https://reader033.fdocuments.es/reader033/viewer/2022061614/55cf8edc550346703b966738/html5/thumbnails/12.jpg)
Alfredo Granados Ly
Construcción de Lazos
![Page 13: Laboratorio 1_2](https://reader033.fdocuments.es/reader033/viewer/2022061614/55cf8edc550346703b966738/html5/thumbnails/13.jpg)
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](https://reader033.fdocuments.es/reader033/viewer/2022061614/55cf8edc550346703b966738/html5/thumbnails/14.jpg)
EJERCICIO 1
Página 12
![Page 15: Laboratorio 1_2](https://reader033.fdocuments.es/reader033/viewer/2022061614/55cf8edc550346703b966738/html5/thumbnails/15.jpg)
EJERCICIO 2
Página 35
![Page 16: Laboratorio 1_2](https://reader033.fdocuments.es/reader033/viewer/2022061614/55cf8edc550346703b966738/html5/thumbnails/16.jpg)
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](https://reader033.fdocuments.es/reader033/viewer/2022061614/55cf8edc550346703b966738/html5/thumbnails/17.jpg)
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](https://reader033.fdocuments.es/reader033/viewer/2022061614/55cf8edc550346703b966738/html5/thumbnails/18.jpg)
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](https://reader033.fdocuments.es/reader033/viewer/2022061614/55cf8edc550346703b966738/html5/thumbnails/19.jpg)
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](https://reader033.fdocuments.es/reader033/viewer/2022061614/55cf8edc550346703b966738/html5/thumbnails/20.jpg)
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](https://reader033.fdocuments.es/reader033/viewer/2022061614/55cf8edc550346703b966738/html5/thumbnails/21.jpg)
Gracias por su atención
![Page 22: Laboratorio 1_2](https://reader033.fdocuments.es/reader033/viewer/2022061614/55cf8edc550346703b966738/html5/thumbnails/22.jpg)
Eventos y Artículos
![Page 23: Laboratorio 1_2](https://reader033.fdocuments.es/reader033/viewer/2022061614/55cf8edc550346703b966738/html5/thumbnails/23.jpg)
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](https://reader033.fdocuments.es/reader033/viewer/2022061614/55cf8edc550346703b966738/html5/thumbnails/24.jpg)
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