Autor Tema: Pido ayuda con dos problemas de un final de Programacion  (Leído 5539 veces)

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

Desconectado tongas321

  • PIC10
  • *
  • Mensajes: 8
Pido ayuda con dos problemas de un final de Programacion
« en: 22 de Julio de 2013, 14:30:43 »
Hola, buen dia, disculpen las molestias, estuve viendo en el foro pero no logro solucionar mi problema (soy bastante duro para esto), les comento, fui a rendir un final de Tecnicas Digitales II, de mi carrera ing. en telecomunicaciones y me tomo dos problemas que tenian que ver con programacion, y en el examen me fue mal, pero me quede con la sangre en el ojo por saber como eran, si alguien tiene tiempo o quiere practicar me podria dar una mano en resolverlos

Problema 1):

Realizar un juego de luces (8bits del puerto B) cuya secuencia dependerá de unos interruptores conectados en el puerto A (5 bits del puerto A) que realicen las siguiente acciones:

Si A es 00001 la secuencia de luces del puerto B sera 8 leds parpadeantes
Si A es 00010 los leds realizaran un recorrido de derecha a izquierda
Si A es 00100 los leds realizara un recorrido de izquierda a derecha


Problema 2):

De la siguiente rutina:
a) explicar que hace y agregar explicaciones
b)Dar valores de los registros antes de entrar al bucle
c) dar valores de los registros cuando termina el bucle


contA            equ  0x10
dato              equ  0x11
resul             equ  0x12
auxi              equ  0x13

Rutina
                  movlw   D'08'
                  movwf   contA
                  clrf        resul
                  movf     dato,0
                  movwf   auxi
vol              rlf         auxi,1
                  btfsc     status,0
                  incf       resul,1
                  decf      contA,1
                  btfss     status,2
                  goto      vol
                  return

eso son los dos problemas, el 2) creo que lo hice medianamente bien, pero el 1) todo mal jaja, si alguien me da una mano lo agradezco muchisimo, que tengan un buen dia y gracias de antemano

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Pido ayuda con dos problemas de un final de Programacion
« Respuesta #1 en: 22 de Julio de 2013, 15:39:34 »
  Estaría muy bien que muestres el código que utilizaste para el problema 1. Tal vez sería mejor que lo coloques en el foro de assembler ya que seguramente recibirás mayor ayuda.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado tongas321

  • PIC10
  • *
  • Mensajes: 8
Re: Pido ayuda con dos problemas de un final de Programacion
« Respuesta #2 en: 22 de Julio de 2013, 15:49:06 »
es que el problema es que yo entregue en el final el programa que hice yo, pero lo hice totalmente mal saque 0 puntos jaja, no quiero que me den el programa completo, sino alguna que otra ayuda, como por ejemplo yo creo que tengo que usar la instrucción RLF y RRF para que los leds se muevan pero no se muy bien como funcionan, igual se agradece cualquier ayuda jaja

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Pido ayuda con dos problemas de un final de Programacion
« Respuesta #3 en: 24 de Julio de 2013, 13:27:40 »
Citar
Realizar un juego de luces (8bits del puerto B) cuya secuencia dependerá de unos interruptores conectados en el puerto A (5 bits del puerto A) que realicen las siguiente acciones:

Si A es 00001 la secuencia de luces del puerto B sera 8 leds parpadeantes
Si A es 00010 los leds realizaran un recorrido de derecha a izquierda
Si A es 00100 los leds realizara un recorrido de izquierda a derecha

A ver te voy poner una orientacion, no lo probe ni simule, a ver si tenemos suerte y NO funciona, y lo tendras que arreglar tu  :lol:, a lo mejor no mucho, falta la ultima secuencia, configuracion de puertos, la demora...como te digo no es el programa hecho, solo orientativo.

He obviado los antirrebotes, tambie que no dice nada de un pulsador que pare las secuencias etc.

Código: [Seleccionar]
MAIN

