Autor Tema: Duda de codificacion  (Leído 3387 veces)

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

Desconectado Mauro75

  • PIC10
  • *
  • Mensajes: 11
Duda de codificacion
« en: 26 de Julio de 2009, 00:35:15 »
Hola a todos queria pedir si me pueden decir como agarrar y restar un numero que esta en un espacio de memoria por otro que esta en otro espacio

Por ejemplo:

;ETIQUETAS
   MEMORIA1 equ 0x0c
   MEMORIA2 equ 0x1c
   RESULTADO equ 0x0e
   pul1 equ 0
   org 0
   BSF STATUS,5
   movlw b'00000001'
   movwf trisb
   movlw b'00000'
   movwf trisa
   bcf status,5
volver
   clrf MEMORIA1
   clrf MEMORIA2
   movlw 05
   movwf MEMORIA1
pregunta
   btfss portb,0
   goto pregunta
   movlw 04
   movwf MEMORIA2
;lugar donde quiero agregar la operacion
   goto volver
   end

Lo que yo quiero hacer es al numero de MEMORIA1 restarlo por el numero que esta en MEMORIA2 y si es 0 que el programa siga. Por favor saquenme la duda y desde ya les agradesco

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Duda de codificacion
« Respuesta #1 en: 26 de Julio de 2009, 01:11:34 »
Seria de la siguiente manera:

Código: ASM
  1. movlw  0x04
  2.         subwf   Memoria1,0      ;
  3.         btfss   STATUS,Z                ;
  4.         goto    ....                   ; No es 0.-
  5.         .....                          ; Si es 0.-

como ves no es necesario utilizar MEMORIA2.

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Mauro75

  • PIC10
  • *
  • Mensajes: 11
Re: Duda de codificacion
« Respuesta #2 en: 26 de Julio de 2009, 01:23:39 »
Muchas gracias lo probe y anduvo sin problemas

Desconectado Mauro75

  • PIC10
  • *
  • Mensajes: 11
