Autor Tema: Las dos primeras lineas  (Leído 4522 veces)

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

Desconectado JoseLuis2801

  • PIC16
  • ***
  • Mensajes: 168
Las dos primeras lineas
« en: 04 de Octubre de 2011, 17:37:58 »
He echo mi primer programita en assember, para el PIC 16F886,

Muy sencillo, para aprender un poquillo, y aprender a grabar el PIC con el PICKIT 3.

¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨

   w      EQU   0
   f      EQU   1
   
   PORTB      EQU   06H
   TRISB      EQU   86H
   STATUS      EQU   03H
   OPTION_REG   EQU   81H
   WPUB      EQU   95H
   
   RP0      EQU   05H
   RP1      EQU   06H
   RBPU      EQU   07H


   
                       ORG   00H
         GOTO    INI
         ORG    05H
   
   INI      BSF   STATUS,RP0         ; BANCO 1
         BCF   OPTION_REG,RBPU
         MOVLW   0XF0  
         MOVWF   TRISB
         MOVWF   WPUB            ; R. PULL-UP                  
         BCF   STATUS,RP0      ; BANCO 0
         CLRF    PORTB            ; APAGA LEDS
         
   SWITCH1      BTFSS   PORTB, 5
            GOTO   ENC.2LEDSA   
    SWITCH2      BTFSS   PORTB, 7
            GOTO   ENC.2LEDSB
            GOTO   SWITCH1   

   ENC.2LEDSA      BSF            PORTB,0
            BSF   PORTB,3
            GOTO    FIN
   ENC.2LEDSB      BSF            PORTB,1
            BSF   PORTB,2   
                                                                      


   FIN         NOP
            END         
   
   ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨

Ya esta ensamblado y OK, ahora lo probare paso a paso.

Una cosilla que no entiendo, que sentido tienen las 2 primeras lineas ?



                 w      EQU   0
   f      EQU   1


Gracias

Un saludo

Ok he visto el pdf de 16F866 , y veo que me falta algun registro para el puerto B. Poner a  0 EL registro ANSELH
« Última modificación: 05 de Octubre de 2011, 11:23:10 por JoseLuis2801 »

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: Las dos primeras lineas
« Respuesta #1 en: 05 de Octubre de 2011, 12:47:18 »
W se refiere al "acumulador" o registro donde se realizan las operaciones por ejemplo matematicas, sumas,.....tanto de valores literales como con otros registros internos del pic.

f se refiere a un registro interno del pic donde se guardan valores temporales o direcciones de registros a los que hay que acceder en alguna accion, comando,....

Ahora bien el pic necesita saber donde esta cada cosa y donde ir a buscar o guardar los datos. Entonces para saber esto cada registro, que es lo que son w y f, lo mismo que los de las lineas siguientes como port b, trisb,  .......  se utiliza el comando "EQU"
Luego para saber donde estan cada uno tiene una direccion o lugar determinado eso es lo que se indica con la directiva, ejemplo, equ 0, que es la direccion 0 para el w; la direccion 1 para el f; la 06 en hexadecimal para el portb y asi para el resto.
Todo esto lo puedes ver en el respectivo datasheet del pic que utilices en la zona de pagina de memoria. Podrás ver todas las direcciones de todos los registros de pic.

Cuando avances mas, te daras cuenta que escribir todos esos datos es tedioso, al menos de teclear, y se puede utilizar la directiva: "include con el nombre del pic utilizado.inc" que es donde se encuentran ya escritos todos esos valores. De esa forma te evitas incluso errores de tecleo.

F.

Todos los días se aprende algo nuevo.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Las dos primeras lineas
« Respuesta #2 en: 05 de Octubre de 2011, 13:11:45 »
Disculpas Fer_TACA, pero aquí no se utiliza para indicar la dirección del registro sino para indicar donde se va a guardar el resultado de una operación, en W o en F. Por ejemplo al hacer ADDWF Registro,Destino  ;-)