btfsc PORTA,0 ;chequeamos si PORTA,0 esta a 0
goto LEDS_PARPADEANTES ;esta a 1, hace primera secuencia
btfsc PORTA,1 ;chequeamos si PORTA,1 esta a 0
goto DESPLAZA_DI ;esta a 1, hace desplazar derecha a izquierda
btfsc PORTA,2 ;chequeamos si PORTA,2 esta a 0
goto DESPLAZA_ID ;esta a 1, hace desplazar izquierda a derecha


LEDS_PARPADEANTES

movlw 0xFF ;encendemos todos los LEDs
movwf PORTB
call DEMORA_200 ;llamamos demora 200ms (o el tiempo que quieras)
clrf PORTB ;apagamos LEDs
goto LEDS_PARPADEANTES ;habria que tener un pulsador para parar???
;pero no dice nada de como lo quiere

DESPLAZA_DI

bsf PORTB,0 ;enciende LED derecha
call DEMORA_200
rlf PORTB,1 ;rota PORTB a izquierda y resultado queda en PORTB
btfss STATUS,Z ;chequea flag acarreo, si esta a 1, desbordo Byte
call DEMORA_200
goto $-3 ;no esta Z a 1, va 2 posiciones arriba a rrl
goto DESPLAZA_DI ;ya desbordo, empieza secuencia otra vez

Citar
Problema 2):

De la siguiente rutina:
a) explicar que hace y agregar explicaciones
b)Dar valores de los registros antes de entrar al bucle
c) dar valores de los registros cuando termina el bucle


contA            equ  0x10
dato              equ  0x11
resul             equ  0x12
auxi              equ  0x13

Rutina
                  movlw   D'08'
                  movwf   contA
                  clrf        resul
                  movf     dato,0
                  movwf   auxi
vol              rlf         auxi,1
                  btfsc     status,0
                  incf       resul,1
                  decf      contA,1
                  btfss     status,2
                  goto      vol
                  return

En este yo diria que el profe metio la pata ¿Que PIC es? lo digo porque en la serie 16f creo que en ninguno se pueden poner los registros aqui:

contA            equ  0x10
dato              equ  0x11
resul             equ  0x12
auxi              equ  0x13

Ahi hay registros propios del PIC, por tanto al principio y al final del bucle puede haber cualquier cosa.

en el 16f887 son estos:

T1CON 10h
TMR2 11h
T2CON 12h
SSPBUF 13h

Bueno dile que te parece que es asi y a ver que opina. ¿Tiene muy mala hostia? :lol: :lol: Si estoy equivocado dale mi correo y que me envie a mi el suspenso  :lol: :lol:



« Última modificación: 24 de Julio de 2013, 13:31:02 por tapi8 »

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Pido ayuda con dos problemas de un final de Programacion
« Respuesta #4 en: 24 de Julio de 2013, 16:27:16 »
Citar
En este yo diria que el profe metio la pata ¿Que PIC es? lo digo porque en la serie 16f creo que en ninguno se pueden poner los registros aqui:

contA            equ  0x10
dato              equ  0x11
resul             equ  0x12
auxi              equ  0x13

Ahi hay registros propios del PIC, por tanto al principio y al final del bucle puede haber cualquier cosa.

en el 16f887 son estos:

T1CON 10h
TMR2 11h
T2CON 12h
SSPBUF 13h

Bueno dile que te parece que es asi y a ver que opina. ¿Tiene muy mala hostia? Si estoy equivocado dale mi correo y que me envie a mi el suspenso   


No le digas nada  :lol: :lol: porque si es un 16f84 si que valen esas direcciones, mira que olvidarme del 16f84.

Desconectado Darkman_A

  • PIC18
  • ****
  • Mensajes: 288
Re: Pido ayuda con dos problemas de un final de Programacion
« Respuesta #5 en: 24 de Julio de 2013, 18:34:51 »
es que el problema es que yo entregue en el final el programa que hice yo, pero lo hice totalmente mal saque 0 puntos jaja, no quiero que me den el programa completo, sino alguna que otra ayuda, como por ejemplo yo creo que tengo que usar la instrucción RLF y RRF para que los leds se muevan pero no se muy bien como funcionan, igual se agradece cualquier ayuda jaja

