{"id":569,"date":"2010-12-10T16:04:48","date_gmt":"2010-12-10T15:04:48","guid":{"rendered":"http:\/\/electronicapractica.crearblog.com\/?p=569"},"modified":"2019-06-18T16:33:11","modified_gmt":"2019-06-18T14:33:11","slug":"instrucciones-pic","status":"publish","type":"post","link":"https:\/\/www.diarioelectronicohoy.com\/blog\/instrucciones-pic","title":{"rendered":"Instrucciones PIC"},"content":{"rendered":"<p><a name=\"inici\"><\/a><\/p>\n<h2><span style=\"color: #000080;\"><span style=\"font-size: x-large;\">Juego de Instrucciones de los PIC16F84A <\/span><\/span><\/h2>\n<p style=\"margin-top: 6px; margin-bottom: 0pt; font-size: 18pt;\" align=\"center\"><strong><span style=\"font-family: Arial; color: #ff0000;\">LOS REGISTROS<\/span><\/strong><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0pt;\" align=\"center\"><span style=\"font-family: Arial; color: #000000; font-size: medium;\">(Tambi\u00e9n llamados <\/span><span style=\"font-family: Arial; color: #008000; font-size: medium;\"><strong>ARCHIVOS<\/strong><\/span> <span style=\"font-family: Arial; color: #000000; font-size: medium;\">)<\/span><\/p>\n<p>&nbsp;<\/p>\n<h2><span style=\"color: #ff0000;\"><strong>CARACTER\u00cdSTICAS GENERALES DE LOS PIC16F84A.<\/strong><\/span><\/h2>\n<p style=\"text-align: justify;\">Hay solo 35 instrucciones en el PIC16F84A, con c\u00f3digos de instrucci\u00f3n de 14 bits de ancho. Todas las instrucciones ocupan una palabra y todas consumen un ciclo, excepto las de salto o bifurcaci\u00f3n que usan dos. La velocidad m\u00e1xima de funcionamiento 20MHz (200 ns x instrucci\u00f3n). T\u00edpicamente a 4MHz (1us x instrucci\u00f3n), con 1024 palabras (14 bits) de memoria de programa FLASH.<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/PIC16F84A.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1212\" title=\"PIC16F84A\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/PIC16F84A.jpg\" alt=\"\" width=\"341\" height=\"219\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/PIC16F84A.jpg 341w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/PIC16F84A-300x192.jpg 300w\" sizes=\"auto, (max-width: 341px) 100vw, 341px\" \/><\/a><!--more--><\/p>\n<p style=\"text-align: justify;\">El PIC16F84A tiene 68 bytes de RAM y 64 bytes de EEPROM de datos, tiene 12 registros de funci\u00f3n espec\u00edfica FSR. Con 8 niveles de Pila hardware y tres modos de direccionamiento: <strong>directo<\/strong>, <strong>indirecto<\/strong> y <strong>relativo<\/strong>. Dispone de cuatro fuentes de interrupci\u00f3n y\u00a0 13 pines de E\/S (puertoA de 5 bits y el puertoB de 8 bits), con control individual bidireccional y dispone de un Timer0\/ Contador con reloj independiente y la gran ventaja dispone de Perro Guardi\u00e1n (WDT). Este dispositivo tiene otras particularidades que lo hacen seriamente aconsejable, algunas de estas se detallan en otros art\u00edculos de esta serie y en las hojas de caracter\u00edsticas del fabricante Microchip.<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/PIC16F84A-Mapa-memoria.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-1213\" title=\"PIC16F84A Mapa memoria\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/PIC16F84A-Mapa-memoria.jpg\" alt=\"\" width=\"260\" height=\"458\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/PIC16F84A-Mapa-memoria.jpg 260w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/PIC16F84A-Mapa-memoria-170x300.jpg 170w\" sizes=\"auto, (max-width: 260px) 100vw, 260px\" \/><\/a>El PIC16F84A tiene un contador de programa de 13 bits capaz de dirigir 8 kilobytes x 14 espacio de memoria de programa. Para el F84A, el primer 1 kilobyte x 14 (0000h-03FFh) f\u00edsicamente es implementado (Figura 2-1). El tener acceso a una posici\u00f3n anterior de la direcci\u00f3n f\u00edsicamente puesta en pr\u00e1ctica causar\u00e1 un recirculado. Por ejemplo, para posiciones 20h, 420h, 820h, C20h, 1020h, 1420h, 1820h, y 1C20h, la instrucci\u00f3n ser\u00e1 la misma. El vector RESET (REPUESTO) est\u00e1 en la direcci\u00f3n 0000h y el vector INTERRUPT est\u00e1 en la 0004h, con cuatro fuentes de interrupci\u00f3n, v\u00e9ase el documento <strong><a href=\"interrupciones.html\"><span style=\"color: #008000;\">interrupciones<\/span><\/a><\/strong> descrito en estas p\u00e1ginas.<\/p>\n<p style=\"text-align: justify;\">Hay dos bloques de memoria en el PIC16F84A, estos son la memoria de programa y la memoria de datos. Cada bloque tiene su propio bus, de modo que el acceso a cada bloque pueda ocurrir durante el mismo ciclo de oscilador. La memoria de datos adicional mayor puede ser direccionada en la RAM de objetivo general y los Registros de Funci\u00f3n Especiales (SFRs). La operaci\u00f3n de los SFRs que controla el \u00abcoraz\u00f3n\u00bb (reloj) est\u00e1 descrita aqu\u00ed.<\/p>\n<p style=\"text-align: justify;\">Los SFRs usados para controlar los m\u00f3dulos perif\u00e9ricos son descritos en la secci\u00f3n que habla de cada m\u00f3dulo individual perif\u00e9rico.<\/p>\n<p style=\"text-align: justify;\">El \u00e1rea memoria de datos tambi\u00e9n contiene la memoria de datos EEPROM. Esta memoria no es mapeada directamente en la memoria de datos, pero es mapeada indirectamente. Es decir, un puntero de direcci\u00f3n indirecta, especifica la direcci\u00f3n de la memoria de datos EEPROM para lectura\/escritura. Los 64 octetos de datos de la memoria EEPROM tienen la gama de direcci\u00f3n 00h-3Fh. M\u00e1s detalles de la memoria EEPROM se pueden encontrar en la Secci\u00f3n 3.0 de las hojas de caracter\u00edsticas.<\/p>\n<p style=\"text-align: justify;\">La memoria de datos es dividida en dos \u00e1reas. La primera, es el \u00e1rea de Registros de Funci\u00f3n Especial (SFR), mientras la segunda es el \u00e1rea de Registros de Prop\u00f3sito General (GPR). Los SFRs controlan el modo de operaci\u00f3n del dispositivo. Partes de memoria de datos son mapeadas, esto es tanto para el \u00e1rea SFR como para el \u00e1rea GPR. El \u00e1rea GPR es mapeada para permitir una capacidad mayor de 116 bytes de RAM de prop\u00f3sito general.<\/p>\n<p style=\"text-align: justify;\">Las \u00e1reas mapeadas del SFR son para los registros que controlan las funciones perif\u00e9ricas. Los bancos requieren el empleo de bits de control para la selecci\u00f3n de banco. Estos bits de control son localizados en el Registro <strong>STATUS<\/strong>. En la figura 2-2 se muestra la organizaci\u00f3n de mapa de memoria de datos.<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/PIC16F84A-Mapa-registros.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-1214\" title=\"PIC16F84A Mapa registros\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/PIC16F84A-Mapa-registros.gif\" alt=\"\" width=\"270\" height=\"479\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/PIC16F84A-Mapa-registros.gif 270w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/PIC16F84A-Mapa-registros-169x300.gif 169w\" sizes=\"auto, (max-width: 270px) 100vw, 270px\" \/><\/a>Las Instrucciones <strong>MOVWF<\/strong> y <strong>MOVF<\/strong> pueden mover valores del registro <strong>W<\/strong> a cualquier posici\u00f3n en la RAM al archivo de registro (\u00ab<strong>F<\/strong>\u00ab) y viceversa. Se puede tener acceso directo a toda la memoria de datos utilizando la direcci\u00f3n absoluta de cada archivo de registro o indirectamente mediante los Registros de Funci\u00f3n Especial (SFR). La direcci\u00f3n indirecta usa el valor actual del bit RP0 para el acceso en las \u00e1reas mapeadas de memoria de datos.<\/p>\n<p style=\"text-align: justify;\">La memoria de datos es dividida en dos bancos que contienen los Registros de Prop\u00f3sito General y los Registros de Funci\u00f3n Especial. El banco 0 se selecciona por el aclarado (0) del bit de RP0 (<strong>STATUS<\/strong>&lt;5&gt;). Al activar el bit RP0 se selecciona el Banco 1. Cada Banco se extiende hasta 7Fh (128 bytes). Las doce primeras posiciones de cada Banco son reservadas para los Registros de Funci\u00f3n Especial. El resto, son Registros de Prop\u00f3sito General, implementados en la pr\u00e1ctica como la RAM est\u00e1tica.<\/p>\n<h2 style=\"margin-top: 24px;\">REGISTROS DE PROP\u00d3SITO GENERAL <span style=\"color: #ff0000;\">GPR<\/span>.<\/h2>\n<p style=\"text-align: justify;\">Cada Registro de Prop\u00f3sito General (GPR) es de 8 bits de ancho y es direccionado directa o indirectamente por los SFR. Las direcciones de GPR en el Banco 1 son mapeadas a direcciones en el Banco 0. Como un ejemplo, direccinando la posici\u00f3n 0Ch u 8Ch tendremos acceso al mismo GPR.<\/p>\n<h2 style=\"margin-top: 24px;\">REGISTROS DE FUNCI\u00d3N ESPECIAL <span style=\"color: #ff0000;\">SFR<\/span>.<\/h2>\n<p style=\"text-align: justify;\">Los Registros de Funci\u00f3n Especial SFR (Figura 2-2 y Tabla 2-1) son usados por la CPU y funciones perif\u00e9ricas para controlar la operaci\u00f3n del dispositivo. Estos registros son la RAM est\u00e1tica.<\/p>\n<p style=\"text-align: justify;\">Los registros de funci\u00f3n especial pueden ser clasificados en dos juegos, central y perif\u00e9rico. Aquellos asociados con las funciones principales son descritos en esta secci\u00f3n. Aquellos relacionados con la operaci\u00f3n de los rasgos perif\u00e9ricos son descritos en la secci\u00f3n para aquel rasgo espec\u00edfico.<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/Sumario-registros.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1216\" title=\"Sumario registros\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/Sumario-registros.gif\" alt=\"\" width=\"550\" height=\"559\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/Sumario-registros.gif 550w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/Sumario-registros-295x300.gif 295w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a>En otros art\u00edculos describiremos otros registro y su forma de uso, los bits que se usan y c\u00f3mo influyen las banderas que activan. Por ahora, vamos a seguir con la descripci\u00f3n de las instrucciones que es el fondo de este documento. Veamos primero el formato de las instrucciones.<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/descripciones.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1217\" title=\"descripciones\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/descripciones.gif\" alt=\"\" width=\"550\" height=\"394\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/descripciones.gif 550w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/descripciones-300x214.gif 300w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/descripciones-418x300.gif 418w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a>A continuaci\u00f3n vemos\u00a0el juego de instrucciones de los PIC12CXXX, entre ambas.<\/p>\n<p><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/instrucciones.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1218\" title=\"instrucciones\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/instrucciones.gif\" alt=\"\" width=\"550\" height=\"532\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/instrucciones.gif 550w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/instrucciones-300x290.gif 300w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/instrucciones-310x300.gif 310w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a>Debajo muestro, unas tablas originales del juego de instrucciones de los PIC16C\/FXXX, resumidas.<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/juego-de-instrucciones-PIC.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1219\" title=\"juego de instrucciones PIC\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/juego-de-instrucciones-PIC.gif\" alt=\"\" width=\"550\" height=\"654\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/juego-de-instrucciones-PIC.gif 550w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/juego-de-instrucciones-PIC-252x300.gif 252w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a>Esta es una tabla de las instrucciones extendidas, admitidas por el sistema MPLAB, que podemos usar en nuestros listados, para generar los programas propuestos, aunque no est\u00e9n en las tablas del los PIC16FXXX, al compilarlos con el MPLAB, nos generan el c\u00f3digo asm adecuado.<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/PIC16FXXX-instrucciones-set.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1220\" title=\"PIC16FXXX instrucciones set\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/PIC16FXXX-instrucciones-set.gif\" alt=\"\" width=\"550\" height=\"495\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/PIC16FXXX-instrucciones-set.gif 550w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/PIC16FXXX-instrucciones-set-300x270.gif 300w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/PIC16FXXX-instrucciones-set-333x300.gif 333w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a>Si buscamos en la carpeta donde instalamos el MPLAB (p.e. C:Archivos de programaMPLAB) la ayuda llamada DEVICE.HLP, podemos encontrar un listado completo de las instrucciones especiales que usa el MPLAB y que nos permitir\u00e1n mejorar nuestros listados, esta es una muestra:<\/p>\n<p align=\"left\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/bit-core.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-1221\" title=\"bit core\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/bit-core.jpg\" alt=\"\" width=\"502\" height=\"1002\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/bit-core.jpg 502w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/bit-core-150x300.jpg 150w\" sizes=\"auto, (max-width: 502px) 100vw, 502px\" \/><\/a>Adem\u00e1s, en las hojas de datos de Microchip, vienen todas las instrucciones de estos chips, quiz\u00e1s el lector piense, porqu\u00e9 me he tomado tantas molestias en plasmar aqu\u00ed tanta informaci\u00f3n que ya existe, la raz\u00f3n es que, no est\u00e1 en castellano (espa\u00f1ol) o la que hay es muy t\u00e9cnica y no est\u00e1 al alcance de mucha gente, por otra parte, no creo que est\u00e9 dem\u00e1s que alguien la exponga desde otro punto de vista.<\/p>\n<p align=\"left\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">NOTA.<\/span><\/strong><\/p>\n<p style=\"text-align: justify;\">1- La palabra <strong>Literal<\/strong> significa \u00abN\u00daMERO\u00bb como el n\u00famero 9 o 16h. El n\u00famero 16h es un n\u00famero exadecimal y en valores decimales esto representa el n\u00famero: \u00abveintid\u00f3s\u00bb.<br \/>\n2- Destino de la instrucci\u00f3n seg\u00fan el designador OP: Si el bit de c\u00f3digo OP de la instrucci\u00f3n es 0, el destino es W y si es 1, el destino es el registro f, o sea, se selecciona el destino donde se guarda el resultado de una operaci\u00f3n.<\/p>\n<p style=\"text-align: justify;\"><strong>Nota2. <\/strong>Cuando una instrucci\u00f3n termina con W o F, el destino del resultado ser\u00e1 el registro W o el propio archivo f, se define con el designador &#8216;0&#8217; o &#8216;1&#8217; de la propia instrucci\u00f3n.<\/p>\n<p><strong><span style=\"color: #ff0000;\"> 0 = W<\/span><\/strong><span style=\"color: #ff0000;\"><br \/>\n<strong>1 = F <\/strong><\/span><\/p>\n<p>Por ej.:\u00a0\u00a0\u00a0\u00a0\u00a0<strong>ADDWF 1F,0<\/strong> el resultado es almacenado en el registro de trabajo <strong>W<\/strong>.<br \/>\n<strong>ADDWF 1F,1<\/strong> el resultado es almacenado en el mismo registro (<strong>F<\/strong>).<\/p>\n<p style=\"text-align: justify;\">Seguidamente se hace una descripci\u00f3n detallada de las instrucciones que, son generales para todos los PIC&#8217;s, adem\u00e1s de las particularidades de cada instrucci\u00f3n, por orden alfab\u00e9tico que, presentan para cada micro tanto para el PIC16F84A como para el PIC12C508A.<\/p>\n<p style=\"margin-bottom: 0px; text-align: justify;\"><strong><span style=\"font-family: Arial; color: #ff0000; font-size: small;\">NOTA.<\/span> Se usaran algunos t\u00e9rminos extra\u00f1os para acomodar (agilizar) algunas expresiones anglosajonas. <\/strong><\/p>\n<p style=\"text-align: justify;\"><strong>Ej.:<span style=\"font-family: Arial; color: #ff0000; font-size: small;\"> <em>AND&#8217;ed<\/em> <\/span>para expresar la aplicaci\u00f3n de la operaci\u00f3n de producto l\u00f3gico (AND) entre dos t\u00e9rminos o\u00a0 <span style=\"font-family: Arial; color: #ff0000; font-size: small;\"><em><br \/>\nXOR&#8217;ed<\/em> <\/span>que se aplica a la operaci\u00f3n l\u00f3gica OR exclusiva (XOR) entre dos t\u00e9rminos.<\/strong><\/p>\n<p style=\"margin-bottom: 0px; text-align: justify;\"><strong><span style=\"font-family: Arial; font-size: small;\"><span style=\"color: #ff0000;\">El lector<\/span>, deber\u00e1 diferenciar entre registro\/[archivo] y contenido del registro\/[archivo].<\/span><\/strong><\/p>\n<hr style=\"margin-top: 6px;\" size=\"3\" \/>\n<hr style=\"margin-top: 3px; margin-bottom: 0px;\" size=\"3\" \/>\n<p style=\"margin-bottom: -1px; text-align: justify;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">ADDLW<\/span><\/strong> <span style=\"font-family: Arial; color: #000000; font-size: small;\">Esto significa: Agregar (sumar)<span style=\"font-family: ARIAL; font-size: small;\"> el Literal al registro W (acumulador o registro de trabajo) resultado en W. <\/span><\/span><\/p>\n<p style=\"margin-top: 0px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: ARIAL;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">ADDLW 00 al\u00a0\u00a0FF<\/span><\/strong> <span style=\"font-family: Arial; color: #000000; font-size: small;\">Un n\u00famero fijo (llamado literal) es sumado al registro W (registro de trabajo). El literal (n\u00famero) puede estar comprendido entre el 00 y FF.\u00a0En el registro STATUS se ven afectadas tres banderas (o flags) por la orden <strong>ADDLW<\/strong> (<strong>Z<\/strong>, <strong>DC<\/strong> y <strong>C<\/strong>),\u00a0ver debajo. <\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin: 1pt 40pt; text-indent: 0pt;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><strong>C<\/strong> Se pone a 1 si se produce un acarreo desde el bit de mayor peso (desbordamiento).<br \/>\n<\/span><\/span><\/p>\n<p style=\"margin: 1pt 40pt; text-indent: 0pt;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><strong>DC<\/strong> Se pone a 1 si se genera un acarreo del bit 3 al bit 4.<br \/>\n<\/span><\/span><\/p>\n<p style=\"margin: 1pt 40pt 6pt; text-indent: 0pt;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><strong>Z<\/strong> Se pone a 1 si el resultado de la operaci\u00f3n es cero.<\/span><\/span><\/p>\n<p style=\"margin-top: 0px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">Esta instrucci\u00f3n no est\u00e1 disponible para el &#8216;508A. Si quiere usar esta instrucci\u00f3n en el &#8216;508A o un programa en \u00e9l la requiere\/contiene, emplee las 3 instrucciones siguientes:<\/span> <\/span><\/span><\/p>\n<p style=\"margin-bottom: 0px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">Por ejemplo\u00a0 en el F84:<\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 4px; margin-bottom: 4px;\"><span style=\"font-family: ARIAL;\"><span style=\"font-family: Arial; color: #000000; font-size: x-small;\"><strong>ADDLW<\/strong> 80\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ; mueve 80h a W <\/span><\/span><\/p>\n<p>&nbsp;<\/p>\n<p style=\"margin-bottom: 2px;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\">Sustit\u00fayala en el &#8216;508A por:<\/span><\/span><\/p>\n<pre style=\"margin-top: 3px; margin-bottom: 0px; text-indent: 0pt;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: x-small;\"> MOVWF 13h ; Mueve W a cualquier archivo MOVLW 80h ;poner 80h en W ADDWF 13h ;sumar el archivo 13h a W <\/span><\/span><\/span><\/pre>\n<hr \/>\n<p style=\"margin-bottom: -1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">ADDWF<\/span><\/strong> <span style=\"font-family: ARIAL; color: #000000; font-size: small;\">Esto significa: Suma aritm\u00e9tica de W y un archivo (f).<\/span><\/span><\/span><\/p>\n<p style=\"margin-top: -1px; margin-bottom: -1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">ADDWF 00 a 1F,0<\/span><\/strong><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"> El resultado es almacenado en el registro de trabajo W, debido al valor 0 en la instrucci\u00f3n.<\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: -1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>ADDWF 00 a 1F,1<\/strong><\/span><strong> <\/strong> El resultado es almacenado en el mismo archivo, debido al valor 1 del designador en la instrucci\u00f3n.<\/span><\/span><\/span><\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">ADDWF (sumar) el contenido del registro W con el contenido de un archivo. El resultado puede ser guardado en el registro W (designador = 0) o emplazado en el archivo llamado (designador = 1). Con la orden ADDWF, en el registro STATUS se ven afectados los bits: <strong>C<\/strong> (<strong>C<\/strong>arry), <strong>Z<\/strong> (Cero) y el <strong>DC<\/strong> (<strong>D<\/strong>\u00edgito <strong>C<\/strong>arry).<\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-bottom: -2px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\">Si el resultado de una instrucci\u00f3n ADD rebasa FF, la bandera <strong>C<\/strong> (Carry) es puesta a 1, si tiene cualquier otro valor es 0. <\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: -1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\">Si el resultado de una instrucci\u00f3n ADD es cero 0000 0000, la bandera <strong>Z<\/strong> (Cero) se pone a 1 y 0 si tiene cualquier otro valor.<\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: -1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\">La suma se realiza en aritm\u00e9tica binaria pura y sin signo. Si hay un<span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"> (desborde)<\/span><\/span><\/span> acarreo del bit 7, es decir que el resultado es mayor de 255, el bit <strong>C<\/strong> (bandera Carry) resulta 1, en caso contrario resulta 0. El PIC supervisa si hay acarreo del bit 3, es decir que, la suma de los dos (nibbles) mitades menos significativas (bits 0 a 3) resulta mayor de 15, el bit <strong>DC<\/strong> (digit carry) se pone a 1, en caso contrario se pone a 0.<\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-bottom: 0px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\">Por ejemplo: Si agregamos 21h a 3Ch, el resultado es 5Dh, esto no afecta\u00a0 la bandera Carry,<span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"> por lo que la bandera DC (d\u00edgito carry) ser\u00e1 puesta a 1,<\/span><\/span><\/span> pero si a 2Dh le agregamos 3Eh, el resultado es 6Bh, lo que desborda el contador (6B&gt;FF) por lo que la bandera C (Carry) ser\u00e1 puesta a 1.<\/span> <\/span><\/span><\/span><\/p>\n<pre><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-size: x-small;\"> Ejemplos : banderas banderas 1010 0010 1101 0000 <span style=\"text-decoration: underline;\">+ 0100 1111<\/span> <strong>C<\/strong> <strong>DC<\/strong> <strong>Z<\/strong> <span style=\"text-decoration: underline;\">+ 0110 1111<\/span> <strong>C<\/strong> <strong>DC<\/strong> <strong>Z<\/strong> 1111 0001 0 1 0 0011 1111 1 0 0<\/span><\/span><\/span><\/span><\/pre>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: -2px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">ANDLW<\/span><\/strong> <span style=\"font-family: ARIAL; color: #000000; font-size: small;\"> Esto significa: producto l\u00f3gico<\/span> <strong>AND<\/strong> del <strong>L<\/strong>iteral con el registro <strong>W<\/strong>. Ver tambi\u00e9n <strong>ANDWF<\/strong>.<\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 0px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">ANDLW 00 a FF<\/span><\/strong> <span style=\"font-family: Arial; color: #000000; font-size: small;\">El objetivo de la operaci\u00f3n es, descubrir cuantos bits de <strong>L<\/strong> y <strong>W<\/strong><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">, en binarios<\/span><\/span> est\u00e1n a 1. Si ambos bits son cero, el resultado es cero y la instrucci\u00f3n usada en este caso es <strong>XOR<\/strong>. Esta instrucci\u00f3n hace un <strong>AND<\/strong> l\u00f3gico entre<span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"> un n\u00famero fijo (literal) y<\/span><\/span><\/span><\/span> el contenido del registro W, el resultado es colocado en el registro W. <span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">Con la orden <strong>ANDLW<\/strong>, en el registro <strong>STATUS<\/strong> se ven afectados los bits: <strong>C<\/strong> (<strong>C<\/strong>arry), <strong>Z<\/strong> (Cero) y el <strong>DC<\/strong> (<strong>D<\/strong>\u00edgito <strong>C<\/strong>arry).<\/span><\/span><\/span> El literal puede ir de 00 a FF.<\/span><\/span><\/span><\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">La operaci\u00f3n AND puede decirse que se usa para enmascarar (separar o quitar) los bits que nos interesen. Por ejemplo:<\/span><\/span><\/span><\/span><\/p>\n<p><strong>0F<\/strong>h enmascarar\u00e1 (quita) los cuatro bits altos (nibble alto) y<br \/>\n<strong>F0<\/strong>h quitar\u00e1 los cuatro bits bajos (nibble bajo). Veamos como se usa:<\/p>\n<p style=\"margin-bottom: 3px;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><strong>Utilizaci\u00f3n del 0Fh:\u00a0\u00a0ANDLW 0x0F<\/strong><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; text-indent: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"> Primer n\u00famero:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1001 0011 [N\u00famero en <strong>W<\/strong> anterior a la instrucci\u00f3n ANDLW]<br \/>\nSegundo n\u00famero (<strong>0F<\/strong>):\u00a0\u00a0 \u00a0<span style=\"text-decoration: underline;\">0000 1111<\/span> [N\u00famero <strong>L<\/strong> M\u00e1scara]<br \/>\nRespuesta al <strong>AND<\/strong>:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0000 0011 [Al aplicar la funci\u00f3n <strong>AND<\/strong> entre ambos] (ANDed)<\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-bottom: 3px;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><strong>Utilizaci\u00f3n del F0h:\u00a0\u00a0ANDLW 0xF0<\/strong><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0px; text-indent: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"> Primer n\u00famero:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1001 0011\u00a0 [N\u00famero en <strong>W<\/strong> anterior a la instrucci\u00f3n ANDLW]<br \/>\nSegundo n\u00famero (<strong>F0<\/strong>):\u00a0\u00a0<span style=\"text-decoration: underline;\">1111 0000<\/span> [N\u00famero <strong>L<\/strong> M\u00e1scara]<br \/>\nRespuesta al <strong>AND<\/strong>:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1001 0000\u00a0 [Al aplicar la funci\u00f3n <strong>AND<\/strong> entre ambos] (ANDed) <\/span><\/span><\/span><\/span><\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0pt; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>ANDWF<\/strong><\/span> <span style=\"font-family: Arial; color: #000000; font-size: small;\"> Esto significa: <\/span>Operaci\u00f3n AND producto l\u00f3gico de <strong>W<\/strong> con el archivo <strong>f <\/strong>[ AND&#8217;ed entre W y f]. Ver tambi\u00e9n <strong>ANDLW<\/strong>.<\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 0pt; margin-bottom: 0pt; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">ANDWF 00 a 1F, 0<\/span><\/strong><span style=\"font-family: Arial; color: #000000; font-size: small;\"> El resultado se almacena en el registro W<\/span><\/span>, por el valor 0 en la instrucci\u00f3n<span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">.<\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>ANDWF 00 a 1F, 1<\/strong><\/span><span style=\"font-family: Arial; color: #000000; font-size: small;\"> El resultado se almacena en el archivo f, por el valor\u00a0 en la instrucci\u00f3n. <\/span><\/span><\/span><\/span><\/span><\/p>\n<p>&nbsp;<\/p>\n<p style=\"margin-bottom: 0px; text-align: justify;\">Al registro W se le aplica el producto AND con un archivo f. Como dos archivos<span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"> juntos<\/span><\/span><\/span> no se pueden operar (AND), un archivo debe ponerse en W y se hace AND con el segundo archivo. V\u00e9ase arriba para hacer operaciones de enmascarar con la operaci\u00f3n AND. Con la instrucci\u00f3n\u00a0 <strong>ANDWF<\/strong>, s\u00f3lo se afecta la bandera <strong>Z<\/strong> (cero). Si la respuesta es cero, la bandera <strong>Z<\/strong> en el registro <strong>STATUS<\/strong> se pone a 1, si la respuesta es distinta de cero, la bandera se pone a 0.<\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0pt; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>BCF<\/strong><\/span> <span style=\"font-family: Arial; color: #000000; font-size: small;\">Esto significa: Bit Clear File (pon a \u00ab0\u00bb o aclara el bit indicado<\/span><\/span> (detr\u00e1s de la coma)<span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"> en el archivo<\/span><\/span><span style=\"font-family: Arial; color: #000000; font-size: small;\"> <strong>f<\/strong><\/span><span style=\"font-family: ARIAL; font-size: small;\"> <span style=\"font-family: Arial; color: #000000; font-size: small;\">). Ver tambi\u00e9n <strong>BSF<\/strong>.<\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 0pt; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>BCF 00 a 1F, bit<\/strong><\/span> <span style=\"font-family: Arial; color: #000000; font-size: small;\">Hay sobre 300 instrucciones (incluidas en los micros, trabajando internamente) para esta orden. Hay 79 archivos en el PIC16F84A, los 13 primeros archivos se llaman Registros de Funci\u00f3n Especial (<strong>SFR<\/strong>&#8216;s), el resto (66) se llaman Archivos de Prop\u00f3sito General (<strong>GPR<\/strong>&#8216;s) del 0Ch a 4Fh.<\/span> <span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"> No afecta los bits de STATUS.<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-bottom: 0px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><strong><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/bsf.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-1222\" title=\"bsf\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/12\/bsf.gif\" alt=\"\" width=\"107\" height=\"51\" \/><\/a>BCF<\/strong> se usa para limpiar [clear] un bit (pone a 0 el bit identificado en el archivo <strong>f<\/strong>). Por ej.: <strong>BCF 06h,5 <\/strong> significa que el <strong>bit 5<\/strong> del archivo <strong>06<\/strong> debe ser puesto a \u00ab0\u00bb (aclarado), el resto de bits no se influyen. Ver figura de la derecha. El archivo 6 contiene l\u00edneas de E\/S com\u00fanmente se llaman I\/O del puerto.<\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>BSF<\/strong><\/span> <span style=\"font-family: Arial; color: #000000; font-size: small;\">Esto significa: Bit Set File (poner a 1 el bit indicado, en el archivo <\/span><\/span><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><strong>f<\/strong>).<\/span><\/span><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"> Ver tambi\u00e9n<\/span><\/span><\/span><\/span><span style=\"font-family: ARIAL; font-size: small;\"> <strong>BCF<\/strong>.<\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 0pt; margin-right: 1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>BSF 00 a 1F, bit<\/strong><\/span><span style=\"font-family: Arial; color: #000000; font-size: small;\"> Hay casi 300 instrucciones para esta orden. Hay 79 archivos en el PIC16F84A, de las que los primeros 13 son los <strong>SFR<\/strong>&#8216;s y los siguientes 66 son los conocidos <strong>GPR<\/strong>&#8216;s. Estos GPR&#8217;s ocupan del 0Ch al 4Fh y cada uno tiene 8 bits. <strong>BSF<\/strong> significa poner a 1 l\u00f3gico el bit especifico en el archivo <strong>f<\/strong>.<span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"> No afecta los bits de STATUS.<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n<p>&nbsp;<\/p>\n<p style=\"margin-bottom: 0px; margin-right: 1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">Por ejemplo: <strong>BSF 06h,5<\/strong> indica que el <strong>bit 5<\/strong> del archivo <strong>6<\/strong> ser\u00e1 puesto a 1, este archivo 6 contiene <\/span><\/span>8 <span style=\"font-family: ARIAL; color: #000000; font-size: small;\">l\u00edneas E\/S, com\u00fanmente se llaman l\u00edneas I\/O del puerto. El resultado es <\/span>la inversa<span style=\"font-family: ARIAL; color: #000000; font-size: small;\"> a la <\/span>instrucci\u00f3n<span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"> anterior, el 0 se sustituye por un 1.<\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>BTFSC<\/strong><\/span><span style=\"font-family: Arial; color: #000000; font-size: small;\"> Esto significa: Bit Test, Skip if Clear ( Bit de Test, Salta si es \u00ab0\u00bb).<\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 0pt; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>BTFSC 00 a 1F, bit<\/strong><\/span><span style=\"font-family: Arial; color: #000000; font-size: small;\"> Hay casi 300 instrucciones para esta orden, para cubrir los 79 archivos, cada uno con 8 bits. <strong>BTFSC<\/strong> significa, comprobar el bit identificado en el registro\u00a0llamado y<span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"> si es 0<\/span><\/span><\/span> saltar una instrucci\u00f3n (no ejecuta la instrucci\u00f3n que sigue).\u00a0<span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"> No afecta los bits de STATUS.<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n<p>&nbsp;<\/p>\n<p style=\"margin-bottom: 0px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"color: #000000; font-size: small;\">Se ve mejor con un<\/span><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"> ejemplo: <strong>BTFSC 06h,4<\/strong> es la forma de comprobar si el bit 4 en el archivo 6 es \u00ab0\u00bb, si es cero, salta la pr\u00f3xima instrucci\u00f3n (pasar sin ejecutar) y continuar con la posterior.<\/span><\/span><\/span><\/span><\/p>\n<p>&nbsp;<\/p>\n<p style=\"margin-bottom: 0px;\" align=\"left\"><span style=\"font-family: Arial; color: #000000;\"><strong>Etiqueta: BTFSC 06h,4<\/strong> ; comprueba si el bit 4 es 0<br \/>\n<strong>GOTO Etiqueta2<\/strong> ; si no es 0, salta hasta Etiqueta2<br \/>\n<strong>CALL Dlay<\/strong> ; si es 0, llama a subrutina Dlay. <\/span><\/p>\n<p>&nbsp;<\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0pt;\" align=\"left\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">BTFSS<\/span><\/strong> <span style=\"font-family: ARIAL; color: #000000; font-size: small;\">Esto significa: Bit Test, Skip if Set (Bit de Test, Salta si es \u00ab1\u00bb).<\/span><\/p>\n<p style=\"margin-top: 0pt; margin-right: 1px; text-align: justify;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">BTFSS 00 a 1F, bit<\/span><\/strong> Tambi\u00e9n hay casi 300 instrucciones para esta orden, para cubrir los 79 (4Fh) archivos, cada uno con 8 bits. BTFSS significa, comprobar el bit identificado en el registro llamado y salta la pr\u00f3xima instrucci\u00f3n si es 1.\u00a0No afecta los bits de STATUS.<\/p>\n<p style=\"margin-bottom: 0px; text-align: justify;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\">En <strong>BTFSS 3,2<\/strong> comprobamos el bit 2 del registro 3 y si dicho bit es 1, salta la pr\u00f3xima instrucci\u00f3n, si no, continua con la siguiente.<\/span><\/p>\n<p style=\"margin-bottom: 0px;\" align=\"left\"><span style=\"font-family: ARIAL; font-size: x-small;\"><strong>Etiqueta: BTFSS 03h,2 <\/strong> ; comprueba si el bit 2 es 1<br \/>\n<strong> GOTO Etiqueta2<\/strong> ; si no, va a Etiqueta2<br \/>\n<strong>CALL Dlay<\/strong> ; si es 1, llama a subrutina Dlay para seguir. ; si es 1 viene a esta instrucci\u00f3n y sigue.<\/span><\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0px; margin-right: 1px;\" align=\"left\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">CALL<\/span><\/strong> Esto significa: Llamada incondicional a subrutina.<\/p>\n<p style=\"margin-bottom: 0px; margin-right: 1px; text-align: justify;\">En un programa,<span style=\"font-family: ARIAL; font-size: small;\"> <span style=\"font-family: Arial; color: #000000; font-size: small;\">esto se escribe como: CALL Salida o CALL Tono1, etc. donde Salida o Tono1 son etiquetas. Un <strong>RETURN<\/strong> deber\u00eda encontrarse al final de la subrutina CALL para que el micro vuelva a la siguiente instrucci\u00f3n despu\u00e9s de la instrucci\u00f3n CALL que la llam\u00f3, de lo contrario se producir\u00e1 un desborde de pila, con el consiguiente bloqueo del programa.<\/span><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"> No afecta los bits de STATUS.<\/span><\/span><\/span><\/p>\n<p style=\"margin-right: 1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>CALL Etiqueta<\/strong><\/span><span style=\"font-family: Arial; color: #000000; font-size: small;\">Los programas deber\u00edan ser escritos de forma que las pocas primeras instrucciones pongan al micro en el <strong>Inicio<\/strong> de<strong> Programa<\/strong> <strong>Principal<\/strong>. El \u00abPrograma Principal\u00bb se localizar\u00e1 f\u00edsicamente al final del listado y \u00e9ste puede estar en el final de la memoria o a mitad del camino, si <\/span><\/span>el<span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"> programa es aproximadamente 250 bytes de largo. <\/span> <\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 0pt; margin-right: 1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">Despu\u00e9s de las primeras instrucciones que llevan al micro a: GOTO Inicio, se colocan todas las subrutinas necesarias para el programa. Con una orden <strong>CALL<\/strong> se llamar\u00e1 a las subrutinas y al final de cada subrutina debe tener una instrucci\u00f3n <strong>RETURN<\/strong>. Una llamada remota puede hacer de subrutina pero esta segunda subrutina no puede llamar otra subrutina.<\/span> <\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-bottom: 0px; margin-right: 1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">Cada vez que se ejecuta una instrucci\u00f3n <strong>CALL<\/strong>, un valor de direcci\u00f3n es colocado (empujado) en la Pila (<strong>Stack<\/strong>), entonces el micro sabe donde volver despu\u00e9s de ejecuta<\/span><\/span>da<span style=\"font-family: ARIAL; font-size: small;\"> la subrutina, la Pila s\u00f3lo puede tener <\/span>8<span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"> niveles de alto, entonces es necesario llevar cuidado para no quedarse sin Pila (<strong>Stack<\/strong>). Ver tambi\u00e9n <strong>GOTO<\/strong>, <strong>RETURN<\/strong> y <strong>RETLW<\/strong>.<\/span> <\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 3px; margin-right: 1px;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: x-small;\">Ejemplo:<\/span><\/span><\/span><\/span><\/p>\n<pre style=\"margin-top: 3px; margin-bottom: 3px;\">Loop2: BTFSS 05,2     ;\u00bfesta apretado el pulsador?\r\n        GOTO Loop2\t;No. Salta a Loop2\r\n        MOVLW 01\t;S\u00cd.\r\n        XORWF 06,1\t; encender el LED\r\n\tCALL Delay\t;Llamada a rutina de Retardo\r\n        GOTO Loop1\t; para ver LED encendido.\r\n\r\n Delay: DECFSZ 1Bh,1\t; Subrutina anidada de Retardo\r\n        GOTO Delay\t; retardo exterior\r\n        DECFSZ 1Ch,1\t; retardo interior\r\n        GOTO Delay\r\n        RETURN<\/pre>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">CLRF <\/span><\/strong><span style=\"font-family: ARIAL; color: #000000; font-size: small;\">Esto significa: Clear f [Limpia <strong>f<\/strong>] (poner a 0 los 8 bits del archivo <strong>f<\/strong>)<\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: -3px; margin-bottom: 0px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">CLRF 00 a 1F<\/span><\/strong> <span style=\"font-family: Arial; color: #000000; font-size: small;\">El contenido de un archivo se pone a 0 (Clear) y el bit <strong>Z<\/strong> del registro <strong>STATUS<\/strong> es puesto a 1, esto es, los ocho bits\u00a0 se ponen a \u00ab0\u00bb. <\/span><\/span>Por esto hay que tener en cuenta el bit <strong>Z<\/strong><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"> (<\/span><\/span><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">cero,<\/span><\/span><\/span> flag <strong>Z<\/strong>). <span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">Los 12 primeros archivos son <strong>SRF<\/strong>&#8216;s y los siguientes 68, del 07h al 4Fh son los llamados <strong>GPR<\/strong>&#8216;s.<\/span><\/span><\/span><\/span><\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0pt; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">CLRW<\/span><\/strong> <span style=\"font-family: Arial; color: #000000; font-size: small;\">Esto significa: Clear <strong>W<\/strong> (limpiar el registro de trabajo &#8211; llamado acumulador en otros micros)<\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0px; margin-right: 0px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>CLRW<\/strong><\/span> <span style=\"font-family: Arial; color: #000000; font-size: small;\">El registro W (de trabajo) es aclarado, todos los bits son puestos a 0. Cuando el <strong>W<\/strong> es puesto a 0, la bandera cero (flag <strong>Z<\/strong>) es puesta a 1, en otras palabras la bandera <strong>Z<\/strong> del registro <strong>STATUS<\/strong> es puesta a 1.<\/span><\/span><\/span><\/span><\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0pt; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>CLRWDT<\/strong><\/span> <span style=\"font-family: ARIAL; color: #000000; font-size: small;\">Esto significa: aClarado (puesta a 0) del Temporizador Perro Guardi\u00e1n (El bit <strong>WDT<\/strong> = 0).<\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>CLRWDT<\/strong><\/span> <span style=\"font-family: Arial; color: #000000; font-size: small;\">La instrucci\u00f3n repone (resetea) el Temporizador Perro Guardi\u00e1n, esto tambi\u00e9n repone el preescaler del <strong>WDT<\/strong><\/span><\/span><\/span><span style=\"color: #000000; font-size: small;\"> y consume 2 ciclos maquina. Ejemplo:<\/span><\/span><\/p>\n<pre style=\"margin-top: 3px; margin-bottom: 3px;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"color: #000000; font-size: small;\"><span style=\"font-size: x-small;\"> Operaci\u00f3n: 00h <span style=\"font-family: Courier New;\">\u2192<\/span> WDT 0 <span style=\"font-family: Courier New;\">\u2192<\/span> WDT prescaler, 1 <span style=\"font-family: Courier New;\">\u2192<\/span> <span style=\"text-decoration: overline;\">TO<\/span> 1 <span style=\"font-family: Courier New;\">\u2192<\/span> <span style=\"text-decoration: overline;\">PD<\/span> Afecta Status: <strong><span style=\"text-decoration: overline;\">TO<\/span><\/strong>, <strong><span style=\"text-decoration: overline;\">PD<\/span><\/strong><\/span><\/span><\/span><\/pre>\n<p>&nbsp;<\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>COMF<\/strong><\/span> <span style=\"font-family: Arial; color: #000000; font-size: small;\">Esto significa: Complemento del archivo<\/span> <\/span>f<span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">.<\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>COMF 00 a 1F,0<\/strong><\/span> <span style=\"font-family: Arial; color: #000000; font-size: small;\">El resultado estar\u00e1 en <strong>W<\/strong><\/span> <\/span>por el valor 0 detr\u00e1s de la coma<span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">.<\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0px; text-align: justify;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>COMF 00 a 1F,1<\/strong><\/span> <span style=\"font-family: Arial; color: #000000; font-size: small;\">El resultado estar\u00e1 en <strong>f<\/strong>. El contenido <strong>f<\/strong> es complementado (los 0&#8217;s se cambian a 1&#8217;s y los 1&#8217;s a 0&#8217;s).<\/span><\/span><\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>DECF<\/strong><\/span> <span style=\"font-family: ARIAL; color: #000000; font-size: small;\">Esto significa: Decremento del archivo<\/span> <\/span><span style=\"font-family: ARIAL; color: #000000; font-size: small;\">f<\/span><span style=\"font-family: Arial; color: #000000; font-size: small;\"> <span style=\"font-family: ARIAL; color: #000000; font-size: small;\">. <\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0pt; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>DECF 00 a 1F,0<\/strong><\/span> El resultado estar\u00e1 en <strong>W<\/strong>.<span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"> El contenido del archivo<\/span><\/span><\/span><span style=\"font-family: Arial; color: #000000; font-size: small;\"> <strong>f<\/strong> es decrementado<\/span><\/span><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"> y puesto \u00ab<strong>W<\/strong>\u00ab.<\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0px; margin-right: 0px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>DECF 00 a 1F,1<\/strong><\/span> Aqu\u00ed, el resultado estar\u00e1 en <strong>f<\/strong>. El contenido del archivo \u00ab<strong>f<\/strong>\u00bb es decrementado, significa que es deducido (tomado) 1 del archivo. Si el archivo es 0000 0000 esto da la vuelta a 1111 1111 (255) afectando a la bandera <strong>Z<\/strong>. Cuando el archivo es 0000 0001 y se ejecuta una instrucci\u00f3n DECF, el archivo pasa a 0000 0000 y la bandera <strong>Z<\/strong> (cero) del <strong>STATUS<\/strong> se pone a 1, en otro caso es 0.<\/span><\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0pt; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>DECFSZ<\/strong><\/span> <span style=\"font-family: Arial; color: #000000; font-size: small;\">Esto significa: DECrement f, Skip if Zero (Decrementa el archivo <strong>f<\/strong> y salta si es 0). <\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>DECFSZ 00 a 1F,0<\/strong><\/span> <span style=\"font-family: Arial; color: #000000; font-size: small;\">El resultado estar\u00e1 en <strong>W<\/strong>.<\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-right: 1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>DECFSZ 00 a 1F, 1<\/strong><\/span> El resultado estar\u00e1 en <strong>f<\/strong>. La instrucci\u00f3n <strong>DECFSZ<\/strong> tiene muchos empleos.<br \/>\nUn empleo importante est\u00e1 en una subrutina de retardo. En esta rutina la instrucci\u00f3n <strong>DECFSZ<\/strong> crea un lazo en el que el micro es enviado a una instrucci\u00f3n por encima-del-programa y se ejecutar\u00e1 un juego de instrucciones una y otra vez, esta es una t\u00e1ctica de perdida de tiempo para crear un retardo. No afecta al registro STATUS.<\/span><\/p>\n<p style=\"margin-top: 4px; margin-bottom: 4px; margin-right: 1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">Cada vez que el micro llega a <strong>DECFSZ<\/strong>, el contenido del archivo es decrementado y si el archivo no es cero, se ejecutar\u00e1 la siguiente instrucci\u00f3n en el programa. La siguiente instrucci\u00f3n es normalmente GOTO y \u00e9sta env\u00eda de nuevo al micro por encima-del-programa. Por ej.:<\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0px;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-size: x-small;\">ret:\u00a0\u00a0\u00a0\u00a0 DECFSZ 0Ch,0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ; Decrementa 0C y<span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"> <span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">si<\/span><\/span><\/span> es 0,<\/span><\/span><\/span><\/span><\/span><\/span> salta una l\u00ednea<br \/>\nGOTO ret\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ; no es 0, ejecuta esta l\u00ednea<br \/>\n&#8230;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ; si es 0, viene hasta aqu\u00ed.<br \/>\n&#8230;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ;sigue programa<\/span><\/span><\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>GOTO<\/strong><\/span> <span style=\"font-size: small;\">Esto significa: Bifurcaci\u00f3n Incondicional.<\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0px; margin-right: 1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>GOTO k<\/strong><\/span> <span style=\"font-size: small;\">GOTO es la bifurcaci\u00f3n incondicional en la que el micro es enviado a la direcci\u00f3n especificada.\u00a0Esta instrucci\u00f3n carga simplemente la constante k en el registro PC (contador de programa). Esta es la t\u00edpica instrucci\u00f3n de salto incondicional a cualquier posici\u00f3n de la memoria de programa. La constante literal k es la direcci\u00f3n de destino del salto, es decir la nueva direcci\u00f3n de memoria de programa a partir de la cual comenzar\u00e1n a leerse las instrucciones despu\u00e9s de ejecutar la instrucci\u00f3n GOTO. <\/span><span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">No afecta al registro STATUS.<\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0px; margin-right: 1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-size: small;\">Tambi\u00e9n se usa <strong>$-n<\/strong> o <strong>$+n<\/strong> donde n es el n\u00famero de l\u00edneas que ha de, volver atr\u00e1s o avanzar en el programa. Por ej. <\/span><\/span><\/p>\n<p>&nbsp;<\/p>\n<p style=\"margin-top: 5px; margin-bottom: 0px; margin-right: 0px;\" align=\"left\"><span style=\"font-family: ARIAL; color: #000000;\"><span style=\"font-family: ARIAL; color: #000000; font-size: x-small;\">ret DECFSZ 0Ch,0 <\/span><\/span><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000;\"><span style=\"font-family: ARIAL; font-size: x-small;\"> ; decrementa 0Ch, si es 0 salta 1 instrucci\u00f3n<br \/>\nGOTO $-1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ; No, vuelve 1 l\u00ednea atr\u00e1s. No requiere etiqueta.<br \/>\n&#8230;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ; Si, sigue programa <\/span><\/span><\/span><\/span><\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>INCF<\/strong><\/span> <span style=\"font-family: ARIAL; color: #000000; font-size: small;\">Esto significa: Incrementar el archivo <strong>f<\/strong>.<\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>INCF 00 a 1F,0<\/strong><\/span> <span style=\"font-family: Arial; color: #000000; font-size: small;\">El resultado del incremento estar\u00e1 en <strong>W<\/strong>.<\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0px; margin-right: 1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>INCF 00 a 1F,1<\/strong><\/span> <span style=\"font-family: Arial; color: #000000; font-size: small;\">El resultado estar\u00e1 en <strong>f<\/strong>. El contenido del archivo &#8216;<strong>f<\/strong>&#8216; es incrementado, esto simplemente significa que se agrega 1 al archivo, si el archivo es 1111 1111 (255) esto da la vuelta a 0000 0000. Cuando el archivo es FFh y se ejecuta la instrucci\u00f3n <strong>INCF<\/strong>, el archivo pasa a 0000 0000 y la bandera <strong>Z<\/strong> (cero) es puesta a 1 en otro caso es 0.<\/span><\/span><\/span><\/span><\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>INCFSZ<\/strong><\/span> <span style=\"font-family: ARIAL; color: #000000; font-size: small;\">Esto significa: INCrement f and Skip if 0 (Incrementar el archivo f y salta si es 0).<\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>INCFSZ 00 a 1F,0<\/strong><\/span> <span style=\"font-family: Arial; color: #000000; font-size: small;\">El resultado estar\u00e1 en <strong>W<\/strong>.<\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>INCFSZ 00 a 1F,1<\/strong><\/span> <span style=\"font-family: Arial; color: #000000; font-size: small;\">El resultado estar\u00e1 en <strong>f<\/strong>. Normalmente la funci\u00f3n de decremento DECFSZ se usa para crear un retardo, pero tambi\u00e9n se puede usar un INCFSZ. <span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">No afecta al registro STATUS.<\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0px; margin-right: 1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">Esto trabaja as\u00ed: Si el contenido de un archivo es incrementado y el resultado no es 0, entonces la siguiente instrucci\u00f3n es ejecutada con un GOTO una direcci\u00f3n anterior y ejecutar\u00e1 otro INCFSZ. Eventualmente el archivo ser\u00e1 1111 1111 y el pr\u00f3ximo incremento lo devolver\u00e1 a 0000 0000, el resultado ser\u00e1 cero y la instrucci\u00f3n GOTO ser\u00e1 ignorada, ejecut\u00e1ndose la siguiente instrucci\u00f3n.<\/span><\/span><\/span><\/span><\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>IORLW<\/strong><\/span> <span style=\"font-family: Arial; color: #000000; font-size: small;\">Esto significa: Inclusive <strong>OR<\/strong> Literal con W.<\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-right: 1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>IORLW 00 a FF<\/strong><\/span><span style=\"font-family: Arial; color: #000000; font-size: small;\"> El contenido del archivo W es sumado (l\u00f3gico) [OR&#8217;ed] con un n\u00famero. El resultado es colocado en registro de trabajo W, el n\u00famero literal puede ser desde 00 a FF. Afecta al bit <strong>Z<\/strong> del registro <strong>STATUS<\/strong>.<\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">Esto es simplemente una operaci\u00f3n <strong>OR<\/strong> (suma l\u00f3gica) y el objeto de su realizaci\u00f3n es cambiar dos o m\u00e1s bits a \u00ab1\u00bb, si un bit es ORed con 0, la respuesta no se altera, si el bit es ORed con 1, el resultado es 1.<\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: x-small;\">Ejemplo: Si el registro W <\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: x-small;\"> se carga con\u00a0 1111 0000 (es una m\u00e1scara de 4 bits altos F0h) y <\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: x-small;\"> un n\u00famero como <span style=\"text-decoration: underline;\"> 0100 1110<\/span> (4Eh) es <strong>OR<\/strong>ed con W,<\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0px;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: x-small;\"> el resultado es\u00a0 1111 1110 (FEh).<\/span><\/span><\/span><\/span><\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>IORWF<\/strong><\/span> <span style=\"font-family: Arial; color: #000000; font-size: small;\">Esto significa: Inclusive <strong>OR<\/strong> con el archivo\u00a0f<\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>IORWF 00 a 1F,0<\/strong><\/span><span style=\"font-family: Arial; color: #000000; font-size: small;\"> El resultado estar\u00e1 en <strong>W<\/strong>. <\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-right: 1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>IORWF 00 a 1F,1<\/strong><\/span><span style=\"font-family: Arial; color: #000000; font-size: small;\"> El resultado estar\u00e1 en <strong>f<\/strong>. El contenido del registro <strong>W<\/strong> es ORed con el archivo <strong>f<\/strong>, esto simplemente es una operaci\u00f3n \u00abOR\u00bb y el objeto de su realizaci\u00f3n es cambiar dos o m\u00e1s bits a \u00ab1\u00bb. Si un bit es ORed con 0, la respuesta no se altera, si el bit es ORed con un 1 el resultado es 1. <span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">Afecta al bit <strong>Z<\/strong> del registro STATUS.<\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0px;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: x-small;\">Ejemplo: Si el registro W es cargado con 1111 0000 (F0h es una m\u00e1scara de 4 bits altos) y un<br \/>\narchivo con un n\u00famero como <span style=\"text-decoration: underline;\">0100 1110<\/span> (4Rh) es ORed<br \/>\ncon W, el resultado es 1111 1110 (FEh).<\/span><\/span><\/span><\/span><\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">MOVF<\/span><\/strong><span style=\"font-family: Arial; color: #000000; font-size: small;\"> Esto significa: Mueve el contenido del archivo 00 a 1F <span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">dentro y fuera del archivo o <\/span><\/span>al W.<\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>MOVF 00 a 1F,<\/strong><\/span><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">0<\/span><\/strong> <span style=\"font-family: Arial; color: #000000; font-size: small;\">El contenido del archivo es movido al W. El resultado estar\u00e1 en <strong>W<\/strong>.<\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>MOVF 00 a 1F,<\/strong><\/span><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">1<\/span><\/strong> <span style=\"font-family: Arial; color: #000000; font-size: small;\">El resultado estar\u00e1 en <strong>f<\/strong>. Para esta instrucci\u00f3n MOVF 00 a 1F,1 el contenido es movido fuera del archivo y devuelto a \u00e9l otra vez, pero no entra en W. Esto es una prueba \u00fatil ya que la bandera <strong>Z<\/strong> (cero) <span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">del STATUS <\/span><\/span><\/span>se ve afectada. Si el contenido es cero, la bandera <strong>Z<\/strong> es puesta a 1, si el contenido es 1, la bandera <strong>Z<\/strong> es 0.<\/span><\/span><\/span><\/span><\/span><\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0pt; margin-right: 1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">MOVFW<\/span><\/strong> Esta forma de instrucci\u00f3n, no es v\u00e1lida (<strong>n<\/strong><\/span><\/span><\/span><strong>o se recomienda su uso<\/strong>), a pesar de que el propio <strong>MPLAB<\/strong> la admita, significa mover el contenido del archivo <strong>F<\/strong>, al registro de trabajo <strong>W<\/strong>. Cando se encuentre esta forma de expresi\u00f3n, debe modificarse por:<\/span><\/p>\n<p style=\"margin-top: 5px; margin-bottom: 0pt; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"> <strong>MOVF f,W<\/strong> donde f es un registro entre 00 y FF. Tambi\u00e9n puede usarse <strong>MOVF f,<\/strong><span style=\"font-family: Arial; font-size: small;\"><strong>0<\/strong> que viene a ser lo mismo.<\/span><\/span><\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>MOVLW<\/strong><\/span> <span style=\"font-family: Arial; color: #000000; font-size: small;\">Esto significa: Mueve Literal a W.<\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0pt; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000080; font-size: medium;\"><strong>MOVLW 00 a FF<\/strong><\/span><span style=\"font-family: Arial; color: #000000; font-size: small;\">Un n\u00famero <strong>f<\/strong> (Literal) es cargado en el registro <strong>W<\/strong>. El Literal puede ser 00 a FF. <span style=\"font-family: Arial; color: #000000; font-size: small;\">No afecta al registro STATUS.<\/span><\/span><\/span><\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">MOVWF<\/span><\/strong> <span style=\"font-family: Arial; color: #000000; font-size: small;\">Esto significa: Copia <strong>W<\/strong> al archivo llamado <strong>f<\/strong>.<\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">MOVWF 00 a 1F<\/span><\/strong><span style=\"font-family: Arial; color: #000000; font-size: small;\"> Esta instrucci\u00f3n copia datos del registro <strong>W<\/strong> al archivo <strong>f<\/strong>. <span style=\"font-family: Arial; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">No afecta al registro STATUS.<\/span><\/span><\/span><\/span><\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">NOP<\/span><\/strong> <span style=\"font-family: Arial; color: #000000; font-size: small;\">Esto significa: Ninguna operaci\u00f3n. Es decir, el micro no realiza ninguna operaci\u00f3n, s\u00f3lo consume el tiempo de 1 instrucci\u00f3n.<\/span><\/span><\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">OPTION<\/span><\/strong> <span style=\"font-family: Arial; color: #000000; font-size: small;\">Esto significa: Carga registro <strong>OPTION<\/strong>. El contenido del registro <strong>W<\/strong> es cargado en el registro <strong>OPTION<\/strong>.<\/span><\/span><\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">RETFIE<\/span><\/strong> <span style=\"font-family: Arial; color: #000000; font-size: small;\">Esto significa: Cuando hay una interrupci\u00f3n, RETURN con valor de lo alto de la Pila y lo deja en el PC.<\/span><\/span><\/p>\n<p style=\"margin-top: 0px; margin-bottom: 0pt; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">RETFIE<\/span><\/strong> <span style=\"font-size: small;\">Carga el <strong>PC<\/strong> con el valor que se encuentra en la parte superior de la pila, asegurando as\u00ed la vuelta de la interrupci\u00f3n. Pone a 1 el bit <strong>GIE<\/strong>, con el fin de autorizar o habilitar de nuevo que se tengan en cuenta las interrupciones. <strong>TOS<\/strong> <\/span><span style=\"font-family: Arial; font-size: small;\"><span style=\"color: #000000; font-size: x-small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Courier New;\">\u2192<\/span><\/span><\/span><\/span><span style=\"font-size: small;\"> <strong>PC<\/strong>, 1 <\/span><span style=\"font-family: Arial; color: #000000; font-size: x-small;\"><span style=\"font-family: Courier New; color: #000000; font-size: small;\">\u2192<\/span><span style=\"font-family: Arial; color: #000000; font-size: small;\"> <strong>GIE<\/strong>.<\/span><\/span> No afecta al registro STATUS.<\/span><\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: x-small;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">RETLW<\/span><\/strong> <span style=\"font-family: Arial; color: #000000; font-size: small;\">Esto significa: <strong>RETURN<\/strong> con Literal en <strong>W<\/strong>.<\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: x-small;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">RETLW 00 a FF<\/span><\/strong><span style=\"font-family: Arial; color: #000000; font-size: small;\"> El registro <strong>W<\/strong> es cargado con el valor del literal<\/span><\/span>, normalmente devuelve un dato procedente de una tabla<span style=\"font-family: Arial; color: #000000; font-size: small;\">. <span style=\"font-family: ARIAL; font-size: small;\">El Contador de Programa (PC) es<\/span><\/span><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"> cargado de la cima de la pila (Stack), <\/span><\/span>que corresponde a <span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">la direcci\u00f3n de RETURN de programa.<\/span><\/span><span style=\"font-family: Arial; color: #000000; font-size: small;\"> <span style=\"font-family: Arial; color: #000000; font-size: small;\">No afecta al registro STATUS.<\/span><\/span><\/span><\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">RETURN<\/span><\/strong> <span style=\"font-family: Arial; color: #000000; font-size: small;\">Esto significa: Retorno de Subrutina.<\/span><\/span> Esta instrucci\u00f3n est\u00e1 al final de una rutina o subrutina.<span style=\"font-family: Arial; color: #000000; font-size: small;\"> <span style=\"font-family: Arial; color: #000000; font-size: small;\">No afecta al registro STATUS.<\/span><\/span><\/span><\/p>\n<hr size=\"3\" \/>\n<p style=\"margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">RLF<\/span><\/strong> <span style=\"font-family: Arial; color: #000000; font-size: small;\">Esto significa: <strong>R<\/strong>otar el archivo <strong>f<\/strong> a Izquierda con a<strong>C<\/strong>arreo (Carry).<\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0pt;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">RLF 00 a 1F,0<\/span><\/strong><span style=\"font-family: Arial; color: #000000; font-size: small;\"> El resultado se almacena en <strong>W<\/strong>.<\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0px; margin-right: 1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><strong><span style=\"font-family: Arial; color: #000080; font-size: medium;\">RLF 00 a 1F,1<\/span><\/strong> Resultado se almacena en <strong>f<\/strong>. El contenido de un archivo, es rotado un bit a la izquierda por la bandera Carry (acarreo), esto requiere de 9 desplazamientos para recuperar el valor<span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"> original<\/span><\/span> del archivo. Afecta al bit <strong>C<\/strong> del <strong>STATUS<\/strong>.<\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0px;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">El uso de: <em>RLF&#8230;..Reg, Destino&#8230;&#8230;..; rota los bits de un registro un lugar la izquierda.<\/em> <\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-bottom: 0px;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">Si Reg = b&#8217;00010110&#8242;<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 4px; margin-bottom: 0px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">Despu\u00e9s de la instrucci\u00f3n: Reg = b&#8217;0010110C&#8217;\u00a0 donde C es el valor del bit STATUS,C en el momento de ejecutarse la instrucci\u00f3n RLF.<\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0px;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">Veamos <span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">en <\/span><\/span><\/span><\/span>mas detalle, c\u00f3mo trabaja la funci\u00f3n RLF:<\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0px;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">Un grupo de 8 bits<span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"> es<\/span><\/span><span style=\"font-family: Arial; color: #000000; font-size: small;\"> registro, o sea:<\/span><\/span> Registro = B7 B6 B5 B4 B3 B2 B1 B0<\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">Al aplicar la instrucci\u00f3n <span style=\"font-family: Arial; color: #000000; font-size: small;\"><em><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">RLF&#8230;..Reg,F<\/span><\/span><\/span><\/em><\/span> ocurre que: (STATUS,C &lt;== B7) &lt;== B6 B5 B4 B3 B2 B1 B0 (C &lt;== STATUS,C)<\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-bottom: 0px; margin-right: 1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">Esto significa que, todos los bits de Reg son rotados (desplazados) una posici\u00f3n hacia la izquierda. El espacio generado a la derecha de Reg es decir, el bit0 (B0) del registro, es ocupado por el valor que ten\u00eda en ese momento el bit C del registro STATUS. A su vez, el Bit7 (B7) de Reg sale del Registro y se rellena con el bit C del registro STATUS.<\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-bottom: 0px;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">Repasemos otra vez. Reg = b&#8217;00001100&#8242; (Ch = .12) y STATUS,C = 0<\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0px;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">Aplicamos;\u00a0 <em>RLF Reg,F<\/em> Entonces: Reg = b&#8217;00011000&#8242; (18h = .24) y STATUS,C = 0<\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-bottom: 0px; margin-right: 1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">Podemos comprobar que antes de aplicar la RLF, Reg val\u00eda 12 en sistema decimal. Despu\u00e9s de la instrucci\u00f3n RLF Reg vale 24. Hemos multiplicado a Reg por dos, utilizando la instrucci\u00f3n RLF. Ahora, consideremos el siguiente caso:<\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-bottom: 0px;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">Reg = b&#8217;00001100&#8242; (Ch) y STATUS,C = 1<\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-top: 3px; margin-bottom: 0px;\" align=\"left\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">Aplicamos;\u00a0 <em>RLF Reg,F<\/em> Entonces: Reg = b&#8217;00011001&#8242; (19h = .25) y\u00a0 STATUS,C = 0<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-bottom: 0px; margin-right: 1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">En este caso, antes de la aplicaci\u00f3n de RLF Reg val\u00eda 12 en decimal y despu\u00e9s de aplicar la instrucci\u00f3n Reg vale 25 en decimal, por qu\u00e9 ocurre este error si hemos aplicado la misma instrucci\u00f3n al mismo registro Reg. Debemos considerar el motivo.<\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-bottom: 0px; margin-right: 1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">El motivo radica en que el bit C\u00a0 del registro STATUS, antes de ejecutar la instrucci\u00f3n RLF, val\u00eda<span style=\"font-family: Arial; color: #000000; font-size: small;\"> 1,<\/span> en el segundo caso y ocup\u00f3 el bit0 del<br \/>\nReg al ejecutar la instrucci\u00f3n RLF. Por tanto, en este segundo caso, al hacer RLF Reg,F equivale a hacer Reg * 2 + 1. <\/span><\/span><\/span><\/span><\/span><\/p>\n<p style=\"margin-bottom: 0px; margin-right: 1px; text-align: justify;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">Precauciones a tener en cuenta para evitar incurrir en este error. <\/span>Para asegurarnos en una multiplicaci\u00f3n por dos, siempre limpiaremos el bit C del STATUS antes de aplicar la instrucci\u00f3n RLF, asegur\u00e1ndonos as\u00ed que el bit STATUS,C no \u00ab<span style=\"font-family: ARIAL; color: #000000; font-size: small;\"><span style=\"font-family: Arial; color: #000000; font-size: small;\">corrompa<\/span><\/span>\u00bb la operaci\u00f3n.<\/span><\/span><\/span><\/span><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Juego de Instrucciones de los PIC16F84A LOS REGISTROS (Tambi\u00e9n llamados ARCHIVOS ) &nbsp; CARACTER\u00cdSTICAS GENERALES DE LOS PIC16F84A. Hay solo 35 instrucciones en el PIC16F84A, con c\u00f3digos de instrucci\u00f3n de 14 bits de ancho. Todas las instrucciones ocupan una palabra y todas consumen un ciclo, excepto las de salto o bifurcaci\u00f3n que usan dos. La [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":1212,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[29,15,16],"tags":[43,269,124,167],"class_list":["post-569","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-instrucciones-pic","category-microcontroladores","category-pic","tag-12f509","tag-pic","tag-pic16f84a","tag-pic18f2550"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/posts\/569","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/comments?post=569"}],"version-history":[{"count":5,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/posts\/569\/revisions"}],"predecessor-version":[{"id":1527,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/posts\/569\/revisions\/1527"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/media\/1212"}],"wp:attachment":[{"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/media?parent=569"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/categories?post=569"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/tags?post=569"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}