Más detalles en ASM desde Cero


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

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: Las dos primeras lineas
« Respuesta #3 en: 05 de Octubre de 2011, 13:22:49 »
Upps111  :oops:

he perdido la nocion del ASM, tienes razon w y f no tienen direccion, es como dices donde se guradan los datos o resultados de las operaciones.
El resto si sirve como está
Todos los días se aprende algo nuevo.

Desconectado JoseLuis2801

  • PIC16
  • ***
  • Mensajes: 168
Re: Las dos primeras lineas
« Respuesta #4 en: 05 de Octubre de 2011, 16:29:19 »
Entendido Suky, si el resultado es 0 va al acumulador, si es 1, al registro. Claro, he quitado esas dos lineas y se me seguia ejecutando bien, pero, al no haber ese tipo de comando-operación, no eran necesarios.

Debo hacerte caso, y tengo que ver el tuto. :shock:

XQ quiero ir muy rapido me parece a mí.

Muchas gracias

Un saludo ;-)

Desconectado fabianjsm

  • PIC18
  • ****
  • Mensajes: 255
    • fabianjsm is on twitter
Re: Las dos primeras lineas
« Respuesta #5 en: 06 de Octubre de 2011, 00:59:59 »
Como dice Suky, en este caso no son direcciones. La directiva EQU (inicial de equivalent: equivalente) te permite definir un equivalente numérico. Además contribuye a que el código sea más legible. Por ejemplo:
Código: ASM
  1. ADDWF 5, 1
Sería más legible si decimos que PORTA equivale a 5, W equivale a 1, y luego:
Código: ASM
  1. ADDWF PORTA, W
En este sentido, como menciono Fer_TACA, es muy útil la directiva include: Es mejor conocer los registros por sus nombres y luego utilizar un archivo de cabecera donde ya están definidos, así no tenemos que preocuparnos, por ejemplo, si PORTA equivale realmente a 5 para el micro que estemos utilizando.
@fabianjsm is on twitter

Desconectado JoseLuis2801

  • PIC16
  • ***
  • Mensajes: 168
Re: Las dos primeras lineas
« Respuesta #6 en: 06 de Octubre de 2011, 08:08:57 »
Ok, ya veo lo del destino, si es 0 el resultado va al acumulador, y si es uno, al otro registro.

Por supuesto, utilizaré la directiva include, entiendo, que define todos los regitros el PIC utilizado, y de todos los bancos de memo.

Un saludo

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: Las dos primeras lineas
« Respuesta #7 en: 06 de Octubre de 2011, 14:22:46 »
Exacto eso lo puedes ver en los ejemplos del tuto y en los ejemplos que hay en el propio direcorio del ASM
Todos los días se aprende algo nuevo.

Desconectado JoseLuis2801

  • PIC16
  • ***
  • Mensajes: 168
Re: Las dos primeras lineas
« Respuesta #8 en: 07 de Octubre de 2011, 08:25:13 »
Si si ya me he leido la 1 pag. de Assembler desde 0, y lo he visto, la cosa es que me sabia casi todo, pero bueno, no esta de mas recordar, ademas siempre hay algo nuevo que aprender, como esto de los destinos.
Hoy me leeré la pag. 2. ;-)

Posteriormente me leeré los comentarios al tuto
Algo recordaba del assembler, de cuando el Z80 Zilog del Spectrum, pero de eso hace ya tela de años............. :D, unas 4 decadas :shock:

Y es que los PIcs me encantan, eso de tener un pequeño ordenador en un CHIP, es fantastico para pequeñas y especificas aplicaciones.

Un saludo
« Última modificación: 07 de Octubre de 2011, 08:33:18 por JoseLuis2801 »

Desconectado fabianjsm

  • PIC18
  • ****
  • Mensajes: 255
    • fabianjsm is on twitter
Re: Las dos primeras lineas
« Respuesta #9 en: 07 de Octubre de 2011, 09:44:21 »
@fabianjsm is on twitter