Microcontroladores_PIC_-_Tabla_de_Referencias

download Microcontroladores_PIC_-_Tabla_de_Referencias

of 57

Transcript of Microcontroladores_PIC_-_Tabla_de_Referencias

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    1/57

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    2/57

    utorial de Microcontroladores PIC

    Apndice

    Set de InstruccionesResumen de InstruccionesFusibles del PIC

    En la seccin de Software se encuentra la descripcin de algunos programasque pueden serte de utilidad para la programacin de losmicrocontroladores, claro que depende del circuito grabador del quedispones para esta tarea.

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    3/57

    Microcontroladores PIC - Sistemas Microcontrolados

    :: Microcontroladores PIC - Captulo 1

    Microcontroladores - Sistemas microcontrolados

    El diagrama de un sistema microcontrolado sera algo as

    Los dispositivos de entrada pueden ser un teclado, un interruptor, unsensor, etc.

    Los dispositivos de salida pueden ser LED's, pequeos parlantes,zumbadores, interruptores de potencia (tiristores, optoacopladores), u otrosdispositivos como rels, luces, un secador de pelo, en fin.. lo que quieras.

    Aqu tienes una representacin en bloques del microcontroador, para que tedes una idea, y puedes ver que lo adaptamos tal y cual es un ordenador,con su fuente de alimentacin, un circuito de reloj y el chipmicrocontrolador, el cual dispone de su CPU, sus memorias, y por supuesto,sus puertos de comunicacin listos para conectarse al mundo exterior.

    Definamos entonces al microcontrolador; Es un circuito integradoprogramable, capaz de ejecutar las rdenes grabadas en su memoria. Estcompuesto de varios bloques funcionales, los cuales cumplen una tareaespecfica. Sacado de un libro...!!!. En fin estas son bsicamente algunas desus partes...

    q Memoria ROM (Memoria de slo lectura)q Memoria RAM (Memoria de acceso aleatorio)q Lneas de entrada/ salida (I/ O) Tambin llamados puertos

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    4/57

    Microcontroladores PIC - Sistemas Microcontrolados

    q Lgica de control Coordina la interaccin entre los dems bloques

    Eso no es todo, algunos traen funciones especiales, ya hablaremos de ellas.

    Microcontroladores PIC16CXX/FXX de Microchip

    Me referir a estos porque sern los que utilizar aqu, (al menos porahora). Estos micros pertenecen a la gama media y disponen de un set de35 instrucciones, por eso lo llaman de tipo RISC (Reduced Instruction SetComputer) en entendible sera "Computador con Set de InstruccionesReducido" pocas instrucciones pero muy poderosas, otras son de tipo CISC(Complex Instruction Set Computer - Computador con Set de InstruccionesComplejo), demasiadas instrucciones, y lo peor, difciles de recordar.

    Esta familia de microcontroladores se divide en tres rangos segn lacapacidad de los microcontroladores. El ms bajo lo compone la familia

    16C5X. El rango medio lo componen las familias 16C6X/ 7X/ 8X, algunoscon conversores A/D, comparadores, interrupciones, etc. La familia derango superior lo componen los 17CXX.

    Estas son las funciones especiales de las cuales disponen algunos micros...

    q Conversores anlogo a digital (A/D) en caso de que se requiera medirseales analgicas, por ejemplo temperatura, voltaje, luminosidad,etc.

    q Temporizadores programables (Timer's) Si se requiere medir

    perodos de tiempo entre eventos, generar temporizaciones o salidascon frecuencia especfica, etc.

    q Interfaz serial RS-232. Cuando se necesita establecer comunicacincon otro microcontrolador o con un computador.

    q Memoria EEPROM Para desarrollar una aplicacin donde los datos nose alteren a pesar de quitar la alimentacin, que es un tipo dememoria ROM que se puede programar o borrar elctricamente sinnecesidad de circuitos especiales.

    q salidas PWM (modulacin por ancho de pulso) Para quienes requierenel control de motores DC o cargas resistivas, existen

    microcontroladores que pueden ofrecer varias de ellas.q Tcnica llamada de "Interrupciones", (sta me gust) Cuando unaseal externa activa una lnea de interrupcin, el microcontroladordeja de lado la tarea que est ejecutando, atiende dicha interrupcin,y luego contina con lo que estaba haciendo.

    Todo esto, slo para tener una idea de lo que son los micros, ahora vamosa un par de ellos en especial

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    5/57

    Microcontroladores PIC - Terminales del PIC, Circuitos externos

    :: Microcontroladores PIC - Captulo 2

    Presentacin oficial! - PIC16C84/F84

    El P1C16C84 est fabricado en tecnologa CMOS, consume baja potencia, yes completamente esttico (si el reloj se detiene, los datos de la memoriano se pierden). El 16F84 tiene las mismas caractersticas pero poseememoria FLASH, esto hace que tenga menor consumo de energa, y como sifuera poco tiene mayor capacidad de almacenamiento.

    El encapsulado ms comn para estos microcontrolador es el DIP (Dual Inline Pin) de 18 pines, (el nuestro... ), y utiliza un reloj de 4 MHz (cristal decuarzo). Sin embargo, hay otros tipos de encapsulado, por ejemplo, elencapsulado tipo surface mount (montaje superficial) es mucho + pequeo.

    Terminales del microcontrolador y sus respectivas funciones:

    sta sera la disposicin de sus terminales y sus respectivos nombres...

    Encapsulado DIP - PIC16C84/F84

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    6/57

    Microcontroladores PIC - Terminales del PIC, Circuitos externos

    Patas 1, 2, 3, 17 y 18 (RA0-RA4/ TOCKI): Es el PORT A. Corresponden a5 lneas bidireccionales de E/S (definidas por programacin). Es capaz deentregar niveles TTL cuando la alimentacin aplicada en VDD es de 5V 5%. El pin RA4/ TOCKI como entrada puede programarse enfuncionamiento normal o como entrada del contador/temporizador TMR0.Cuando este pin se programa como entrada digital, funciona como un

    disparador de Schmitt (Schmitt trigger), puede reconocer seales un pocodistorsionadas y llevarlas a niveles lgicos (cero y cinco voltios). Cuando seusa como salida digital se comporta como colector abierto; por lo tanto sedebe poner una resistencia de pull-Up (resistencia externa conectada a unnivel de cinco voltios, ...no te preocupes, mas abajo lo entenders mejor).Como salida, la lgica es inversa: un "0" escrito al pin del puerto entrega ala salida un "1" lgico. Este pin como salida no puede manejar cargas comofuente, slo en el modo sumidero.

    Pata 4 (MCLR / Vpp): Es una pata de mltiples aplicaciones, es la entradade Reset (master clear) si est a nivel bajo y tambin es la habilitacin de

    la tensin de programacin cuando se est programando el dispositivo.Cuando su tensin es la de VDD el PIC funciona normalmente.

    Patas 5 y 14 (VSS y VDD): Son respectivamente las patas de masa yalimentacin. La tensin de alimentacin de un PIC est comprendida entre2V y 6V aunque se recomienda no sobrepasar los 5.5V.

    Patas 6, 7, 8, 9, 10, 11, 12, 13 (RB0-RB7): Es el PORT B. Correspondena ocho lneas bidireccionales de E/S (definidas por programacin). Puedenmanejar niveles TTL cuando la tensin de alimentacin aplicada en VDD esde 5V 5%. RB0 puede programarse adems como entrada de

    interrupciones externas INT. Los pines RB4 a RB7 pueden programarse pararesponder a interrupciones por cambio de estado. Las patas RB6 y RB7 secorresponden con las lneas de entrada de reloj y entrada de datosrespectivamente, cuando est en modo programacin del integrado.

    Patas 15 y 16 (OSC1/ CLKIN y OSC2/ CLKOUT): Corresponden a lospines de la entrada externa de reloj y salida de oscilador a cristalrespectivamente.

    Ahora un poco de electrnica:

    Esto comienza a ponerse interesante, no crees...?, ok sigamos... Comoestos dispositivos son de tecnologa CMOS, todos los pines deben estarconectados a alguna parte, nunca dejarlos al aire porque se puede daar elintegrado. Los pines que no se estn usando se deben conectar a la fuentede alimentacin de +5V, como se muestra en la siguiente figura...

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    7/57

    Microcontroladores PIC - Terminales del PIC, Circuitos externos

    Capacidad de corriente en los puertos

    La mxima capacidad de corriente de cada uno de los pines de los puertosen modo sumidero (sink) es de 25 mA y en modo fuente (source) es de 20mA. La mxima capacidad de corriente total de los puertos es:

    PUERTO A PUERTO BModo Sumidero 80 mA 150 mAModo Fuente 50 mA 100 mA

    As se vera la conexin para ambos modos de funcionamiento.

    El oscilador externo

    Es un circuito externo que le indica al micro la velocidad a la que debetrabajar. Este circuito, que se conoce como oscilador o reloj, es muy simplepero de vital importancia para el buen funcionamiento del sistema. ElP1C16C84/F84 puede utilizar cuatro tipos de reloj diferentes. Estos tiposson:

    q RC. Oscilador con resistencia y condensador.q XT. Cristal.q HS. Cristal de alta velocidad.

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    8/57

    Microcontroladores PIC - Terminales del PIC, Circuitos externos

    q LP. Cristal para baja frecuencia y bajo consumo de potencia.

    En el momento de programar o "quemar" el microcontrolador se debeespecificar que tipo de oscilador se usa. Esto se hace a travs de unosfusibles llamados "fusibles de configuracin" o fuses.

    Aqu utilizaremos el cristal de 4 MHz, porque garantiza mayor precisin y unbuen arranque del microcontrolador. Internamente esta frecuencia esdividida por cuatro, lo que hace que la frecuencia efectiva de trabajo sea de1 MHz, por lo que cada instruccin se ejecuta en un microsegundo. El cristaldebe ir acompaado de dos condensadores y el modo de conexin es elsiguiente...

    Si no requieres mucha precisin en el oscilador, puedes utilizar unaresistencia y un condensador, como se muestra en la figura. donde OSC2queda libre entregando una seal cuya frecuencia es la del OSC/4.

    Segn las recomendaciones de Microchip R puede tomar valores entre 5k y

    100k, y C superior a 20pf.

    Reset

    El PIC 16C84/F84 posee internamente un circuito temporizador conectado alpin de reset que funciona cuando se da alimentacin al micro, se puedeentonces conectar el pin de MCLR a la fuente de alimentacin. Esto haceque al encender el sistema el microcontrolador quede en estado de resetpor un tiempo mientras se estabilizan todas las seales del circuito (lo cual

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    9/57

    Microcontroladores PIC - Terminales del PIC, Circuitos externos

    es bastante bueno, por eso siempre la usaremos...).

    Este ltimo circuito, es por si deseas tener control sobre el reset delsistema, slo le conectas un botn y listo...

    Ahora vamos al interior del micro

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    10/57

    Microcontroladores PIC - Estructura Interna del Microcontrolador

    :: Microcontroladores PIC - Captulo 3

    Estructura interna del Microcontrolador

    Uffff...!!!, Ya se...!!!, tranquilo que ya comenzaremos con lo que estasesperando, antes debemos saber donde alojar nuestro programa, como seva a ejecutar, y como configurar sus puertos.

    Arquitectura interna del PIC:

    Hay dos arquitecturas conocidas; la clsica de von Neumann, y laarquitectura Harvard, veamos como son...

    Arquitectura Von Neumann Dispone de una sola memoria principaldonde se almacenan datos e instrucciones de forma indistinta. A dichamemoria se accede a travs de un sistema de buses nico (direcciones,datos y control).

    Arquitectura Harvard Dispone de dos memorias independientes, una quecontiene slo instrucciones, y otra que contiene slo datos. Ambas disponende sus respectivos sistemas de buses de acceso y es posible realizaroperaciones de acceso (lectura o escritura) simultneamente en ambasmemorias, sta es la estructura para los PIC's.

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    11/57

    Microcontroladores PIC - Estructura Interna del Microcontrolador

    Ahora vamos por partes, o creo que me voy a perder... :oP

    El procesador o UCP

    Es el elemento ms importante del microcontrolador. Se encarga dedireccionar la memoria de instrucciones, recibir el cdigo OP de lainstruccin en curso, decodificarlo y ejecutarlo, tambin realiza la bsquedade los operandos y almacena el resultado.

    Memoria de programa

    Esta vendra a ser la memoria de instrucciones, aqu es dondealmacenaremos nuestro programa o cdigo que el micro debe ejecutar. Nohay posibilidad de utilizar memorias externas de ampliacin. Son 5 los tiposde memoria. pero slo describir dos:

    q Memorias EEPROM. (Electrical Erasable Programmable Read OnlyMemory - Memoria de slo lectura Programable y borrableelctricamente) Comn en el PIC 16C84. sta tarea se hace a travsde un circuito grabador y bajo el control de un PC. El nmero deveces que puede grabarse y borrarse una memoria EEPROM es finitoaproximadamente 1000 veces, no es acaso suficiente...?. Este tipo dememoria es relativamente lenta.

    q Memorias FLASH. Disponible en el PIC16F84. Posee las mismascaractersticas que la EEPROM, pero sta tiene menor consumo deenerga y mayor capacidad de almacenamiento, por ello est

    sustituyendo a la memoria EEPROM.

    La memoria de programa se divide en pginas de 2,048 posiciones. ElPIC16F84A slo tiene implementadas 1K posiciones es decir de 0000h a03FFh y el resto no est implementado. (es aquello que se ve en gris)

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    12/57

    Microcontroladores PIC - Estructura Interna del Microcontrolador

    Cuando ocurre un Reset, el contador de programa (PC) apunta a ladireccin 0000h, y el micro se inicia nuevamente. Por esta razn , en la

    primera direccin del programa se debe escribir todo lo relacionado con lainiciacin del mismo (por ejemplo, la configuracin de los puertos...).

    Ahora, si ocurre una interrupcin el contador de programa (PC) apunta a ladireccin 0004h, entonces ah escribiremos la programacin necesaria paraatender dicha interrupcin.

    Algo que se debe tener en cuenta es la pila o Stack, que consta de 8posiciones (o niveles), esto es como una pila de 8 platos el ltimo en poneres el primero en sacar, si seguimos con este ejemplo, cada plato contiene ladireccin y los datos de la instruccin que se est ejecutando, as cuando se

    efecta una llamada (CALL) o una interrupcin, el PC sabe donde deberegresar (mediante la instruccin RETURN, RETLW o RETFIE, segn el caso)para continuar con la ejecucin del programa.

    R e cu e rd a , s lo 8 llam a d a s " CALL" , t e n e n cu e n t a las

    "I NT ERR UPCI ON ES " .

    Memoria de datos

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    13/57

    Microcontroladores PIC - Estructura Interna del Microcontrolador

    Tiene dos zonas diferentes:

    1. RAM esttica SRAM: donde residen los Registros Especficos (SFR)con 24 posiciones de tamao byte, aunque dos de ellas no son operativas ylos Registros de Propsito General (GPR) con 68 posiciones. La RAM delPIC16F84A se halla dividida en dos bancos (banco 0 y banco 1) de 128

    bytes cada uno (7Fh)

    2. EEPROM: de 64 bytes donde, opcionalmente, se pueden almacenardatos que no se pierden al desconectar la alimentacin.

    O.k., ahora unas cuantas palabras finales y comenzamos con lo msemocionante.

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    14/57

    Microcontroladores PIC - Configuracin de Puertos

    :: Microcontroladores PIC - Captulo 4

    Configuracin de los puertos del PIC

    Lleg el momento de ver como configurar los puertos del PIC. Para poderhacerlo es necesario conocer la tabla de registros de la memoria de datos, lacual como dijimos, est dividida en el BANCO 0 y BANCO 1.

    Los registros importantes en la configuracin de los puertos son:

    STATUS direccin 0x3PORTA direccin 0x5PORTB direccin 0x6TRISA direccin 0x5

    TRISB direccin 0x6

    Por defecto el PIC tendr todos los I/O port's (es decir los puertos RA y RB),colocados como entrada de datos, y si queremos cambiarlos habr queconfigurarlos.

    Al configurar los puertos debers tener en cuenta que:

    Si asignas un CERO (0) a un pin, ste quedar como salida y...Si le asignas un UNO (1), quedar como entrada

    Esta asignacin se hace en:TRISA para los pines del PUERTO A (5 bits)TRISB para los pines del PUERTO B (8 bits)

    Por Ejemplo:

    Si TRISA es igual a 11110 todos sus pines sern entradas salvo RA0 que estacomo salida

    Si TRISB es igual a 00000001 todos sus pines sern salidas salvo RB0 queesta como entrada

    Cuando el PIC arranca se encuentra en el BANCO 0, como TRISA y TRISBestn en el BANCO 1 no queda otra, deberemos cambiar de banco. Esto selogra a travs del Registro STATUS

    STATUS es un Registro de 8 bits u 8 casillas, en el cual la N 5 (RP0) definela posicin del banco en donde nos encontramos

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    15/57

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    16/57

    Microcontroladores PIC - Configuracin de Puertos

    Todo lo que escribas luego de un ";" (punto y coma) ser ignorado por elensamblador, estos son los famosos comentarios, y sirve para saber que hacecada lnea de cdigo.

    Dicho esto no queda ms que describir el cdigo, as que vamos por partes.

    ;---------------Encabezado-------------

    list p=16f84 ; usaremos el PIC 16f84radix hex ; y la numeracin hexadecimal

    Aqu le indicas al ensamblador para que microcontrolador estas codificando(PIC16F84). y cual ser el sistema de numeracin que utilizars(hexadecimal).

    Nota que hay tres columnas, en este caso la primera est vaca. Respeta lastabulaciones para no confundir al ensamblador.

    ;------------mapa de memoria---------

    estado equ 0x03 ; Aqu le asignamos nombres a lostrisa equ 0x05 ; registros indicando la posicintrisb equ 0x06 ; en la que se encuentran

    Recuerdas lo de la memoria de datos...? Bien, al registro STATUS, que est enla posicin 0x03 de la memoria de datos le puse la etiqueta "estado" . equ esalgo as comoooo...igual . (Es decir, le estoy asignando el nombre estado alregistro que est en la posicin 0x03 de la memoria de datos).

    Luego hice lo mismo con trisa y trisb. Ahora sigamos...

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    17/57

    Microcontroladores PIC - Configuracin de Puertos

    ;-------Configuracin de puertos-------

    reset org 0x00 ; origen del programa, aqu comenzar; siempre que ocurra un reset

    goto inicio ; salto a "inicio"org 0x05 ; origen del cdigo de programa

    inicio bsf estado,5 ; pongo rp0 a 1 y paso al bancmovlw b'11111' ; cargo W con 11111movwf trisa ; y paso el valor a trisamovlw b'00000000' ; cargo W con 00000000movwf trisb ; y paso el valor a trisbbcf estado,5 ; pongo rp0 a 0 y regreso al banc

    La directiva org indica el sitio de la memoria en donde se escribe una partedel programa. En este caso el contador de programa apuntar a la direccin

    0x00 (reset) entonces ejecutar la instruccin que sigue a continuacin,(saltar a la etiqueta inicio) y nuestro cdigo de programa comienza en ladireccin de memoria 0x05 (aqu salto por encima de la interrupcin 0x04)

    BSF (SET FILE REGISTER), es la instruccin que pone un uno en el bit delregistro especificado, en este caso pone a uno el bit 5 del registro STATUS (elrp0), para pasar al banco 1.

    movlw es algo as como... mueve el siguiente literal al Registro W.

    W es el Registro de Trabajo, y lo usamos para almacenar momentneamente

    los datos que queremos mover. una vez hecho esto pasamos el dato a trisa, oa trisb, segn el caso.

    movwfes algo as como... mueve el contenido del registro W al registro f, eneste caso f sera trisa o trisb.

    BCF (BIT CLEAR FILE REGISTER), sta instruccin limpia el bit del registroespecificado, o lo pone a cero, en este caso pone a cero el bit 5 del registroSTATUS para regresar al banco 0.

    ;------------------------------------------end ; se acab

    ;------------------------------------------

    Fue suficiente por hoy...

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    18/57

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    19/57

    Microcontroladores PIC - Encendiendo un LED

    bcf ptob,0 ; pone a 0 RB0 (apaga el LED)call retardo ; llama al retardogoto ahora ; repite todo de nuevo

    ;-----------Rutina de Retardo-----------

    retardo movlw 10 ; Aqu se cargan los registrosmovwf reg1 ; reg1, reg2 y reg3; con los valores 10, 20 y 30

    tres movlw 20 ; respectivamentemovwf reg2

    dos movlw 30movwf reg3

    uno decfsz reg3,1 ; Aqu se comienza a decrementargoto uno ; Cuando reg3 llegue a 0decfsz reg2,1 ; le quitare 1 a reg2

    goto dos ; cuando reg2 llegue a 0decfsz reg1,1 ; le quitare 1 a reg1goto tres ; cuando reg1 llegue a 0retlw 00 ; regresare al lugar

    ; de donde se hizo la llamada

    ;------------------------------------------end ; se acab

    ;------------------------------------------

    Descripcin del cdigo:

    No te asustes por el tamao del cdigo, que aunque parezca difcil todo estigual que el cdigo anterior, por lo que slo describir los cambios... (lo queest en rojo)

    Se agregaron 3 registros mas (reg1, reg2 y reg3), stos vendran a ser comovariables ubicadas en sus respectivas posiciones (0x0C, 0x0D, 0x0E,) y sonregistros de propsito general (recuerda que para el PIC16F84 son 68, puedeselegir cualquiera).

    A dems se agreg ptob, etiqueta que corresponde a la direccin del puerto B

    Analicemos lo que sigue..., que ste es el programa en s:

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    20/57

    Microcontroladores PIC - Encendiendo un LED

    ;----Aqu enciende y apaga el LED-----

    ahora bsf ptob,0 ; pone un 1 en RB0 (enciende el LED)call retardo ; llama al retardo

    bcf ptob,0 ; pone a 0 RB0 (apaga el LED)

    call retardo ; llama al retardogoto ahora ; repite todo de nuevo

    La etiqueta "ahora" es el nombre de todo este procedimiento o rutina, de talmodo que cuando quiera repetir el procedimiento solo saltare a "ahora" .

    bsfes poner a uno un bit, en este caso al primer bit (el bit 0) del puerto B(ptob).

    call es una llamada, en este caso llama a la rutina de retardo, cuandoregrese, continuar con el cdigo.

    bcfes poner a cero un bit, en este caso al primer bit (bit 0) del puerto B(ptob). y luego llama al retardo, cuando regrese se encontrar con lainstruccin goto obligndolo a saltar a la etiqueta ahora para que se repitatodo de nuevo. Eso es todo...!!!.

    Rutina de retardo

    Esta es la parte ms difcil, pero tratar de hacerlo sencillo as puedescontinuar con lo que sigue y no te trabas en esta parte. Primero veremoscomo se cargan los registros para el retardo. Veamos el cdigo...

    ;-----------Rutina de Retardo-----------

    retardo movlw 10 ; Aqu se cargan los registrosmovwf reg1 ; reg1, reg2 y reg3

    ; con los valores 10, 20 y 30tres movlw 20 ; respectivamente

    movwf reg2dos movlw 30

    movwf reg3

    Recordemos que en el mapa de memoria los registros 0x0C, 0x0D y 0x0Efueron nombrados como reg1, reg2 y reg3 respectivamente. Ahorasimularemos los tres registros para ver como se cargan mediante el registro

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    21/57

    Microcontroladores PIC - Encendiendo un LED

    de trabajo W, (utilizamos W por que los valores 10, 20 y 30 son valoresconstantes). Repito, esto es una simulacin bien a lo bruto, as que vamos asuponer que en vez de 10 cargo 1, en lugar de 20 cargo 2 y en lugar de 30cargo 3, hago sto solo con fines didcticos as podrs comprenderlo mejor,ok?.

    Lo que acabas de ver, fue la carga de los registros reg1, reg2 y reg3. Ahoravers como se comienza a decrementar cada uno de esos registros, primeroreg3, luego reg2 y finalmente reg1.

    tres movlw 20 ; respectivamentemovwf reg2

    dos movlw 30

    movwf reg3

    uno decfsz reg3,1 ; Aqu se comienza a decrementargoto uno ; Cuando reg3 llegue a 0decfsz reg2,1 ; le quitare 1 a reg2goto dos ; cuando reg2 llegue a 0decfsz reg1,1 ; le quitare 1 a reg1goto tres ; cuando reg1 llegue a 0retlw 00 ; regresare al lugar

    ; de donde se hizo la llamada

    Veamos, decfsz reg3,1 esto es, decrementa reg3, si al decrementar te dacero saltate una lnea. El 1 que sigue a reg3, indica que guarde el valor dereg3 decrementado en el mismo reg3, es comoooo.... contador=contador-1(se entiende...?)

    goto, es saltar y goto uno es saltar a la etiqueta uno. En esta pequeavuelta estoy decrementando reg3 hasta que se haga cero.

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    22/57

    Microcontroladores PIC - Encendiendo un LED

    Cuando reg3 llegue a 0 decrementar reg2 en una unidad, volver a cargarreg3 y lo decrementar nuevamente para recin restarle otra unidad a reg2, yas... hasta que reg2 se haga cero. Cuando eso ocurra decrementar reg1 enuna unidad, cargar nuevamente reg2 y reg3, para luego decrementarlos denuevo, todo esto ocurrir hasta que reg1 se haga igual a cero.

    Esta rutina de retardo, aunque parezca absurda y larga nos permite ver comose enciende y se apaga el LED, de lo contrario no podramos notar la

    diferencia, o lo veramos apagado o encendido, ya que la velocidad esdemasiado alta si estamos trabajando con un XT de 4 MHz. Finalmente nosqueda la ltima instruccin:

    ;------------------------------------------end ; se acab

    ;------------------------------------------

    Sin palabras.

    Una vez cargado el programa en el PIC, necesitars ver el programafuncionando, por lo que debers armar este circuito.

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    23/57

    Microcontroladores PIC - Encendiendo un LED

    El pin 4 (MCLR) est conectado por lo del Reset, para que se estabilicen losniveles de tensin.

    Eso fue todo, buena suerte...!!!

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    24/57

    Microcontroladores PIC - Codificando, Ensamblando y Grabando

    :: Microcontroladores PIC - Captulo 6

    Un poco de herramientas

    Lo anterior estuvo brbaro, pero dnde voy a escribir el cdigo?, como se hacepara ensamblar?, y cmo cargo mi programa en el PIC?, mmmmm... demasiadaspreguntas, comencemos de cero...

    Necesitaras:

    q Un PC (con una 386 ms que suficiente).q El programa para editar tu cdigo, que bien podra ser el Edit del DOS y

    asi generar tu archivo .asmq

    Como ensamblador, yo utilizo es Mpasm 2.15 y puedes bajarlo dewww.microchip.com y con ste me basta para generar los archivos .hexq El programa para grabar el PIC, Con el Prog V.1.41 no tuve problemas y

    va perfecto con mi circuito grabador, puedes buscarlo enwww.webelectronica.com.ar, ahora tambien disponible desde aqu

    q Por supuesto necesitas el Hardware (circuito electrnico que se conecta alpuerto de la PC) en el que insertars el PIC para cargar el programa, haymuchsimos por la red, pero si quieres el que yo utilizo, aqutienes elesquema elctrico, el listado de componentes y la conexin al puertoparalelo, si ya lo quieres montado y listo para usar, contacta conmigo, quems puedo decir...

    Ahora s..., con todo esto y los programas instalados en la mquina, podemoscomenzar...

    Abre una ventana del DOS y apunta al directorio donde tienes todas tusherramientas, yo las puse en una carpeta llamada tutor, si haces lo que yo, tequedar algo as...

    C:\ tutor>edit

    Una vez ah puedes escribir tu cdigo..., por ltimo lo guardamos seleccionandoel men Archivo --> Guardar como --> led1.asm No olvides el .asm

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    25/57

    Microcontroladores PIC - Codificando, Ensamblando y Grabando

    Muy bien, ya tenemos led1.asm , slo resta ensamblarlo. Entonces vamos porMpasm, lo abres, y veras algo como esto...

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    26/57

    Microcontroladores PIC - Codificando, Ensamblando y Grabando

    En Sourse File presiona Enter para seleccionar el archivo a ensamblar

    Haz lo mismo en Processor Type y busca el PIC16f84, que es el que usaremos,el resto lo dejas como est..., te debera quedar algo as...

    sto, generar el archivo LED1.ERR, LED1.LST, y LED1.HEX, este ltimo es elque estamos buscando, los anteriores sirven para saber si se cometi algnerror, si es as debes abrirlos (con el Bloc de Notas es suficiente) corregir loserrores y ensamblar nuevamente.

    Para ensamblar slo debes presionar F10 y vers la ventana de resultados

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    27/57

    Microcontroladores PIC - Codificando, Ensamblando y Grabando

    Que como es lgico... no comet errores =P. Aunque por ah apareci unWarning, que en realidad no es causa de falla en el cdigo.

    Bien, ya tenemos LED1.HEX y es el que cargaremos en el pic. Lo que viene esuna imagen representativa del grabador de pic, con el cable que se conectar al

    puerto paralelo, y la fuente de alimentacin externa. No coloques el PIC sinhaber hecho las conexiones anteriores.

    Ya puedes ejecutar el software de programacin, abre Prog.exe y seguramente

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    28/57

    Microcontroladores PIC - Codificando, Ensamblando y Grabando

    se apagarn los LED's rojo y verde (si estaban encendidos...!). Te aparecer lasiguiente ventana

    haciendo click en Open File seleccionas LED1.HEX y aqu est...

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    29/57

    Microcontroladores PIC - Codificando, Ensamblando y Grabando

    Colocas el PIC en el grabador, luego Seleccionas la opcin Program y esperas aque te aparezca el mensaje Programming Complete

    Ejemmmmm, perdn... este mensajito sali porque el pic ya tena un programagrabado, bueno, no importa, como es regrabable, slo le daremos a ok y listo, elnuevo programa borrar al anterior.

    Ahora siiiiii...!!!, Si todo fue bien, ya puedes quitar el PIC del zcalo y llevarlo atu circuito para ver como funciona.

    Algo que me estaba quedando en el tintero son los fusibles de programacin,como:

    Device el tipo de chip, en nuestro caso el 8x;Rom Sice la cantidad de memoria, en nuestro caso de 1k;OSC el tipo de oscilador que utilizaremos, para nosotros un XT;Watchdog Timer El perro guardin, que aqu no lo utilizamos;

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    30/57

    Microcontroladores PIC - Codificando, Ensamblando y Grabando

    Code protect para que nadie tenga acceso al cdigo grabado en el PIC;Power Up Timer temporizador de encendido. En el PIC16f84, funciona de modoinvertido, por eso est en LOW . Para mayor detalle consulta aqu.

    Ahora que ya estamos listos y preparados con todo el soft y el hard necesario, lonico que necesitamos es complicarnos un poco mas las cosas, all vamos.........

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    31/57

    Microcontroladores PIC - Complicndonos un poco

    :: Microcontroladores PIC - Captulo 7

    Antes de empezar

    Si bien nos vamos a complicar con las siguientes lecciones, sera bueno queconsultes el Set de instrucciones, as ser mas fcil que comprendas cada lneade cdigo que se escribe, ya que cada una est acompaada de su respectivoejemplo, y una vez lo comprendas puedes quedarte con el Resumen deinstrucciones.

    Lo que haremos ahora ser un programa que encienda 4 LED's en formasecuencial, y para ello recurriremos a la rutina de retardo del programaanterior, que espero lo hayas comprendido, si no es asregresa y no vengas

    aqu hasta que lo entiendas :o))Ok, sigamos. El circuito ser el siguiente...

    Y el cdigo que realiza la secuencia es el que viene a continuacin.

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    32/57

    Microcontroladores PIC - Complicndonos un poco

    ;---------------Encabezado-------------

    LIST p=16f84radix hex

    ;------------mapa de memoria---------

    estado equ 0x03 ; Haciendo asignacionesTRISB equ 0x06ptob equ 0x06rotar equ 0x0A ; para desplazar el dato

    reg1 equ 0x0C ; para hacer el retardoreg2 equ 0x0Dreg3 equ 0x0E

    ;-------Configuracin de puertos-------

    reset org 0x00

    goto inicio ; salta a "inicio"org 0x05 ; aqu comienza el programa

    inicio bsf estado,5 ; configurando el puerto Bmovlw b'00000000'movwf TRISBbcf estado,5

    ;----Realiza la secuencia de LED's-----

    ahora movlw 0x01 ; carga W con 00000001movwf rotar ; lo pasa al registro rotar

    rotando movf rotar,0 ; pasa el contenido de rotar a Wmovwf ptob ; y de all al puerto B

    ; encendiendo el LED correspondientecall retardo ; llama a retardorlf rotar,1 ; desplaza un bit el contenido

    ; de rotar y lo guarda.btfss rotar,4 ; prueba si se activa el 5to. bit

    ; si es as saltea una lneagoto rotando ; sino, sigue rotandogoto ahora ; repite todo de nuevo

    ;-----------Rutina de Retardo-----------

    retardo movlw 10 ; Carga los registrosmovwf reg1 ; reg1, reg2 y reg3

    ; con los valores 10, 20 y 30tres movlw 20 ; respectivamente

    movwf reg2

    dos movlw 30movwf reg3

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    33/57

    Microcontroladores PIC - Complicndonos un poco

    uno decfsz reg3,1 ; Comienza a decrementargoto uno ; cuando terminedecfsz reg2,1 ; regresar a la siguientegoto dos ; lnea de cdigodecfsz reg1,1 ; de donde fue llamadogoto tres

    retlw 00;------------------------------------------

    end ; The End;------------------------------------------

    Todo est como antes, salvo lo que est en rojo. Veamos de que se trata esode rotar y rotando.

    ;----Realiza la secuencia de LED's-----

    ahora movlw 0x01 ; carga W con 00000001movwf rotar ; lo pasa al registro rotar

    rotando movf rotar,0 ; pasa el contenido de rotar a Wmovwf ptob ; y de all al puerto B

    ; encendiendo el LED correspondientecall retardo ; llama a retardorlf rotar,1 ; desplaza un bit el contenido

    ; de rotar y lo guarda.btfss rotar,4 ; prueba si se activa el 5to. bit

    ; si es as saltea una lneagoto rotando ; sino, sigue rotandogoto ahora ; repite todo de nuevo

    rotar es el registro en el que almacenar momentneamente el valor deldesplazamiento de los bit's. As cuando llegue al 5to. no enviar ese dato yaque se habr activado el 4to. bit del puerto B del PIC (sera el 4to. LED), y

    entonces volver a comenzar.

    Descripcin del cdigo:

    Ok, voy a poner a 1 el primer bit del registro rotar a travs de w , esto sehace en las dos primeras lneas.

    rotando, es una subrrutina: Aqu se pasa el contenido del registro rotar o sea

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    34/57

    Microcontroladores PIC - Complicndonos un poco

    (00000001) a W (por eso el 0) para luego enviarlo al puerto B (portb), yencender el primer LED, luego llama al retardo, cuando regrese se encontrarcon la siguiente instruccin.

    rlf rotar,1 esto es como decirle, rota el contenido del registro rotar un lugara la izquierda, y guarda el valor en el mismo registro rotar (por eso el 1). Esdecir, que si antes rotar=00000001 luego de esta instruccinrotar=00000010 . Ahora viene la verificacin del 5to. bit, para saber sicomplet la rotacin.

    btfss rotar,4 es como si le preguntaras oye, se activ tu 5to. bit?.

    Ok...!!! ya se lo que estas pensando como que el 5to. si aparece el 4?,bueno, es por que no estas siguiendo el tutorial, recuerda que el primer bitest en la posicin 0 y por ende, el 5to. esta en la posicin 4 ahora estabien?. Continuemos, si resulta ser que no, saltara hasta rotando y pasar elcontenido del registro rotar a W nuevamente (recuerda que ahora rotar es

    00000010 por aquello del desplazamiento). luego lo enviar al puerto B,llamar al retardo y rotar nuevamente.

    Bien supongamos que ya paso todo eso y que ahora rotar tiene el valor00001000 y estamos ubicados justo en la etiqueta rotando. Entonces pasarel valor a W y de all al puerto B, luego llamar al retardo, cuando regrese,rotar el contenido del registro rotar una vez ms y entonces su contenidoser 00010000. Ahora viene la pregunta...

    btfss rotar,4 est activo el 5to. bit del registro rotar?, Siiiiii, si Sr. estactivo..., Perfecto, entonces saltar una lnea, me encontrar con goto ahora

    y comenzar de nuevo.Eso es todo. Ahora vemoslo en forma grfica para aclarar un poco las ideas.

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    35/57

    Microcontroladores PIC - Complicndonos un poco

    Esa fue la idea, que veas como se hace la rotacin, hay varias formas dehacerlo, yo aqu te mostr una, otras utilizan el carry del registro STATUS,otras no utilizan la rotacin para hacer esta secuencia, sino van activando losbit's de a uno, en fin, tienes muchas opciones...

    Fue todo por hoy, ahora nos tomamos un descanso y vemos que otrasherramientas tenemos...

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    36/57

    Microcontroladores PIC - Ms Herramientas

    :: Microcontroladores PIC - Captulo 8

    Ms herramientas

    Programadores:

    Hay muchos programadores dando vueltas por la Red, uno de los que mellam la atencin fue el Programador PIPO2 de Jos Manuel Garca, por susencilles, por la cantidad de PIC's que soporta, por que no requiere fuentede alimentacin, su bajo costo, y por supuesto, por que est listo paraarmar, jejeje.

    El programador anterior no es profesional pero para lo que queremos hacer,

    se lleva todas las de ganar. Si quieres algo ms, como un programadorsemi-profesional, est su pariente el Programador PP2, tambien de JosManuel Garca, aunque requiere unos cuantos $$$$ ms, que no creo sea lagran diferencia, por cierto...

    El autor, recomienda su utilizacin con el IC-Prog, un programa bien a lowindows, es ms puedes seleccionar el Idioma, pero para utilizarlo con elprogramador debes hacerle algunos ajustes. Bueno el mismo autor te indicacmo.

    Otra de las caractersticas de este programa es que puedes desensamblar

    un archivo .hex y ver su cdigo fuente, para luego modificarlo o hacer loque quieras con l. oye, respeta los derechos de autor, ok? :-P

    Aqu tienes una imagen de su entorno de trabajo

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    37/57

    Microcontroladores PIC - Ms Herramientas

    Y aqu el cuadro de dilogo en que debes realizar los ajustes para elhardware que ests utilizando.

    Eso por ahora, luego veremos ms herramientas...

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    38/57

    Microcontroladores PIC - Seales de Entrada

    :: Microcontroladores PIC - Captulo 9

    Seales de Entrada

    Lo interesante y llamativo de los microcontroladores es que obedecen tusrdenes al pie de los bit's :o)

    Por ejemplo, si le ordenas que vigile un pulsador, el muy pillo lo har, ycuando alguien lo active le dar su merecido, jejejeje

    Bien..., eso es lo que haremos ahora. Pero esta vez tambin utilizaremos elpuerto A

    Ahhhhhhh...!!!, y para complicarlo un poco ms lo haremos con un solo

    pulsador. Si un travieso lo activa encenderemos un LED, y si lo activannuevamente, lo apagaremos, qued...?

    Mmmmmmmm... Lo que estoy notando es que voy a necesitar un registro queme guarde la informacin de si el LED est prendido o apagado, (sino... cmovoy a saber que hacer cuando lo presionen...!!!) bueno, ahora si...

    Comencemos... el pulsador lo conectar a RA1 y el LED a RB0, as se ve en elsiguiente esquema

    Hay varias formas de hacerlo, y ms adelante utilizaremos el mtodo deINTERRUPCIONES. Aqu lo har a mi modo, porque este tutorial es mo, Ok...?:oP

    Vamos a lo nuestro.

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    39/57

    Microcontroladores PIC - Seales de Entrada

    ;---------------Encabezado-------------List p=16F84radix hex

    ;------------mapa de memoria---------

    STATUS EQU 03 ; status esta en la direccin 03TRISA EQU 05PORTA EQU 05 ; el puerto aTRISB EQU 06PORTB EQU 06 ; el puerto b

    cont EQU 0A

    ;-------Configuracin de puertos-------

    reset ORG 0GOTO inicioORG 5

    inicio BSF STATUS,5 ; configurando puertosMOVLW 0x02 ; carga w con 0000 0010MOVWF TRISA ; ahora RA1 es entradaMOVLW 0x00 ; carga w con 0000 0000MOVWF TRISB ; y el puerto B salidaBCF STATUS,5CLRF PORTB ; limpio el puerto BCLRF cont ; limpio el contadorBSF cont,0 ; pongo el contador a 1

    ;------------------------------------------

    test BTFSC PORTA,1 ; si alguien presionaCALL led ; voy a la etiqueta "led"GOTO test ; sino me quedo esperando

    led BTFSC cont,0 ; si el contador est a 1GOTO on_led ; lo atiendo en "on_led"BCF PORTB,0 ; sino, apago el LEDBSF cont,0 ; pongo el contador a 1GOTO libre ; y espero que suelten el pulsador

    on_led BSF PORTB,0 ; enciendo el LEDCLRF cont ; pongo el contador a 0

    libre BTFSC PORTA,1 ; si no sueltan el pulsadorGOTO libre ; me quedar a esperarRETURN ; si lo sueltan regreso

    ; a testear nuevamente

    ;------------------------------------------END

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    40/57

    Microcontroladores PIC - Seales de Entrada

    ;------------------------------------------

    El registro que agregu, como te habrs dado cuenta es cont y su direccinrespectiva 0x0A. De la configuracin de puertos ni hablar, vamos por lo que

    est en rojo.

    CLRF PORTB ; limpio el puerto BCLRF cont ; limpio el contadorBSF cont,0 ; pongo el contador a 1

    ;------------------------------------------

    CLRF es borrar, o limpiar, o poner a cero, en este caso pongo a cero todo elpuerto B y tambin el registro cont, y luego pongo a 1 el primer bit de esteltimo, es decir el bit 0.

    Con esto me aseguro de que no hay ninguna seal en el puerto B, y que elregistro cont es igual a 0000001, (seal de que el LED est apagado)

    Sigamos...

    ;------------------------------------------test BTFSC PORTA,1 ; si alguien presiona

    CALL led ; voy a la etiqueta "led"GOTO test ; sino me quedo esperando

    Con BTFSC estoy probando el segundo bit (Bit 1) del puerto A. Si este bitesta a cero es por que nadie lo presion, entonces salto una lnea, y meencuentro con GOTO test, as que aqu estar dando vueltas un buen rato,hasta que a alguien se le ocurra presionar el dichoso pulsador...

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    41/57

    Microcontroladores PIC - Seales de Entrada

    Ohhhhhhhhh...!!!, parece ser que alguien lo presion. Bueno, esta vez no ir aGOTO, sino a CALL led, esto es una llamada a la subrrutina led, all vamos...

    led BTFSC cont,0 ; si el contador est a 1GOTO on_led ; lo atiendo en "on_led"BCF PORTB,0 ; sino, apago el LEDBSF cont,0 ; pongo el contador a 1GOTO libre ; y espero que suelten el pulsador

    on_led BSF PORTB,0 ; enciendo el LEDCLRF cont ; pongo el contador a 0libre BTFSC PORTA,1 ; si no sueltan el pulsador

    GOTO libre ; me quedar a esperarRETURN ; si lo sueltan regreso

    ; a testear nuevamente

    Antes de hacer algo debo saber si el LED est encendido o apagado. Recuerda

    que si est apagado cont=0000001 , de lo contrario cont=00000000

    Pregunta...(BTFSC cont,0 ?) - el primer bit del registro cont es igual auno?...

    Si es as el LED est apagado as que lo atender en "on_led" ah pondr auno el primer bit del puerto B (encender el led), luego har cont=0000000para saber que desde este momento el LED est encendido.

    El tema es que nunca falta aquellos que presionan un pulsador y luego no loquieren soltar, as que le daremos para que tengan..., y nos quedaremos en la

    subrrutina "libre" hasta que lo suelten, y cuando lo liberen, saltaremos unalnea hasta la instruccin RETURN.

    As es que caeremos en (GOTO test) y esperamos a que oprimannuevamente el pulsador. y si quieres saber si esto funciona ponle el dedito, ycaers otra vez en la subrrutina "led"

    Pregunta...(BTFSC cont,0 ?) - el primer bit del registro cont es 1?...

    Noooooooo...!!! Eso significa que el LED esta encendido, entonces lo apagar

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    42/57

    Microcontroladores PIC - Seales de Entrada

    (BCF PORTB,0), har cont=00000001 (de ahora en ms LED apagado) yme quedar en "libre" esperando a que sueltes el pulsador, y cuando lohagas mi 16F84 estar listo para un nuevo ciclo.

    Te gust...?, fue fcil verdad...?

    Creo que es un buen punto de partida. En breve hablaremos del famosoMPLAB de Microchip, por lo pronto, trata de conseguirlo...

    Si llegaste con xito hasta aqu, ten por seguro que puedes hacer cosas mscomplejas, a las que nos dedicaremos de ahora en ms...

    Saludos... y hasta la prxima...!!!

    R -Lu is . . .

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    43/57

    Microcontroladores PIC - Set de Instrucciones

    :: Microcontroladores PIC - Set de Instrucciones

    Es importante que tengas en claro las notaciones que debers tomar en

    cuenta para poder interpretarlas, no son muchas.

    NOTACION PARA NUMEROS

    q Decimal : D'100' .100q Hexadecimal: H'64' 0x64 64q Octal : O'144'q Binario : B'01101100'q ASCII : A'C' 'C'

    NOTACION PARA REGISTROS Y LITERALES

    q w : Registro W, similar al acumulador, es el registro de trabajo.q f: Campo de 5 bits (fffff), contiene la direccin del banco de

    registros, que ocupa el banco 0 del rea de datos. Direcciona unode esos registros.

    q k : Representa una constante de 8 bits.q d : Bit del cdigo OP de la instruccin. Selecciona el destino donde se

    guarda el resultado de una operacin. Si d=0, el destino es W, y sid=1 el destino es f.

    q b : Determina la posicin de un bit dentro de un registro de 8 bits, (osea, tomar valores entre 0 y 7)

    SIMBOLOS

    q [] : Opciones.q (): Contenido.q => : Se asigna a ...q : Campo de bits de un registro.q E : Pertenece al conjunto ...q Label : Nombre de la etiqueta.q TOS : Cima de la pila con 8 niveles en la gama media.q PC : Contador de programa que direcciona la memoria de

    instrucciones.

    FLAGS

    Los Flags o banderas son marcadores, representados por bits dentro del

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    44/57

    Microcontroladores PIC - Set de Instrucciones

    registro STATUS, y son:

    q Z : Flag de cero, se pone a 1 cuando una operacin lgica oaritmtica da 0 (cero)como resultado. En cualquier otro caso se ponea 0.

    q C : Flag de Carry, se pone a 1 cuando la operacin que le afecta

    sobrepasa el nivel de representacin del procesador, en nuestro casoes de 8 BIT's , de esta manera si sumamos a 0b11111111 un0b00000011 el resultado sera 0b00000010 y el BIT de Carry pasaraa 1.

    q DC : Flag de carry del nibble inferior, este se comporta igual que elBIT de Carry, solo que el lmite de representacin son los 4 bitsinferiores, de esta manera si tenemos 0b00001111 y sumamos0b00000111, el resultado ser 0b00010110 y el BIT de DC se pone a1, el BIT de Carry estar a 0 al no superarse los 8 bits y el de Z a 0al ser el nmero diferente de 0.

    No te preocupes si te quedan dudas respecto a los FLAGS, stas seaclararn a medida que vayas avanzando en el tutorial.

    Ahora si, ya podemos empezar con el set de instrucciones:

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    45/57

    Microcontroladores PIC - Set de Instrucciones

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    46/57

    Microcontroladores PIC - Set de Instrucciones

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    47/57

    Microcontroladores PIC - Set de Instrucciones

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    48/57

    Microcontroladores PIC - Set de Instrucciones

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    49/57

    Microcontroladores PIC - Set de Instrucciones

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    50/57

    Microcontroladores PIC - Set de Instrucciones

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    51/57

    Microcontroladores PIC - Set de Instrucciones

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    52/57

    Microcontroladores PIC - Set de Instrucciones

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    53/57

    Microcontroladores PIC - Set de Instrucciones

    Ya veo que quieres el resumen de instrucciones, bueno aqulo tienes...

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    54/57

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    55/57

    Microcontroladores PIC - Resumen de Instrucciones

    OPERACIONES ORIENTADAS A BITS

    Nemotcnicos Operacin Estados afectados

    BCF f,bBSF f,b

    BTFSC f,bBTFSS f,b

    Limpiar bit b de fActivar bit b de f

    Probar bit b de f,saltar si ceroProbar bit b de f,saltar si uno

    Por ltimo, aparece k que viene a ser una constante de 8 bit, es decir que kpuede tomar valores entre 0 y 255, stos inclusive, segn la instruccin autilizar

    OPERACIONES ORIENTADAS A LITERALES Y DE CONTROL

    Nemotcnicos Operacin Estados afectados

    ADDLW kANDLW kCALL kCLRWDTGOTO KIORLW KMOVLW K

    RETFIERETLW KRETURNSLEEPSUBLW KXORLW K

    Sumar literal k a WAND entre k y WLlamar subrutinaLimpiar WDTSalta a direccin kOR entre k y WCargar W con literal k

    Retornar de interrupcinRetornar y cargar W con kRetornar de subrutinaIr al modo de bajo consumoRestarle k a WOR exclusiva entre k y W

    C,DC,ZZ

    -TO,-TDZ

    -TO,-TDC,DC,Z

    Z

    Bueno, eso es todo, y creo que ms que suficiente.

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    56/57

    Microcontroladores PIC - Fuses del PIC16F84/c84

    :: Microcontroladores PIC - Fuses del PIC 16F84/C84

    LOS FUSES DEL PIC

    Estas 4 "variables" del Pic16F84 (modelos superiores tienen ms), sirvenpara configurar ciertos aspectos del microcontrolador. Cada FUSE activa odesactiva una opcin de funcionamiento.

    OSC (Oscilador):

    Es el modo de oscilacin que va a usar el Pic.

    Cada vez que el Pic recibe un pulso elctrico del oscilador da un paso paraejecutar una instruccin (4 impulsos para completar una), por lo quepodemos decir que es una seal que le recuerda al Pic que tiene que seguiravanzando.

    Segn esto, el pic puede usar 4 tipos de oscilador:

    XT: Es un acrnimo que viene de XTAL (o cristal encastellano). Este modo de funcionamiento implica quetendremos que disponer de un cristal de cuarzo externo

    al Pic y dos condensadores. El valor del cristalgeneralmente ser de 4Mhz o 10Mhz, y loscondensadores sern cermicos de entre 27 y 33 nF. Laexactitud de este dispositivo es muy muy alta, por lo quelo hace muy recomendable para casi todas lasaplicaciones.

    RC: Este es el sistema ms sencillo y econmico. Sebasa en un montaje con una resistencia y uncondensador. La velocidad a la que oscile el picdepender de los valores del condensador y de la

    resistencia. En la hoja de caractersticas del Pic estn losvalores.

    HS: Para cuando necesitemos aplicaciones de "altavelocidad", entre 8 y 10Mhz. Se basa tambin en uncristal de cuarzo, como el XT

    LP: "Low Power" la velocidad mxima a la quepodemos poner el pic con este oscilador es de 200Khz. Al

  • 8/7/2019 Microcontroladores_PIC_-_Tabla_de_Referencias

    57/57

    Microcontroladores PIC - Fuses del PIC16F84/c84

    igual que el XT y el HS, necesitaremos de un cristal decuarzo y unos condensadores.

    WDT (Watchdog Timer):

    El famoso "perro" del pic. (perro guardin). Esta es una capacidad del pic deautoresetearse. Es muy til, por ejemplo si un Pic, por un descuido deprogramacin, se queda en un bucle infinito, esta "utilidad" lo sacar de l.Su funcionamiento es sumamente sencillo. Simplemente es un registro quedebemos borrar cada cierto tiempo. Si transcurrido un cierto tiempo elregistro no ha sido borrado el pic se resetea. La instruccin para borrar elregistro es CLRWDT. Con poner un par de ellos a lo largo de nuestro cdigoes suficiente para tener una garanta de que el pic no se quede "haciendo elbobo" (como dijo alguien por ah...).

    PWRT (Power Up Timer Reset):

    Si activamos este FUSE, lo que conseguimos es que se genere un retardoen la inicializacin del Pic. Esto se usa para que la tensin se estabilice, porlo que se recomienda su uso.

    CP (Code Protect):

    El "dichoso" Code Protection. Proteccin del cdigo. Lo nico que hace esimpedir que algun curioso se apropie de tu creacin no tiene efecto algunoen el correcto funcionamiento del PIC, ni que no se pueda sobreescribir sucontenido. Lo nico que hace es eso, impedir su lectura. Por cierto, dicenque puedes quitar la proteccin por medio de hardware, yo nunca lo hice,por que no lo creo necesario, ya que lo entretenido de esto es el desafo, nocrees...???