Tema 8. Saltos. (parte I)

Tema 8 Saltos (parte I) 1 Tema 8. Saltos Ya vimos el salto incondicional con “goto”. SALTOS CONDICIONALES El repertorio del PIC16F84 también dis

4 downloads 149 Views 111KB Size

Recommend Stories


Tema 8. (Primera Parte) Documentos Protocolares
Tema 8 (Primera Parte) Documentos Protocolares 8.1. Definición. Los documentos protocolares son los originales o matrices, ellos son retenidos, colecc

TEMA 8: Torneado (I) - Proceso
MÓDULO III: MECANIZADO POR ARRANQUE DE VIRUTA TEMA 8: Torneado (I) - Proceso TECNOLOGÍA MECÁNICA DPTO. DE INGENIERÍA MECÁNICA Universidad del País V

TEMA 1 ELIMINACIÓN DE PARTÍCULAS (parte I)
TEMA 1 ELIMINACIÓN DE PARTÍCULAS (parte I) TEMA 1. ELIMINACIÓN DE PARTÍCULAS 1. Contaminación por Partículas 1.1. Generación de PS • Fuentes natur

TEMA 8. LOS ORGÁNULOS CELULARES (I)
TEMA 8. LOS ORGÁNULOS CELULARES (I). El citoplasma es la parte de la célula situada entre la membrana plasmática y la membrana nuclear. Está formado p

RELACIONES ENTRE ESTADOS Y ORGANIZACIONES INTERNACIONALES (SEGUNDA PARTE DEL TEMA) [Tema 8 del programa]
RELACIONES ENTRE ESTADOS Y ORGANIZACIONES INTERNACIONALES (SEGUNDA PARTE DEL TEMA) [Tema 8 del programa] DOCUMENTO A/CN.4/401 Tercer informe sobre la

TEMA 8. CIRCUITOS COMBINACIONALES
TEMA 8. CIRCUITOS COMBINACIONALES http://www.tech-faq.com/wp-content/uploads/images/integrated-circuit-layout.jpg IEEE 125 Aniversary: http://www.fl

Story Transcript

Tema 8

Saltos (parte I)

1

Tema 8. Saltos

Ya vimos el salto incondicional con “goto”.

SALTOS CONDICIONALES El repertorio del PIC16F84 también dispone de instrucciones de salto condicional, que son aquellas que producen un salto en función de que se cumpla o no una condición. Estas instrucciones son el único medio para realizar bifurcaciones condicionales en un programa. Hay 4 instrucciones de salto condicional clasificadas en 2 grupos: •btfsc, btfss à que pueden producir el salto en función del estado de un bit •decfsz, incfsz à que pueden producir el salto en función del contenido de un registro distinto de cero. Las instrucciones de salto no afectan a los flags del registro STATUS (C, DC y Z).

2

Tema 8. Saltos SALTOS EN FUNCIÓN DE UN BIT

Son muy poderosas ya que permiten al programa tomar decisiones en función del estado de un bit de cualquier registro o puerto de entrada/salida. Hay 2 instrucciones de este tipo:

btfsc f,b btfss f,b

3

Tema 8. Saltos SALTOS EN FUNCIÓN DE UN BIT Nemónico

Descripción

Bit Test f, Skip if Clear. (Salta si el bit “b” del “f” es 0.)

btfsc f,b

- Si el bit número “b” del registro “f” es “1” la instrucción que sigue a ésta se ejecuta normalmente. - Si el bit número “b” del registro “f” es “0” la instrucción que sigue a ésta se ignora y se salta.

Ejemplo: Aquí btfsc Flag,1 ;Si el bit 1 del registro Flag es “0” salta Falso goto ProcesoX ; Ha sido “1” Verdad ........... ; Ha sido “0” Antes: Después:

(PC)= Dirección de “Aquí” Si el bit 1 del registro Flag=0, (PC)=Dirección de “Verdad” Si el bit 1 del registro Flag=1, (PC)=Dirección de “Falso”

4

Tema 8. Saltos SALTOS EN FUNCIÓN DE UN BIT Nemónico

Descripción

Bit Test f, Skip if Set. (Salta si el bit “b” del “f” es 1.)

btfss f,b

- Si el bit número “b” del registro “f” es “0” la instrucción que sigue a ésta se ejecuta normalmente. -Si el bit número “b” del registro “f” es “1” la instrucción que sigue a ésta se ignora y se salta.

Ejemplo: Aquí btfss Flag,4 ;Si el bit 4 del registro Flag es “1” salta Falso goto ProcesoX ; Ha sido “0” Verdad ........... ; Ha sido “1” Antes: Después:

