Ciencia

Solo disponible en BuenasTareas
  • Páginas : 7 (1543 palabras )
  • Descarga(s) : 0
  • Publicado : 31 de octubre de 2010
Leer documento completo
Vista previa del texto
Ingeniería de Sistemas y Automática

Prácticas de Microcontroladores PIC

SISTEMAS ELECTRÓNICOS Y AUTOMÁTICOS PRACTICAS DE MICROCONTROLADORES PIC

PRÁCTICA 3:

Bucles

• Bucles: o Bucles infinitos o Bucles finitos o Bucles anidados • Medir tiempos con MPLAB • Ejemplos y ejercicios

-1-

Ingeniería de Sistemas y Automática

Prácticas de Microcontroladores PIC

1. Bucles
Uno delos conceptos fundamentales de la programación es el concepto del bucle o lazo. Un bucle permite básicamente la repetición del código del programa y puede funcionar de forma indefinida o repetir una parte del código un número determinado de veces. En primer lugar se estudiarán los bucles infinitos.

1.1. Bucles infinitos
Un bucle o lazo infinito es aquel que no tiene fin, es decir, mantienela siguiente estructura:

Instrucciones

Por ejemplo: Principal ………… ………… ………… goto Principal La mayoría de los programas de microcontroladores posee una estructura de bucle infinito. El programa CONTAR.ASM funciona como un bucle infinito, enviando de forma secuencial un número binario comprendido entre 0 y 255 a PORTB.

-2-

Ingeniería de Sistemas y Automática

Prácticas deMicrocontroladores PIC

;CONTAR.ASM List p=16F84 ;Tipo de procesador include "P16F84.INC" ;Definiciones de registros internos org goto org Inicio 0x00 Inicio 0x05 ;Vector de Reset ;Salva el vector de interrupción ;selecciona el Banco1 ;configura PORTB todo como salidas ;selecciona el Banco0 ;borra PORTB (leds apagados) ;suma 1 al registro PORTB ;y otra vez, y otra vez, …

bsf STATUS,RP0 clrf TRISB bcfSTATUS,RP0 clrf PORTB incf PORTB,f goto Bucle end

Bucle

EJERCICIO 1: Cread un proyecto y simulad el funcionamiento del programa CONTAR.ASM.

EJERCICIO 2: Modificad el programa CONTAR.ASM para que la secuencia que se muestre en PORTB sea: (en decimal): 254, 252, 250, 248, ... 4, 2, 0, 254, 252, 250, 248, ... 4, 2, 0, 254, 252, 250, 248, ... 4, 2, 0, ..... (o en hexadecimal): FE, FC, FA, ...04, 02, 00, FE, FC, FA, ... 04, 02, 00, FE, FC, FA, ...04, 02, 00, FE, FC, FA, ... 04, 02, 00,...

-3-

Ingeniería de Sistemas y Automática

Prácticas de Microcontroladores PIC

1.2. Bucles finitos
Los bucles finitos se ejecutan un determinado número de veces y pueden tener varios tipos de estructuras, las más utilizadas son: • • Bucle con condición de testeo Bucle que se repite unnúmero conocido de veces

1.2.1.Bucle con condición de testeo
Se utiliza una instrucción de testeo para controlar la ejecución del bucle. Para este caso la repetición del lazo es finita, pero no se puede precisar el número de veces que se repite.

Instrucciones

Condición?

No/Sí

Sí/No

Ejemplo1: EsperaUno btfss PORTA,4 goto EsperaUno En el eje mplo1 se lee el pin 4 de PORTA y hasta queno se pone a 1 no sale de este bucle. Ejemplo2: NoEsIgual movf PORTA,W sublw 0x56 btfss STATUS,Z goto NoEsIgual EsIgual -4-

Ingeniería de Sistemas y Automática

Prácticas de Microcontroladores PIC

En el ejemplo2 se lee el registro PORTA y hasta que no su valor no es igual al de la constante 0x56 no se sale del bucle.

1.2.2.Bucle que se repite un número conocido de veces
Lasinstrucciones decfsz e incfsz se utilizan generalmente en combinación con una instrucción de salto goto, para el diseño de bucles de instrucciones que deben repetirse una cantidad determinada de veces. Se hace de manera tal que un registro se decrementa o incrementa hasta que tome un determinado valor. En este caso, sí se conoce el número de veces que se repite el bucle:

Carga el contadorInstrucciones

Decrementa el contador

Contador=0?

No



Ejemplo: movlw NumeroVeces; este es el numero de veces que se repite el bucle movwf Contador; carga el contador con el numero de veces Lazo ……… ……… ……… decfsz Contador,F; se decrementa el contador hasta que llega a 0 goto Lazo; si no llega a cero repite el bucle ……… ………

-5-

Ingeniería de Sistemas y Automática

Prácticas de...
tracking img