Re: Duda de codificacion
« Respuesta #3 en: 28 de Julio de 2009, 18:23:46 »
Hola sigo haciendo el teclado y la ayuda que me dieron el otro dia me sirvio mucho pero ahora tengo otro problema la contraseña es de 4 nnumeros, al primer numero lo toma sin ningun problema y lo guarda pero cuando inserto el segundo numero el programa lo lee pero no lo guarda. Por lo tanto de la manera que esta construido el programa, va a mandar error porque piensa de que el numero no es el solicitado.
Código: [Seleccionar]
;-------ETIQUETAS--------
;-------COLUMNAS---------
h equ 03
i equ 04
j equ 05
;-----FILAS--------------
m equ 00
n equ 01
o equ 02
;-----MEMORIAS-----------
primernumero equ 0x0c
segundonumero equ 0x0d
tercernumero equ 0x0e
cuartonumero equ 0x0f
temporal equ 0x12
pricorrecto equ 0x1c
segcorrecto equ 0x1d
tercorrecto equ 0x1e
cuacorrecto equ 0x1f
;----CONFIGURACION-------
org 0
bsf status,5
movlw b'01111'
movwf trisa
movlw b'00000111'
movwf trisb
movlw 09
movwf primernumero ;GUARDO PRIMER NUMERO EN LA MEMORIA
movlw 02
movwf segundonumero ;GUARDO SEGUNDO NUMERO EN LA MEMORIA
movlw 06
movwf tercernumero ;GUARDO TERCER NUMERO EN LA MEMORIA
movlw 04
movwf cuartonumero ;GUARDO CUARTO NUMERO EN LA MEMORIA
bcf status,5
;-------PROGRAMA------------
;---------BUSQUEDA DEL TECLADO-------
volver
clrf portb
;---COLUMNA H------- PRUEBO CONVINACIONES CON H
bsf portb,h
btfss portb,m
goto sig0
goto compruebo1
sig0
btfss portb,n
goto sig1
goto compruebo4
sig1
btfss portb,o
goto sig2
goto compruebo7
;------COLUMNA I---- PRUEBO CONVINACIONES CON I
sig2
bcf portb,h
bsf portb,i
btfss portb,m
goto sig3
goto compruebo2
sig3
btfss portb,n
goto sig4
goto compruebo5
sig4
btfss portb,o
goto sig5
goto compruebo8
;------COLUMNA J------- PRUEBO CONVINACIONES CON J
sig5
bcf portb,i
bsf portb,j
btfss portb,m
goto sig6
goto compruebo3
sig6
btfss portb,n
goto sig7
goto compruebo6
sig7
btfss portb,o
goto sig8
goto compruebo9
sig8
bcf portb,j
goto volver
;
;
;;--------COMPRUEBO LAS TECLAS PRESIONADAS-----
compruebo1
movlw 01
movwf temporal
subwf primernumero,0
btfss status,z
goto error
goto correcto
goto volver
compruebo2
movlw 02
movwf temporal
subwf primernumero,0
btfss status,z
goto error
goto correcto
goto volver
compruebo3
movlw 03
movwf temporal
subwf primernumero,0
btfss status,z
goto error
goto correcto
goto volver
compruebo4
movlw 04
movwf temporal
subwf primernumero,0
btfss status,z
goto error
goto correcto
goto volver
compruebo5
movlw 05
movwf temporal
subwf primernumero,0
btfss status,z
goto error
goto correcto
goto volver
compruebo6
movlw 06
movwf temporal
subwf primernumero,0
btfss status,z
goto error
goto correcto
goto volver
compruebo7
movlw 07
movwf temporal
subwf primernumero,0
btfss status,z
goto error
goto correcto
goto volver
compruebo8
movlw 08
movwf temporal
subwf primernumero,0
btfss status,z
goto error
goto correcto
goto volver
compruebo9
movlw 09
movwf temporal
subwf primernumero,0
btfss status,z
goto error
goto correcto
goto volver
;-------ERRORES----------
error
subwf segundonumero,0
btfss status,z
goto error2
goto correcto2
goto volver
error2
bsf portb,7
subwf tercernumero,0
btfss status,z
goto error3
goto correcto3
goto volver
error3
bsf portb,7
subwf cuartonumero,0
btfss status,z
goto error4
goto correcto4
goto volver
error4
bsf portb,7
goto volver
;------CORRECTOS--------
correcto
movlw 09
movwf pricorrecto
bsf portb,6
goto volver
correcto2
movlw 02
movwf segcorrecto
bsf portb,6
goto volver
correcto3
movlw 06
movwf tercorrecto
bsf portb,6
goto volver
correcto4
movlw 04
movwf cuacorrecto
bsf porta,4
goto volver
Por favor si me pueden ayudar les agradeceria

Desconectado Chenao

  • PIC18
  • ****
  • Mensajes: 414
Re: Duda de codificacion
« Respuesta #4 en: 29 de Julio de 2009, 22:04:36 »
Saludos

Mauro75 con que micro está programando para poder ayudarte

Un saludos desde Pereira - Colombia
Un saludo desde Pereira - Colombia

Desconectado Mauro75

  • PIC10
  • *
  • Mensajes: 11
Re: Duda de codificacion
« Respuesta #5 en: 30 de Julio de 2009, 09:49:21 »
Estoy programando un 16f84a

Desconectado Chenao

  • PIC18
  • ****
  • Mensajes: 414
Re: Duda de codificacion
« Respuesta #6 en: 30 de Julio de 2009, 15:29:55 »
Saludos

Mauro75 yo te recomendaria que en vez de hacer esto haz primero esto para el banco 1
Citar
bsf status,5

Código: [Seleccionar]
bcf     status,6
         bsf     status,5         ; banco 1

Lo segundo

Citar
movlw b'01111'
   movwf trisa
   movlw b'00000111'
   movwf trisb
   movlw 09
   movwf primernumero   ;GUARDO PRIMER NUMERO EN LA MEMORIA
   movlw 02
   movwf segundonumero   ;GUARDO SEGUNDO NUMERO EN LA MEMORIA
   movlw 06
   movwf tercernumero   ;GUARDO TERCER NUMERO EN LA MEMORIA
   movlw 04
   movwf cuartonumero   ;GUARDO CUARTO NUMERO EN LA MEMORIA

Acá veo un error y es el siguiente los registros primernumero........ cuartonumero estan el banco 0 y no en el banco 1 así que primero cambiate de banco así

Código: [Seleccionar]
movlw b'01111'
movwf trisa
movlw b'00000111'
movwf trisb
                bcf     status,5               ; banco 0
movlw 09
movwf primernumero ;GUARDO PRIMER NUMERO EN LA MEMORIA
movlw 02
movwf segundonumero ;GUARDO SEGUNDO NUMERO EN LA MEMORIA
movlw 06
movwf tercernumero ;GUARDO TERCER NUMERO EN LA MEMORIA
movlw 04
movwf cuartonumero ;GUARDO CUARTO NUMERO EN LA MEMORIA


Yo creo que ese es el errro prueba y me comentas

Un saludo desde Pereira - Colombia
Un saludo desde Pereira - Colombia

Desconectado Mauro75

  • PIC10
  • *
  • Mensajes: 11
Re: Duda de codificacion
« Respuesta #7 en: 30 de Julio de 2009, 16:18:31 »
El tema me parece que esta aca
Código: [Seleccionar]
subwf segundonumero,0
btfss status,z
goto error2
goto correcto2
goto volver
error2
bsf portb,7
subwf tercernumero,0
btfss status,z
goto error3
goto correcto3
goto volver
Para comparar los numeros ingresados con otro que no sea el primero hago eso pero me parece que esta mal porque parece que siempre lo resta por 9 que es el primer numero que se guarda

Desconectado Chenao

  • PIC18
  • ****
  • Mensajes: 414
Re: Duda de codificacion
« Respuesta #8 en: 30 de Julio de 2009, 18:39:29 »
Saludos

Mauro75 tu estas recibiendo los datos por un teclado matricial.

Un saludo desde Pereira - Colombia
Un saludo desde Pereira - Colombia

Desconectado Mauro75

  • PIC10
  • *
  • Mensajes: 11
Re: Duda de codificacion
« Respuesta #9 en: 30 de Julio de 2009, 22:46:13 »
si pero yo hice que por cada tecla se guarde el numero que corresponda.

Desconectado Chenao

  • PIC18
  • ****
  • Mensajes: 414
Re: Duda de codificacion
« Respuesta #10 en: 31 de Julio de 2009, 15:13:49 »
Saludos

Mauro75 listo, espera yo busco un ejemplo que tengo por acá y te comento

Un saludo desde Pereira - Colombia
Un saludo desde Pereira - Colombia

Desconectado Mauro75

  • PIC10
  • *
  • Mensajes: 11
Re: Duda de codificacion
« Respuesta #11 en: 31 de Julio de 2009, 18:47:37 »
Bueno si me lo podrias enviar te agradesco

Desconectado Chenao

  • PIC18
  • ****
  • Mensajes: 414
Re: Duda de codificacion
« Respuesta #12 en: 02 de Agosto de 2009, 14:18:16 »
Saludos

Mauro75 mira tienes varios problemas en tu código, el primero no estas multiplexando bien el teclado, no veo por ningun lado la rutina de tiempo que multiplexa al teclado, haces el barrido pero es muy rapido y entonces el microcontrolador no lo detecta,

El problema del banco es otro ya que los registros están en banco cero y tu estas en el banco 1, nunca se van a cargar con los valores que tu quires.

Acá te pongo un ejemplo de un teclado matricial analiza como se hace el barrido, mira que el valor presionado se muestra en la parte inferior del puerto B, además por cada tecla oprimida hay una rutina de asignación y también hay una rutina de multiplexación lla cual utiliza como tiempo la rutina RETARDO.

Si alguna cosa me comentas. la simulación esta con un PIC16F877 en el proteus version 7.0.

Un saludo desde Pereira - Colombia
Un saludo desde Pereira - Colombia


 

anything