(PC)= Dirección de “Aquí” Si el bit 4 del registro Flag=1, (PC)=Dirección de “Verdad” Si el bit 4 del registro Flag=0, (PC)=Dirección de “Falso”

5

Tema 8. Saltos SALTOS EN FUNCIÓN DE UN BIT EJEMPLO: Saltos_01.asm

6

Tema 8. Saltos SALTOS EN FUNCIÓN DE UN REGISTRO Las instrucciones de salto condicional:

decfsz f,d incfsz f,d pueden producir el salto en función del contenido de un registro distinto de cero y son casos especiales de las instrucciones de incremento y decremento de un registro analizadas en el tema anterior (decf e incf).

7

Tema 8. Saltos SALTOS EN FUNCIÓN DE UN REGISTRO Nemónico

Descripción

Decrement f, Skip if 0. ( (f)-1 à destino y salta si 0 si d=0, destino=(W) si d=1, destino=(f) )

decfsz f,d

Esta instrucción decrementa en una unidad el contenido del registro f. Almacena el resultado en (W ) si d=0 y en (f) si d=1. Después de decrementar, pueden ocurrir dos casos: - Si el resultado es distinto de cero la instrucción que sigue a ésta se ejecuta normalmente -Si el resultado es cero la instrucción que sigue a ésta se ignora y se salta.

Ejemplo: Aquí EsCero NoEsCero

Antes: Después:

decfsz Contador,F goto NoEsCero .................. ................... ...................

(PC)= Dirección de “Aquí” (Contador)=(Contador)-1 y además: Si (Contador)=0, (PC)=Dirección de “EsCero” Si (Contador)≠0, (PC)=Dirección de “Aquí”+1 (goto NoEsCero)

8

Tema 8. Saltos SALTOS EN FUNCIÓN DE UN REGISTRO Nemónico

Descripción

Increment f, Skip if 0. ( (f)+1 à destino y salta si 0 si d=0, destino=(W) si d=1, destino=(f) )

incfsz f,d

Esta instrucción incrementa en una unidad el contenido del registro f. Almacena el resultado en (W ) si d=0 y en (f) si d=1. Después de incrementar, pueden ocurrir dos casos: -Si el resultado es distinto de cero la instrucción que sigue a ésta se ejecuta normalmente. -Si el resultado es cero (porque al incrementarse se ha desbordado y ha pasado del número 0xFF al 0x00) la instrucción que sigue a ésta se ignora y se salta.

Ejemplo: Aquí Continua Bucle

Antes: Después:

incfsz Contador,F goto Bucle ................... ................... ...................

(PC)= Dirección de “Aquí” (Contador)=(Contador)+1 y además: Si (Contador)=0 (256), (PC)=Dirección de “Continua ” Si (Contador)≠0, (PC)=Dirección de “Aquí”+1 (goto Bucle)

9

Tema 8. Saltos COMPARACIÓN ENTRE REGISTROS Una de las más significativas aplicaciones de los saltos condicionales es la comparación entre registros:

•COMPROBAR QUE UN REGISTRO VALE 0 •COMPROBAR LA IGUALDAD ENTRE 2 REGISTROS •COMPROBAR QUE UN REGISTRO ES MAYOR O MENOR QUE OTRO

10

Tema 8. Saltos COMPROBAR QUE UN REGISTRO VALE 0 Para saber si un registro es 0 hay que cargar el registro sobre sí mismo mediante la instrucción “movf”, y así el contenido de f no cambia pero sí se afecta al flag Z. Ejemplo: movf Dato,F btfss STATUS,Z goto NoesCero EsCero ............... ............... NoesCero............... ...............

11

Tema 8. Saltos COMPROBAR LA IGUALDAD ENTRE 2 REGISTROS Por ejemplo para comprobar si el contenido de los registros Dato1 y dato2 son iguales el programa sería: Ejemplo: movf Dato1,W subwf Dato2,W btfsc STATUS,Z goto Iguales NoIguales............... ............... Iguales ............... ...............

; (Dato1)à(W) ;(Dato2)-(Dato1)à(W)

12

Tema 8. Saltos COMPROBAR QUE UN REGISTRO ES MAYOR O MENOR QUE OTRO En este caso hay que realizar la resta de ambos. Así siendo A y B dos registros cualesquiera y haciendo la operación (A-B) se tienen las siguientes posibilidades:

Operación (A-B)

Resultado

Flags

A>B A=(DatoB) ;C=0, ha sido (DatoA)

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.