Hola tongas321.
Con el mayor de los respeto, creo que te falta estudiar un poco mas. No creo que la solucion sea venir a consultar a un foro. La instrucciones de los PICs las podes encontrar en millones de lugares de Internet y hay documentacion en ingles y en español. Con solo poner en Google RLF ya me propone 4 opciones de busqueda (rlf en mplab, rrf ensamblador, rlf pic, rlf en ensamblador). 3 microsegundos despues encuentro cosas como esta
Hay libros en español, articulos, tutoriales e informacion en los foros como para que puedas prepararte.
Entiendo que no hayas podido hacer el programa, quizas por los nervios; lo que me parece mal es que pongas el enunciado sin ni siquiera un intento de hacer el programa. Del segundo programa no especificas lo que hace ni siquiera en una de las lineas de codigo. Hace aunque sea un intento. Pone un poquito mas de garra.
A estudiar viejo, es la unica forma que vas a sacar adelante esa materia. Pensa que fuiste a dar un final. Cuando estudies vas a ver que el examen no era tan dificil.
Por otro lado, por mas que te expliquemos esto, si te toma otra cosa vas a fallar de nuevo.
Cuando estudies y tengas en realidad cosas que no entiendas estamos aca para darte una mano.
Suerte en la proxima fecha del final.
Saludos.
« Última modificación: 24 de Julio de 2013, 18:39:45 por Darkman_A »

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Pido ayuda con dos problemas de un final de Programacion
« Respuesta #6 en: 24 de Julio de 2013, 18:52:43 »
tapi,

lamento decirte que veo muchos errores en tu código. Está mal la selección de secuencia, el parpadeo y el desplazamiento.

Igual, como dice Darkman, estamos en el año 2013. La información ABUNDA y el acceso es muy fácil.

Como decía un tío mío: "Aprobar es una cuestión de culo... de culo contra la silla."

Saludos.

"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Pido ayuda con dos problemas de un final de Programacion
« Respuesta #7 en: 24 de Julio de 2013, 19:27:30 »
Citar
tapi,

lamento decirte que veo muchos errores en tu código. Está mal la selección de secuencia, el parpadeo y el desplazamiento.

Hombre de eso se trataba Bruno  :lol:, ya se lo digo aqui.

Citar
A ver te voy poner una orientacion, no lo probe ni simule, a ver si tenemos suerte y NO funciona, y lo tendras que arreglar tu  ,

No trataba de hacerle el codigo, como bien dice Darkman, es demasiado simple para darselo hecho, solo orientarlo de como seria mas o menos, ahora que se lo trabaje el un poco. Lo hice en 5 o 10 minutos a toda prisa y sin pensar mucho.

Desconectado tongas321

  • PIC10
  • *
  • Mensajes: 8
Re: Pido ayuda con dos problemas de un final de Programacion
« Respuesta #8 en: 24 de Julio de 2013, 21:11:46 »
Primero tapi8 muchas gracias por tu ayuda, me diste un par de ayudas para ver por donde lo arranco
segundo, disculpen si moleste a alguien, mi problema (que no soy el primero ni el ultimo) es que rendi mucho finales en esas 2 semanas porque estaba atrasado, y cuando nos pasa eso sabemos que a las ultimas materias no las estudiamos 100% siempre esperamos un poco de ayuda, igual ese no era todo el final, tenia mas problemas que hice bien pero esos dos daban 60% y bueno, no tuve la suerte de que me tome las cosas que sabia, ahora con mas tiempo espero rendirla bien, estos problemas no me los van a volver a tomar pero queria saber como encararlos para encarar los del proximo final porque por ahi son parecidos, vuelvo a pedir disculpa si moleste a alguien y agradecer a los que me dieron una mano, cuando haga los codigos lo subo para ver si estan bien o por ahi me pueden corregir algun que otro error, que tengan buen dia y disculpas y gracias nuevamente

Desconectado tongas321

  • PIC10
  • *
  • Mensajes: 8
Re: Pido ayuda con dos problemas de un final de Programacion
« Respuesta #9 en: 25 de Julio de 2013, 20:50:56 »
Bueno, despues de leer bastante y con una mano de algunos colegas, y con un poco mas de tiempo, creo que entendi el concepto y ahora paso a mostrarles el problema ya echo, a ver si ustedes me dicen si puedo hacer algo mas simple o si contiene algun error.

   list   p=16f84
   include "p16f84.inc"

x   equ   0x0D
y   equ   0x0E
temp   equ   0x0C             ; variable temporal
   org   0x00     
   goto   inicio
   org   0x05

inicio   clrf   portB             ;limpio latch de salida
   bsf   status,RP0      ;entro a banco 1
   clrf   trisB                 ; pongo como salida los Rb
   movlw   b'00111'   
   movwf   trisA         ;pongo Ra0,Ra1,Ra2, como entradas
   bcf   status,RP0         ;vuelvo a banco 0

loop   movf         portA,w        ;leo lo que tengo en el puerto A
   andlw   b'00111'     ;filtro Ra0, Ra1 y Ra2
   movwf   temp
   btfsc         status,Z        ; llega '00000'?
   goto          apagado      ; llega '00000', entonces apago todos o los mantengo apagados
   movlw   b'00001'
   subwf   temp,w
   btfsc      status,Z      ; recibo '00001'?
   goto     parpadeo    ; si, hago la secuencia de parpadeo'
   movlw   b'00010'
   subwf   temp,w
   btfsc           status,Z      ; recibo '00010'?
   goto     DI              ; si, hago la secuencia de derecha a izquierda
   movlw   b'00100'
   subwf   temp,w
   btfsc     status,z       ;recibo '00100'?
   goto     ID              ;si, hago secuencia de izquierda a derecha
   goto     loop

apagado   clrf   portB            ;apago leds
          goto   loop

parpadeo movlw    b'11111111'
         movwf     portB           ;prendo todos los leds
         call               retardo        ; los mantengo por cierto tiempo (100 ms)
         clrf                 portB          ; apago los leds
          call               ratardo
          goto             parpadeo       ;sigue el ciclo indefinidamente ya que no me pide que lo pare

retardo   movlw   .130
           movwf          y
salto1   movlw   .255
           movwf   x
salto2   decfst   x,1
           goto      salto2
           decfst   y,1
                goto     salto1
           return

DI        bcf   status,C         ;limpio el flag de acarreo
           bsf   portB,0          ;enciendo el primer led
           call   retardo          ; lo mantengo por cierto tiempo
volver   rlf   portB,1          ; prendo el led que le sigue
           call   retardo
           btfss   status,C         ; se activa el acarreo?
           goto   volver        ; no, entonces enciendo el otro led
           goto   DI                 ; si se activa el acarreo, entonces empiezo otra vez

ID        bcf   status,C         ; limpio bandera de acarreo
           bsf   portB,7          ;enciendo ultimo led
           call   retardo
volver2   rrf   portB,1           ; enciendo el de la derecha
            call   retardo
                btfss   status,C          ;testeo si la bandera de acarreo se activa
           goto   volver2           ; no se activa, enciendo el led de al lado
            goto   ID                  ; se activa, vuelvo a encender el ultimo


yo creo que esta bien pero por ahi una mirada mas avanzada en el tema me puede dar algun consejo, gracias

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Pido ayuda con dos problemas de un final de Programacion
« Respuesta #10 en: 28 de Julio de 2013, 06:46:07 »
Bien asi ya da mas gusto ayudarte  :lol: :lol:

¿No usais el MPLAB? ¿Como depurais los programas? ¿Y como los simulais? Es que este programa ni siquiera compila da todos estos errores:

Executing: "C:\Program Files\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F84 "examen.asm" /l"examen.lst" /e"examen.err" /d__DEBUG=1
Error[113]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 11 : Symbol not previously defined (portB)
Error[113]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 12 : Symbol not previously defined (status)
Error[113]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 13 : Symbol not previously defined (trisB)
Error[113]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 15 : Symbol not previously defined (trisA)
Error[113]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 16 : Symbol not previously defined (status)
Error[113]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 18 : Symbol not previously defined (portA)
Error[113]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 21 : Symbol not previously defined (status)
Error[113]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 25 : Symbol not previously defined (status)
Error[113]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 29 : Symbol not previously defined (status)
Error[113]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 33 : Symbol not previously defined (status)
Error[113]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 33 : Symbol not previously defined (z)
Error[113]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 37 : Symbol not previously defined (portB)
Error[113]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 41 : Symbol not previously defined (portB)
Error[113]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 43 : Symbol not previously defined (portB)
Error[113]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 44 : Symbol not previously defined (ratardo)
Error[122]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 51 : Illegal opcode (decfst)
Error[113]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 52 : Symbol not previously defined (salto2)
Warning[207] C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 53 : Found label after column 1. (decfst)
Error[122]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 53 : Illegal opcode (y)
Error[113]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 57 : Symbol not previously defined (status)
Error[113]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 58 : Symbol not previously defined (portB)
Error[113]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 60 : Symbol not previously defined (portB)
Error[113]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 62 : Symbol not previously defined (status)
Error[113]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 66 : Symbol not previously defined (status)
Error[113]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 67 : Symbol not previously defined (portB)
Error[113]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 69 : Symbol not previously defined (portB)
Error[113]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 71 : Symbol not previously defined (status)
Error[129]   C:\USERS\TAPI\DESKTOP\PRUEBAS MPLAB\EXAMEN.ASM 75 : Expected (END)

La mayoria son por poner los reg. con minusculas tienes que poner PORTA, PORTB, STATUS etc.

Esta instruccion tambien esta mal "decfst" y le falta el END.

Como ves usando el MPLAB (ademas es gratuito) ya te dice los errores que tienes, despues lo simulas y ves si hace lo que tu quieres o tienes algun fallo. Te debes acostumbrar a poner los FUSES, asi si alguien te lo mira sabe como estan configurados ya que muchas veces el error esta en la configuracin de los FUSES.

En la parte del chequeo es mas simple como te la puse yo, no funcionaba (como bien decia BrunoF) porque le faltaba un "goto MAIN" al final, pero es mucho mas facil de esta manera.

MAIN

    btfsc PORTA,0       ;chequeamos si PORTA,0 esta a 0
    goto    LEDS_PARPADEANTES    ;esta a 1, hace primera secuencia
    btfsc PORTA,1       ;chequeamos si PORTA,1 esta a 0
    goto    DESPLAZA_DI    ;esta a 1, hace desplazar derecha a izquierda
    btfsc PORTA,2       ;chequeamos si PORTA,2 esta a 0
    goto    DESPLAZA_ID    ;esta a 1, hace desplazar izquierda a derecha
           goto        MAIN                             ;si los tres son 0 sigue en MAIN

Bajate el MPLAB de la pagina de Microchip y asi sabras hacer todo esto tu mismo, sin tener que depender de nadie, ahi veras todo lo que hace tu programa paso por paso.

En el almacen del assembler tambien tienes un programa para generar las demoras que te las hace automaticamente.

Desconectado tongas321

  • PIC10
  • *
  • Mensajes: 8
Re: Pido ayuda con dos problemas de un final de Programacion
« Respuesta #11 en: 30 de Julio de 2013, 10:38:57 »
Muchas gracias, estoy bajando el MPLAB, y pronto tendre noticias nuevas

con respecto al programa, yo pensaba que si lo hacia como me me decis (testeando el BIT 0 si es 1 o no), mi problema seria si me llega 00011, el BIT 0 seria 1 pero la secuencia no es la pedida para que parpadee y lo mismo lo hara, no se si se entiende mi idea, y otra pregunta mas

aca

 movlw   b'00001'
   subwf   temp,w
   btfsc      status,Z      ; recibo '00001'?
   goto     parpadeo    ; si, hago la secuencia de parpadeo'
   movlw   b'00010'
   subwf   temp,w
   btfsc           status,Z      ; recibo '00010'?
   goto     DI              ; si, hago la secuencia de derecha a izquierda
   movlw   b'00100'
   subwf   temp,w
   btfsc     status,z       ;recibo '00100'?
   goto     ID              ;si, hago secuencia de izquierda a derecha
   goto     loop

