Continuamos mostrando ejemplos de como usar las Sentencias de Control. En este caso, se tratará las de repetición-condicional.
Como estudio previo, es indispensable ver: SC. Bucle do-while Dato2 > Dato1, donde se explica la sentencia de control que se usará en este ejemplo de aplicación en detalle.
Para la realización de este programa, se ha utilizado el microcontrolador PIC10F222, se podría haber usado cualquiera, cuyas características expuestas por Microchip, se pueden observar en la siguiente dirección: PIC10F222.El programa es el siguiente:
;**********************************************************************
; AqueronteBlog@gmail.com *
; *
; Este archivo es propiedad intelectual del blog Aqueronte, *
; cuya dirección web, es la siguiente: *
; *
; http://unbarquero.blogspot.com/ *
; *
; Se permite cualquier modificación del archivo siempre y cuando *
; se mantenga la autoría del mismo. *
; *
; El autor no se responsabiliza de las consecuencias que pueda *
; ocasionar éste código debido a un uso inadecuado del mismo. *
;**********************************************************************
; *
; Filename: Ej7.asm *
; Date: 6-Marzo-09 *
; File Version: vs0.0 *
; *
; Author: Manuel Caballero *
; Company: Hades *
; *
;**********************************************************************
; *
; Files Required: P10F222.INC *
; *
;**********************************************************************
; *
; Notes: En este programa, se muestra la utilización de las *
; sentencias de control, en este caso, la de *
; repetición-condicional de un bucle do-while que ejecuta *
; un bucle mientras Dato2 sea mayor que Dato1. *
;**********************************************************************
list p=10F222 ; Directiva para definir el procesador
#include < p10F222.inc > ; Registros especificas del procesador
__CONFIG _MCLRE_ON & _CP_OFF & _WDT_OFF & _MCPU_OFF & _IOFSCS_4MHZ
; _MCLRE_ON: Reset externo ACTIVADO.
; _CP_OFF: Protección del código DESACTIVADO.
; _WDT_OFF: Watchdog DESACTIVADO.
; _MCPU_OFF: Resistencias de Pull-Up DESACTIVADO.
; _IOFSCS_4MHZ: Oscilador interno de 4MHz.
;***** DEFINICIÓN DE VARIABLES
cblock 09h ; Inicio RAM
Dato1
Dato2
endc
;**********************************************************************
ORG 0xFF ; Vector de reset
; El valor del oscilador interno se localiza en la dirección 0xFF
; como una instrucción movlw k, donde k es el valor de configuración del oscilador.
ORG 0x000 ; Inicio de código
movwf OSCCAL ; Actualiza el valor del oscilador interno
Inicio
movlw 0x02
movwf Dato1 ;(W) -> Dato1
clrf Dato2 ; 0 -> Dato2
Do_while
incf Dato2,f ; Dato2++
movf Dato2,w ; Dato2 -> (W)
subwf Dato1,w ; Dato1 - Dato2 -> (W)
btfsc STATUS,C ; ¿Dato2 > Dato1?
goto Do_while ; NO -> Vuelve a Do_While
Salir
goto Inicio
END ; directiva 'fin de programa'
Para la realización de este programa, se han empleado dos variables definidas en memoria RAM. Para ello, se ha usado la instrucción:cblock---endc
Dichas variables son Dato1 y Dato2.
El propósito de este programa consiste en mostrar el funcionamiento del bucle do-while Dato2 > Dato1, la finalidad del programa es ejecutar el bucle Do-While mientras se cumpla que la variable Dato2 sea mayor que la variable Dato1.
Para ver el resultado, compilamos el código y seleccionamos el MPLAB SIM para poder simularlo.
Buscamos en la ventana Watch, en la parte Symbol la variable definida, en este caso la llamada Dato1 y Dato2 y la agregamos a la ventana de inspección, y en la parte de SFR, agregamos los registros STATUS y WREG.
El propósito de este programa es comprobar cómo funciona la sentencia de control de repetición-condicional, en este caso, la del bucle do-while Dato2 > Dato1.
Este programa es muy simple y sencillo, se entrará en el bucle Do-While y se incrementará en una unidad una variable definida en memoria RAM, en este caso Dato2, y se seguirá incrementando hasta que Dato2 sea mayor que Dato1.
Este tipo de sentencias de control es bastante usada y versátil, ya que es fácil adaptarla y modificarla para nuestros propósitos en concreto.
Se puede observar en el siguiente vídeo todo lo explicado anteriormente:
El presente vídeo se puede ver en YouTube en alta calidad: SC7.
Este proyecto se puede descargar en la siguiente dirección: SC. Repetición 7.
0 comentarios:
Publicar un comentario