You are on page 1of 16
APROBADO O8/12/2014 06:26:21 PM. Instrucciones para programar el PIC16F877 PARA DIFUSION PUBLICA PARA DIFUSION PUB! Jrsrucctanes pare programor of PICTEPBI7 Estos microcontroladores responden a una serie de instrucciones 0 cédigos que se deben grabar en su memoria de programa, en total son 35. A continuacion se encuentra una tabla con la lista completa y cespués una descripcién de cada una de elias con el fin de faeilitar su aprendizaje ‘Si d = Gel resultado de la operaciin se almacena en el registro W Sid = 1 el resultado se almacena en el registro utilizado Operaciones orientadas a registros: Nemotécnicn: ‘Operacién Céd, de operacién: Estados: iy | Rea room t| somrwvt woman mt | coep ovr fa | Meme W yt Golan fr | oS Gert | trout mow me | = oa tre momen | 2 com 1 | Cornett musanim | = cer fa | concn mona me |Z beerse | Sarena Seles oo nant nc ta | ioememare wow me |, tos | Heerenat Seuen oom an sorwe ye | okey! woman m |, sor fe | Roe sue me | 2 awe | toe wat oo ote pe wat Bowens Sa RE ota | Rossin “ catusey co ua om we ta | Rearauenoas : tacos wo ina ome | Sy sume ig | Rete weer moar me | simor fa | ro nts ot wie orm | ie | Setamme aay Seueae Operaciones crigntadas a bits cr in | unperneee ox otnaar Soh | kerosat teiboom a atrsc ib | pata st, Sedan ou wom omss ty | Rumbtvet, Deas ox seem Operaciones con constantes y de contro! roan «| sure tucikew ns uocuae wwe | oc ont | See Sixweae |? cat S| tno abate i ok a is diver | drow wor so ovepene oo | rap Gores | Sab acrecine ‘oe wt fuw | Gtawekyw ious ise | 2 wow ‘| camera Wem ale 1 ecu RETFIE Retornar de interrupcdn ‘00 0000 .0000 1001 fen «| Ramayergwewenk | oto uh remy © | are nare eo orepann ite | Tap bi Tomasiercnane [eames am | ce sin «| Rateiekadr nove wae | 2 ee cee Aries Instrucianes para programar el PICISFS77 PARA D ON PUBLICA Suma un valor constante k al contenido del registro W, el resultado se guarda en el registro W. ADDLW k QW) +k Ciclos de instruccién: 1 Bits del registro de estades que se afectan: C, DC, Z Ejemplo = ADDL. d's’ Antes de la instruccién registro W = d°L0" Después dela instruccén registro W = 25" Instruccién ADDWI ‘Suma el contenido de un registro f al contenido del registra W, el resultado se quarda en el registro escogido seguin el valor del bit d, Sintaxis: ADDWF fd Operacion: om) +O Ciclos de instruccién: 1 Bits del registro de estadas que se afectan: C, DC, Z Ejemplo: ADDWE 15h,0 Antes de la instruccién registro W = 17h registra 15h = OC2h Después de la instruccién registro W = OD9h registra 15h = OC2h Instruccién ANDLW: Operacién légica AND entre una constante k y el registro W, la operacién se hace bit a bit, el resultado queda en el registro W. sinta ANDLW ik Operacién (W) AND (k) Cielos de instruccién = 1 Bits del registro de estades que se afectan: Z Ejemplo: ANDLW b'10101010" Antes de la instruccidn registro W = b'11120000" Después de la instruccién registro W = b'L0100000" Operacién légica AND entre un registro: f y el registro W, el resultado se quarda en el registro escogido seaiin el valor del bit d ANDWF fd » AND (f) APROBADG Jnstruccfanes para programay et PICIBF877 OB/12/2014 06:50:08 P. Bits del registro de estades que se afectan: 2 Ejemplo: — ANDWF —FSR,1 Antes de la instruccién registro W_ Después de la instruccién registro W '00010111' registro FSR = b'11000010" 00010111" registro FSR = b'00000010" Pone en cero-el bit b del registro f. BOF fib 0 (feb=) 1 Cielos de instruccién = Bits del registro de estades que se afectan: Ninguno. Ejemplo : BCF regis,7 Antes de la instruccidn regi Después de la instruccién regi biiai1111' bO1iiiiii’ Instruccién BSF: Pone en uno el bit b del registro f. Sintanis BSF fb Operacién = 1(feb>) Ciclos de instruccién = 1 Bits del registro de estades que se afectan: Ninguno Ejemplo = BSF regis,2 Antes de la instruccién regis = b’00000000' Después de la instruccién regis = b’00000100" Instrucci6n BTFSC: Pregunta por el bit b del registro f, si dicho bit esté en cero el programa se salta una linea y ejecuta le instruccién que alse encuentre, si el bit estaba en ung no salta una linea sino que ejecuta la instruccién inmediatamente siguiente. sintaxis BIFSC fb Operacién salta si (f2b>) = 0 : 162 Bits del registro de estades que se afectan: Ninguno. Ejemplo: tinea 1 BIFSC regis,0 Linea 2 GOTO inicio Linea 3 — Instruclones pare programe el PICISFS?7 PARA DIFUSION PUBLICA Antes de la instrucclén apuntador de programa = linea 1 Después de la instruccién si el bit O del registro regis = 0 apuntador de programa = linea 3 sil bit 0 del registro regis = 1 apuntador de programa = linea 2 Instruccign BTFSS: Pregunta por el bit b del registro f, si dicho bit esté en uno ef programa se salta una linea y ejecuta la instruccién que alli se encuentre, si el bit estaba en cero: a salta una linea sino que ejecuta la instruccién inmediatamente siguiente. Sintaxis : BIFSS fb Qperacién : salta si () = 1 Cielos de instruccién : 162 Bits del registro de estades que se afectan: Ninguno Ejemplo = BIFSS. regis,0 GOTO inicio Antes de la instruccién, apuntador de programa = linea 1 Después de la instruccién si el bit 0 del registro regis = 1 apuntador de programa = linea 3 si el bit 0 del registra regis = 0 apuntader de programa = linea 2 Instrucci6n CALL: Llema una subrutine que est ubicada en le posicién de memoria a etiqueta "k", Sintaxis CALL Kk Operacion + carga el apuntador de programa con la direccion™K" Ciclos de instruccién :2 Bits del registro de estades que se afectan: Ninguno. Ejemplo: aqui CALL rutina Antes de la instruccién contador de program: Despuds dele instruccién contador de programa En la pila se guarda la direccién “aqui” para regresar APROBADO 08/12/2014 06:51:06 BLM. Jnstrucefanes para programar et PICISFB7? Borra el contenido del registro "f", lo carga con 00. CLRF fF borra el contenido del registro F {lo carga con 00) 1 Bits del registro de estades que se afectan: Z Ejemplo: CLF regis Antes de la instruccién regis = 5Ah Después de la instruccién regis = 00 Borra el contenido del registro W {lo carga can 00) cLRW Registro W = 00 Ciclos de instruccions 1 Bits del registro de estades que se afectan: Ninguno Ejemplo = CLRW Antes de la instruccién registra W = 5Ah Después dela instruceién registro W = 00 Instruccién CLRWDT: —_Reinicia en cera el conteo del temporizador intemo Watchdog Times, pata que no sea reseteado el microcontrolador. Sintaxis: CLRWOT Operacién: contador del temporizador rratehalag timer = 00 Ciclos de instruccién = 1 Bits del registro de estados que se afectan: TO, PD Ejemplo : ‘CLRWOT Antes de: la instruecisn Contador WOT = ? Después de la instruccién Contador WDT = 00 Bits del registro de estados: TO = 1, PD = Instruccién COME: Complementa el contenida del registro "F" (cambia unos por ceros-y viceversa), el resultado se guards en el registro escogide segin el valor del bit d, Sintais: COMF fd Operacién (complementar registro f) Ciclos de instruccién: 1 Instrucciones para programare PICIGPB77 PARA DIFUSION PUBLICA Bits del registro de estades que se afectan: 2 Ejemplo: — COMF regis,0 Antes de la instruccién regis Después de Ia instruccién regis b’00101100', W 00101100", W = b'i1010011" Instruccin DECE: Decrement en uno el contenida del registro "fe resultado se guarda en el registro escogido seguin el velor del bit d. Sintaxis: DECF fd Operacién: —(f)=1 Ciclos de instruccién: 1 Bits del registro de estades que se afectan: Z Ejemplo: DECF regis,1 Antes de [a instruccién regis = d'13" Después de la instruccién regis = 12" Instruccién DECFS2: Decrement en uno el contenide del registro "", si el contenido ‘queda en 00 el micro salta una linea del programa, el resultado obtenido se quarda en el registro escogide segiin el valor del bit d. Sintanis: DECS2 fd Operacion : {f)- 1, salta una linea si el resultado es cero ielos de instruccién : 1Q) Bits del registro de estades que se afectan: Ninguno Ejemplo : aqui DECSZ regis, 1 GOTO cio continia ... Antes de la instruccién contador de pregrama = aqui Después de la instruccién regis = regis - 1 si regis = 0, entonces contador de programa = continua si regis no es 0, entonces contador de programa = aqui + 1 (ejecuta GOTO ciclo) Instruccién GOTO: El contador de programa salta a la direccién "k" Sintaxis: GOTO Operacién: El contador de programa salta a la direccién k Cielos de instruccién: 2 Bits del registro de estades que se afectan; Ninguno, APROBADO ON/12/2014 06:51: Jnstruccfanes para programay et PICIBF877 Ejemplo:; GOTO ciclo Antes de la instruecién contador de programa Después de Ia instruccién contador de programa cdo Instruccién INCF: Incrementa en uno el contenido del registro “f", el resultado se \quarda en el registro escogido segtin el valor del bit d. Sintaxis: INCE fd Operacién: ar Cielos de instruceién: 1 Bits del registro de estadas que se afectan: 2 Ejemplo: —INCF _regis,1 Antes de la instruccién regis = d'24" Después de Ia instruccién regis = d'25" Instrucci6n INCESZ: Incrementa en uno el contenido del registro "t", si el contenido def” queda en 09 el micro salte una linea del programa, el resultado se guarda en el registro escogido segun el valor del bit 0, INCFSZ fd (f)-+ 1, salta sel resultado es cero Ciclos de instruccién: 1Q) Bits del registro de estades que se afectan: Ninguno Ejemplo: aqui DECFSZ regis, 1 0TO ciclo contini Antes de la instruccién contador de programa = aqui Después de la instruccidn regis = regis + 1 si regis = 0, entonces contador de programa = continua si regis no es 0, entonces contador de programa = aqui + 1 (ejecuta GOTO ciclo) Instruccién TORLW: ——_Operacidn lgica OR entre el contenido del registro W y la constante k, el resultade queda en el registro W. Sintanis: TORLW Operacién: QW) OR (k) Cielos de instruccién: 1 Bits del registro de estades que se afectan: 2 Instrucciones para programar el PICI6FE77 PARA DIFUS: ‘PUBLICA Ejemplo; — JORLW b'10101100° Antes de la instruccién registro W = b’OOOO1111" Después de Ia instruccién registro W = b’LO101111° Operacién légica OR entre el registro W y el registro “f’, el resultado se guarda en el registro escogido segiin el valor del bit ¢ sintaxis: TORWF fd Operacién: (WY OR Cielos de instruccién: 1 Bits del registro de estades que se afectan: 2 Ejemplo: JORWE regis, “Antes de la instruccién regis = b'O0110011 , W = b'11110000' Después de fa instruccién regis =b'00110011' , W = b'11110011° Instruccién MOVLW: == Carga el registro W con el valor constante k. Sintanis: MOVLW =k Operacién: (W) se carga con el valor k Ciclos de instruccidn: 1 Bits del registro de estades que se afectan: Ninguno Ejemplo: MOVLW = SAh Antes de la instruccién w=? Después de la instruccién = W = SAK Instruccién M Mueve el-contenido del registro "Y” hacia el registro W. Sintanis: MOVE f Operas (W) se carga con (f) 1 Ciclos de instruccid Bits de! registro de estadas que se afectan: Z Ejemplo: — MOVF regis,0 ‘Antes de la instruccién registra Después.de la instruccién registro ?,_ regis = o°32" 432" Instruccién MOVWE: ——_Mueve el contenido del registro W al registro “t”, 10 APROBADO Jnstruccfones pera programay ef PICTBFE7? OB/1 2/2014 06:51:56 PM. Sintaxis: MOVWF f Bits del registro de estades que se afectan: Ninguno. Ejemplo: = MOVWF 20h Antes de la instruccién registra 20h Después de la instruccién registro 20h = d'48', registro W = d’48" Instruccién NOP: No hace nada sSintaxis: Cielos de instrucciéi Bits del registro de estades que se afectan: Ninguno. Instruccién RETURN: —_Retorno desde una subrutt Sintaxis: RETURN Operacién: carga el contador de programa con la direccién donde debe regresar luego de ejecutar la subrutina, a cual estaba guardada en la pila 0 stack, 2 Cidlos de instruct Bits del registro de estadas que se afectan: Ninguno Ejemplo = RETURN Después de la interrupcién, contador de programa = dato de la pila Instruccién RETLW: —_Retorno desde una subrutina y adicionalmente carga el registro W con el valor constante k. RETLW k contador de programa se carga con el valor de la pila, ademds (W) = Ejemplo = CALL tabla tabla NOP NOP RETLW ki Antes de la instruccién registro W = Unstrucciones para programar el PICIGFE77 R42 DIPUSTON PUBLICA Después dela instruccién registro W = ki, contador de programa = dato de la pila Instruccién RETFIE: Retorna al programa luego de ejecutar una interrupcién. RETFIE pila k contador de programa , 1 k intcon,gie Bits del registro de estades que se afectan: Ninguno. Ejemplo: RETFIE Antes de la instruccién contador de programa = ? Después de la instruccién contador de programa = dato de la pila, las interrupciones se habilitan nuevamente Instruccin RLF: Rotar el contenido del registro “t” un bit a la izquierda, usando el carry como bit intermedio, el resultado se guarda en el registro escogido segiin el valor del bit d. Sintaxis: RLF fd Operacién: Rota el contenido del registro “I” a la izquierda a través del carry Clelos de instruceidn: 1 Bits del registro de estades que se afectan: C Ejemplo : RLF regis,0 Antes de Ia instruccién bit cary = 0, regis = 1110 0110, W=? Después de la instruccién bit carry = 1, regis = 1110 0110 W = 11001100 Instruccién RRF: —Rotar el contenido del registro “f” un bit a la derecha, usando el carry como bit intermedio, e! resultado se guarda en el registro escogido segtin el valor del bit d. Sintaxis: RRF fd Operacion: Rota ef contenido del registro “f” a la derecha a través del carry Ciclos de instrucciéns 1 Bits del registro de estados que se afectan: C Ejemplo = RRF regis, ‘Antes de la instruceién bit earry = O, regis = 1110 0101, Después de la instrucdén bit carry = 1, regis = 1110 0101 W = 0111 0010 RB APROBADO OR/1 2/2014 06:52:15 PM. Jnstrucctones para programa et PICTGFE77 Instruccién SLEEP: E| micro entra en un estado de standby (dormido), de ese modo solamente sale si ocurre una internupeién, Sintaxis: ‘SLEEP Operacién: bit TO = 1, biPD = 0 Cictos de instruccién: 1 Bits del registro de estados que se afectan: TO, PD Ejemplo = ‘SLEEP Instruccién SUBLW: —_ Resta el contenido del registro W de la constante k usando el métado de complementa a dos, el resultado se quarda en el registro W, el bit de carry indica el signo de la respuesta, ‘SUBLWk k-(W) Ciclos de instruccién: 1 Bits del registro de estades que se afectan: C, DC, Z Ejemplo 1: SUBLW 5h Antes de la instruceién W = 1h, bit de carry = 7 Después de la instruccién w Ejemplo 2: SUBLW 5h ‘Antes de la instruccién W = 5h, bit de carry = > Después de la instruccién — W = 0, bit de carry = 1 {positivo) Ejemplo 3: SUBLW 5h ‘Antes de la instruccién W = Gh, bit de carry = 7 Después de Ia instruccién = W = OFFh , bit de ca = 0 (negativo) Instruccién SUBWE: —_Resta el contenido del registro W del registro "f usando el método de complementa a dos, el bit de carry indica el signo de la respuesta, el resultado se guarda en el registro escogido sequin el valor del bit d. ‘SUBWF fd OW) Ciclos de instruccion: 1 Bits del registro de estades que se afectan: C, DC, Z Ejemplo 1: SUBWF regis,1 Antes de la instruccién regis = 5h, W = 2h, bit de carry PARA DIFUSION PUBLICA Instrucianes para programar el PICISFS77 Despuds de la instrucciéa regis = 3h, W = 2h, bit de carry = 1 (positive) Ejemplo 2: SUBWF regis, Antes de la instruccién 2h, W = 2h, bit de carry Despuss de la instruccidn 0, W = 2h, bit de carry = 1 (positive) Bjemplo 3: SUBWF regis,t Antes de la instruccién regis = 5h, W = 6h, bit de carry Después de la instruccién regis = OFFh, W = 6h, bit de carry = 0 (negative) n SWAPF: Intercambia los cuatro bits altos y los cuatro bits bajos de! registro ‘f’, el nuevo date obtenido se-guarda en el registro seleccionado segun el valor del bit d. Sintaxis: SWAPF fd Operacién: los bits f<3:0> se intercambian de posicién con las bits f<7:4> Cielos de instruceién: 1 Bits del registro de estades que se afectan: Ninguno Ejemplo 1 ‘SWAPF reais,0 Antes de la instruecién reais, Después de Ia instruccién regis ‘10101100, W 110101100, W = b'11001010° Instruccién XORLW: ——_Operacidn ldgica XOR entre el registro W y la constante k, el resultado se guarda en el registro W. ORLW k (Wy OR (k} i Bits de! registro de estados que se afectan: Z Ejemplo ORL b'10101100" Antes de la instruccién registro W = b’L1110000° Después de la instruccién registra W = 6101011100" Operacién légica XOR entre el registro W y el registra "F", el resultado obtenido se quarda en el registro seleccionado segiin el bit d. Sintaxis: XORWE fd instrucciones para programar el PICIGFB?7 Operacién: (W) KOR (f) Ciclos de instruccién: 1 Bits de! registro de estados que se afectan: Z Ejemplo: XORWF regis,1 ‘Antes de la instruccién regis = b'11110000', W = b‘10101010° Después de la instruccién regis = b'01011010", W = b'10101010" BEF Eb Poae en "U' el bitlbdel registm T CLRFt Borra el contenido del registro f 1 cLRW Bocra el contenigo del registro W 1 MOVF fd | Mueve el contenido del registro f 1 MOVWEf | Muevesl contenide del registro W al registro F 1 MOVLW k | Guarda en ef registro W el valor k i BSF, b Pone en "1" el Bit vel registm f ADDLW k | Sumac! valor k al registro W 1 ADDWFi,d | Suma el contenido del registra W com el de f 1 DECF fd | Decrementa en una unidad cl contenido del registro F 1 INCE i, Incrementa en una unidad el contenido del registro f 1 SUBLWk | Resta el valor kal registio W 1 SUBWFf,d | Resta elcontenido det registro W al registro f 1 contenido del registro W con el de f ANDLW k | Realiza la operacidn l6zica AND catre cl valor ky el registro W 1 ANDWF,d__|Realiza laoperacidn ljpica AND entre el contenido del registro W y el de 1 COM f,d | Nieguel valor del registro f 1 TORLWk —__Realiza ln operacidn lipica OR entre el valor ky el registro W 1 TORWFf.d | Realiza la operacion l6giea OR entre el contenido del registro W y el de f 1 RLF Fd Rota el contenida del registro {hacia la irquierda a través del carry bit 1 RRFE,d Rota el contenidia del registro {hacia la derecha a través del cary bit 1 SWAPF fd Intercambia los evalro primeros bits con los cuntro éltimos del registro f 1 XORLW Realiza la operacidn ldgica XOR entre el valor k y el registro W 1 RORWE fd | Réaliza In opsracion Iogica NOR entre ¢! , Reiorno de una subrutina BTFSC£,b | Leeel bit b del registro f ysalta In instruccidn siguiente si esti-en “0” 142 si saltay BTFSS fb | Leeel bit b del registro fy salta la tnstruccidn siguiente si esta-en “1” 142 si sala) DECFSZ fd | Decrementa en una unidad el contenido del registro Fy sata la instruc siguiente si ex ceo 12 si salta) INCES2 f,¢ | Incrementa en una. unidad ef contenido del registro Fy sala la insirucciin sigviemte stes cere 142 si sata) GOTO ‘Salto incondicional ala etiqueta k 2 [imtrvcons do mame desobrtnas CALL ‘Llama ta subeutina i 2 RETHIE Retomo de una interrupcin 2 RETLW ‘Reiomo de una subrutina con el valor ken el registm W 2 2 CLRWDT —_Borrae! temporirador del Watching 1 NOP ‘No realiza ninguna operacién (pero consume tienipe de

You might also like