Autor Tema: problemas con operacion logica and  (Leído 3189 veces)

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

Desconectado Ricardo1950

  • PIC10
  • *
  • Mensajes: 9
problemas con operacion logica and
« en: 23 de Marzo de 2011, 16:30:50 »
Hola estoy intentando que el pic 16f84 haga algunas operaciones sencillas para incorporarlas a un programita un poco mas complejo pero al querer  simular con MPLAB 8.1 no logro que funcione la operacion logica AND, si lo hago sumando el multiplicando tantas veces como el multiplicador va muy bien usando la operacion logica ADDF. les envio una copia de mi microprograma para que me deis algunas sugerencias.  gracias

;producto de  dos números

   status equ 03h
   multiplicando   equ 0ch
   multiplicador   equ   0dh
   resultado   equ   0eh
   

   org   00h
   bcf   status,5
   clrf   multiplicando
   clrf   resultado
   clrf multiplicador
   movlw   19h      ;cargo en w 25 dec
   movwf   multiplicando   ;paso w a multiplicando
   movlw   08h      ;cargo w con 8 dec (multiplicador)
   movwf   multiplicador   ; realiza el producto entre w y multiplicador (ojo esto no va aqui´)
   movfw   multiplicador       ;este paso lo hice para intentar que lo que carga el w sea un registro en lugar de un literal, por si era eso lo que falla
   andwf   multiplicando
   movfw   multiplicando   ; cargo multiplicador en acumulador
   movwf    resultado   ; paso  a resultado ( estos dos pasos de pueden obviar porque el resultado mirando en Wach  se lo ve en multiplicando)
    end

En primera instancia lo intenté  desde el momento  en que cargo w con 8 dec. y donde dice realiza el producto entre w y multiplicador, en lugar de movwf multiplicador ponia andwf multiplicador pero tampoco funcionó . Otra pregunta se pueden hacer operaciones mayores de 255 dec?

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: problemas con operacion logica and
« Respuesta #1 en: 23 de Marzo de 2011, 18:26:27 »
  ¿Cuál es el resultado obtenido como para saber que no te funcionó la and?

  Referido a operaciones mayores a 8 bits (255 dec), sí se puede. Solo hay que testear el bit de CARRY del registro STATUS.

  Por ejemplo, se podría sumar 250 + 25 y almacenar el resultado en el registro (variable) que estemos usando. Dicha variable valdrá 19, pero se habrá seteado el bit de CARRY.

  En el siguiente ejemplo variableL serían los 8 bits menos significativo y variableH los 8 bits mas significativos

Código: ASM
  1. movlw 250
  2. movwf variableL
  3. movlw 25
  4. addwf variableL,F ; hago la suma y lo almaceno en variable
  5. btfsc STATUS,CARRY ; testeo para saber si hubo acarreo
  6. incf variableH ; si hubo acarreo incremente la parte alta
  7. ......  ; si no hubo continuo acá y por lo tanto no se incrementa la parte alta
  8. ........
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: problemas con operacion logica and
« Respuesta #2 en: 23 de Marzo de 2011, 19:52:58 »
.


Tal vez la elección de los números te está confundiendo: 19h and 8h = 8h   :mrgreen:. Podrás probar con AAh y 55h (AAh and 55h = 0h) para estar seguro...
Saludos.

When you see a good move, look for a better one (Emanuel Lasker)

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: problemas con operacion logica and
« Respuesta #3 en: 23 de Marzo de 2011, 19:58:41 »
.


Tal vez la elección de los números te está confundiendo: 19h and 8h = 8h   :mrgreen:. Podrás probar con AAh y 55h (AAh and 55h = 0h) para estar seguro...
Saludos.



 :D :D :D Excelente observación
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas