TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: khasistos en 27 de Septiembre de 2004, 14:31:00
-
hOLA:
CONFIESO QUE HE TRATADO DE BUSCAR ,ANTES DE PREGUNTAR,PERO NO ENCUENTRO EL OPERADOR MATEMATICO PARA LO SIGUIENTE:
QUIERO DETECTAR CUANDO MI VARIABLE X ESTE COMPRENDIDA ENTRE 2 VALORES EJ
IF X >500 <700 THEN........
ESTE ES UN ERROR DE SINTAXIS PERO ES ESO LO QUE QUIERO HACER Y NO LO LOGRO.ES CASE??LO QUE NECESITO......
GRACIAS
KHASISTOS
-
Prueba esto, Khasistos:
if x>500 and x<700 then
-
Esta totalmente correcto lo que dijo nocturno66 porlomenos en pro funciona asi en plus calculo que tambien.
Yo tenia hecho una rutinita asi:
botones:
IF PORTB.5=0 AND boton=<7 Then boton=boton+1 Pause 200
Return
EndIF
IF PORTB.6=0 AND boton>=1 Then
boton=boton-1
Pause 200
Return
EndIF
Return
Ahi vos cambias los operadores para lo que quieras =,<,>,>=,<=
Un abrazo
Tony
-
Hola:
Gracias ,la palabra "magica" es AND
Gracias a todos FUNCIONO......
Saludos
Khasistos
-
También puedes hacer combinaciones con paréntesis:
IF ((esto AND aquello) OR (lootro AND lodemas)) THEN
Este tipo de expresiones hace crecer mucho el código
Saludos
Ricky
Madrid-España
-
Atentos a las evaluaciones muy complicadas, a veces el PBP Pro se hace un lio, recientemente perdi una tarde entera porque el maldito compilador no evaluava correctamente una igualdad del tipo:
if CHKS=(rec1+rec2+rec3+rec4+rec5+(rec6*rec7)) then comprobado
Lo que hay entre los parentesis no es exactamente lo que tenia pero es para dar una idea.
Pues bien al final tuve que hacer lo siguiente
CHKS_TEMP=(rec1+rec2+rec3+rec4+rec5+(rec6*rec7))
if CHKS=CHKS_TEMP then comprobado
si no, no funcionaba
-
Hola :
Gracias por tus conceptos explicativos ,si me ha pasado de "aceptar" alguna operacion matematica de comparacion y luego no darle bolilla pese a compilar tambien sin errores,ambas en pro y tambien en Plus.Si la expresion que puse de ejemplo se usa en Plus separada por coma no detecta error de sintaxis ni en la compilacion y sin embargo no funciona mas que con la primer expresion.
Abrazos para todos
khasistos
-
Lo cierto es que es una, putada diriamos en españa, cuando te vuelves loco y el problema es un fallo del compilador... Y es que todos los programadores cometen fallos y los que hacen los compiladores no se quieren quedar sin su parte...
-
Habria que tener una cosa presente en pbp , las operaciones intermedias las hacen con variables word , es decir que si un resultado es mayor a 255 y CHKS es del tipo Byte , es normal es que no se cumpla nunca el ejemplo expuesto :
if CHKS=(rec1+rec2+rec3+rec4+rec5+(rec6*rec7)) then comprobado
el resultado (rec1+rec2+rec3+rec4+rec5+(rec6*rec7)) es guardado en una temporal del tipo word . Aunque es un fallo que no lo hayan tenido en cuenta .
-
Ahora encuentro la explicación a un problema que me tuvo mareado bastante tiempo.
Lo solucioné como apunta Marqués, pero no fue por lógica, más bien por intuición.
Gracias Sisco