cuando yo por ejemplo a temp, le resto 00001, suponiendo que temp contiene el valor 00011, al restarle el 00001, en temp a mi me queda el valor 00011, o el valor 00010?, ya que de ser de la segunda manera mi programa no funcionaria porque al restar la segunda vez siempre se activaria la secuencia que mueve de izquierda a derecha, muchas gracias por la ayuda

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Pido ayuda con dos problemas de un final de Programacion
« Respuesta #12 en: 30 de Julio de 2013, 10:55:18 »
Muchas gracias, estoy bajando el MPLAB, y pronto tendre noticias nuevas

con respecto al programa, yo pensaba que si lo hacia como me me decis (testeando el BIT 0 si es 1 o no), mi problema seria si me llega 00011, el BIT 0 seria 1 pero la secuencia no es la pedida para que parpadee y lo mismo lo hara, no se si se entiende mi idea, y otra pregunta mas

aca

 movlw   b'00001'
   subwf   temp,w
   btfsc      status,Z      ; recibo '00001'?
   goto     parpadeo    ; si, hago la secuencia de parpadeo'
   movlw   b'00010'
   subwf   temp,w
   btfsc           status,Z      ; recibo '00010'?
   goto     DI              ; si, hago la secuencia de derecha a izquierda
   movlw   b'00100'
   subwf   temp,w
   btfsc     status,z       ;recibo '00100'?
   goto     ID              ;si, hago secuencia de izquierda a derecha
   goto     loop

cuando yo por ejemplo a temp, le resto 00001, suponiendo que temp contiene el valor 00011, al restarle el 00001, en temp a mi me queda el valor 00011, o el valor 00010?, ya que de ser de la segunda manera mi programa no funcionaria porque al restar la segunda vez siempre se activaria la secuencia que mueve de izquierda a derecha, muchas gracias por la ayuda

  Fijate que la instrucción subwf lleva dos parámetros. El primero es el registro al cual se le resta el valor de W y el segundo es donde se almacena el resultado.

  al hacer

Código: ASM
  1. subwf temp,w

el resultado se almacena en w

en cambio, al hacer

Código: ASM
  1. subwf temp,f

el resultado se almacena en el registro temp. f indica que el resultado será almacenado en el mismo registro que se está utilizando en la función.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado tongas321

  • PIC10
  • *
  • Mensajes: 8
Re: Pido ayuda con dos problemas de un final de Programacion
« Respuesta #13 en: 30 de Julio de 2013, 14:13:37 »
muchas gracias! tenia esa duda, entonces dentro de todo estoy encaminado, muchas gracias por todo su apoyo, rindo el jueves y me siento con mucha mas fe que la ultima vez jajaja

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Pido ayuda con dos problemas de un final de Programacion
« Respuesta #14 en: 30 de Julio de 2013, 17:09:02 »

Lo que te dice AngelGris es cierto, si lo haces asi haz caso de lo que te dice.

Citar
con respecto al programa, yo pensaba que si lo hacia como me me decis (testeando el BIT 0 si es 1 o no), mi problema seria si me llega 00011, el BIT 0 seria 1 pero la secuencia no es la pedida para que parpadee y lo mismo lo hara, no se si se entiende mi idea, y otra pregunta mas

Pero es que aqui no se hacen diferentes secuencias si estan dos o tres pulsados, esto ya seria otro planteamiento, te recuerdo como lo has puesto en un principio:

Citar
Realizar un juego de luces (8bits del puerto B) cuya secuencia dependerá de unos interruptores conectados en el puerto A (5 bits del puerto A) que realicen las siguiente acciones:

Si A es 00001 la secuencia de luces del puerto B sera 8 leds parpadeantes
Si A es 00010 los leds realizaran un recorrido de derecha a izquierda
Si A es 00100 los leds realizara un recorrido de izquierda a derecha

Fijate que ahi siempre hay uno solo a 1, se le puede dar prioridad a cualquiera de ellos, se puede hacer que si estan dos haga otra cosa, que si estan los tres haga otra...Se puede hacer lo que se quiera pero el planteamiento era este.


 

anything