Practica 2 Microcontroladores

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 11

ESCUELA SUPERIOR POLITCNICA DEL

LITORAL
FIEC
Laboratorio de Microcontroladores
Prctica
Encendido de LEDs
Alumnos
Jos Daniel Plas
Maritza Chvez T

Paralelo: 8 Grupo: 2

Fecha de presentacin:
07 - 11 - 2014

2014 2 TRMINO

1. Enunciado del proyecto


Realizar un proyecto donde mediante el uso de retardos, un PIC16F887,
resistencias y varios LEDs se pueda encender y apagar los LEDs de
manera intermitente manipulando el tiempo de pausa
2. Diagrama de Bloques

Fuente

PIC16F887

LEDs

3. Diagrama de Flujo funcional del Programa principal y de las subrutinas.

Inicio

Counter=Counter-1

no
Counter=0

si
FIN

Seteo de Puertos

Inicializacin de variables

El nmero binario
01010101 se lo mueve a
PORTB

El nmero hFF se lo
mueve a counter

Se ejecuta el retardo

El nmero binario
10101010 se lo mueve a
PORTB

Number hFF is moved to


counter

Se ejecuta el retardo

4. Descripcin del algoritmo o estrategia utilizada.


a. Se selecciona oscilador interno LFINTOSC con frecuencia de
31Khz.
b. Se realiza el seteo de los puertos donde se selecciona el banco que
contiene TRISB, luego todos los pines del Puerto B se configuran
como salido y finalmente se escoge el banco que contiene el registro
PORTB
c. Se definen la variable con valor h00 que vamos a utilizar llamada
counter.
d. El nmero binario 01010101 es movido a PORTB
e. El nmero hFF es movido a la variable counter
f. Se ejecuta la subrutina RETARDO
g. Con la instruccin decfsz counter la variable "counter" es
decrementada en 1 y si llega a 0 salta la instruccin return que lo
manda a la siguiente instruccin del programa principal.
h. El nmero binario 10101010 es movido a PORTB
i. El nmero hFF es movida a la variable counter
j. Se ejecuta la subrutina RETARDO
k. Con la instruccin decfsz counter la variable "counter" es
decrementada en 1 y si llega a 0 salta la instruccin return que lo
manda a la siguiente instruccin del programa principal.
l. Y se vuelve a ejecutar desde d.
5. Listado del programa fuente en lenguaje ensamblador con comentarios en
las lneas de cdigo que considere fundamentales

;*********************************************************************
; ENCENDIDO Y APAGADO DE LEDS EN PORTB USANDO
RETARDOS
;*********************************************************************
;
;
;
;

NOMBRE:
FECHA:
VERSION:
PROGRAMADOR:

p2_ret.asm
31/05/2010
1.00
Carlos Valdivieso

;*********************************************************************
;
DESCRIPCION:
; Este es similar al p1_led.asm con la novedad que ahora no se usa el
; interruptor en RA0 sino que se crean retardos de tiempo con la
; instruccin "decfsz counter" (decremente la variable counter y salte
; si es cero). Dicha instruccin decrementa el file counter, previamente
; cargado con FFh hasta 00h. Cuando counter alcanza el valor de cero
; se salta la prxima instruccin y contina el programa, esto permite

; que se genere un retardo que depende del reloj y del valor cargado
en
; counter. El mismo retardo se usar para mantener los LEDs
; encendidos o apagados .
; En este ejercicio el reloj parte a una velocidad de 4MHz porque
; se usa un oscilador externo, para luego por software seleccionar
; el reloj interno a 32KHz mediante el registro OSCON.
;*********************************************************************
LIST
INCLUDE

p=16F887
P16F887.INC

;Tipo de microcontrolador
;Define los SFRs y bits del
;P16F887

__CONFIG _CONFIG1, _CP_OFF&_WDT_OFF&_XT_OSC


;Setea parmetros de
;configuracin
errorlevel

-302

;Deshabilita mensajes de
;advertencia por cambio
;bancos

;*********************************************************************
;DEFINICION DE VARIABLES
; las variables en el 16F887 pueden escribirse a partir de la
;posicin de memoria de datos 0x20
cblock 0x20
; Block of variables starts at address 20h
counter
; Variable "counter" at address 20h
endc
;************************************************************************
;INICIO DEL PROGRAMA
org 0x00
; Address of the first program instruction
banksel OSCCON
bcf
bcf
bcf
bsf

OSCCON,6
OSCCON,5
OSCCON,4
OSCCON,0

; Selects memory bank containing


; register OSCCON
; Selects internal oscillator LFINTOSC with
; the frequency of 31KHz
; Microcontroller uses internal oscillator

;SETEO DE PUERTOS
banksel
TRISB ; Selects bank containing register TRISB
clrf
TRISB ; All port B pins are configured as outputs
banksel
ANSEL
clrf
ANSEL

clrf
banksel

ANSELH
PORTB ; Selects bank containing register PORTB

;INICIALIZACION DE VARIABLES
clrf
PORTB
clrf
counter
;DESARROLLO DEL PROGRAMA
;se cargan patrones alternados de unos y ceros en el puerto B
;entre cada patrn de nmeros se llama a un retardo.
inicio
movlw
movwf
movlw
movwf
call

B'01010101' ; Binary number 01010101 is written to W


PORTB
; Number is moved to PORTB
h'FF'
; Number hFF is moved to W
counter
; Number is moved to variable "counter1"
retardo

movlw
movwf
movlw
movwf
call
goto

B'10101010' ; Binary number 10101010 is moved to W


PORTB
; Number is moved to PORTB
h'FF'
; Number hFF is moved to W
counter
; Number is moved to variable "counter1"
retardo
inicio

retardo
decfsz counter
; Variable "counter1" is decremented by 1
goto
retardo
; remains in loop retardo
return
end
; End of program;
************************************************************************

6. Copia impresa del circuito armado en PROTEUS para la simulacin


en el momento de su ejecucin

7. Conclusiones

Se pudo notar como es que funciona la instruccin DECFSZ, se


comprendi el uso de la directiva CBLOCK y
se entendi el
funcionamiento del sistema de reloj y su registro de control OSCON.

Con el uso del breakpoint y el stopwatch se realiz el conteo de los


ciclos de instruccin y los tiempos de reloj que demoraba en ejecutarla,
pero a su vez mediante un clculo rpido pudimos comprobar que el
resultado que daba era correcto

Al entrar al lazo que en nuestro programa se lo llam RETARDO, haca


uso de la instruccin DECFSZ y una variable a la cual llamamos
Counter la cual era inicializada con el valor de FF. Counter iba
decrementando de uno en uno hasta llagar a 0 y con esto se lograba el
parpadeo de los LEDs en el circuito simulado en PROTEUS un cierto
intervalo de tiempo.

8. Recomendaciones

Se recomienda hacer nuevamente el armado del circuito en PROTEUS y


no tomar el anterior ya que esto nos puede traer errores y no permitira
que se realice correctamente la simulacin

Se debe tomar en cuenta la frecuencia con la cual uno desea realizar el


proyecto y realizar la respectiva configuracin en PROTEUS porque si
se quema el PIC y este no tuvo la frecuencia con la que quisimos
trabajar no tendremos el resultados que queremos

Al momento de realizar el control sobre el tiempo en MPLAB que lleva


cada subrutina con el men STOPWATCH debemos recordar colocarlos
siempre en cero adems de colocar primero los breakpoints (iniciales y
finales) donde uno quiera medir el tiempo y luego la Flecha en el lugar
correcto el cual es en la lnea donde se llama a las respectiva subrutina
y est el comienzo del breakpoint.

ANEXO DE RESPUESTAS A PRCTICA 2


INTEGRANTE 1: Jos Daniel Plas
INTEGRANTE 2: Maritza Chvez T
PARALELO: 8
GRUPO: 2
1) Usando un breakpoint (cono breakpoint color rojo ) mida con el STOPWATCH
(Debugger->StopWatch) el tiempo que demora la subrutina de retardo

2) Qu es CBLOCK y cmo funciona?


La directiva CBLOCK te permite crear una lista de variables que se posicionaran
en memoria a partir de la direccin asignada a la primer variable (la direccin
despus del comando Cblock), incrementando en una.
Asigna un nombre a la direccin de memoria que se proporciona despus de la
instruccin CBLOCK con la finalidad de poder entender mejor el programa en
lenguaje esamblador.
cblock 0x20
;Bloque de variables empieza en la direccin 20h
counter1
; Variable "counter1" en direccin 20h\
endc
3) Revise la hoja de datos del P16F887 y explique el uso de OSCCON
Osccon: es el registro que se encarga de controlar la frecuencia entre ellas est:
La IRCF2, IRCF1 Y IRCF0 que sirve para la seleccin de frecuencia, bit de estado
de frecuencia como: HTS LTS.
4) Explique lo que significan cada uno de los siguientes modos de reloj LP,
XT, HS, EC y RC.
LP: modo de baja potencia y se utiliza para los cristales de cuarzos de baja
frecuencias.
XT: Se utiliza para los cristales de cuarzos de frecuencias intermedia hasta 8MHz.
HS: Se utiliza para los cristales de cuarzos de frecuencias altas mayores a 8MHz.
RC: Cuando el oscilador externo se configura a funcionar en modo RC, el pin
OSC1 debe estar conectado al circuito RC. La seal de frecuencia del oscilador
Rc dividida por 4 est disponible en el pin OSC2. Esta seal se puede utilizar para
la calibracin, sincronizacin o para otros propsitos.
EC: External clock with I/o on OSC2/CLKOUT.

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy