1 ciclos mientras

3
1 CICLOS MIENTRAS CONTROLADOS CON BANDERAS O INTRRUPCIONES El manejo de las interrupciones en un Controlador puede resultar complejo, sin embargo, su implementación se ve simplificada dado que el fabricante del compilador usado provee un esquema basado en una función RSI. (Rutina de Servicio de Interrupción) genérica la cual puede ser fácilmente modificada de acuerdo a los requerimientos del usuario. Cuando alguna de la fuentes de interrupción se activa, el programa en ejecución salta a la dirección 0x0004 (Vector de interrupción), en esa dirección debe encontrarse la RSI. Dado que como pueden ser distintas fuentes de interrupción y solo una función para atenderla, se debe recurrir al uso de los Interruptor Flag. (Banderas de interrupción), los cuales están asociados a las distintas fuentes de interrupción. Cada interrupción para su adecuado funcionamiento, requiere una habilitación y un proceso de Configuración en algunos casos. Para ello se usan los registros OPTION_REG (en CC5x es el OPTION), INTCON,PIE1 y PIR1. Adicionalmente PIE2 y PIR2 para otros periféricos. Se debe incluir una biblioteca especial int16XXX.h, la cual permite el manejo de las interrupciones. Dado que existen 3 fuentes de interrupciones se deben configurar los bits de dichas fuentes como entrada. La programación se basa en lo siguiente, primero se configura en el módulo principal la fuente de interrupción a utilizar. Una vez finalizado este proceso se habilitan las interrupciones a través de los flag correspondientes. El Controlador procederá entonces a realizar las tareas habituales que no requieren de interrupción, habitualmente se usa un loop infinito mediante un ciclo while (1). Cuando ocurre la interrupción, se setea la bandera correspondiente a

Upload: alejandro-velasquez

Post on 14-Dec-2015

218 views

Category:

Documents


3 download

DESCRIPTION

Ciclo mientras

TRANSCRIPT

Page 1: 1 Ciclos Mientras

1 CICLOS MIENTRAS CONTROLADOS CON BANDERAS O INTRRUPCIONES

El manejo de las interrupciones en un Controlador puede resultar complejo, sin embargo, su implementación se ve simplificada dado que el fabricante del compilador usado provee un esquema basado en una función RSI.

(Rutina de Servicio de Interrupción) genérica la cual puede ser fácilmente modificada de acuerdo a los requerimientos del usuario.

Cuando alguna de la fuentes de interrupción se activa, el programa en ejecución salta a la dirección 0x0004 (Vector de interrupción), en esa dirección debe encontrarse la RSI. Dado que como pueden ser distintas fuentes de interrupción y solo una función para atenderla, se debe recurrir al uso de los Interruptor Flag.

(Banderas de interrupción), los cuales están asociados a las distintas fuentes de interrupción.

Cada interrupción para su adecuado funcionamiento, requiere una habilitación y un proceso de Configuración en algunos casos. Para ello se usan los registros OPTION_REG (en CC5x es el OPTION), INTCON,PIE1 y PIR1. Adicionalmente PIE2 y PIR2 para otros periféricos.Se debe incluir una biblioteca especial int16XXX.h, la cual permite el manejo de las interrupciones. Dado que existen 3 fuentes de interrupciones se deben configurar los bits de dichas fuentes como entrada.

La programación se basa en lo siguiente, primero se configura en el módulo principal la fuente de interrupción a utilizar. Una vez finalizado este proceso se habilitan las interrupciones a través de los flag correspondientes. El Controlador procederá entonces a realizar las tareas habituales que no requieren de interrupción, habitualmente se usa un loop infinito mediante un ciclo while (1). Cuando ocurre la interrupción, se setea la bandera correspondiente a la fuente de origen y el programa salta a la dirección 0x0004. En dicha dirección se encuentra la RSI, dentro de dicha función se debe inicialmente salvar los registros actuales, debe encuestarse el flag correspondiente a la fuente de interrupción, dado que está en 1, mediante un if es sencillo, sin embargo, después de terminada la atención debe hacer un reset al flag, para permitir una nueva interrupción. Al terminar de ejecutar la RSI, esta restaura los registros y vuelve al programa principal.

Cuando al controlador le llega un pedido de interrupción ,lo atiende inmediatamente poniendo una pausa en la ejecución del programa que está corriendo mientras ejecuta una función de interrupción , denominada rutina de servicios de interrupción , una vez terminada la interrupción el controlador vuelve al lugar donde fue interrumpido y retoma la ejecución.

Las interrupciones se pueden decidir donde y cuando ejecutarlas. Las banderas indican si está permitido o no las interrupciones de los dispositivos.

Page 2: 1 Ciclos Mientras

Las banderas o interrupciones (flag) son unas variables lógicas que se utilizan para conservar el estado ( VERDADERO O FALSO ) y toma el otro valor dentro del cuerpo del ciclo para preparar la siguiente repetición estos flag se representan con variables lógicas y n los cuales se incidirán en uno de los valores ( verdadero o falso ) y toma el otro valor cuando sucede el evento que se está verificando mientras que en esta sentencia el número de veces que se hade repetir algunas instrucciones no se conoce por anticipado y el interior de la sentencia se repite mientras se cumple unas determinadas condiciones , por esta razón estas sentencias se denominan ciclo o sentencia condicional ejecutando una sentencia simple o compuesta de cero o más veces, dependiendo del valor de la expresión.

 2. EN QUÉ CONSISTE Y CUÁLES SON LAS DIFERENCIAS DE LOS CICLOS MIENTRAS Y HACER HASTA.Estas son estructuras cíclicas que se utilizan para ejecutar fragmentos de código de un número limitado de veces y son desde hasta (for), hacer mientras (while), y hacer hasta (do while)

CICLO HACER MIENTRAS:Es conocido en los lenguajes de programación como ciclo while, una de sus características es que verifica si la condición se cumple antes de ingresar al bloque de código que se va a repetir, el limite d ejecuciones estará dada por la condición, es ejecutara mientras la condición de vuelva un valor lógico verdadero.

Su composición maraca el inicio del bloque de código que se repetirá en forma cíclica.

Su condición se refiere a una comparación lógica que se evaluara en cada ejecución del ciclo, si esta operación lógica entrega un resultado verdadero continua ejecutando el bloque de código, en caso contrario saldrá del ciclo y continuara con la línea de código que esta a continuación del fin del mientras que indica el termino del bloque de código que se repetirá en forma cíclica.

CICLO HACER HASTA;Esta estructura, que en los lenguajes de programación de alto nivel es conocida como dowhile, es similar a la estructura hacer mientras, pero tiene dos grandes diferencias.

1. El código que se encuentra del ciclo hacer hasta se ejecuta por lo menos una vez, debido a que la comparación y verificación de la condición está en la parte inferior del código

2. Para continuar requiere que la condición entregue un resultado lógico falso, adiferencia del ciclo hacer mientras que requiere que el resultado de la condición sea verdadero.

SU PRINCIPAL DIFERENCIA entre mientras y hacer hasta es que la operación se ejecuta la menos una vez. O sea la diferencia se encuentra en la forma en la cual limitan el número de ocasiones que se ejecutara el código.