Buscar en este blog

martes, 21 de julio de 2009

Whatever My Love by Austin Butler


Ahora les colo la letra de un soundtrack que presentaron en la serie televisiva icarly y que me gusto (version en ingles) la cancion la pueden escuchar en este link de youtube y la letra esta acontinucación. Disfrutenla:

Whatever My Love by Austin Butler:

You're so beautiful
I need the world to see
You're my mirical
Just take the time that you need
to breath
And nevermind the things I've done
You make me feel like I'm the rising sun
You've fade me in my line
And show me its alright and
I know that you're the one
And you'll always be the one
And you'll always be
You'll always be the one
And you'll always be
And you'll always be the one

Leer post completo...

jueves, 9 de julio de 2009

Descargas


Aqui se colocaran los diagramas y algunos codigos que se explican en los post, con sus respectivos enlaces. Si alguno se encuentra roto, favor de decirmelo para checar el enlace, Gracias!. Espero les sea de uilidad.

NOTA: Los codigos Assembler RISC (Ensamblador RISC) esta compilados en el software MPLab. El cual lo pueden descargar de la pagina www.microchip.com, El simulador que ocupo es el famosisimo Proteus y lo pueden descargar de este blog: http://controlpublix.blogspot.com. Estos enlaces son externos a este blog.

Operaciones Lógicas

Ejemplo: AND
Ejemplo: COMF




Leer post completo...

domingo, 28 de junio de 2009

Operaciones Lógicas


Assembler permite las siguientes instrucciones lógicas:
  • AND
  • OR
  • XOR
  • NOT, Negación o Complemento

Sus respectivas instrucciones en lenguaje ensamblador son:

  • ANDWF, para el and
  • IORWF, para el or
  • XORWF, Para el xor
  • COMF, Para el Not


Estas istrucciones reciben uno o dos argumentos (origen, destino), de los cuales solo uno es obligatorio de especificar (origen). Si no se le otorga un destino, lo guarda por defecto en el registro origen.

Ejemplo: hacemos un AND de dos variables (var1 y var2) y lo guardamos en otra variable (var3)


movfw var1 ;Carga en W el contenido de var1
andwf var2,w ;Hace un AND entre el contenido de W y var2
movwf var3 ;el resultado lo guarda en var3


Utilizando el ejemplo Anterior, suponiendo que var1 tiene el valor binario '00001111' y var2 tiene el valor binario '11001110', en resultado seria '00001110'.
El resultado puede verse en este Diagrama de Proteus.



Ejemplo 2: Hacemos un AND entre dos variables (var1 y var2) y queremos que el resultado se quede en una de las variables anteriores, para tener menos variables y menos consumo de recurso. En este ejemplo se puede guardar el resultado tanto en la primera variable como en la segunda.
A continuacion se guardara en la primera variable.


movfw var2 ;Carga en W el contenido de var2
andwf var1 ;AND (w y var1) y guarda el resultado en var1

Ahora se guardara en la segunda variable.


movfw var1 ;Carga en W el contenido de var1
andwf var2 ;AND (w y var2) y guarda el resultado en var2


Ejemplo 3: Hacemos un AND entre 1 variable (var1) y una literal (valor dado x el usuario) y guardamos el resultado en la variable (var1). En este caso se hace uso de una sola variable (var1).


movlw b'01100111' ;Carga en W la literal
andwf var1 ;Hace un AND y guarda el resultado en var1


LAS TRES PRIMERAS INSTRUCCIONES (ANDWF, IORWF, XORWF) FUNCIONAN DE LA MISMA FORMA (COMO EXPLIQUE ARRIBA). ACONTINUACION SE EXPLICA LA INSTRUCCION COMF

La instrucción COMF lo que hace es invertir los bits. Esto es colocar 1 en donde habia 0 y viceversa. Esto no quiere decir que sea una resta, no lo vallan a confundir. Por ejemplo. Si varl tiene el valor decimal 30 (en binario '00011110'), su complemento sera en decimal 225 (en binario '11100001'). La explicacion es la siguiente, su complemento es basado en la cantidad de bits que tiene el registro, el cual es de 8 bits (255 en decimal), su suman bien la cantidad 30 mas la cantidad 225 le da de resultado 255, asi como si hacen un or entre las cantidades binarias '00011110' y '11100001' les da re resultado la cantidad binaria '11111111' lo que es igual a 255 en decimal.

Ejemplo: Sacar el complemento de una variable (var1) y guardalo en una segunda variable (var2)


comf var1,w ;Saca el complemento de var1
movwf var2 ;El resultado es guardado en var2


Aqui dos diagramas que muestran el funcionamiento de la instruccion COMF, la primera muestra solo la variable y la segunda muestra el complemento de la variable.


Muestra el contenido de var1


Muestra el complemento de var1.

Ver Zona de Descargas



Leer post completo...

viernes, 26 de junio de 2009

Instrucciones BTFSS y BTFSC de Ensamblador RISC


La instrucción BTFSS y la instrucción BTFSC son cada una como una simple instrucción de comparación, como lo es un IF en otros lenguajes de programación, a excepción de que los if pueden contener varias instrucciones como en el siguite código de Java:


if (variable=='condición')
{
   instrucción1;
   instrucción2;
   instrucción3;
}
else
{
   instrucción4;
   instrucción5;
   instrucción6;
}


  • La instrucción BTFSS de Assembler RISC verifica que el bit del puerto o variable especificado se encuentre en 1 lógico (alrededor de los 5v), si la respuesta es cierta entonces se salta la siguiente instrucción, mientras que si no lo es, realiza la sig instrucción. Como se muestra en el ejemplo:



 BTFSS PORTA,0 ;"Bit 0" del puerto A esta en 1 lógico (5volts)?
   goto noestaen1 ;No, (esta en 0volts).
   goto siestaen1 ;Si, (esta en 5volts).


  • Por otra parte la instrucción BTFSC de Assembler RISC verifica que el bit tenga un 0 lógico, y de igualmanera, si es cierto, se salta la instrucción siguiente, y si es falsa entonces hace la siguiente.



 BTFSC PORTA,0 ;"Bit 0" del puerto A esta en 0 lógico (0volts)?
   goto noestaen0 ;No, (esta en 5volts).
   goto siestaen0 ;Si, (esta en 0volts).


En resumen uno se encarga de verificar si hay 1 lógico (BTFSS) y el otro verifica si hay un 0 lógico (BTFSC).

NOTA: goto es una instrucción que hace un salto a la etiqueta especificada.

Leer post completo...