Página 1 de 1
IF entre duas variaveis

Enviado:
23 Nov 2006 20:58
por Juliano
alguem sabe se tem como comparar duas variaveis com a diretriz IF,ELSE,ENDIF, exemplo:
IF VARIAVEL A <VARIAVEL B
rotina se o resultado for X
ELSE
rotina se o resulatado for XX
ENDIF

Enviado:
23 Nov 2006 21:03
por moacir
Juliano, ve se isso que voce quer
IF(a<b)
{
execute esta rotina
}
Else
{
execute esta rotina
}
z = (a>b) ? a : b;

Enviado:
23 Nov 2006 21:37
por tcpipchip
ou assim
z = (a<b) ? a : b;
tcpipchip

Enviado:
23 Nov 2006 23:42
por Red Neck Guy
Em assembly, como está no inicio do post, não tem como não.

Enviado:
23 Nov 2006 23:54
por Renie
Olá pessoALL!
Concordo e discordo de todas as respostas dos colegas que post'aram antes!
Sem saber o ambiente ( IDE) que o colega está utilizando, compilador
(linguagem), etc. Todas as respostas serão corretas ou erradas!!!!!!!!
O Fábio Pereira, já deu um "toque"sobre isso ha poucos post's!!!!!
Seja mais claro, dê todas as informações pertinentes ( que possam
ser passadas), para não poluir o fórum nem receber uma resposta
que não tem nada a haver com seu problema!

Enviado:
24 Nov 2006 09:19
por andre_luis
Concordo c/ o Renie quanto à especificacao do problema, mas já podemos antecipar alguma coisa:
- Em C, pode fazerr isso com váriáveis, mas por comando.
- Em assembly, pode usar a diretiva IF ELSE ENDIF apenas para constantes.
PORÉM, voce pode criar uma MACRO em assembly para realizar essa comparacao com variáveis.
+++
assembly

Enviado:
24 Nov 2006 10:01
por tcpipchip
Em assembly
movf A,W
subwf B,W
Depois disto, teste flag Z para verificar se A=B
Para A<B ou A>B use o flag C
TCPIPCHIP
Re: assembly

Enviado:
24 Nov 2006 10:13
por andre_luis
Talvez isso ajude:
- Código: Selecionar todos
;*****************************************************************************************************
; LISTING 1 - COMPARISON MACRO
;
; "Comparison macro for PIC processors," EDN, March 2, 2000, pg 122
;
; http://www.ednmag.com/ednmag/reg/2000/030200/designideas.htm#05di4
;****************************************************************************************************
#define eq 1 ; if equal
#define ne 2 ; if not equal
#define bl 3 ; if below (unsigned comparison)
#define ae 4 ; if above or equal (unsigned)
#define WREG 0xFFFD ; if immediate-value specified as the W reg
b2 MACRO target, ram_reg, cond, lval
nolist
if lval != WREG ; if lval spec'd as "WREG", don't move lval to W
movlw lval
endif
; subtract will set carry if ram_reg >= lval, clear it if reg < lval (unsigned)
subwf ram_reg, W ; ram_reg minus W -> W, ram_reg unchanged
if cond == eq ; if cond is "eq", skip if non 0, branch if 0
skpnz
else
if cond == ne ; if cond is "ne", skip if 0, branch if non 0
skpz
else
if cond == bl ; if cond is "bl", skip if carry, branch if not
skpc
else
if cond == ae ; if cond is "ae", skip if not carry, else branch
skpnc
else ; if condition none of the above, error
error "b2 macro condition argument not a valid choice"
endif ; cond = ae
endif ; cond = bl
endif ; cond = ne
endif ; cond = eq
b target ; skip this if condition not true, take it if true
list
ENDM ; b2
o problema

Enviado:
26 Nov 2006 19:04
por Juliano
uso o MPLAB 6.61,programo em ASM
o que eu preciso é fazer um shift light com pic para usar com contagiros automotivo,só que o seguinte preciso comparar o que entrou com o que esta na eeprom do pic ,até ai é facil só que eu preciso que ele sete uma porta do pic se o que entrou for igual ou maior do que esta na eeprom do pic pois se eu usar "xor"e testar o status,z ele só vai setar a porta se bater igual e não maior,se poderem me ajudar agradeço

Enviado:
27 Nov 2006 19:29
por a.rairan
subtrai o valo do work e testa o carry bit

Enviado:
27 Nov 2006 19:59
por zielpunkt
Juliano, tenta esse código ai:
- Código: Selecionar todos
movfw valor1
subwf valor2,w
btfss status, c
goto isso ; valor1 > valor2
goto aquilo ; valor1 < ou = valor2
Ih, deu fome....
if

Enviado:
28 Nov 2006 18:47
por Juliano
valeu pessoal pela força vo tentar terminar o programa

Enviado:
28 Nov 2006 23:05
por Juliano
Pessoal deu certo a minha rotina valeu pela força de vcs
se precisarem de algo me add no MSN falowwwwww