viernes, 6 de marzo de 2009

SC. Do-While Bucle Dato2 > Dato1

La finalidad de este apartado consiste en mostrar como diseñar sentencias de control, en este caso de repetición y cuyo bucle se repita hasta que la igualdad se cumpla, en este caso, que un dato sea mayor que otro.

Para tal fin, se empleará sentencias de control condicional-repetición tal como la Do-While.

La sintaxis en un lenguaje de medio-alto nivel es la siguiente:

do
{
sentencia; // Bloque de Código

}
while(Dato2 > Dato1);

La forma de actuar esta sentencia de control es la siguiente: Repetir la sentencia mientras Dato2 sea mayor que Dato1.

La traducción a código ensamblador sería tal como sigue:

     ·····    ········

movlw numero
movwf Dato1 ; (W) -> Dato1

Do_While

     ·····    ········       ; Aqí el bloque de código a repetir

subwf Dato2,w ; Dato2 - (W) -> (W)
btfsc STATUS,C ; ¿Dato2 > Dato1?
goto Do_While ; NO -> Vuelve al bucle Do-While.

     ·····    ········     
Esta sentencia de control es sencilla, se repetirá el código del bucle Do-While mientras Dato1 no sea mayor que Dato2.

Los ciclos de máquina que el código anterior por ciclo, son:

+1 +1 +(+1 +1 +Bloque_Código +2)·(Hasta que se cumpla la igualdad) +1 +2 +Bloque_Código = +5 +Bloque_Código +(+4 +Bloque_Código)·(Hasta que se cumpla la igualdad)

Los ciclos de máquina ejecutados dependerá tanto del bloque de código a ejecutarse como hasta que se cumpla la condición de repetición, en este caso, se repetirá mientras Dato2 sea mayor que Dato1.

Este código es bastante versátil ya que la igualdad pueden ser variables o registros del microcontrolador.

0 comentarios: