Microcontroladores PIC en Linux.
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

error en la subrutina??

2 participantes

Ir abajo

error en la subrutina?? Empty error en la subrutina??

Mensaje por yeestrada Dom 20 Mar 2011 - 15:44

Hola a todos, esta rutina la hice para tomar un valor que este en W (código askII que vino por Tx serie) y asegurarme que sea un número y no otro caracter cualquiera, pero no me funciona bien, alguien podría echarle un vistazo y ver el error???


clear_num
movwf valor
movlw 0x30
subwf valor,w ;le resto a valor 30h y dejo el resultado en w
btfss STATUS,0 ; testeo el acarreo a ver si hubo (valor <30h)
goto mayor
goto ER1
mayor
movlw 0x39
subwf valor,W
btfsc STATUS,C
goto ER1
movf valor
call TxSerie
return
ER1
movlw 'E'
call TxSerie
return

yeestrada
Participante
Participante

Mensajes : 10
Fecha de inscripción : 20/03/2011

Volver arriba Ir abajo

error en la subrutina?? Empty Re: error en la subrutina??

Mensaje por Pikitin Dom 20 Mar 2011 - 23:58

Hola yeestrada.

Según lo entiendo yo, después de una resta, si STATUS,0 = 0 entonces hubo préstamo (acarreo es en la suma), osea podría ser algo así:

Código:
    subwf valor,w ;le resto a valor 30h y dejo el resultado en w
    btfss STATUS,C ; testeo el acarreo a ver si hubo (valor <30h)
    goto menor
    goto mayor_o_igual

Después de una suma, STATUS,C se pone a 1 cuando hay acarreo.
Después de una resta, STATUS,C se pone a 0 cuando hay préstamo (el resultado es negativo).

Espero no haberme liado... Very Happy

Saludos.

Pikitin
veterano
veterano

Mensajes : 623
Fecha de inscripción : 26/11/2008

http://linuxmicros.blogspot.com/

Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.