IF entre duas variaveis

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

IF entre duas variaveis

Mensagempor Juliano » 23 Nov 2006 20:58

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
Juliano Barcik
Juliano
Bit
 
Mensagens: 6
Registrado em: 22 Out 2006 14:31

Mensagempor moacir » 23 Nov 2006 21:03

Juliano, ve se isso que voce quer

IF(a<b)
{
execute esta rotina
}
Else
{
execute esta rotina
}
moacir
Bit
 
Mensagens: 19
Registrado em: 29 Out 2006 15:35
Localização: Lages - SC

z = (a>b) ? a : b;

Mensagempor tcpipchip » 23 Nov 2006 21:37

ou assim
z = (a<b) ? a : b;
tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor Red Neck Guy » 23 Nov 2006 23:42

Em assembly, como está no inicio do post, não tem como não.
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Mensagempor Renie » 23 Nov 2006 23:54

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!
[]'s
Renie
-------------------------------------------------------------------------------------------------------------
Meu velho site com eletrônica praticamente parado http://www.reniemarquet.com
Nosso Blog http://artemadeiraevida.blogspot.com.br
Renie
Word
 
Mensagens: 732
Registrado em: 11 Out 2006 22:35
Localização: RJ - Niterói - Brasil

Mensagempor andre_luis » 24 Nov 2006 09:19

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.

+++
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

assembly

Mensagempor tcpipchip » 24 Nov 2006 10:01

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
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: assembly

Mensagempor andre_luis » 24 Nov 2006 10:13

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
Editado pela última vez por andre_luis em 29 Nov 2006 07:47, em um total de 1 vez.
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

o problema

Mensagempor Juliano » 26 Nov 2006 19:04

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
Juliano Barcik
Juliano
Bit
 
Mensagens: 6
Registrado em: 22 Out 2006 14:31

Mensagempor a.rairan » 27 Nov 2006 19:29

subtrai o valo do work e testa o carry bit
André "Away" Rairan
a.rairan
Byte
 
Mensagens: 192
Registrado em: 11 Out 2006 18:53
Localização: São Caetano do Sul - SP - Brasil

Mensagempor zielpunkt » 27 Nov 2006 19:59

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....
"Talento é mais barato que sal. O que separa a pessoa talentosa da bem-sucedida é muito trabalho duro." [ Stephen King ]
zielpunkt
Byte
 
Mensagens: 376
Registrado em: 12 Out 2006 11:36
Localização: Sao Paulo - SP

if

Mensagempor Juliano » 28 Nov 2006 18:47

valeu pessoal pela força vo tentar terminar o programa
Juliano Barcik
Juliano
Bit
 
Mensagens: 6
Registrado em: 22 Out 2006 14:31

Mensagempor Juliano » 28 Nov 2006 23:05

Pessoal deu certo a minha rotina valeu pela força de vcs
se precisarem de algo me add no MSN falowwwwww
Juliano Barcik
Juliano
Bit
 
Mensagens: 6
Registrado em: 22 Out 2006 14:31


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x