Autor Tema: Como censar el Puerto A del 16f628a  (Leído 7325 veces)

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

Desconectado rnelson

  • PIC12
  • **
  • Mensajes: 53
RE: Como censar el Puerto A del 16f628a
« Respuesta #15 en: 18 de Enero de 2006, 08:39:00 »
RebotadoRebotadoRebotado Hola Bruno.

Hermano con usted si es verdad que hay que quitarse el sombrero, el que no conoce nada de pic entienede tus explicaciones, de verdad felicitaciones y muchas gracias por tu de dicacion.

Estare un par de dias ausente del foro, pero luego regresare porque este proyecto es de una materia de la universidad, y el profesor en cada clase le agrega una dificultad mas, asi que te estare molestando posteriormente ya que cada vez la cosa se hace mas complicada.

Saludos y Felicitaciones nuevamente

Muchas gracias Nelson.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
RE: Como censar el Puerto A del 16f628a
« Respuesta #16 en: 18 de Enero de 2006, 17:54:00 »
Sonrisa GiganteSonrisa GiganteSonrisa GiganteMuchas Gracias por los cumplidos!Sonrisa GiganteSonrisa GiganteSonrisa Gigante Aqui estamos todos para ayudarte en todo lo que podamos.
Exitos.
"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 rnelson

  • PIC12
  • **
  • Mensajes: 53
RE: Como censar el Puerto A del 16f628a
« Respuesta #17 en: 24 de Enero de 2006, 20:04:00 »
Aqui estoy nuevamenteSonrisa GiganteSonrisa GiganteSonrisa Gigante

Esta vez el profesor se paso con lo que pidio, quiere que el circuito este identificado con numero de 8 digitos, pero solo podemos recibir por el Porta un numero de 4 bit, esto quiere decir que se debe enviar digito por digito hasta completar la cifra de 8 numeros.

Por ejemplo:
Supongamos que el circuito tiene un numero de identificacion "12017471" como el el circuito solo puede recibir hasta 16bits por el puerto A (condicion impuesta) pense en recibir numero por numero, es decir:

movf porta,w; leo puerto a
subwf "0001",w; comparo si el valor leido es igual a el almacenado
btfsc STATUS,Z
goto retardo; si no es igual el ciclo entra en un retardo de tal manera que permita  terminar la secuencia y comience de nuevo
movf porta,w; si el valor anterior valor es concuerda con el almacenado se debe ejecutar esta instruccion, repitiendo el mismo ciclo pero comparando con otro valor  
subwf "0010",w
btfsc STATUS,Z
Goto retardo; este retardo debe ser menor a el anterior

y asi sucesivamente hasta leer todos los numero de identificacion, con la diferencia que el untimo numero del identificador es el rele que se va a activar o desactivar.

No se si me explique bien, pero creo que con la rutina que expuse se puede hacer, no se que opinas los crack de esta materia???

Saludos y espero sus opiniones.

Atte. Nelson    

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
RE: Como censar el Puerto A del 16f628a
« Respuesta #18 en: 25 de Enero de 2006, 00:18:00 »
Hola nelson. Lo que planteas no resulta en mayor complicacion, pero decime:
Que estas utilizando para enviar los datos al puertoA? una PC? otro PIC?

Para poder elegir el metodo que pueda resultar mas óptimo en este caso.
El numero de identificacion al que te referis seria una especie de codigo de seguridad de 7 digitos entonces?

Si.Tu programa esta bien orientado si es lo que decis...pero por ahi puede haber metodos mas efectivos. Pero si funciona, vale.

Explica un poquito mas el tema de que sistema estas utilizando para enviarle los datos al PIC, o bien el que pretendes utilizar ahora que el profe te la complico...
Exitos.
"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 BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
RE: Como censar el Puerto A del 16f628a
« Respuesta #19 en: 25 de Enero de 2006, 13:01:00 »
HOla. Bueno..segun estuve leyendo en el datasheet del 8870 vas a necesitar agregar un pin mas.
Ahora vas a tener que detectar la lectura de un "nuevo tono". Por lo que lei, a esto lo hace el pin StD (Steering Delay) del 8870.
Entonces, mi sugerencia es conectar este pin al RA4 del PIC(si es que no lo estas ya utilizando).
ADVERTENCIA! necesitas cambiar el codigo antes de conectarlo. El pin que selecciones para leer el StD debe ser configurado como entrada!!!!...Si no me haces caso vas a quemar algo...

Bueno...lo que comentas:

Se me ocurren en este momento 2 opciones factibles:

1) Esperar a que ingrese un dato. Si en algun momento el digito recibido es distinto al de seguridad, se vuelve todo a cero y se espera nuevamente los 8 digitos. Los retardos que mencionas, no veo buena opcion utilizarlos. Siendo que es discado por DTMF, si un ser humano es el que presiona las teclas y envia los 8 digitos, el tiempo de duracion de los tonos, asi como las pausas entre ellos, varian de manera muy significativa...Un retardo va a provocar,seguramente, desincronizacion.

2)Esperar a que ingresen 8 datos (no compruebo 1 a 1, simplemente los leo y almaceno en memoria hasta haber leido 8)
Luego comparar todos con el codigo de seguridad. Si no coincide, se vuelve todo a cero y se espera nuevamente los 8 digitos.

En mi opinion: el segundo metodo es mejor. Ya que en el primero, un error va a producir un arrastre del codigo.Sin embargo, ese metodo puede mejorarse para que espere su proximo "puntero" de sincronizacion:
dado por la simple formula:

punteros = 8 elevado a la x + 1 (con x perteneciente a los naturales, incluido el ceroSonrisa GiganteSonrisa Gigante


El segundo asegura, en parte(hay bastantes posibilidades(casos de uso) a tener en cuenta), la sincronizacion de 8 datos por comando.

Tambien hay que pensar en un maximo tiempo de espera, en el que, si se excede,
se debe volver todo a cero. Para esto podemos utilizar uno de los Timers del PIC.

Perooo nada complicado. Usted dira que es lo que desea hacer. 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 rnelson

  • PIC12
  • **
  • Mensajes: 53
RE: Como censar el Puerto A del 16f628a
« Respuesta #20 en: 25 de Enero de 2006, 19:36:00 »
hola bruno.

Tienes toda la razon creo que la segunda opcion que planteas es la mas adecuada por el tema de la desincronizacion, y me parece bien utilizar el RA4 para recibir Std y asi saber cuando hay un numero nuevo.

Lo que planteas de almacenar todo en variables y luego comparar,lo podriamos hacer con el ciclo que plantie en el mensaje anterior o hay una mas efectiva de como hacerlo??? por que si es como yo lo planteo habria que crear 8 variables cierto???

Espero Respuesta y gracias nuevamente por tu dedicacion.

Atte. Nelson

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
RE: Como censar el Puerto A del 16f628a
« Respuesta #21 en: 25 de Enero de 2006, 20:02:00 »
Hola Nelson.

Bien.

Se me vienen a la mente muchos metodos. Veo que pareces preocupado por la cantidad de variables a utilizar. Bueno...incluso con solo 1 variable(auxiliar) se puede hacer lo que queres.
Pero,por ahi convenga, para que quede bonito y facil de entender y modificar, crear 4 variables para el codigo de seguridad.Igualmente, si lo queres hacer utilizando una sola variable(y solo para almacenar W temporalmente) se puede hacer tambien...

Entonces: si por ejemplo:
El codigo de seguridad que elegis es:1234567

Lo ubicas en las variables asi:

Digit1y2code = 0x12
Digit3y4code = 0x34
Digit5y6code = 0x56
Digit7code = 0x70 ;el cero no afecta. lo pongo pero puede ser cualquier valor.

Para el programa que compare, hay millones de maneras de hacerlo...
Fijate si se te ocurre algo a vos, y te ayudo.

Exitos..




"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 rnelson

  • PIC12
  • **
  • Mensajes: 53
RE: Como censar el Puerto A del 16f628a
« Respuesta #22 en: 26 de Enero de 2006, 08:16:00 »
Hola Bruno RebotadoRebotado
Ok me parece excelente, ya tengo pensado como hacer las comparaciones, pero ahora me surge una duda, porque las variables digi y code las estas ubicando en la misma direccion??? de verdad que no sabia que eso se podia hacer hasta donde yo se tenian que ser variables en direcciones independientes??, pero bueno te planteo lo que tengo pensado hacer con las comparaciones:

LIST P=16F628A
#INCLUDE<P16F628A.INC>

R0C equ 0CH
R0D equ 0DH
R0E equ 0EH


TMP   equ 0x20
FLAG  equ 0x21
digi1 equ 0x22
code2 equ 0x23
digi3 equ 0x24
code4 equ 0x25
digi5 equ 0x26
code6 equ 0x27
digi7 equ 0x28

ORG 00H
GOTO INICIO

INICIO:
MOVLW .7
MOVWF CMCON
BSF STATUS,5
CLRF TRISB
movlw b"00001111"
movwf TRISA
BCF STATUS,5
CLRF PORTB
CLRF PORTA

MOVLW b"11111111"
MOVWF FLAG

digito1:
BTFSS PORTA,4
Goto digito1
Movf porta, W
movwf Digi1

digito2:
BTFSS PORTA,4
Goto digito2
Movf porta, W
movwf code2

digito3:
BTFSS PORTA,4
Goto digito3
Movf porta, W
movwf Digi3
"
"
"
"
Digito7
BTFSS PORTA,4
Goto digito7
Movf porta, W
movwf digi7

rele:
BTFSS PORTA,4
Goto rele
MOVF PORTA,W
ANDLW 0x0F
CALL TABLA

MOVWF TMP

MOVF Digi1,W
XORWF "0001",W
BTFSC STATUS,Z
Call resetall

MOVF code2,W
XORWF "0010",W
BTFSC STATUS,Z
Call resetall

MOVF Digi3,W
XORWF "0011",W
BTFSC STATUS,Z
Call resetall

MOVF code4,W
XORWF "0100",W
BTFSC STATUS,Z
Call resetall

MOVF Digi5,W
XORWF "0101",W
BTFSC STATUS,Z
Call resetall

MOVF code6,W
XORWF "0110",W
BTFSC STATUS,Z
Call resetall

MOVF Digi7,W
XORWF "0111",W
BTFSC STATUS,Z
Call resetall

Movf tmp,w
ANDWF FLAG,W
XORWF PORTB,F

COMF TMP,W
MOVWF FLAG

GOTO digito1

;****************************
TABLA
ADDWF PCL,1
RETLW .0
RETLW .1
RETLW .2
RETLW .4
RETLW .8
RETLW .16
RETLW .32
RETLW .64
RETLW .128
RETLW .X
RETLW .X
RETLW .X
RETLW .X
RETLW .X
RETLW .X
RETLW .X

;****************************
resetall
clrf digi1
clrf code2
clrf digi3
clrf code4
clrf digi5
clrf code6
clrf digi7

end

No se que te parece??? creo que tiene unos errores, y por eso aun no lo he probado.

Saludos, espero tus comentarios.

Atte. Nelson

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
RE: Como censar el Puerto A del 16f628a
« Respuesta #23 en: 26 de Enero de 2006, 16:00:00 »
Hola de nuevo.
Tu codigo esta bien orientado, y es el metodo mas simple, a costa de desperdiciar bastante memoria FLASH del PIC.Pero igual es una posibilidad, y esta bien planteado, asi que vale!.

No me entendiste lo de las variables...
No utilice la misma posicion de memoria para 2 variables.
Lo que hice fue almacenar 2 numeros del codigo de seguridad por byte(posicion de memoria).
Fijate que si separas un byte en dos grupos de 4 bits(esto se llama nibble) obtenes algo asi:

XXXX XXXX

entonces, cada grupo ,considerandolo por separado, contiene 16 posibilidades(del .0 al .15).
Entonces, si el codigo de seguridad que elegis vos es: 1234567

podes almacenarlo asi:

Digit1y2code   =   0x12

mirando mas cerca a sus nibbles:

0001 0010

Entonces, siguiendo con la misma logica:

Digit3y4code   =   0x34

mirando mas cerca a sus nibbles:

0011 0100

Digit5y6code   =   0x56

mirando mas cerca a sus nibbles:

0101 0110

Digit7   =   0x70

mirando mas cerca a sus nibbles:

0111 0000

Así decidi yo guardar el codigo de seguridad para ahorrar variables.

Errores que veo en tu codigo:
1)

movlw b"00001111"
movwf TRISA

No configuraste a entrada el RA4 como te ADVERTI!!!Ardiendo
Bueno..! Menos mal que no lo probaste! Sino ibas a generar cortocircuitos...

2)
digito1:
BTFSS PORTA,4
Goto digito1
Movf porta, W
movwf Digi1

digito2:
BTFSS PORTA,4
Goto digito2
Movf porta, W
movwf code2

Si entra un alto en RA4, es 99% probable que tu programa no funcione.
Pensemos en lo que sucederia mirando el comportamiento del circuito terminado en "camara lenta".
Entra un alto en RA4 supongamos que el valor que esta enviando el 8870 a los pines RA0-RA3 es el 0110(.6)
Tu programa va a correr como loco.
Digi1 va a valer .22
code2 va a valer .22
Digi3 va a valer .22
....
Incluso rele es muy probable que valga .22

¿Por que .22?
No filtraste el 1 del RA4, entonces estas guardando en realidad 00010110 = PORTA.RA4 ESTA EN ALTO..PENSA QUE ES LA CONDICION QUE IMPUSISTE 2 LINEAS ANTES...
¿Por que en todas las variables el mismo valor?

No pusiste una condicion de STOP. La duracion del puslo del StD, seguramente va a ser mas larga que una pasada de tu codigo.
Lo correcto seria:

digito1:
BTFSS PORTA,4
Goto digito1
Movf porta, W
movwf Digi1

BTFSC   PORTA,4
GOTO   $-1

digito2:
BTFSS PORTA,4
Goto digito2
Movf porta, W
movwf code2

3)

MOVF Digi1,W
XORWF "0001",W
BTFSC STATUS,Z
Call resetall
...
y los 7 restantes semejantes...

LA INSTRUCCION QUE TENES QUE UTILIZAR AHI ES LA XORLW, NO LA XORWF. Estas comparando el codigo ingresado con los registros especiales!Menudo lio!
Fijate :  XORWF  b"0001",W
ES LO MISMO QUE HACER XORWF  TMR0,W

Porque el formato de la instruccion XORWF  es asi:

[Label]      XORWF   registro(file),destino

4)

...
MOVF Digi7,W
XORWF "0111",W
BTFSC STATUS,Z
Call resetall

Movf tmp,w
ANDWF FLAG,W
XORWF PORTB,F

COMF TMP,W
MOVWF FLAG

GOTO digito1

Fijate, por mas que el codigo ingresado sea incorrecto, el programa hace exactamente lo mismo que si fuese correcto...

5)

resetall
clrf digi1
clrf code2
clrf digi3
clrf code4
clrf digi5
clrf code6
clrf digi7


Te falto el return. Si no lo pones, en cuanto la resetall sea llamado, el PIC no hace mas nada hasta que lo resetees o apagues y prendas.

Mira, me tome 5 min y te escribi esto, si te gusta, utilizalo. Lo unico que le faltaria es configurar el timer, y no lo hice porque antes
queria saber a que velocidad estas haciendo oscilar el PIC y de cuanto tiempo te parece que deberia ser el TIMEOUT.
Igualmente apoyo a que sigas utilizando tu codigo, simplemente porque TU lo programaste.



Codigo:

      LIST    P=16F628A
      #INCLUDE<P16F628A.INC>

      ERRORLEVEL    -302

TMP      equ    0x20
FLAG      equ    0x21

Digit1y2code    equ   0x22 ;estos 4 registros DEBEN ubicarse de manera
Digit3y4code    equ   0x23 ;consecutiva en la memoria GPR del PIC.
Digit5y6code    equ   0x24
Digit7      equ   0x25

DIGITOSREST   equ   0x26
AUX      equ   0x27
METHOD      equ   0x28
IGUALES      equ   0x29

      ORG    00H
      GOTO    INICIO

      ORG   04H
      ;AQUI IRIA EL CODIGO SI EL TIMER SE DEBORDA.
         
      ORG   10H
INICIO      MOVLW    .7
      MOVWF   CMCON
      BSF    STATUS,5
      CLRF    TRISB
      MOVLW   b"00011111"
      MOVWF   TRISA
      BCF   STATUS,5
      CLRF   PORTB
      CLRF   PORTA

      MOVLW    b"11111111"
      MOVWF    FLAG
      ;FALTA SETEAR TIMER


      CALL   GETCODE
      CALL   RESETALL


WAITNEXT   BTFSS   PORTA,4
      GOTO   $-1

      ;FALTARIA RESETEAR TIMER ACA.
      MOVF   PORTA,W
      ANDLW   0X0F
      DECFSZ   DIGITOSREST,F
      GOTO   FALTAN

      INCF   METHOD,F

FALTAN      CALL   COMPARA

      BTFSC   PORTA,4
      GOTO   $-1

      GOTO   WAITNEXT


COMPARA      MOVWF   AUX
      MOVF   METHOD,W
      ADDWF   PCL,F
      GOTO   NIBBLEALTO
      GOTO   NIBBLEBAJO
RELE      MOVF   IGUALES,F
      BTFSS   STATUS,Z
      GOTO   DISTINTOS

      MOVF   AUX,W
      CALL   TABLA

      MOVWF    TMP
      ANDWF    FLAG,W
      XORWF    PORTB,F

      COMF    TMP,W
      MOVWF    FLAG

DISTINTOS   CALL   RESETALL
      RETURN

NIBBLEBAJO   MOVLW   0X0F
      ANDWF   INDF,W
      XORWF   AUX,W
      IORWF   IGUALES,F
      INCF   FSR,F
      CLRF   METHOD
      RETURN

NIBBLEALTO   SWAPF   INDF,W         ;DAR VUELTA LOS NIBBLES( NIBBLE = GRUPO DE 4 BITS = MEDIO BYTE)
      ANDLW   0X0F
      XORWF   AUX,W
      IORWF   IGUALES,F
      INCF   METHOD,F
      RETURN

GETCODE      MOVLW   0X12
      MOVWF   Digit1y2code
      MOVLW   0X34
      MOVWF   Digit3y4code
      MOVLW   0X56
      MOVWF   Digit5y6code
      MOVLW   0X70
      MOVWF   Digit7
      RETURN

RESETALL   CLRF   IGUALES
      CLRF   METHOD
      MOVLW   0X22      ;debe ser siempre igual a la posicion de memoria de Digit1y2code
      MOVWF   FSR
      MOVLW   0X08
      MOVWF   DIGITOSREST
      RETURN

TABLA       ADDWF    PCL,1
        RETLW    .0
      RETLW    .1
      RETLW    .2
      RETLW    .4
      RETLW    .8
      RETLW    .16
      RETLW    .32
      RETLW    .64
      RETLW    .128
;      RETLW    .X
;      RETLW    .X
;      RETLW    .X
;      RETLW    .X
;      RETLW    .X
;      RETLW    .X
;      RETLW    .X

      END




Ya con un poco de suerte, dentro de poco tiempo, voy a subir al foro un e-book que estoy escribiendo sobre programacion en ASM para PICs.
En cuanto lo termine, te aviso.
Exitos.
"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 rnelson

  • PIC12
  • **
  • Mensajes: 53
RE: Como censar el Puerto A del 16f628a
« Respuesta #24 en: 27 de Enero de 2006, 09:09:00 »
Hola nuevamente, ya lo que doy es penaLlorandoLlorandoLlorando

Sinceramente Bruno te pido mil disculpa por hacerte perder tanto tiempo, que se que debe ser valiosisimo, y disculpa mi ignorancia de verdad me doy cuenta que de esto no se un carajo, y me tocara hacer un curso o cualquier otra cosa antes de participar porque como te dije antes lo que doy es pena. El software que hice tiene mas errores que instrucciones buenas, y el tuyo hay cosas que no entiendo, pero no importa dejemoslo asi te agradezco sinceramente tu dedicacion que se que lo hicistes si esperar nada a cambio, pero tampoco hay que abusar.

Te felicito por tu sabiduria y te deseo muchos exitos.

Atte. Nelson

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
RE: Como censar el Puerto A del 16f628a
« Respuesta #25 en: 27 de Enero de 2006, 13:49:00 »
Hola.

Cita:

Hola nuevamente, ya lo que doy es pena Sinceramente Bruno te pido mil disculpa por hacerte perder tanto tiempo, que se que debe ser valiosisimo, y disculpa mi ignorancia de verdad me doy cuenta que de esto no se un carajo, y me tocara hacer un curso o cualquier otra cosa antes de participar porque como te dije antes lo que doy es pena.El software que hice tiene mas errores que instrucciones buenas, y el tuyo hay cosas que no entiendo, pero no importa dejemoslo asi te agradezco sinceramente tu dedicacion que se que lo hicistes si esperar nada a cambio, pero tampoco hay que abusar. Te felicito por tu sabiduria y te deseo muchos exitos. Atte. Nelson


No das pena, yo creo que esta muy bien tu codigo. Mira, si estoy ayudandote es porque no tengo problema en gastar mi tiempo en ayudarMuchas risas. Nadie obliga a nada aqui!Sonrisa Gigante
Dime que es lo que no entiendes en mi codigo.
Seguramente no entenderas la funcion COMPARA , y lo del indirect file adressing(FSR e INDF)

COMPARA:

Te dije que estaba guardando dos digitos de codigo de seguridad por cada posicion de memoria:
Ej: tomando el primer registro que contiene los 2 primeros digitos del codigo de seguridad:

digit1y2code = 0x12  = 0001 0010

cuando Std envia el alto, leo el dato, lo filtro (solo me quedo con el valor RA0-RA3),
decremento la cantidad de digitos restantes,e ingreso a la funcion COMPARA.

Aqui, el tono presionado, debe ser comparado con el 1 de Digit1y2Code.
Por lo tanto, el primero tono que ingresa se compara con el nibble alto(0001), el segundo tono con el nibble bajo(0010),el tercero con el nibble alto pero del registro siguiente, que es el digit3y4code, y asi sigue hasta el septimo tono ingresado.

El octavo tono, el del rele, produce que la instruccion DECFSZ DIGITOSREST,F se cumpla, incrementando el valor del METHOD, por lo que METHOD = 2.
Al entrar a la funcion compara con el valor 2, vas a ver que va a ejecutar la rutina de encendido y apago de rele.

Lo del FSR e INDF es asi:

FSR contiene el  valor de la posicion de memoria del registro a acceder indirectamente.
INDF accede y contiene el valor del registro correspondiente al valor que contenga FSR.

Un ejemplo,creo,va a simplificar la comprension:

Codigo:
mi1erReg   equ   0x20
mi2doReg   equ   0x21
mi3erReg   equ   0x22

   org   0x00
   goto   inicio


   0rg   0x05
inicio   movlw   0x80
   movwf   mi1erReg
   movlw   0xa0
   movwf   mi2doReg
   movlw   0xF1
   movwf   mi3erReg


   movlw   0x20      ;cargo el valor 0x20 en w
   movwf   FSR      ;al cargar el valor 0x20 en FSR, automaticamente
            ;INDF contiene el contenido que la posicion de memoria
            ;0x20, que es mi1erReg.
            ;por lo tanto, en este punto, INDF = 0x80.

   incf   INDF,F      ;incremento el valor de la posicion de memoria 0x20
            ;ahora mi1erReg= 0x81 = INDF

   incf   FSR,F      ;FSR = 0x20 +1 = 0x21 que corresponde al registro
            ;mi2doReg
            ;ahora, al hacer esto, INDF contiene ahora el contenido del
            ;registro ubicado en 0x21, entonces INDF = 0xa0

   clrf   INDF      ;limpio el contenido de la posicion de memoria contenida en FSR.
            ;como FSR = 0x21, entonces, al hacer esto, ,mi2doReg = 0x00 ahora.

   end


Si necesitas ayuda, fijate que tengo mi correo en mi perfil. No tengo drama en explicarte ni enseñarte ok? Saludos y que no te venza la depre!!!RollEyesSonrisa GiganteRebotado
"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 rnelson

  • PIC12
  • **
  • Mensajes: 53
RE: Como censar el Puerto A del 16f628a
« Respuesta #26 en: 28 de Enero de 2006, 16:48:00 »
Gracias bruno, lo que sucede es que me da impotencia no entender las cosas, y eso me deprime un poco.

Lo que voy a hacer es a comentar el programa tuyo y te lo paso a tu correo para que me explique las lineas que no entiendo, claro si no tienes problema.

Otra cosa vos no dictais cursos a distancia???? porque de ser asi me anoto y te cancelo algo para que estemos felices todos, y asi no me siento que te estoy utilizando.

Saludos....

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
RE: Como censar el Puerto A del 16f628a
« Respuesta #27 en: 28 de Enero de 2006, 19:58:00 »
Escrito originalmente por rnelson
Gracias bruno, lo que sucede es que me da impotencia no entender las cosas, y eso me deprime un poco.


Mira...nadie nace sabiendo. Es cuestion de aprender! equivocarse forma una gran parte del proceso de aprendizaje.Asi que vamos! arriba el animo!Sonrisa GiganteSonrisa Gigante

Escrito originalmente por rnelson
Lo que voy a hacer es a comentar el programa tuyo y te lo paso a tu correo para que me explique las lineas que no entiendo, claro si no tienes problema.


Dale, lo espero. No tengo ningun problema en explicartelo.
¿Lo probaste al programa?

Escrito originalmente por rnelson
Otra cosa vos no dictais cursos a distancia???? porque de ser asi me anoto y te cancelo algo para que estemos felices todos, y asi no me siento que te estoy utilizando.


No rnelson. Nunca he dado cursos a distancia.
Si he pensado y creo que el verano proximo voy a dar cursos de ASM pero a nivel local.
Doy clases en una Universidad pero de Analisis Matematico y Algebra...(mi pasion)

Sí he ayudado a muchas personas durante dias, meses (e incluso más de un año) a desarrollar los algoritmos que necesiten y explicar via chat y/o correo electronico.

Tengo ahi a un amigo Venezolano que tambien quiere aprender de ASM hace rato y lo viene esquivando...

Tambien estoy escribiendo un e-book sobre este tema, que espero lograr terminar...este año! jaja...

Con respecto al circuiterio electronico ajeno al PIC...soy un newbie aficionado en ese tema, ya que no es lo que estudie ni profundice personalmente...por lo tanto no me meto ni atrevo a meterme mucho...¿por ahora?Sonrisa GiganteSonrisa Gigante

Exitos. Espero tu mail.
"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.


 

anything