Autor Tema: pregunta  (Leído 1741 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado sanchoweb

  • PIC10
  • *
  • Mensajes: 13
pregunta
« en: 04 de Agosto de 2003, 14:49:00 »
Soy yo y mis dudas otra vez

Ahora mi pregunta de principiante es la siguiente:

Hay alguna instrucción para restar un número en binario a otro, por ejemplo:

  0101
- 0001
---------
  0100

Gracias.

Ah, y ya que estamos necesito otro para sumar.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
RE: pregunta
« Respuesta #1 en: 05 de Agosto de 2003, 08:19:00 »
No importa si lo sumas en binario, decimal, octal o hexadecimal.
La suma es suma y la resta es resta.
Pones cada numero dentro de una variable y luego haces:

B1=B2-B3

o

B1=B3+B2

Despues el resultado lo podes visualizar en el formato numerico que elijas....
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado sanchoweb

  • PIC10
  • *
  • Mensajes: 13
RE: pregunta
« Respuesta #2 en: 05 de Agosto de 2003, 10:18:00 »
Yo entiendo lo que me querés decir, pero te explico de que se trata lo que estoy haciendo para que me puedas ayudar un poco más.

Lo que estoy haciendo es una ruleta, apretas un botón y de forma aleatoria se elige un led. Ahora cada led tiene un valor (algunos positivos y otros negativos), en un display se indica el valor inicial de la partida, que son 3 créditos, y dependiendo de lo donde para la "luz" en los leds se sumarán o restarán créditos.

Entonces primero arme un contador interno para la elección aleatorea. Y luego de elegido el led, se pasa a la parte de cada uno, es decir que la luz de 3 vueltas y caiga en el led determinado por el contador.

Quiero aclarar que los leds (son 8) están todos en el puerto b, en el puerto a están el boton de encendido y apagado, el start y me quedan tres pines para mostrar en un display cuantos creditos me quedan

Dentro de cada led, arme el siguiente código:

;en el led siete el usuario pierde 2 créditos

SIETE       CLRF        PORT B        ;por las dudas
                CALL        VUELTAS     ;gira la ruleta tres veces
                CLRF        PORT B        ;por las dudas
                MOVLW   B"00000001"
                MOVWF    PORT B        ;después de las vueltas
SIETE1     CALL        RETARDO
                RLF           PORT B        ;rota la luz
                BTFSS       PORTB,6
                GOTO        SIETE1        ;si no esta prendida
               
Y acá llega el problema, yo quiero que a mi resultado anterior que tenía en mi display, recordar que siempre es un resultado y no un número fijo, se le resten dos creditos (que corresponden a este led)

Lo que yo hice, por el momento, fue mostrar en otros dos displays la ganancia o la pérdida...

                 BSF          PORTA, 3
                 BCF          PORTA, 4
                 BCF          PORTA, 2
                 GOTO       INICIO

esto hace que entregen los pines RA3 Y RA4 dos bits correspondientes a un número en binario y el pin RA2 el signo. Por medio de un decodificador los paso a un display de 7 segmentos.

Pero, para que no te pierdas, mi pregunta es la siguiente, cómo hago para que dependiendo del valor del led que me toque se le sume o se le reste este mismo valor a lo que yo tengo en el display (que va variando a medida que se desarrolla el juego)?

Muchas Gracias.

Y otra cosa, como hago para que cuando llegue a cero o a nueve el display se resetee el pic y empiece de nuevo el juego??

Ahora si, muchas gracias.

Sancho

Desconectado sanchoweb

  • PIC10
  • *
  • Mensajes: 13
RE: pregunta
« Respuesta #3 en: 05 de Agosto de 2003, 15:50:00 »
A ver si lo puedo solucionar así; mientras yo escribo en Asembler en el Pic 16f84, yo puedo poner, por ejemplo, las siguientes instrucciones?:

dato1 = dato1+1

dato2 = dato2 - 1

Se puede hacer eso o solo se pueden escribir las intrucciones del tipo:

ADDWF
ANDWF

Sancho.


 

anything