TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: JoseLuis2801 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
-
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.
-
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 (http://www.todopic.com.ar/foros/index.php?topic=23623.0)
Saludos!
-
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á
-
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 ;-)
-
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:
Sería más legible si decimos que PORTA equivale a 5, W equivale a 1, y luego:
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.
-
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
-
Exacto eso lo puedes ver en los ejemplos del tuto y en los ejemplos que hay en el propio direcorio del ASM
-
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
-
...Z80 Zilog...
Inolvidable :cry: