viernes, 13 de febrero de 2009

SC. Repetición 4

Continuamos mostrando ejemplos de como usar las Sentencias de Control. En este caso, se tratará las de repetición.


Como estudio previo, es indispensable ver: SC. Bucle for con postincremento, 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 PIC16F59, se podría haber usado cualquiera, cuyas características expuestas por Microchip, se pueden observar en la siguiente dirección: PIC16F59.

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: Ej4.asm *
; Date: 13-Febrero-09 *
; File Version: vs0.0 *
; *
; Author: Manuel Caballero *
; Company: Hades *
; *
;**********************************************************************
; *
; Files Required: P16F59.INC *
; *
;**********************************************************************
; *
; Notes: En este programa, se muestra la utilización de las *
; sentencias de control, en este caso, la de repetición *
; de un bucle for con postincremento.
*
;**********************************************************************

list p=16F59 ; Directiva para definir el procesador
#include < p16F5x.inc > ; Registros especificas del procesador

__CONFIG _CP_OFF & _WDT_OFF & _XT_OSC

; _CP_OFF: Protección del código DESACTIVADO.
; _WDT_OFF: Watchdog DESACTIVADO.
; _XT_OSC: Oscilador externo tipo Cristal/Resonador.

;***** DEFINICIÓN DE VARIABLES
CBLOCK 0x0A ; RAM Banco 0
Contador
Numero

Incremento

ENDC

;**********************************************************************
ORG 0x1FF ; Vector de reset
goto Inicio

ORG 0x000 ; Inicio de código
clrf Incremento ; 0 -> Incremento

Inicio

clrf Contador ; 0 -> Contador

movlw 0x02
movwf Numero ; Cantidad correspondiente al retardo

FOR
subwf Contador,W ; Contador - (W) -> (W)
btfss STATUS,Z ; ¿Numero == Contador?
goto Bucle_For ; NO -> Ejecuta el Bucle_For
goto Salir ; SI -> Sal del for

Bucle_For
incf Incremento,F ; Incremento++
movf Numero,W ; Numero -> (W)
incf Contador,F ; Contador++
goto FOR ; NO -> Vuelve a Bucle

Salir
goto Inicio ; Vuelve a Inicio


END ; directiva 'fin de programa'

Para la realización de este programa, se han empleado variables definidas en memoria RAM. Para ello, se ha usado la instrucción:

cblock---endc

Dichas variables son Contador, Numero e Incremento, que albergarán el índice de repeticiones, el número total de repeticiones del bucle for y una acumulación sumatoria respectivamente.

El propósito de este programa consiste en mostrar el funcionamiento del bucle for con postincremento, la finalidad del programa es incrementar en una unidad la variable Incremento en dicho bucle.

Para ver el resultado, compilamos el código y seleccionamos el MPLAB SIM para poder simularlo.

Abrimos la ventana de Watch y seleccionamos en la categoría de SFR, el registro WREG, STATUS y de la categoría Symbol, seleccionaremos Contador, Numero e Incremento.


El propósito de este programa es comprobar cómo funciona la sentencia de control de repetición, en este caso, la del bucle for con postincremento.

Este programa es bastante simple, se incrementará en una unidad la variable Incremento dentro del bucle for con postincremento.


Se puede observar en el siguiente vídeo todo lo explicado anteriormente:



El presente vídeo se puede ver en YouTube en alta calidad:
SC4.


Este proyecto se puede descargar en la siguiente dirección: SC. Repetición 4.

0 comentarios: