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.