<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>MicroPIC</title>
	<atom:link href="http://micropic.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://micropic.wordpress.com</link>
	<description>Tutoriales y Proyectos con Microcontroladores PIC</description>
	<lastBuildDate>Sun, 05 Oct 2008 15:46:53 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='micropic.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/1d21e30c68a54806b77bd297c0ecf116?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>MicroPIC</title>
		<link>http://micropic.wordpress.com</link>
	</image>
			<item>
		<title>Digitales-desde-cero</title>
		<link>http://micropic.wordpress.com/2008/05/05/digitales-desde-cero/</link>
		<comments>http://micropic.wordpress.com/2008/05/05/digitales-desde-cero/#comments</comments>
		<pubDate>Tue, 06 May 2008 03:02:28 +0000</pubDate>
		<dc:creator>micropic</dc:creator>
				<category><![CDATA[Sistemas Digitales]]></category>

		<guid isPermaLink="false">http://micropic.wordpress.com/?p=99</guid>
		<description><![CDATA[Un nuevo proyecto que tengo entre manos es la creación de un libro-manual de sistemas digitales para todos aquellos nuevos en el mundo digital, donde se pueda aprender sobre compuertas lógicas y álgebra de Boole, lógica combinatoria y secuencial e incluso, siendo un poco ambicioso, sobre diseño de microprocesadores.
Como explico en la página del proyecto, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=micropic.wordpress.com&blog=672997&post=99&subd=micropic&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Un nuevo proyecto que tengo entre manos es la creación de un libro-manual de sistemas digitales para todos aquellos nuevos en el mundo digital, donde se pueda aprender sobre compuertas lógicas y álgebra de Boole, lógica combinatoria y secuencial e incluso, siendo un poco ambicioso, sobre diseño de microprocesadores.</p>
<p>Como explico en la página del proyecto, <a href="http://digitalesdesdecero.googlepages.com">Digitales-desde-cero</a> aún se encuentra en una etapa (mucho) muy temprana de su desarrollo pero bueno, siempre es bueno decir en voz alta este tipo de proyectos porque así ya se tiene la presión de saber que ya se habló de mas y que ahora más vale presentar algun producto y mucho mejor si es un buen producto que eso espero que sea.</p>
<p>Bueno, ya está dicho, todo aquel que quiera aprender sobre sistemas digitales dentro de algún tiempo podrá hacerlo, aunque antes de que el libro este terminado iré publicando algunas partes y capítulos, de cualquier manera no publicaré ninguno muy pronto pero aqui queda la promesa de publicar un libro.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/micropic.wordpress.com/99/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/micropic.wordpress.com/99/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/micropic.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/micropic.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/micropic.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/micropic.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/micropic.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/micropic.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/micropic.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/micropic.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/micropic.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/micropic.wordpress.com/99/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=micropic.wordpress.com&blog=672997&post=99&subd=micropic&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://micropic.wordpress.com/2008/05/05/digitales-desde-cero/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f692212d8c3bca2ea0d6028582097e0e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">micropic</media:title>
		</media:content>
	</item>
		<item>
		<title>Usando Macros</title>
		<link>http://micropic.wordpress.com/2008/03/18/usando-macros/</link>
		<comments>http://micropic.wordpress.com/2008/03/18/usando-macros/#comments</comments>
		<pubDate>Wed, 19 Mar 2008 00:23:44 +0000</pubDate>
		<dc:creator>micropic</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://micropic.wordpress.com/?p=98</guid>
		<description><![CDATA[El uso de subrutinas lo vimos por primera vez en el tutorial Encendiendo y apagando LED&#8217;s&#8230; ahora con retardo! Ahí se vio la manera en la que se llama y se regresa de las subrutinas. También se dijo que el empleo de subrutinas hacía el código más entendible, otra forma de hacer el código entendible [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=micropic.wordpress.com&blog=672997&post=98&subd=micropic&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>El uso de subrutinas lo vimos por primera vez en el tutorial <a href="http://micropic.wordpress.com/2007/02/02/tutorial-1-led%e2%80%99s-segunda-parte/" target="_blank">Encendiendo y apagando LED&#8217;s&#8230; ahora con retardo!</a> Ahí se vio la manera en la que se llama y se regresa de las subrutinas. También se dijo que el empleo de subrutinas hacía el código más entendible, otra forma de hacer el código entendible es mediante el uso de Macros.</p>
<p>Las macros son de alguna forma similares a las subrutinas ya que son conjuntos de intrucciones que se ejecutan de manera secuencial mediante una llamada a una orden de ejecución, sin embargo tiene diferencias muy significativas. Mientras que una subrutina aparece una sola vez en el código, cada vez que se &#8220;invoca&#8221; una macro se inserta el código de esta en el programa. Otra diferencia es que a una macro se le pueden especificar parámetros de entrada y a una subrutina no.</p>
<p><span id="more-98"></span>Una macro se define con la directiva macro especificando el nombre de la macro y los parámetros de entrada, si existieran, de la siguiente manera:<br />
<code><font color="#993366">nombre_macro    </font><font color="#000080"><b>macro</b></font> <font color="#993366"><i>par1, par2,...</i><br />
instrucción<br />
instrucción<br />
...</font><br />
<font color="#000080"><b>                             endm</b></font></code></p>
<p>En el programa la definición de la macro debe aparecer antes de la línea en la que se llama la macro. Cuanto mientras se ejecuta el programa se encuentra una macro esta es reemplazada por el conjunto de instrucciones que aparecen en la definición de la macro. Una manera de asegurar eso es escribiendo las macros en un archivo include (.INC) y llamando a este include al momento de llamar el include de las definiciones del micro.</p>
<p>Las macros pueden ahorrar mucho tiempo de escritura ya que si hay partes del código que se repiten mucho se pueden escribir en una macro y ese código se insertaría de manera automática al llamar la macro. Veamos esto con un ejemplo. Los cambios de banco pueden ser muy repetitivos asi que si se quiere cambiar de banco se podrían definir unas macros de la siguiente manera:</p>
<p><code><font color="#993366">banco0    </font><font color="#000080">macro                            <font color="#008000">            ; Definición de macro banco0</font></font><br />
<font color="#000080">       bcf</font><font color="#993366">    STATUS<font color="#808080">,</font>RP0</font> <font color="#008000">; Bit RP0=0 = Banco 0</font><br />
<font color="#000080">       endm               <font color="#008000">             ; Termina definición de macro</font><br />
</font></code></p>
<p><code><font color="#993366">banco1</font>    <font color="#000080">macro                        </font><font color="#008000">; Definición de macro banco1</font><br />
<font color="#000080">       bsf    </font><font color="#993366">STATUS<font color="#808080">,</font>RP0</font>  <font color="#008000">; Bit RP0=1 = Banco 1</font><br />
<font color="#000080">       endm             </font></code><code><font color="#000080">               <font color="#008000">; Termina definición de macro</font></font></code></p>
<p>Así si en el programa aparece el macro <i>banco1</i> este será sustituido por el código <i>bcf STATUS,RP0</i>.</p>
<p>Con ese ejemplo tal vez no queda muy claro la ventaja de usar una macro ya que la macro solo contiene una instrucción y no utiliza parámetros, pero ahora que definimos esos macros definamos otro que designe un bit de un puerto como salida:</p>
<p><code><font color="#993366">SALIDA</font><font color="#000080">    macro</font>    <font color="#993366">par1<font color="#808080">,</font> par2</font>     <font color="#008000">; Definición de macro</font><br />
<font color="#993366">       banco1</font>             <font color="#008000">             ; Macro para cambiar al banco 1</font><br />
<font color="#000080">       bcf</font>        <font color="#993366">par1<font color="#808080">,</font> par2</font>  <font color="#008000">; Bit dado como salida</font><br />
<font color="#993366">       banco0             </font>             <font color="#008000">; Macro para cambiar al banco 0</font><br />
<font color="#000080">       endm                </font></code><code><font color="#000080"><font color="#008000">; Termina definición de macro</font></font></code></p>
<p>Para utilizar ese macro que contiene parámetros simplemente se llama de la siguiente manera:</p>
<p><code><font color="#993366">       SALIDA   TRISA</font><font color="#808080">,</font>3</code></p>
<p>Al llamara esa macro el primer parámetro dado <i>TRISA</i> toma el lugar de <i>par1</i> mientras que el parámetro <i>3</i>, el lugar de <i>par2</i>  generando el siguiente código:</p>
<p><code><font color="#000080">    bsf</font>    <font color="#993366">STATUS<font color="#808080">,</font>RP0</font> <font color="#008000">; RP0 = 1 = Banco 1</font><br />
<font color="#000080">    bcf</font>    <font color="#993366">TRISA</font><font color="#808080">,</font>3    <font color="#008000">; Bit 3 de Puerto A como entrada</font><br />
<font color="#000080">    bcf</font>    <font color="#993366">STATUS<font color="#808080">,</font>RP0</font>    <font color="#008000">; RP0 = 0 = Banco 0</font></code></p>
<p>Como se puede ver las macros hacen muy la escritura del código y al poder manejar parámetros proveen un medio para simplificar muchas operaciones.</p>
<p>Utilizando esos macros supongamos que realizamos un programa que ponga el alto el valor del bit 3 del puerto B. El código completo del programa sería:</p>
<p><code><font color="#000080">    list    </font><font color="#993366">p</font><font color="#808080">=</font>16f628a<br />
<font color="#000080">    include</font> 	<font color="#993366">p16f628a.inc</font><br />
<font color="#000080">    include</font> 	<font color="#993366">macros.inc</font>  	<font color="#008000">; Archivo con la definición de las macros</font></code></p>
<p><code><font color="#000080">    org     0x00</font><br />
<font color="#000080">    goto</font>    <font color="#993366">INICIO</font></code></p>
<p><code><font color="#000080">    org	    0x05</font><br />
<font color="#993366">INICIO</font><br />
<font color="#993366">    SALIDA   TRISB</font><font color="#808080">,</font>3 <font color="#008000">    ; Llamada a macro salida</font><br />
<font color="#000080">    bsf         </font><font color="#993366">PORTB</font><font color="#808080">,</font>3     <font color="#008000">; Bit 3 del puerto B en alto</font></code></p>
<p><code><font color="#000080">    goto	      <font color="#808080">$       </font></font><font color="#008000">; Ciclo infinito</font></code></p>
<p><font color="#000080"><code>    end</code></font></p>
<p>El programa principal es muy sencillo y legible. El archivo macros.inc donde se definen las macros quedaría así:</p>
<p><code><font color="#993366">banco0    </font><font color="#000080">macro                            <font color="#008000">            ; Definición de macro banco0</font></font><br />
<font color="#000080">       bcf</font><font color="#993366">    STATUS<font color="#808080">,</font>RP0</font> <font color="#008000">; Bit RP0=0 = Banco 0</font><br />
<font color="#000080">       endm                            <font color="#008000">; Termina definición de macro</font><br />
</font></code></p>
<p><code><font color="#993366">banco1</font>    <font color="#000080">macro                        </font><font color="#008000">; Definición de macro banco1</font><br />
<font color="#000080">       bsf</font>    <font color="#993366">STATUS<font color="#808080">,</font>RP0</font>  <font color="#008000">; Bit RP0=1 = Banco 1</font><br />
<font color="#000080">       endm</font></code><code><font color="#000080">                            <font color="#008000">; Termina definición de macro</font></font></code></p>
<p><code><font color="#993366">SALIDA</font>    <font color="#000080">macro</font>  <font color="#993366">par1, par2</font> 	<font color="#008000">; Definición de macro SALIDA</font><br />
<font color="#993366">       banco1            </font><font color="#008000">; Llamada a macro banco1</font><br />
<font color="#000080">       bcf    </font><font color="#993366">par1<font color="#808080">,</font> par2 </font>	<font color="#008000">; Bit dado como salida</font><br />
<font color="#993366">       banco0            </font><font color="#008000">; Llamada a macro banco0</font><br />
<font color="#000080">       endm               </font><font color="#008000">             ; Termina definición de macro</font></code></p>
<p>Teniendo en cuenta las dos diferencias mencionadas podemos entonces preguntarnos ¿son mejores las macros o las subrutinas?. La respuesta final la debe dar cada quien ya que dependiendo del caso se debería usar una o la otra.</p>
<p>Más información sobre macros se puede encontrar en el <a href="http://www.mikroe.com/en/books/picbook/5_chapter.htm" target="_blank">quinto capítulo</a> de  <a href="http://www.mikroe.com/en/books/picbook/0_Uvod.htm" target="_blank">PIC microcontrollers, for beginners too</a>, de Nebojsa Matic.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/micropic.wordpress.com/98/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/micropic.wordpress.com/98/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/micropic.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/micropic.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/micropic.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/micropic.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/micropic.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/micropic.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/micropic.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/micropic.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/micropic.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/micropic.wordpress.com/98/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=micropic.wordpress.com&blog=672997&post=98&subd=micropic&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://micropic.wordpress.com/2008/03/18/usando-macros/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f692212d8c3bca2ea0d6028582097e0e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">micropic</media:title>
		</media:content>
	</item>
		<item>
		<title>Multiplicación mediante el algoritmo de Booth</title>
		<link>http://micropic.wordpress.com/2008/02/02/multiplicacion-mediante-el-algoritmo-de-booth/</link>
		<comments>http://micropic.wordpress.com/2008/02/02/multiplicacion-mediante-el-algoritmo-de-booth/#comments</comments>
		<pubDate>Sat, 02 Feb 2008 18:27:32 +0000</pubDate>
		<dc:creator>micropic</dc:creator>
				<category><![CDATA[Rutinas]]></category>

		<guid isPermaLink="false">http://micropic.wordpress.com/?p=96</guid>
		<description><![CDATA[El algoritmo de booth es un algoritmo que sirve para multiplicar (y dividir) números binarios con signo de manera rápida y sencilla en complemento a dos. Aqui explico de manera detallada el funcionamiento de ese algoritmo y muestro una implementacion del mismo para microcontroladores PIC.
La manera en que se representan los números binarios negativos es [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=micropic.wordpress.com&blog=672997&post=96&subd=micropic&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>El <em><strong>algoritmo de booth</strong></em> es un algoritmo que sirve para multiplicar (y dividir) números binarios con signo de manera rápida y sencilla <em>en complemento a dos</em>. Aqui explico de manera detallada el funcionamiento de ese algoritmo y muestro una implementacion del mismo para microcontroladores PIC.</p>
<p><span id="more-96"></span>La manera en que se representan los números binarios negativos es mediante su complemento a dos. El complemento a uno consiste en invertir el valor de cada bit, esto es que si se tiene el número 5 binario <em>b&#8217;00000101&#8242;</em> su complemento a uno sería <em>b&#8217;11111010&#8242;</em>. Una vez teniendo el complemento a 1 para obtener el complemento a dos simplemente se le debe sumar un 1, asi que se tiene <em>b&#8217;11111010 + 1&#8242;</em> de modo que <strong><em>el complemento a dos del número 5 binario es b&#8217;11111011&#8242;</em></strong>.</p>
<p>Ese es un dato muy importante ya que de ese modo se representan los números binarios negativos y el complemento a dos es parte del algoritmo de multiplicación de Booth. También es importante explicar que utilizando números de 8 bits el número mayor que se puede representar en complemento a dos es <strong><em>127</em></strong> y <strong><em>-127</em></strong> que en binario son <strong><em>b&#8217;01111111&#8242;</em></strong> y <strong><em>b&#8217;1000001&#8242;</em></strong> respectivamente.</p>
<p>En ensamblador <em>MPASM</em> la manera de obtener el complemento a dos de un número es:<em><br />
<code>comf    NUM,f<br />
incf    NUM,w<br />
movwf    NUMC2</code></em></p>
<p>donde <em>NUM</em> es el registro en el que se encuentra el número que se quiere pasar a complemento a dos y <em>NUMC2</em> es el registro donde se guarda el complemento a dos del número. Hasta ahí todo bien, ahora pasemos al algorítmo.</p>
<p>Supongamos que queremos multiplicar dos números de 8 bits, digamos que queremos multiplicar 5*(-6) donde 5 es el <em>multiplicando</em> y -6 es el <em>multiplicador</em>, con esos datos se forman 3 arreglos distintos de la siguiente manera:</p>
<p><em>A=0000 0101 0000 0000 0<br />
S=1111 1010 0000 0000 0<br />
P=0000 0000 1111 1010 0</em></p>
<p>El <strong><em>byte superior</em></strong> de <strong><em>A</em></strong> está formado por el <strong><em>multiplicando</em></strong>, el <strong><em>siguiente byte</em></strong> se forma con <strong><em>ceros</em></strong> y se agrega un <strong><em>bit extra</em></strong> que también es <strong><em>0</em></strong>.</p>
<p>El <strong><em>byte superior</em></strong> de <strong><em>S</em></strong> está formado por el <strong><em>complemento a dos del multiplicando</em></strong>, el <strong><em>siguiente byte</em></strong> al igual que el caso anterior se forma con <strong><em>ceros</em></strong> y al final se agrega un <strong><em>bit extra</em></strong> que es <strong><em>0</em></strong>.</p>
<p>El <strong><em>byte superior</em></strong> de <strong><em>P</em></strong> está formado por <strong><em>ceros</em></strong>, el <em><strong>siguiente byte</strong></em> es el valor del <strong><em>multiplicador</em></strong> y por ultimo se tiene el <strong><em>bit extra</em></strong>.</p>
<p>Se puede observar que los tres números formados son de 17 bits cuando los números que se van a multiplicar son de 8 de modo que los números formados siempre serán de <em>N+1 bits</em>, siendo <em>N</em> el <em>número de bits de los factores</em>.</p>
<p>Sigamos entonces. Este algorítmo consiste en <em><strong>comparar los últimos dos digitos del número P</strong></em> y dependiendo de el caso que sea <em><strong>realizar un suma o no realizar ninguna acción</strong></em>. Luego de evaluar cada caso se debe <strong><em>realizar un corrimiento a la derecha</em></strong>, <em>manteniendo el valor del bit más significativo y desechando el valor del bit menos significativo</em>. Los cuatro casos que se tienen se pueden ver en la siguiente tabla:</p>
<p><em>0 0 -&gt; No realizar ninguna acción<br />
0 1 -&gt; P = P + A<br />
1 0 -&gt; P = P + S<br />
1 1 -&gt; No realizar ninguna acción</em></p>
<p>Veamos el algoritmo paso a paso usando los numeros <em>A</em>, <em>S</em> y <em>P</em> de arriba. Primero tenemos el numero P original:</p>
<p><em>0000 0000 1111 101[0 0] <strong>P</strong></em></p>
<p>Se comparan los ultimos dos digitos [0 0] con los cuatro casos posibles y se ve que no se debe realizar ninguna accion por lo que en la primer iteracion simplemente se realiza un corrimiento a la derecha:</p>
<p><em>1.<br />
0000 0000 0111 110[1 0] <strong>-&gt;</strong></em></p>
<p>Ahora los ultimos dos digitos [1 0] indican que se debe realizar la suma P=P+S y despues el corrimiento a la derecha:</p>
<p><em>2.<br />
1111 1011 0111 110[1 0] <strong>P=P+S</strong></em><br />
<em>1111 1101 1011 111[0 1] <strong>-&gt;</strong></em></p>
<p>Despues del corrimiento los ultimos dos digitos son [0 1] por lo que se debe realizar la suma P=P+A y despues el corrimiento a la derecha:</p>
<p><em>3.<br />
0000 0010 1011 111[0 1] <strong>P=P+A</strong></em><em><br />
0000 0001 0101 111[1 0] <strong>-&gt;</strong></em></p>
<p>Ahora los ultimos dos digitos son [1 0], se realiza la suma P=P+S y despues el corrimiento a la derecha:<em><br />
</em></p>
<p><em>4.<br />
1111 1100 0101 111[1 0] <strong>P=P+S</strong><br />
1111 1110 0010 111[1 1] <strong>-&gt;</strong></em></p>
<p>Los ultimos dos digitos [1 1] al igual que cuando fueron [0 0] indican que solo se debe realizar el corrimiento a la derecha:</p>
<p><em>5.<br />
1111 1111 0001 011[1 1] <strong>-&gt;</strong></em></p>
<p>De nuevo se tiene [1 1] por lo que se realiza unicamente el corrimiento y en lo sucesivo se tendra siempre el mismo caso:</p>
<p><em>6. 1111 1111 1000 101[1 1] <strong>-&gt;</strong><br />
7. 1111 1111 1100 010[1 1] <strong>-&gt;</strong><br />
8. 1111 1111 1110 0010 [1] <strong>-&gt;</strong></em></p>
<p>Despues de <em>8 iteraciones</em> termina el algoritmo, se desecha el bit menos significativo (el bit extra) y se obtiene el producto de la multiplicacion:<br />
<em>5*(-6) = 1111 1111 1110 0010 = -30</em></p>
<p>Cabe mencionar que el numero de iteraciones que realiza el algoritmo es igual <strong><em>N</em></strong>, que es el <strong><em>numero de bits de los factores</em></strong> y el resultado final es igual a 2N, en este caso se multiplican factores de 8 bits por lo que el resultado final es de 16.</p>
<p>Esta es la manera en la que funciona el algoritmo. Solamente hay que tener en cuenta que al realizar los corrimientos a la derecha se debe mantener siempre el bit mas significativo, esto es que si se tiene &#8216;1101&#8242; y se realiza el corrimiento el resultado sera &#8216;1110&#8242; y no &#8216;0110&#8242;.</p>
<p><strong>Implementacion del algoritmo de Booth en MPASM</strong></p>
<p>Aplicando los pasos que acabo de explicar realice una implementacion del algoritmo de Booth para la multiplicacion en MPASM para realizar multiplicaciones de numeros signados de 8 bits en microcontroladores PIC 16F.</p>
<p>El algoritmo implementado sigue los mismos pasos descritos, compara  los ultimos dos digitos del factor P y realiza alguna de las acciones posibles para despues llevar acabo el corrimiento. Como mencione en un principio el algoritmo solo puede multiplicar numeros que van del <em>-127 al 127</em> y el resultado lo da a traves de los registros <em>RESULTADOH:RESULTADOL</em>.</p>
<p>Para poder utilizar esta rutina <em>(multibooth)</em> se deben declarar los registros <em>A1, A2, A3, S1, S2, S3, P1, P2, P3, MULTIPLICANDO, MULTIPLICADOR, RESULTADOH, RESULTADOL y CONT</em>.</p>
<p>En los registros <em>RESULTADOH:RESULTADOL</em> se muestra el valor positivo del resultado y <em>si este fuera negativo se activa la bandera SIGNO</em> (bit 0 del registro A3) para indicar que se trata de un numero negativo.</p>
<p>Una vez explicado el algoritmo creo que no hay necesidad de explicar la implementacion de la rutina aunque si asi fuera siempre estan los comentarios para exponer y aclarar las dudas.</p>
<p>Espero que esto les sirva.</p>
<p>Descargar codigo: <a title="multiplicacion-mediante-el-algoritmo-de-booth.pdf" href="http://micropic.files.wordpress.com/2008/02/multiplicacion-mediante-el-algoritmo-de-booth.pdf">Multiplicacion mediante el algoritmo de Booth</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/micropic.wordpress.com/96/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/micropic.wordpress.com/96/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/micropic.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/micropic.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/micropic.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/micropic.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/micropic.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/micropic.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/micropic.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/micropic.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/micropic.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/micropic.wordpress.com/96/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=micropic.wordpress.com&blog=672997&post=96&subd=micropic&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://micropic.wordpress.com/2008/02/02/multiplicacion-mediante-el-algoritmo-de-booth/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f692212d8c3bca2ea0d6028582097e0e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">micropic</media:title>
		</media:content>
	</item>
		<item>
		<title>Cumplimos un a&#241;o</title>
		<link>http://micropic.wordpress.com/2008/01/10/cumplimos-un-ao/</link>
		<comments>http://micropic.wordpress.com/2008/01/10/cumplimos-un-ao/#comments</comments>
		<pubDate>Thu, 10 Jan 2008 16:51:24 +0000</pubDate>
		<dc:creator>micropic</dc:creator>
				<category><![CDATA[MicroPIC]]></category>

		<guid isPermaLink="false">http://micropic.wordpress.com/2008/01/10/cumplimos-un-ao/</guid>
		<description><![CDATA[Hace un año ya que este blog le decía por primera vez hola al mundo y lo hacía con la intención de convertirse en un lugar de referencia para todo aquel que quisiera comenzar en este mundo de los microcontroladores PIC. Ha pasado ya un año y creo que para más de uno este sitio [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=micropic.wordpress.com&blog=672997&post=95&subd=micropic&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Hace un año ya que este blog le decía por primera vez <a href="http://micropic.wordpress.com/2007/01/10/hola-mundo/">hola al mundo</a> y lo hacía con la intención de convertirse en un lugar de referencia para todo aquel que quisiera comenzar en este mundo de los microcontroladores PIC. Ha pasado ya un año y creo que para más de uno este sitio si ha servido de ayuda.</p>
<p><span id="more-95"></span>Durante este primer año este blog tuvo más de 100,000 visitas, una cifra que puede no parecer muy impresionante pero que a mi si me impresiona, más de 100,000 personas interesadas en los microcontroladores que han leido mis tutoriales y ejemplos, y muchos de ellos hasta han hecho comentarios. Espero, imitando un poco al teletón, que esa cifra se supere para el 10 de enero del 2009.</p>
<p>Y para cerrar este post de aniversario debo hacer mención al post que ha sido la estrella del blog, <a href="http://micropic.wordpress.com/2007/01/22/mplab/">el tutorial sobre MPLAB</a>, el tutorial mas visto y el que ha tenido mayor éxito, aunque el reciente <a href="http://micropic.wordpress.com/2008/01/05/cmo-multiplexar-una-matriz-de-leds/">sobre multiplexacion de leds</a> se encamina a convertirse también en un clásico. En aquella ocasión prometí realizar un tutorial sobre como simular los programas utilizando la herramienta MPSIM y ese tutorial aún no aparece pero me comprometo a realizarlo pronto, tal vez para el 22 de enero que cumpla un año el tutorial de MPLAB.</p>
<p>Ahora si esto es todo, muchas gracias a ustedes que visitaron este blog, espero que durante este año lo continúen haciendo, aún faltan muchos temas por tratar así que no se los pierdan. Muchas gracias y aqui nos veremos el 10 de enero de 2009 cumpliendo un año más.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/micropic.wordpress.com/95/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/micropic.wordpress.com/95/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/micropic.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/micropic.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/micropic.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/micropic.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/micropic.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/micropic.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/micropic.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/micropic.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/micropic.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/micropic.wordpress.com/95/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=micropic.wordpress.com&blog=672997&post=95&subd=micropic&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://micropic.wordpress.com/2008/01/10/cumplimos-un-ao/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f692212d8c3bca2ea0d6028582097e0e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">micropic</media:title>
		</media:content>
	</item>
		<item>
		<title>Librer&#237;a PIC 16F628a (y todas las dem&#225;s) para Eagle</title>
		<link>http://micropic.wordpress.com/2008/01/09/librera-pic-16f628a-y-todas-las-dems-para-eagle/</link>
		<comments>http://micropic.wordpress.com/2008/01/09/librera-pic-16f628a-y-todas-las-dems-para-eagle/#comments</comments>
		<pubDate>Wed, 09 Jan 2008 17:15:36 +0000</pubDate>
		<dc:creator>micropic</dc:creator>
				<category><![CDATA[Librerías Eagle]]></category>

		<guid isPermaLink="false">http://micropic.wordpress.com/2008/01/09/librera-pic-16f628a-y-todas-las-dems-para-eagle/</guid>
		<description><![CDATA[En esta ocasión les traigo la librería para los pics 16f627, 16f627a, 16f628, 16f628a y 16f648a para EAGLE Layout Editor. Al igual que las librerías anteriores esta es una primera versión que solamente incluye el encapsulado PDIP de 18 pines, en futuras acutalizaciones incluiré los demás encapsulados.
También anuncio que todas las librerías que vaya creando [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=micropic.wordpress.com&blog=672997&post=94&subd=micropic&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>En esta ocasión les traigo la librería para los pics 16f627, 16f627a, 16f628, 16f628a y 16f648a para EAGLE Layout Editor. Al igual que las librerías anteriores esta es una primera versión que solamente incluye el encapsulado PDIP de 18 pines, en futuras acutalizaciones incluiré los demás encapsulados.</p>
<p>También anuncio que todas las librerías que vaya creando estarán disponibles en la página <a href="http://thestardestroyer.googlepages.com/libreriaseagle.html">http://thestardestroyer.googlepages.com/libreriaseagle.html</a> así que aunque seguiré publicandolas en este blog no dejen de visitar aquella página para ver las nuevas actualizaciones de las librerías.  Hasta pronto.</p>
<p>Descargar: <a href="http://thestardestroyer.googlepages.com/pic16f6xx-v0.1.lbr">pic16f6xx-v0.1.lbr</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/micropic.wordpress.com/94/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/micropic.wordpress.com/94/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/micropic.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/micropic.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/micropic.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/micropic.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/micropic.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/micropic.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/micropic.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/micropic.wordpress.com/94/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/micropic.wordpress.com/94/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/micropic.wordpress.com/94/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=micropic.wordpress.com&blog=672997&post=94&subd=micropic&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://micropic.wordpress.com/2008/01/09/librera-pic-16f628a-y-todas-las-dems-para-eagle/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f692212d8c3bca2ea0d6028582097e0e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">micropic</media:title>
		</media:content>
	</item>
		<item>
		<title>C&#243;mo multiplexar una matriz de leds</title>
		<link>http://micropic.wordpress.com/2008/01/05/cmo-multiplexar-una-matriz-de-leds/</link>
		<comments>http://micropic.wordpress.com/2008/01/05/cmo-multiplexar-una-matriz-de-leds/#comments</comments>
		<pubDate>Sat, 05 Jan 2008 19:48:20 +0000</pubDate>
		<dc:creator>micropic</dc:creator>
				<category><![CDATA[Multiplexación]]></category>
		<category><![CDATA[Rutinas]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://micropic.wordpress.com/2008/01/05/cmo-multiplexar-una-matriz-de-leds/</guid>
		<description><![CDATA[Ya empezó un nuevo año así que vamos a empezar con un nuevo tutorial, esta vez con un cómo sobre multiplexación, cómo multiplexar una matriz de leds.

Si se quisiera controlar una sola columna de una matriz de 5&#215;7 leds se necesitaría un puerto completo de un pic, 7 pines para controlar las filas y 1 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=micropic.wordpress.com&blog=672997&post=90&subd=micropic&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Ya empezó un nuevo año así que vamos a empezar con un nuevo tutorial, esta vez con un <i>cómo</i> sobre multiplexación, cómo multiplexar una matriz de leds.</p>
<p><span id="more-90"></span></p>
<p>Si se quisiera controlar una sola columna de una matriz de 5&#215;7 leds se necesitaría un puerto completo de un pic, 7 pines para controlar las filas y 1 para controlar la columna, eso significa que para controlar todos los leds de la matriz se necesitarían 4 puertos de 8 bits, demasiado para un microcontrolador, sobre todo para un 16F628a.</p>
<p>Para reducir el número de pines requeridos las cinco columnas de la matriz son multiplexadas, esto significa que solamente se necesitarán siete pines, uno por cada fila de la matriz, y cinco para habilitar cada una de las columnas.</p>
<p>Usando un pic 16F628a se puede utilizar el puerto B para controlar las filas y el puerto A para las columnas. La técnica de multiplexación consiste en mostrar una columna a la vez, mientras eso se haga lo suficientemente rápido parecerá que todas las columnas estan encendidas a la vez y no se verá ningún parpadeo, por esa misma razón la base de tiempo para la multiplexación es muy importante por lo que se utiliza la interrupción del timer 2 para esa tarea.</p>
<p>La multiplexación es muy sencilla y se ejecuta dentro de la rutina de interrupción del timer 2, se realiza más o menos de la siguiente manera:</p>
<ul>
<li>Espera interrupción</li>
<li>Se deshabilitan las columnas</li>
<li>Se escribe en el puerto B el valor de las filas</li>
<li>Se habilita la primer columna</li>
<li>Espera interrupción</li>
<li>Se deshabilitan las columnas</li>
<li>Se escribe en el puerto B el valor de las filas</li>
<li>Se habilita la siguiente columna</li>
<li>Espera interrupción</li>
<li>&#8230;</li>
</ul>
<p>Así se repite hasta llegar a la quinta columna, entonces la ejecución de la multiplexación vuelve al principio y se vuelve a repetir.</p>
<p>El programa de ejemplo muestra en conteo descendente los números del 9 al 0. La multiplexación se lleva a cabo en la rutina de interrupción del timer 2. El programa principal lo que hace es leer un número almacenado en una variable (un registro de memoria) y decodificarlo para ser desplegado en la matriz, como la matriz es de 5 columnas para decodificar el número se necesitan 5 registros donde se guardaran los valores de las filas de cada columna.</p>
<p>El diagrama del circuito de ejemplo es el siguiente:<br />
<a href="http://micropic.files.wordpress.com/2008/01/ledmultiplex.png" title="ledmultiplex.png"><img src="http://micropic.files.wordpress.com/2008/01/ledmultiplex.png?w=500&#038;h=300" alt="ledmultiplex.png" border="0" height="300" width="500" /></a></p>
<p>Pueden ver un video de este ejemplo en <a href="http://micropic.wordpress.com/2008/01/05/cmo-multiplexar-una-matriz-de-leds/93/" target="_blank" rel="attachment wp-att-93" title="led-multiplex.jpg"></a><a href="http://www.youtube.com/watch?v=VjinnOytc3o" target="_blank">YouTube</a><a href="http://www.youtube.com/watch?v=VjinnOytc3o" target="_blank"><img src="http://micropic.files.wordpress.com/2008/01/led-multiplex.jpg" alt="led-multiplex.jpg" align="absmiddle" border="0" /></a></p>
<p>Descargar código: <a href="http://micropic.files.wordpress.com/2008/01/como-multiplexar-una-matriz-de-leds.pdf">Multiplexar una matriz de 5&#215;8 leds</a></p>
<p>Este tutorial está basado en el tutorial  <a href="http://www.winpicprog.co.uk/pic_tutorial13.htm">How to multiplex a matrix of LED&#8217;s</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/micropic.wordpress.com/90/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/micropic.wordpress.com/90/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/micropic.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/micropic.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/micropic.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/micropic.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/micropic.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/micropic.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/micropic.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/micropic.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/micropic.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/micropic.wordpress.com/90/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=micropic.wordpress.com&blog=672997&post=90&subd=micropic&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://micropic.wordpress.com/2008/01/05/cmo-multiplexar-una-matriz-de-leds/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f692212d8c3bca2ea0d6028582097e0e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">micropic</media:title>
		</media:content>

		<media:content url="http://micropic.files.wordpress.com/2008/01/ledmultiplex.png" medium="image">
			<media:title type="html">ledmultiplex.png</media:title>
		</media:content>

		<media:content url="http://micropic.files.wordpress.com/2008/01/led-multiplex.jpg" medium="image">
			<media:title type="html">led-multiplex.jpg</media:title>
		</media:content>
	</item>
		<item>
		<title>Feliz 2008!</title>
		<link>http://micropic.wordpress.com/2007/12/31/feliz-2008/</link>
		<comments>http://micropic.wordpress.com/2007/12/31/feliz-2008/#comments</comments>
		<pubDate>Mon, 31 Dec 2007 17:31:02 +0000</pubDate>
		<dc:creator>micropic</dc:creator>
				<category><![CDATA[MicroPIC]]></category>

		<guid isPermaLink="false">http://micropic.wordpress.com/2007/12/31/feliz-2008/</guid>
		<description><![CDATA[2007 está a unas horas de terminar y no está de más hacer una pequeña reflexión de lo que fue este 2007. Comencé este blog el 10 de enero de este año con la intención de crear un espacio donde pudiera compartir conocimiento y aprender más sobre microcontroladores PIC, el año hoy termina y creo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=micropic.wordpress.com&blog=672997&post=89&subd=micropic&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>2007 está a unas horas de terminar y no está de más hacer una pequeña reflexión de lo que fue este 2007. Comencé este blog el 10 de enero de este año con la intención de crear un espacio donde pudiera compartir conocimiento y aprender más sobre microcontroladores PIC, el año hoy termina y creo que este blog logró cumplir su propósito.<br />
<span id="more-89"></span>Aprovecho también para darle las gracias a todos ustedes que han leido lo que he publicado, que han dejado sus comentarios y lo más importante: que han utilizado mis ejemplos en sus propios proyectos y aplicaciones. Muchas gracias a todos ustedes y despido este año con la promesa de seguir trabajando en este blog ya que aún faltan muchos temas por tratar, y para este 2008 mi propósito será actualizar este sitio de manera más regular.</p>
<p>Les deseo un feliz 2008, que todos sus propósitos se cumplan y que todos sus proyectos funcionen, nos vemos el próximo año y no olviden volver a visitar esta página, además el 10 de enero se cumple un año así que veré si preparo una sorpresa.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/micropic.wordpress.com/89/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/micropic.wordpress.com/89/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/micropic.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/micropic.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/micropic.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/micropic.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/micropic.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/micropic.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/micropic.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/micropic.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/micropic.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/micropic.wordpress.com/89/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=micropic.wordpress.com&blog=672997&post=89&subd=micropic&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://micropic.wordpress.com/2007/12/31/feliz-2008/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f692212d8c3bca2ea0d6028582097e0e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">micropic</media:title>
		</media:content>
	</item>
		<item>
		<title>Librer&#237;a 16F87/88 para Eagle Layout Editor</title>
		<link>http://micropic.wordpress.com/2007/12/28/librera-16f8788-para-eagle-layout-editor/</link>
		<comments>http://micropic.wordpress.com/2007/12/28/librera-16f8788-para-eagle-layout-editor/#comments</comments>
		<pubDate>Fri, 28 Dec 2007 19:30:26 +0000</pubDate>
		<dc:creator>micropic</dc:creator>
				<category><![CDATA[Librerías Eagle]]></category>

		<guid isPermaLink="false">http://micropic.wordpress.com/2007/12/28/librera-16f8788-para-eagle-layout-editor/</guid>
		<description><![CDATA[Ayer publiqué la librería para microcontroladores pic 16F88x, ahora hago lo mismo para los pic 16F87 y 16F88 para poder utilizarlos en Eagle Layout Editor. Esta es la versión 0.1 y solamente se encuentra el paquete DIP y SOIC de 18 pines pero posteriormente la actualizaré para incluir SSOP y QFN.
Sin más por el momento [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=micropic.wordpress.com&blog=672997&post=88&subd=micropic&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Ayer publiqué la librería para microcontroladores pic 16F88x, ahora hago lo mismo para los pic 16F87 y 16F88 para poder utilizarlos en Eagle Layout Editor. Esta es la versión 0.1 y solamente se encuentra el paquete DIP y SOIC de 18 pines pero posteriormente la actualizaré para incluir SSOP y QFN.</p>
<p>Sin más por el momento aqui dejo la librería<br />
Descargar: <a href="http://thestardestroyer.googlepages.com/pic16f88-v0.1.lbr">pic16f88-v0.1.lbr</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/micropic.wordpress.com/88/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/micropic.wordpress.com/88/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/micropic.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/micropic.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/micropic.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/micropic.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/micropic.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/micropic.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/micropic.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/micropic.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/micropic.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/micropic.wordpress.com/88/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=micropic.wordpress.com&blog=672997&post=88&subd=micropic&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://micropic.wordpress.com/2007/12/28/librera-16f8788-para-eagle-layout-editor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f692212d8c3bca2ea0d6028582097e0e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">micropic</media:title>
		</media:content>
	</item>
		<item>
		<title>Librer&#237;a 16F88x para Eagle Layout Editor</title>
		<link>http://micropic.wordpress.com/2007/12/27/librera-16f88x-para-eagle-layout-editor/</link>
		<comments>http://micropic.wordpress.com/2007/12/27/librera-16f88x-para-eagle-layout-editor/#comments</comments>
		<pubDate>Fri, 28 Dec 2007 05:22:17 +0000</pubDate>
		<dc:creator>micropic</dc:creator>
				<category><![CDATA[Librerías Eagle]]></category>
		<category><![CDATA[Software CAD]]></category>

		<guid isPermaLink="false">http://micropic.wordpress.com/2007/12/27/librera-16f88x-para-eagle-layout-editor/</guid>
		<description><![CDATA[El Eagle Layout Editor es un programa muy potente para crear diagramas esquemáticos y circuitos impresos de manera sencilla. Su uso está muy extendido por lo que no resulta difícil encontrar entre sus librerías el componente que se necesita en un circuito, sin embargo hay casos que aquel componente que se ocupa no se encuentra [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=micropic.wordpress.com&blog=672997&post=87&subd=micropic&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>El <a href="http://www.cadsoftusa.com/" target="_blank">Eagle Layout Editor</a> es un programa muy potente para crear diagramas esquemáticos y circuitos impresos de manera sencilla. Su uso está muy extendido por lo que no resulta difícil encontrar entre sus librerías el componente que se necesita en un circuito, sin embargo hay casos que aquel componente que se ocupa no se encuentra en ninguna librería como pueden ser algunos microcontroladores PIC.</p>
<p><span id="more-87"></span>Ultimamente he dejado este blog abandonado, la razón es que he estado ocupado desarrollando un proyecto utilizando un pic 16F886, la programación ya quedó lista y ahora pretendía realizar el circuito impreso cuando me di cuenta que dentro de las librerías del Eagle no se encontraba ese pic. CadSoft cuenta con una página donde se pueden <a href="http://www.cadsoft.de/cgi-bin/download.pl?page=/home/cadsoft/html_public/download.htm.en&amp;dir=eagle/userfiles/libraries">descargar librerías</a> para su programa, además buscando en google se pueden encontrar muchas más pero no me fue posible encontrar una que incluyera el pic que necesitaba por lo que decidí crear la librería yo mismo.</p>
<p>Crear componentes y librerías para Eagle es muy sencillo, al principio puede ser algo tedioso pero con un poco de práctica las cosas se hacen más rápido. Para crear la librería seguí el tutorial <a href="http://www.hcilab.org/resources/boardlayout/eagle-librarydesign.htm">Eagle Library Design</a> y el resultado fue la librería <a href="http://thestardestroyer.googlepages.com/pic16f88x-v0.1.lbr">pic16f88x-v0.1.lbr</a>.</p>
<p>Comparto este archivo para que cualquiera que necesite crear un circuito en Eagle utilizando los pics 16F882, 16F883, 16F884, 16F886 y 16F887 lo pueda hacer sin problemas, esta es la primer versión y espero mejorarla en un futuro así como también crear librerías para otros microcontroladores PIC. Como es la primer versión es posible que exista algún error así que si alguien detecta uno por favor hagamelo saber.</p>
<p>Aquí dejo esta librería, lo pueden tomar como un regalo atrasado de navidad o uno adelantado de reyes pero como sea espero que les sea de utilidad.</p>
<p>Descargar: <a href="http://thestardestroyer.googlepages.com/pic16f88x-v0.1.lbr">pic16f88x-v0.1.lbr</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/micropic.wordpress.com/87/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/micropic.wordpress.com/87/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/micropic.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/micropic.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/micropic.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/micropic.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/micropic.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/micropic.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/micropic.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/micropic.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/micropic.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/micropic.wordpress.com/87/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=micropic.wordpress.com&blog=672997&post=87&subd=micropic&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://micropic.wordpress.com/2007/12/27/librera-16f88x-para-eagle-layout-editor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f692212d8c3bca2ea0d6028582097e0e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">micropic</media:title>
		</media:content>
	</item>
		<item>
		<title>Instalar Piklab en Ubuntu 7.04</title>
		<link>http://micropic.wordpress.com/2007/10/05/instalar-piklab-en-ubuntu/</link>
		<comments>http://micropic.wordpress.com/2007/10/05/instalar-piklab-en-ubuntu/#comments</comments>
		<pubDate>Fri, 05 Oct 2007 21:55:30 +0000</pubDate>
		<dc:creator>micropic</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://micropic.wordpress.com/2007/10/05/instalar-piklab-en-ubuntu/</guid>
		<description><![CDATA[Por mucho, el post más popular de este blog es en el que explico la instalación y uso de MPLAB. Sin duda porque es un entorno de desarrollo muy potente que permite escribir, ensamblar, simular y programar los pics, todo desde el mismo programa. En linux no existe una herramienta tan poderosa, es por eso [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=micropic.wordpress.com&blog=672997&post=85&subd=micropic&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Por mucho, el post más popular de este blog es en el que explico la <a href="http://micropic.wordpress.com/2007/01/22/mplab/" target="_blank">instalación y uso de MPLAB</a>. Sin duda porque es un entorno de desarrollo muy potente que permite escribir, ensamblar, simular y programar los pics, todo desde el mismo programa. En linux no existe una herramienta tan poderosa, es por eso que muchos <a href="http://micropic.wordpress.com/2007/03/01/instalar-mplab-en-ubuntu-606/" target="_blank">instalan MPLAB en este sistema operativo</a>.</p>
<p>Una buena alternativa a MPLAB en linux puede ser <a href="http://piklab.sourceforge.net/">Piklab</a>, un entorno de desarrollo para microcontroladores pic que se integra con muchos compiladores y ensambladores y con un simulador llamado GPSim, y que además permite programar los pics con los programadores más comunes.</p>
<p><span id="more-85"></span>Piklab está programado para el entorno de escritorio KDE, por lo que para instalarlo en una distribución como Ubuntu (basada en GNOME) es necesario tener las librerías de KDE y QT instaladas. Esto se hace fácilmente mediante apt-get escribiendo en una terminal:</p>
<ul>
<li><em>sudo apt-get install xlibs-dev kdebase-dev</em></li>
</ul>
<p>Además de esas librerías es necesario tener instaladas dos librerías más, de modo que de nuevo en una terminal se escribe:</p>
<ul>
<li><em>sudo apt-get install libusb-dev libreadline5-dev</em></li>
</ul>
<p>Después de eso ya podemos instalar Piklab, pero primero lo debemos descargar de la siguiente dirección<br />
<a href="http://piklab.sourceforge.net/download.php" target="_blank">http://piklab.sourceforge.net/download.php</a><br />
Para Ubuntu no existe un binario para instalarlo (como si es el caso de otras distribuciones como Slackware) así que tendremos que descargar las fuentes y compilar el programa. Para eso hacemos click en Download Piklab y después descargamos el paquete *.tar.bz2</p>
<p>Una vez descargado lo descomprimimos. Se puede descomprimir usando el gestor de archivos comprimidos o descomprimiendolo desde la terminal, yo prefiero la segunda opción, así que en la terminal nos vamos al directorio donde se haya descargado el archivo y lo descomprimimos:</p>
<ul>
<li><em>tar -xvf piklab-*.tar.bz2</em></li>
<li><em>cd piklab*</em></li>
</ul>
<p>Una vez dentro del directorio con los archivos fuente procedemos a compilar el programa. Eso es algo muy sencillo aunque dependiendo del tipo de máquina puede ser más o menos lento, y simplemente se utilizan 3 comandos: configure, make y make install, de la siguiente manera:</p>
<ul>
<li><em>./configure</em></li>
<li><em>make</em></li>
<li><em>sudo make install</em></li>
</ul>
<p>Una vez hecho eso Piklab está instalado y casi listo para usarse, solamente falta instalar unas herramientas que nos permitan ensamblar y compilar nuestros archivos en ensamblador desde Piklab, estas herramientas son <a href="http://gputils.sourceforge.net/" target="_blank">GPUTILS</a> y se encuentran disponibles en los repositorios de Ubuntu así que fácilmente se instalan vía apt-get:</p>
<ul>
<li><em>sudo apt-get install gputils </em></li>
</ul>
<p>Y listo, ahora si podemos iniciar Piklab (desde el menú Aplicaciones -&gt; Programación -&gt; Piklab o ejecutando el comando piklab). Por último una captura de este entorno de desarrollo.</p>
<p><a href="http://micropic.files.wordpress.com/2007/10/piklab.png" title="Piklab"><img src="http://micropic.files.wordpress.com/2007/10/piklab.thumbnail.png" alt="Piklab" border="0" /></a></p>
<p>Esta guía en parte está basada en el tutorial <a href="http://mecatronica.wordpress.com/2007/09/30/instalando-piklab-en-ubuntu/" target="_blank">Instalando Piklab en Ubuntu</a> de <a href="http://mecatronica.wordpress.com/" target="_blank">Cosas de Mecatrónica</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/micropic.wordpress.com/85/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/micropic.wordpress.com/85/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/micropic.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/micropic.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/micropic.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/micropic.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/micropic.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/micropic.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/micropic.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/micropic.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/micropic.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/micropic.wordpress.com/85/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=micropic.wordpress.com&blog=672997&post=85&subd=micropic&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://micropic.wordpress.com/2007/10/05/instalar-piklab-en-ubuntu/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f692212d8c3bca2ea0d6028582097e0e?s=96&#38;d=identicon" medium="image">
			<media:title type="html">micropic</media:title>
		</media:content>

		<media:content url="http://micropic.files.wordpress.com/2007/10/piklab.thumbnail.png" medium="image">
			<media:title type="html">Piklab</media:title>
		</media:content>
	</item>
	</channel>
</rss>