TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Colonial_Warrior en 04 de Febrero de 2008, 13:03:06

Título: if !debug y if debug
Publicado por: Colonial_Warrior en 04 de Febrero de 2008, 13:03:06
 :-/Soy nuevo en este foro trato de aprender  pero me he topado con un punto que no puedo dilucidar adecuadamente, por lo que les solicito, que alguien me preste ayuda;mi pregunta se refiere a: if !debug, entindo que es no debug, pero no como lo interpreta el mcu, en este caso un 16f877para mas referencia lo vi en la AN592 de microchip
Título: Re: if !debug y if debug
Publicado por: jfh900 en 04 de Febrero de 2008, 13:30:15
Podrías aclarar un poco más la cuestión. Poner la parte de código a la que haces referencia.

Un saludo
Título: Re: if !debug y if debug
Publicado por: elmasvital en 04 de Febrero de 2008, 16:20:30
Es una negación y como tal lo entiende el compilador... no obstante para el compilador

true  = 1 o mayor que 1
false = 0 y solo si es cero

if !debug será interpretado como if debug = 0 .....

Título: Re: if !debug y if debug
Publicado por: reiniertl en 04 de Febrero de 2008, 17:34:22
corrijo  a elmasvital:

if !debug será interpretado como if (debug == 0) .....

lo que pasa que usar if !debug es más elegante que utilizar
if (debug == 0)
Título: Re: if !debug y if debug
Publicado por: PalitroqueZ en 06 de Febrero de 2008, 14:54:22
también

if not debug ...

Título: Re: if !debug y if debug
Publicado por: Colonial_Warrior en 06 de Febrero de 2008, 15:06:27
gracias por las respuestas, aqui les pongo la nota aplicativa en cuestión para que sigais ayudando a aprender.
desde ya muchas gracias.
Título: Re: if !debug y if debug
Publicado por: jfh900 en 06 de Febrero de 2008, 15:51:45
Debug es una  variable del preprocesador que sirve para incluir una serie de instrucciones en tiempo de compilación si se ha activado el debug u otras si no está activa.

Se incluyen las instrucciones si Debug == 0

IF !Debug
00299 call delay50mS
00300 call delay50mS
00301 call delay50mS
00302 call delay50mS
00303 ENDIF

Se incluyen las instrucciones si Debug == 1

IF Debug
00311 ;This routine debugs freq. on a PICDEM1 board.
00AB 00312 checkRA1
00AB 0625 00313 btfsc _ra1
00AC 0AAB 00314 goto checkRA1
00AD 09D7 00315 call delay200mS
00AE 020B 00316 movf fhi,W
00AF 0026 00317 movwf PORTB
00B0 00318 chkRA1hi
00B0 0725 00319 btfss _ra1
00B1 0AB0 00320 goto chkRA1hi
00B2 00321 chkRA1lo
00B2 0625 00322 btfsc _ra1
00B3 0AB2 00323 goto chkRA1lo
00B4 09D7 00324 call delay200mS
00B5 020A 00325 movf flo,W
00B6 0026 00326 movwf PORTB
00B7 0725 00327 btfss _ra1
00B8 0AB7 00328 goto $-1
00329 ENDIF

En este caso cuando pones Debug = 1, estamos en un proceso de depuración, por el contrario si ponemos Debug = 0 estaríamos con el programa en explotación.

Un saludo
Título: Re: if !debug y if debug
Publicado por: elmasvital en 06 de Febrero de 2008, 16:52:09
corrijo  a elmasvital:

if !debug será interpretado como if (debug == 0) .....

lo que pasa que usar if !debug es más elegante que utilizar
if (debug == 0)

el asm me esta taladrando la cabeza...

=0 e una igualación ...
==0 es una comparación


1 saludo
Título: Re: if !debug y if debug
Publicado por: Colonial_Warrior en 06 de Febrero de 2008, 17:54:59
gracias por los datos que me han alcanzado todos y cada uno de vostros,esto me pone en camino nuevamente y me saca de mi loop mental
saludos...
Título: Re: if !debug y if debug
Publicado por: jfh900 en 06 de Febrero de 2008, 18:48:52
De nada, nosotros encantados de poderte haber realizado un reset  :D :D :D

Un saludo