You are on page 1of 70

MICROCONTROLADORES PIC

MANUAL DE MICROCONTROLADORES PIC

CURSO DE INSTRUCTORES

TCNICOS INDUSTRIALES

1 /112

MICROCONTROLADORES PIC

CONTENIDO SINTETICO
Arquitectura interna de los PIC. Manejo del ensamblador MPLAB .- Programacin de PIC. Manejo de temporizadores TM !. Control de inter"aces e#ternos por medio de los puertos de entrada $ salida Interrupciones% reset $ recursos au#iliares. Practica de Laboratorio Practica de Taller - aplicaciones.

TCNICOS INDUSTRIALES

2 /112

MICROCONTROLADORES PIC

LOS MICROCONTROLADORES
INTRODUCCION A LOS MICROCONTROLADORES. Un microcontrolador es un Computador completo, pero de limitadas prestaciones, que est contenido en un solo chip y se destina a gobernar una tarea especfica. Los PIC de la familia 1 !"" son #C de $ bit. Los microcontroladores estn conquistando el mundo. %stn presentes en nuestro traba&o, en nuestra casa y en nuestra 'ida, en general. (e pueden encontrar controlando el funcionamiento de los ratones y teclados de los computadores, en los tel)fonos, en los hornos microondas y los tele'isores de nuestro hogar. Pero la in'asi*n acaba de comen+ar y el nacimiento del siglo ,,I ser testigo de la conquista masi'a de estos diminutos computadores, que gobernarn la mayor parte de los aparatos que fabricaremos y usamos los humanos Arquitectura Harvard La arquitectura tradicional: La arquitectura tradicional de computadoras y microprocesadores se basa en el esquema propuesto por -ohn .on /eumann, en el cual la unidad central de proceso, o CPU, esta conectada a una memoria 0nica que contiene las instrucciones del programa y los datos 1figura 1.1.12. %l tama3o de la unidad de datos o instrucciones esta fi&ado por el ancho del bus de la memoria. %s decir que un microprocesador de $ bits, que tiene adems un bus de $ bits que lo conecta con la memoria, deber mane&ar datos e instrucciones de una o ms unidades de $ bits 1bytes2 de longitud. Cuando deba acceder a una instrucci*n o dato de ms de un byte de longitud, deber reali+ar ms de un acceso a la memoria. Por otro lado este bus 0nico limita la 'elocidad de operaci*n del microprocesador, ya que no se puede buscar de memoria una nue'a instrucci*n, antes de que finalicen las transferencias de datos que pudieran resultar de la instrucci*n anterior. %s decir que las dos principales limitaciones de esta arquitectura tradicional son 4 a2 que la longitud de las instrucciones esta limitada por la unidad de longitud de los datos, por lo tanto el microprocesador debe hacer 'arios accesos a memoria para buscar instrucciones comple&as, b2 que la 'elocidad de operaci*n 1o ancho de banda de operaci*n2 esta limitada por el efecto de cuello de botella que significa un bus 0nico para datos e instrucciones que impide superponer ambos tiempos de acceso. La arquitectura 'on /eumann permite el dise3o de programas con c*digo automodificable, prctica bastante usada en las antiguas computadoras que solo tenan acumulador y pocos modos de direccionamiento, pero innecesaria, en las computadoras modernas.

FIG. Arquitectura on Ne!"ann

TCNICOS INDUSTRIALES

3 /112

MICROCONTROLADORES PIC

5rquitectura interna
Los microcontroladores PIC utilizan la arquitectura Harvard, la cual separa la memoria de programa de la memoria de datos. Esto hace que el dispositivo tenga un bus de datos y un bus de memoria de programa, hecho que permite acceder a ambos simultneamente. En el caso de la memoria de programa es interna, ya que se encuentra en orma de EP!"# o $L%&H dentro del propio PIC. "tra caracter'stica rese(able es que las instrucciones en los PIC son de )* bits y no de +, permitiendo instrucciones de palabra ,nica con operaci-n y operando en la misma palabra. Esta estructura, acompa(ada de un pipeline, permite que las instrucciones se e.ecuten en un s-lo ciclo de relo., salvo en el caso de saltos/rupturas de programa. Lo que se hace internamente es que mientras se e.ecuta la instrucci-n actual se carga la siguiente instrucci-n en el pipeline, con lo que se alcanza una alta velocidad de e.ecuci-n. En cuanto a los registros los PIC pueden direccionarse tanto directa como indirectamente. 0odos los registros de unci-n especial, incluyendo el contador de programa, estn accesibles en la memoria de datos y pueden ser operados de cualquier orma y empleando cualquier modo de direccionamiento 1ortogonalizaci-n2.Igualmente, todos los elementos del sistema 1temporizadores, puertos de e/s, etc2 estn implementados como registros.

La arquitectura Harvard # $u$ venta%a$: La arquitectura conocida como 6ar'ard, consiste simplemente en un esquema en el que el CPU esta conectado a dos memorias por intermedio de dos buses separados. Una de las memorias contiene solamente las instrucciones del programa, y es llamada 7emoria de Programa. La otra memoria solo almacena los datos y es llamada 7emoria de 8atos 1figura 1.1.92. 5mbos buses son totalmente independientes y pueden ser de distintos anchos. Para un procesador de (et de Instrucciones :educido, o :I(C 1:educed Instrucci*n (et Computer2, el set de instrucciones y el bus de la memoria de programa pueden dise3arse de manera tal que todas las instrucciones tengan una sola posici*n de memoria de programa de longitud. 5dems, como los buses son independientes, el CPU puede estar accediendo a los datos para completar la e&ecuci*n de una instrucci*n, y al mismo tiempo estar leyendo la pr*"ima instrucci*n a e&ecutar. (e puede obser'ar claramente que las principales 'enta&as de esta arquitectura son4 a2 que el tama3o de las instrucciones no esta relacionado con el de los datos, y por lo tanto puede ser optimi+ado para que cualquier instrucci*n ocupe una sola posici*n de memoria de programa, logrando as mayor 'elocidad y menor longitud de programa, b2 que el tiempo de acceso a las instrucciones puede superponerse con el de los datos, logrando una mayor 'elocidad de operaci*n. Una peque3a des'enta&a de los procesadores con arquitectura 6ar'ard, es que deben poseer instrucciones especiales para acceder a tablas de 'alores constantes que pueda ser necesario incluir en los programas, ya que estas tablas se encontraran fsicamente en la memoria de programa 1por e&emplo en la %P:;7 de un microprocesador2.

Arquitectura Harvard
TCNICOS INDUSTRIALES 4 /112

MICROCONTROLADORES PIC

3iagrama de la estructura interna

Dia&ra"a de 'loque$ de lo$ "icrocontroladore$ (IC)*F*+,A

-a.a$ de "e"oria -e"oria Interna /RA-0 %l pic1 f 9$a es un microcontrolador de $ bit, posee una arquitectura :I(C a'an+ada as como un &uego reducido de <= instrucciones. %ste microcontrolador es el rempla+o del obsoleto pic1 f$>a, los pines del pic1 f 9$a son compatibles con el pic1 f$>a, as se podran actuali+ar proyectos que hemos utili+ado con el pic1 f$>a.

TCNICOS INDUSTRIALES

5 /112

MICROCONTROLADORES PIC

Caracter1$tica$ del (IC)*F*+,A:


8atos rele'antes4 Caracter1$tica 7emoria de programa 7emoria (:57 7emoria %%P:;7 Pines de %A( %ntradas anal*gicas 158C2 (alidas PB7 (PI I9C U(5:C Cempori+adores de $ @its Cempori+adores de 1 @its Comparadores ;scilador /0mero de pines %ncapsulado (ro.iedad 1 ?@ytes2 99> @ytes 19$ @ytes 1 /o 9 /o /o (i 9 1 9 !recuencia m"ima4 9D 76+ ;scilador interno de > 76+. 1$ P8IP, (;IC, ((;P, E!/

OTRAS CARACTER2STICAS DEL (IC )*F*+,A CPU 8e alto rendimiento :I(C4 F 'elocidades de operaci*n de 8C G 9D 76+ F Capacidad de interrupci*n F pila de $ ni'eles F 7odos de direccionamiento directos, indirectos y relati'o F <= simples instrucciones de palabra4 G Codas las instrucciones de ciclo 0nico, e"cepto las de salto Caractersticas %special microcontrolador4 F opciones de oscilador e"terno e interno4 G Precisi*n de fbrica del oscilador interno de > 76+ calibrada a H 1I G oscilador de >$ J6+ 8e ba&o consumo interno F 7odo de ahorro de energa en modo sue3o F resistencias programable pulGups del P;:C@ F 7ultiple"ado del pin reset A %ntradaGpin F Cempori+ador Batchdog con oscilador independiente para un funcionamiento fiable F @a&a tensi*n de programaci*n K InGCircuit (erial 1a tra')s de dos pines2 F Protecci*n de c*digo programable

TCNICOS INDUSTRIALES

6 /112

MICROCONTROLADORES PIC

F @roLnGout reset F PoLerGon :eset F PoLerGup Cimer y el oscilador de puesta en marcha del tempori+ador F 5mplio rango de funcionamiento de tensi*n 19.DG=.=.2 F Industrial y amplia gama de temperaturas e"tendidas F 5lta durabilidad de la memoria !lash A%%P:;74 G 1DD.DDD ciclos de escritura !lash G 1.DDD.DDD ciclos de escritura %%P:;7 G >D a3os de retenci*n de datos 8e ba&a potencia Caractersticas4 F Corriente en espera4 G 1DD n5M9.D., tpico F Corriente de funcionamiento4 G 19N5 M <9 J6+, 9,D ., tpica G 19DN5 M 1 76+, 9,D ., tpica F Cempori+ador Batchdog actual4 G 1N5M9.D., tpico F Cimer1 oscilador actual4 G 1.9N5 M <9 J6+, 9,D ., tpica F 8oble 'elocidad del oscilador interno4 G Ciempo de e&ecuci*n seleccionable entre > 76+ y de >$ J6+ G >Ns despertar de un sue3o, <.D., tpico %n la siguiente figura se muestran los microcontroladores que componen esta serie

TI(OS DE -E-ORIA DEL (IC)*F*+,A 7emoria flash4 esta memoria es de tipo no 'oltil en esta memoria ira nuestro programa que realicemos. %l pic1 f 9$a tiene una capacidad de 9D>$ Lords seto se podra traducir a 9D>$ lneas de c*digo que podemos escribir en lengua&e assembler para este microcontrolador. 7emoria :574 esta memoria sir'e para guardar datos y 'ariables, esta memoria es de tipo 'oltil, es decir perder la informaci*n cuando desapare+ca la alimentaci*n. La memoria ram que posee el microcontrolador pic1 f 9$a es de 99> bytes 7emoria eeprom4 en una memoria de tipo no 'oltil de poca capacidad sir'e para guardar datos, aun cuando de&e de recibir alimentaci*n la informaci*n no se perder. La memoria eeprom que posee el pic1 f 9$a es de 19$ bytes

TCNICOS INDUSTRIALES

7 /112

MICROCONTROLADORES PIC

Ti.o$ de o$ciladore$ %l PIC1 ! 9O5A 9$5A >$5 puede ser operado en ocho diferentes modos de oscilador. :C, ;scilador con resistencia y condensador 19 modos2 ,C, Cristal de cuar+o. 6(, Cristal de alta 'elocidad LP, Cristal de ba&a frecuencia y ba&o consumo de potencia. I/C;(C, oscilador interno de precisi*n de >mh+ 19 modos2 %C, se3al e"terna de entrada de relo& %n la siguiente figura el diagrama de bloques del oscilador

%n la siguiente tabla se muestra los 'alores de los cristales y sus respecti'os condensadores de filtro para el oscilador e"terno

5l momento de programar un micro se debe especificar que tipo de oscilador se usa. Internamente la frecuencia del oscilador es di'idida por >, as que si temeos un oscilador de > 76+, la frecuencia de traba&o es de 1 76+, por lo que cada instrucci*n se e&ecuta cada 1 us.

TCNICOS INDUSTRIALES

8 /112

MICROCONTROLADORES PIC

-a.a de "e"oria del .ic)*3*+,a Como 'emos en la siguiente figura el mapa de memoria se encuentra di'idida en > bancos en estos bancos se encuentra los registros de control as como tambi)n la memoria :57.

-e"oria de (ro&ra"a
La memoria de programa est organizada en palabras de )* bits y es del tipo $L%&H. Esta memoria es de s-lo lectura y ,nicamente se e.ecutar el c-digo contenido en ella. El vector de reset se encuentra en la posici-n 4444h y el de interrupciones en la 444*h, por lo que la memoria de usuario se e5tiende desde la direcci-n 4446h.

TCNICOS INDUSTRIALES

9 /112

MICROCONTROLADORES PIC

REGISTROS DE FUNCIONES ES(ECIALES.4CA-INO DE LOS DATOS 5 REGISTRO 6 La figura representa un diagrama simplificado de la arquitectura interna del camino de los datos en el CPU de los microcontroladores PIC. %ste diagrama puede no representar con e"actitud el circuito interno de estos microcontroladores, pero es e"acto y claro desde la *ptica del programador. La figura 1.>.1 representa el mismo diagrama para un microprocesador ficticio de arquitectura tradicional. (e puede obser'ar que la principal diferencia entre ambos radica en la ubicaci*n del registro de traba&o, que para los PICPs se denomina B 1BorJing :egister2, y para los tradicionales es el 5cumulador 152.

%n los microcontroladores tradicionales todas las operaciones se reali+an sobre el acumulador. La salida del acumulador esta conectada a una de las entradas de la Unidad 5ritm)tica y L*gica 15LU2, y por lo tanto )ste es siempre uno de los dos operandos de cualquier instrucci*n. Por con'enci*n, las instrucciones de simple operando 1borrar, incrementar, decrementar, complementar2, act0an sobre el acumulador. La salida de la 5LU 'a solamente a la entrada del acumulador, por lo tanto el resultado de cualquier operaci*n siempre quedara en este registro. Para operar sobre un dato de memoria, luego reali+ar la operaci*n siempre hay que mo'er el acumulador a la memoria con una instrucci*n adicional. %n los microcontroladores PIC, la salida de la 5LU 'a al registro B y tambi)n a la memoria de datos, por lo tanto el resultado puede guardarse en cualquiera de los dos destinos. %n las instrucciones de doble operando, uno de los dos datos siempre debe estar en el registro B, como ocurra en el modelo tradicional con el acumulador. %n las instrucciones de simple operando el dato en este caso se toma de la memoria 1tambi)n por con'enci*n2. La gran 'enta&a de esta arquitectura es que permite un gran ahorro de instrucciones ya que el resultado de cualquier instrucci*n que opere con la memoria, ya sea de simple o doble operando, puede de&arse en la misma posici*n de memoria o en el registro B, seg0n se seleccione con un bit de la misma instrucci*n. Las operaciones con constantes pro'enientes de la memoria de programa 1literales2 se reali+an solo sobre el registro B. %n la memoria de datos de los PICPs se encuentran ubicados casi todos los registros de control del microprocesador y sus perif)ricos autocontenidos, y tambi)n las posiciones de memoria de usos generales. %n el caso de los 1 C=,, algunos registros especiales de solo escritura 1C:I( y ;PCI;/2 no estn accesibles dentro del bloque de memoria de datos, sino que solo se pueden cargar desde el registro B por medio de instrucciones especiales.

TCNICOS INDUSTRIALES

10 /112

MICROCONTROLADORES PIC

PIC &'(')*A +

N Nombre pin )7 )6 "&C)/CL8I9

Tipo Tipo de (E/S/A) buffer E &0/C#"& 1:2 =

Descripcin entrada del cristal oscilador / entrada e5terna de relo. &alida del cristal oscilador. En el modo de oscilaci-n por cristal se conecta al cristal o resonador. En modo !C "&C; proporciona CL8"<0 1salida de relo.2, que posee )/* de la recuencia de "&C), y representa el ciclo de instrucci-n. Entrada de reset / entrada de volta.e de programaci-n. Este pin es un reset activo a nivel l-gico ba.o del dispositivo. P"!0% es un puerto de E/& bidireccional Puede ser seleccionado tambi@n para ser la entrada de relo. al contador/temporizador 0#!4. La salida es de colector abierto. P"!0B es un puerto de E/& bidireccional que puede ser programado para levantar internamente todas las entradas. !B4/I90 puede ser seleccionado como un pin de interrupci-n e5terna !B* a !B? son pines de interrupci-n por cambio de estado. !B7 es la entrada de relo. de programaci-n y !B? la entrada de programaci-n serie. !e erencia de tierra 1masa2 para todos los pines l-gicos de E/&. %limentaci-n positiva para todos los pines l-gicos de E/&.

"&C;/CL8"<0 &

* )? )+ ) ; : 7 ? + A )4 )) ); ):

#CL!> !%4 !%) !%; !%: !%*/04C8I !B4/I90 !B) !B; !B: !B* !B6 !B7 !B?

E/% E/& E/& E/& E/& E/& E/& E/& E/& E/& E/& E/& E/& E/&

&0 00L 00L 00L 00L &0 00L/&0 1)2 00L 00L 00L 00L 00L 00L/&0 1;2 00L/&0 1;2

6 )*

Css Cdd

% %

= =

Le#enda # nota$: %Qentrada (Qsalida %A(QentradaAsalida CCLQentrada CCL (CQentrada (chmitt

5Qalimentaci*n

,&,)-

Este bu er es una entrada &chmitt cuando se con igura como interrupci-n e5terna Este bu er es una entrada &chmitt cuando se emplea en el modo de programaci-n serie

TCNICOS INDUSTRIALES

11 /112

MICROCONTROLADORES PIC

,.-

Este bu er es una entrada &chmitt cuando se con igura en el modo de oscilaci-n !C y como entrada C#"&

TE-(ORI7ANDO %l uso de la tempori+aci*n se usa en casi todas las aplicaciones, semforos, alarmas, acceso con cla'e, ascensores, comunicaci*n, etc :ecordando nuestro programa de encendido de Led o foquito, mencione que este se apagaba por 9 microsegundos pero que era imposible detectarlo, pues bien en las siguientes sesiones 'amos a tempori+ar para que el tiempo de apagado sea 1 segundo y de esta manera apreciar la tempori+aci*n 5l igual que teniamos dos registros C:I(5 y C:I(@ que configuraban los pines de los puertos como entradas o salidas. %n la tempori+aci*n tenemos el registro ;PCI;/ en el banco 1, que me configurar el registro C7:D del banco D, ya sea como tempori+ador o contador

O(TION :P@UR I/C%8S C;C( C;(% P(5 P(9 P(1 P(D

La medida de tiempo en un micro, est su&eta a tres temas4


;scilador e"terno :egistro C7:D 8i'isor de !ecuencia %l oscilador e"terno creo que ya saben pero hago recordar, es el que me define la 'elocidad del ciclo de instrucci*n, y cuando usamos un oscilador de cristal de cuar+o 1,C2 de >7h+, tenemos 1 microsegundo de ciclo de instrucci*n %l registro C7:D esta implementado fsicamente en el pin :5> del P;:C5, este registro de $ bits se configura como tempori+ador para determinar inter'alos concretos de tiempo o como contador de impulsos e"ternos . %L di'isor de !recuencia, como su nombre lo dice di'ide la frecuencia de relo&, que es lo mismo decir que aumenta la duraci*n de los impulsos de relo&. La combinaci*n binaria de los bits P(D, P(1 y P(9, del registro ;PCI;/ me definen el rango del di'isor de frecuencias.

TCNICOS INDUSTRIALES

12 /112

MICROCONTROLADORES PIC

P/) P/! !!! !!& !&! !&& &!! &!& &&! &&&

0i1isin TM ! &3) &34 &3* & 3 &' & 3 .) & 3 '4 & 3 &)* & 3 )5'

0i1isin 20T &3& &3) &34 &3* & 3 &' & 3 .) & 3 '4 & 3 &)*

F8r"ula .ara calcular el tie".o C Q CI " C7:D " 8! CI Q Ciclo de instrucci*n C7:D Q .alor cargado en este registro. 8! Q :ango escogido en el di'isor de frecuencia %l 'alor cargado en el C7:D, es aquel 'alor que le falta a este registro para que llegue a 9== 1'alor m"imo para un registro de $ bits2 %-%7PL;4 (i por softLare cargo un 'alor de 19= en el registro C7:D, entonces el 'alor que inter'iene en la f*rmula es 1<D, 'alor que falta para que se desborde 1llegue a 9==2 el registro C7:D.

De3inici8n de 'it$ del re&i$tro O(TION


Ta hemos defnido los < primeros bits P(D, P(1 y P(9 ahora seguimos con el resto4 (SA @it de asignamiento del predi'isor de frecuencia4 D Q Predi'isor asignado a C7:D 1 Q Predi'isor asigando a Batchdog 1B8C2 TOSE @it de selecci*n de flanco acti'o cuando C7:D es configurado como Contador D Q Conta&e se incrementa cada flanco ascendente 1 Q Conta&e se incrementa cada flanco descendente TOCS @it de seleci*n de la fuente del clocJ4 D Q Configura C7:D como Cempori+ador 1 Q Configura C7:D como Contador INTEDG @it de seleci*n de flanco acti'o de interrupci*n e"terna4
TCNICOS INDUSTRIALES 13 /112

MICROCONTROLADORES PIC

D Q flanco descendente 1 Q flanco ascendente R(9U: :esistencias pull G up de la puerta @4 D Q 5cti'adas 1 Q 8esacti'adas (i ponemos al m"imo los 'alores de la f*rmula, rango de di'isor de 9= , C7:D con 9== y un oscilador de > 7h+, obtenemos un 'alor m"imo de tempori+aci*n de =.9$ milisegundos, el cual es un 'alor e'identemente insuficiente si quiero que mi pulso dure 'arios segundos o minutos, tiempo necesario para la mayora de aplicaciones, como pueden ser, relo&es digitales, semforos, etc. la soluci*n sencilla es crear un archi'o en la :57 y usarlo como archi'o au"iliar para lograr la tempori+aci*n deseada. Cenemos dos alternati'as para alargar tiempos, crear bucles anidados de retardo, en este caso no se usa el registro C7:D, y la otra alternati'a es usando este registro. La 'enta&a de usar este registro es que se pueden generar condiciones de interrupci*n, habilitano el tipo de interrupci*n por desbordamiento de registro C7:D. La habilitaci*n de este tipo de interrupci*n, se hace mediante el registro I/CC;/ y sus respecti'os bits. Interru.cione$ Los 1 C,, agregan la posibilidad de contar con sistema de interrupciones. %ste sistema consiste en un mecanismo por el cual un e'ento interno o e"terno, asincr*nico respecto del programa, puede interrumpir la e&ecuci*n de )ste produciendo automticamente un salto a una

subrutina de atenci*n, de manera que pueda atender inmediatamente el e'ento, y retomar luego la e&ecuci*n del programa e"actamente en donde estaba al momento de ser interrumpido. %ste mecanismo es muy 0til por e&emplo para el mane&o de timers o rutinas que deben repetirse peri*dicamente 1refresh de display, antirebote de teclado, etc.2, detecci*n de pulsos e"ternos, recepci*n de datos, etc. %"isten de tres a doce e'entos que pueden generar interrupciones en los PIC1 !,, e"istentes hasta el momento, pero nada impide que puedan agregarse ms en 'ersiones futuras. Funciona"iento %n los 1 !,, las interrupciones se comportan casi e"actamente igual que las subrutinas. 8esde el punto de 'ista del control del programa, al producirse una interrupci*n se produce el mismo efecto que ocurrira si el programa tu'iese un C5LL DDD>h en el punto en que se produ&o la interrupci*n. %n uno de los registros de control del sistema de interrupciones e"iste un bit de habilitaci*n general de interrupciones SI%, que debe ser programado en 1 para que las interrupciones puedan actuar. 5l producirse una interrupci*n, este bit se borra automticamente para e'itar nue'as interrupciones. La instrucci*n :%C!I% que se utili+a al final de la rutina de interrupci*n, es id)ntica a un retorno de subrutina, sal'o que adems coloca en uno automticamente el bit SI% 'ol'iendo a habilitar las interrupciones. 8entro de la rutina de interrupci*n, el programa deber probar el estado de los flags de interrupci*n de cada una de las fuentes habilitadas, para detectar cual fue la que causo la interrupci*n y as decidir que acci*n tomar.

TCNICOS INDUSTRIALES

14 /112

MICROCONTROLADORES PIC

L8&ica de interru.cione$ .ara lo$ ;controladore$ (IC)*F,<

-(LA9
%l 7PL5@, es un entorno integral de desarrollo, pro'isto por la misma firma 7icrochip, en el cual se puede desarrollar un proyecto en asembler y su simulaci*n. Incorporando herramientas de softLare yAo hardLare permite que en el mismo entorno se puedan emular un microcontrolador, programar con lengua&e C yAo grabarlo al PIC con el proyecto que se reali+*. %L 7PL5@ le permite a Usted escribir, depurar y optimi+ar los programas 1firmLare2 de sus dise3os con PIC 1 A1O. %L 7PL5@ incluye un editor de te"to, un simulador y un organi+ador de proyectos. 5dems, el 7PL5@ soporta el emulador PIC75(C%: y a otras herramientas de desarrollo de 7icrochip como el PIC(C5:C G Plus.

De que 3or"a le a#uda el -(LA9 = Con el -(LA9 U$ted .uede:


8epurar sus programas fuente. 8etectar errores automticamente en sus programas fuente para editarlos. 8epurar los programas utili+ando puntos de corte 1breaJpoints2 mediante 'alores de los registros internos. ;bser'ar el flu&o del programa con el simulador 7PL5@ G(I7, * seguirlo en tiempo real utili+ando el emulador PIC75(C%:. :eali+ar medidas de tiempo utili+ando un cron*metro. 7irar 'ariables en las 'entanas de obser'aci*n. %ncontrar respuestas rpidas a sus preguntas, utili+ando la 5yuda en lnea del 7PL5@.

LAS HERRA-IENTAS DEL -(LA9 %l ;rgani+ador de Proyectos 1Proyect 7anager2.


TCNICOS INDUSTRIALES 15 /112

MICROCONTROLADORES PIC

%l organi+ador de proyectos 1Proyect 7anager2 es parte fundamental de 7PL5@. (in crear un proyecto Usted no puede reali+ar depuraci*n simb*lica. Con el ;rgani+ador de Proyectos 1Proyect manager2 puede utili+ar las siguientes operaciones4

Crear un proyecto. 5gregar un archi'o de programa fuente de proyecto. %nsamblar o compilar programas fuente. %ditar programas fuente. :econstruir todos los archi'os fuente, o compilar un solo archi'o. 8epurar su programa fuente.

So3t!are en$a"'lador: %l softLare ensamblador que presenta 7icrochip 'iene en dos presentaciones, una, para entorno 8;( llamado 7P5(7.%,% y la otra, para entorno BindoLs llamado 7P5(7BI/.%,% Las dos presentaciones soportan a C;8;( los microcontroladores de la familia PIC de 7icrochip. %l con&unto de instrucciones de los microcontroladores PIC es en esencia la base del lengua&e ensamblador soportado por este softLare. Directiva$ de u$o 3recuente: (on instrucciones para el compilador. :DEFINE e&. Rdefine UnombreV WU'alor a rempla+arVX e"plicaci*n4 declara una cadena de te"to como substituto de otra

END e&. end e"plicaci*n4 indica fin de programa E>U e&. status equ D= e"plicaci*n4 define una constante de ensamble INCLUDE e&. include UPIC1 !$>.hV e"plicaci*n4 incluye en el programa un archi'o con c*digo fuente ORG e&. org D"1DD e"plicaci*n4 ensambla a partir de la direcci*n especificada

USO DEL MPLAB


6787 ACI98 07 :8 P ;<7CT;

TCNICOS INDUSTRIALES

16 /112

MICROCONTROLADORES PIC

/e describe a continuacin la cracin de un pro$ecto% =asta grabarlo al microcontrolador mediante un grabador propic o cualquier otro. Paso & :na 1ez abierto el PMLAB% se abre >ne? "ile@ Paso ) :na 1ez abierto ne? "ile% se abre >sa1e as@ $ se guarda el arc=i1o. Para esto se crea una carpeta en C % $ se guarda con el nombre de la tarea en este caso led.asm

Paso . 7n la 1entana > Project@ se ingresa en >project 2izard@

Paso 4 Al presionar el boton ;A de la pantalla >Project 2izard@ se accedea al nue1o pro$ecto% entonces pulsar siguiente
TCNICOS INDUSTRIALES 17 /112

MICROCONTROLADORES PIC

Paso 5 :na 1ez mas se pulsa en siguiente $ aparece un menu de tipos de pic% entonces elegir el pic que se requiera trabajar% en este caso el pic &'"*4A. ;tra 1ez sepulsa siguiente Paso ' :na 1ez que ingresamos a /tep T?o% tener en cuenta que Acti1e Toolsuite3 debe estar en >Microc=ip MPA/M toolsuite@% asi mismo Toolsuite Contents.

Paso B 7n el siguiente paso% colocar el nombre de la tarea% en este caso >led@. Pulsar Bro?se.
TCNICOS INDUSTRIALES 18 /112

MICROCONTROLADORES PIC

Paso * Pulsar /elect

Paso C Pulsar siguiente% pulsar otra 1ez siguiente /eleccionar led.asm $ pulsar Add. :na 1ez mas pulsar siguiente.- Pulsar "inalizar

ESTRUCTURA DE UN PROGRAMA TIPICO


TCNICOS INDUSTRIALES 19 /112

MICROCONTROLADORES PIC

Antes de intentar programar debes tener claro que todo programa desarrollado en PIC consta bDsicamente de esta estructura3

Definir el Microcontrolador a usar. 7n esta directi1a se especi"ica el tipo de microcontrolador que sera utilizadoE esto se logra utilizando LI/TFPIC&'(*4. Esta lecer las constantes a utili!ar. Las constantes son Gtiles para re"erenciar direcciones de memoria% posiciones de los bits $ 1alores que no cambiarDn a lo largo de todo el programa. 7sto se logra utilizando la directi1a H7I:H. /i se desea por ejemplo establecer un 1alor a una constante seria C;8/T 7I: &% lo cual le asigna el 1alor de H&H al registro C;8/T. Reser"ar los es#acios en $e$oria de las "aria les. /e utiliza para reser1ar espacios en memorias para las 1ariables utilizadas en el programa. /e logra utilizando la directi1a denominada H 7/H. Mu$ Gtil cuando un registro cambia su 1alor durante la ejecucion del programa. Confi%urar los #uertos. 7s necesario establecer si los Bits de cada puerto serDn utilizados como entrada o como salida. 7sto se logra utilizando los registros especiales T I/A $ T I/B. Desarrollar el Pro%ra$a. 7s el 1erdadero corazn del trabajo que se realiza% puesto que acD se desarrollan las rutinas que seran ejecutadas por el microcontrolador.

EL REGISTRO STATUS&
Contiene el estado aritm)tico de la 5LU, el estado del :eset y los bits para selecci*n de banco.
REGISTRO STATUS

IRP Es$%do de sus &i$'s(


&IT's )E

RP

RP!

TO

PD

"

D#

Rese$

Descripcin

Bit ?=7D IRP*RP Bit 6D RP! BanG &elect Bit *D TO 0ime="ut Bit :D PD PoJer 3oJn Bit ;D " Kero Bit )D D# 3igit Carry Bit 4D # Carry

L/E L/E L L L/E L/E L/E

4 4 ) ) 5 5 5

9o implementadoD E4F ) 4 ) 4 ) 4 ) 4 ) 4 ) 4 H H H H H H H H H H H H Banco ) Banco 4 !eci@n encendido, tras CL!I30, o &LEEP. "curri- un time=out en el I30 Luego de un !set, de una instrucci-n CL!I30 0ras e.ecutar una instrucci-n &LEEP El resultado de una operaci-n l-gica o aritm@tica es 4. El resultado es distinto de 4 %carreo en la suma y no en la resta 1*L bit2 %carreo en la resta y no en la suma 1*L bit2 %carreo en la suma y no en la resta 1+L bit2 %carreo en la resta y no en la suma 1+L bit2

Uno de lo$ re&i$tro$ "a$ i".ortante$ es el registro STATUS, que tiene una longitud de $ @its. Cada uno de los ocho @its esta destinado para una funci*n
TCNICOS INDUSTRIALES 20 /112

MICROCONTROLADORES PIC

especifica. Por ahora e"plicaremos bsicamente solo algunos de los bits pertenecientes al registro (C5CU(. Si u$ted o'$erva la $i&uiente i"a&en? podr notar claramente que el @it /o. YDY es utili+ado para almacenar la informaci*n del C5::T, el @it /o.1 es utili+ado para la bandera de acarreo de dgito Y8CY, el @it /o. 9 es utili+ado para la bandera de estado cero YZY[ estas son las banderas que hemos e"plicado anteriormente. %l @it /o. O, @it /o. , @it /o. > y el @it /o. < seran e"plicados posteriormente ya que haremos incapie al @it /o. = del registro (C5CU( denominado :PD. 5a $a'e"o$ que de.endiendo de alguna operaci*n como la suma, las banderas YCY , Y8CY y YZY son afectadas automticamente seg0n sea el caso[ pero el @it numero = del registro (C5CU( lo manipularemos a nuestra 'oluntad con la finalidad de decirle al microcontrolador si queremos traba&ar en el banco numero YDY o en el banco numero Y1Y. La o.eraci8n nor"al del "icrocontrolador se efect0a en el banco YDY[ pero cuando nos cambiamos del banco YDY hacia el banco Y1Y es para efectuar ciertos cambios que definen como estarn configurados los puertos del microcontrolador. %n la siguiente imagen se podr obser'ar el registro (C5CU( y la asignaci*n que tienen cada uno de sus ocho @its. A@ora volve"o$ a reto"ar la !igura >G9 del mapa de registro del PIC1 !$> y obser'e que e"isten algunas diferencias entre el banco YDY y el banco Y1Y[ por e&emplo tenemos el los registros denominados C:I(5, C:I(@, %%C;/1, %%C;/9, ;PCI;/. Por ahora lo que queremos que usted pueda obser'ar estas diferencias entre ambos bancos, entonces si usted necesita accesar al registro C:I(5 que solamente se encuentra en el banco Y1Y, obligatoriamente tendra que cambiarse del banco D al banco 1 por medio de las instrucciones del microcontrolador. A@ora? u$ted de'erA $a'er que debemos accesar al banco 1 solamente para accesar a los registros que no se encuentran en el banco D. Una 'e+ accesados esos registros y a su 'e+ modificados, tendremos que regresar inmediatamente al banco D para que el microcontrolador siga con su tarea asignada en la memoria del programa.

TCNICOS INDUSTRIALES

21 /112

MICROCONTROLADORES PIC

EDITOR DE TE'TOS& LUGAR DONDE ESCRIBIMOS NUESTROS PROGRAMAS Los #ro%ra$as para el microcontrolador deberDn escribirse en el editor de te#tos
del M/-0;/ o tambiJn pueden escribirse en el BL;CA 07 8;TA/ de 2indo?s indi"erentemente. :sted podra localizar este blocK de notas en I8ICI; L Accesorios L BlocK de 8otas.

Dentro del editor de TE'TOS% el programa debera e#cribise en cuatro


colunnas las cuales cada una de ellas estarD destinada para una tarea especM"ica $a que cada columna cunple una tarea especM"ica. Cada una de estas colunnas tienen siguientes nombres asignados3
8o. 0e la Columna Columna & Columna ) Columna . Columna 4 8ombre de la Columna 7tiqueta ;peracion ;perandos Comentario.

Antes de todo (uere$os esta lecer o de"inir la palabra colunma dentro del
editor de te#tos $a que esta tiene dos signi"icados di"erentes $ puede prestarse a

TCNICOS INDUSTRIALES

22 /112

MICROCONTROLADORES PIC

con"uciones. Primero% la palabra columna puede ser interpretada como la posicin del caracterE por ejemplo si el cursor de su pantalla se encuentra totalmente a la izquierda% se encuentra en la primera columna del editor de te#tos. /i usted presiona la barra espaciadora de su teclado% el cursor se desplaza un caracter =acia la derec=a $ automaticamente se encontrarD en la segunda columna. 8; /7 C;8(:80A% $a que esta columna no serD la Columna de ;peracin que se seOala en la tabla anterior. Para entenderlo mejor% usted podrD de"inir su primera columna en la posicin del caracter 8o. &% la segunda columna podrD ser &! posiciones a la derec=a $ no presisamente en la posicin de caracter 8o. )% la tercera columna podrD ser &! posiciones mas a la derec=a $ asi sucesi1amente. La idea es organizar cuatro columnas independientes con una separacin mMnima de un caracter entre una columna $ la otra.

Los #ro%ra$adores utili!an la tecla de tabulacion para desplazarse a tra1Js de


las cuatro culumnas. Lo mas prDctico es utilizar el tabulador para establecer las posiciones de las columnas. /i usted se ubica totalmente a la derec=a% se encontrarD en la columna 8o. & del editor la cual representa la columna de las etiquetas% usted podra presionar la tecla de tabulador dos 1eces $ desde a=M de"inir la columna de operacin. 7l ensamblador de programa la cual estarD encargado de interpretar los comandos escritos en el blocK de notas% sabra reconocer "acilmente la columnas que usted de"ini.

Cada una de las colu$nas tienen su reglas generales% a continuacin


mencionamos $ e#plicaremos cada una de ellas. LAS ETI)UETAS& Las etiquetas tienen algunas reglas obligatorias que deberan cumplirse3

0ebe comenzar e#actamente en la columna & del editor de te#tos. La etiqueta no podrD tener mas de .& caracteres. La etiqueta podrD estar con"ormada por caracteres al"a numJricos.

OPERACION& 7n esta columna se escriben cualquiera de las .5 instrucciones del microcontrolador PIC&'(*4. OPERANDOS& Los o#erandos son los registros en donde se realizan las operaciones $ los registros son los espacios de memoria donde se almacenarDn los resultados de las operaciones. 7ste registro puede ser una memoria de datos o un registro constante que =emos denominado en el CAPIT:L; II como un literal. COMENTARIOS& En esta colu$na se escriben los comentarios que e#plican la idea de lo que esta =aciendo el programaE 7l ensamblador ignora esta linea en el momento de generar los codigos necesarios para el microcontrolador PIC&'(*4. Ta$ ien se #odran a%re%ar comentarios al programa desde la columna 8o. & del editor de te#tosE pero deberan comenzar con el sMmbolo H E H

TCNICOS INDUSTRIALES

23 /112

MICROCONTROLADORES PIC

(uerto$ de entrada B $alida Los microprocesadores PIC1 C=, tienen dos o tres puertos de entradaAsalida paralelo de usos generales llamados Puerto 5, Puerto @ y Puerto C. %l Puerto 5 es de cuatro bits y los dems son de $ bits cada uno. %l Puerto C solamente esta disponible en el 1 C== y el 1 C=O. Circuito equivalente .G%l circuito equi'alente de un bit cualquiera de un puerto de entrada salida es el siguiente

Circuito equivalente de .uerto IBO %l latch L1 corresponde a un bit del registro de datos del puerto, mientras que L9 es un bit del registro de control de tristate del mismo. @1 es el buffer tristate de salida que tiene capacidad de entregar 9D m5 y drenar 9= m5. @1 es controlado por L9. (i L9 tiene cargado un \1], @1 se encuentra en triGstate, es decir con la salida desconectada 1en alta impedancia2, y el puerto puede ser usado como entrada. (i L9 tiene cargado un \D], la salida de @1 esta conectada 1ba&a impedancia2 y el puerto esta en modo de salida. @9 es el buffer de entrada, es decir el que pone los datos en el bus interno del microcontrolador cuando se lee el registro de datos del puerto. Puede 'erse que el dato ledo es directamente

TCNICOS INDUSTRIALES

24 /112

MICROCONTROLADORES PIC

L8&ica de interru.cione$ .ara lo$ ;controladore$ (IC)*F,< Fuente$ La se3al que produce la interrupci*n es en realidad una sola, que resulta de la combinaci*n de todas las fuentes posibles y de los bits de habilitaci*n. %"isten dos grupos de fuentes, unas que se habilitan con solo colocar en uno el bit SI%, y otras que adems necesitan que este puesto a uno el bit P%I%. %n algunas 'ersiones de los 1 C,, solo e"iste el primer grupo. 5dems, cada fuente de interrupciones tiene su respecti'o bit de habilitaci*n indi'idual. Las fuentes de interrupci*n 'aran con cada 'ersi*n, y pueden ser por e&emplo4 ^ Interrupci*n e"terna por pin :@DAI/C ^ 8esborde del Cimer D o :CCC ^ Cambio en el estado de los bits > a O del puerto @ ^ 8esborde del timer 1 ^ 8esborde del timer 9 ^ Interrupci*n del captureAcompare 1 ^ Interrupci*n del captureAcompare 9 ^ transmisi*n o recepci*n de un caracter por la interface serie sincr*nica ^ transmisi*n o recepci*n de un caracter por la interface serie asincr*nica ^ !in de con'ersi*n 5A8 ^ LecturaAescritura del puerto paralelo de comunicaci*n con otros microprocesadores ^ %scritura de %%P:;7 finali+ada (ro&ra"a 3uente: %l programa fuente esta compuesto por una sucesi*n de lneas de programa. Cada lnea de programa esta compuesta por > campos separados por uno o ms espacios o tabulaciones. %stos campos son4 CEtiquetaD Co"ando CO.erando/$0D CECo"entarioD

La etiqueta es opcional. %l comando puede ser un mnem*nico del con&unto de instrucciones. %l operando esta asociado al comando, si no hay comando no hay operando, e inclusi'e algunos comandos no lle'an operando. %l comentario es opcional para el compilador aunque es buena prctica considerarlo obligatorio para el programador. La etiqueta, es el campo que empie+a en la primer posici*n de la lnea. /o se pueden insertar espacios o tabulaciones antes de la etiqueta sino ser considerado comando. Identifica la lnea de programa haciendo que el compilador le asigne un 'alor automticamente. (i se trata de una lnea cuyo comando es una instrucci*n de programa del microcontrolador, se le asigna el 'alor de la direcci*n de memoria correspondiente a dicha instrucci*n 1location counter2. %n otros casos se le asigna un 'alor de una constante, o la direcci*n de una 'ariable, o ser el nombre de una macroinstrucci*n, etc. %l comando puede ser un c*digo mnem*nico de instrucci*n del microcontrolador, o una directi'a o pseudoinstrucci*n para el compilador. %n el primer caso ser directamente traducido a c*digo de maquina, en el segundo caso ser interpretado por el compilador y reali+ara alguna acci*n en tiempo de compilaci*n como ser asignar un 'alor a una etiqueta, etc. %l campo de parmetros puede contener uno o ms parmetros separados por comas. Los parmetros dependen de la instrucci*n o directi'a. Pueden ser n0meros o literales que representen constantes o direcciones. %l campo de comentario debe comen+ar con un caracter punto y coma. %l compilador ignora todo el te"to que contenga la lnea despu)s de un caracter punto y coma
TCNICOS INDUSTRIALES 25 /112

MICROCONTROLADORES PIC

NOTACIONES
.: NOTACION PARA NUMEROS

Deci$al 3 0P&!!P .&!! *e+adeci$al 3 QP'4P !#'4 '4 Octal 3 ;P&44P Binario 3 BP!&&!&&!!P ASCII 3 APCP PCP

.: NOTACION PARA REGISTROS Y LITERALES


, 3 egistro 2% similar al acumulador% es el registro de trabajo. f 3 Campo de 5 bits ,"""""-% contiene la direccin del banco de registros% que ocupa el banco ! del Drea de datos. Direcciona uno de esos re%istros. - 3 epresenta una constante de * bits. d 3 Bit del cdigo ;P de la instruccin. /elecciona el destino donde se guarda el resultado de una operacin. /i dF!% el destino es 2% $ si dF& el destino es ". 3 0etermina la posicin de un bit dentro de un registro de * bits% ,o sea, tomar valores entre 0 y -

.: SIMBOLOS

./ 3 ;pciones. 01 3 Contenido. 23 3 /e asigna a ... 43 3 Campo de bits de un registro. E 3 Pertenece al conjunto ... La el 3 8ombre de la etiqueta. TOS 3 Cima de la pila con * ni1eles en la gama media. PC 3 Contador de programa que direcciona la memoria de instrucciones

.: FLAGS

Los (lags o banderas son marcadores% representados por bits dentro del registro /TAT:/% $ son3

5 3 (lag de cero% se pone a & cuando una operacin lgica o aritmJtica da ! ,cero-como resultado. 7n cualquier otro caso se pone a !. C 3 (lag de Carr$% se pone a & cuando la operacin que le a"ecta sobrepasa el ni1el de representacin del procesador% en nuestro caso es de * BITPs % de esta manera si sumamos a !b&&&&&&&& un !b!!!!!!&& el resultado serMa !b!!!!!!&! $ el BIT de Carr$ pasarMa a &. DC 3 (lag de carr$ del nibble in"erior% este se comporta igual que el BIT de Carr$% solo que el lMmite de representacin son los 4 bits in"eriores% de esta manera si tenemos !b!!!!&&&& $
26 /112

TCNICOS INDUSTRIALES

MICROCONTROLADORES PIC

sumamos !b!!!!!&&&% el resultado serD !b!!!&!&&! $ el BIT de 0C se pone a &% el BIT de Carr$ estarD a ! al no superarse los * bits $ el de R a ! al ser el nGmero di"erente de !. 8o te preocupes si te quedan dudas respecto a los (LA6/% Jstas se aclararDn a medida que 1a$as a1anzando en el tutorial. A=ora si% $a podemos empezar con el set de instrucciones3

CONFUNTO DE INSTRUCCIONES DEL (IC)*F*+,A: El "icrocontrolador (IC)*F*+,A? dispone de un total de <= instrucciones de
una sola palabra que usted podr aprenderse muy fcilmente. /uestro curso 'a orientado a entender y programar el PIC1 ! 9$5 de una manera sencilla y rpida por lo que e"plicaremos a continuaci*n el con&unto de instrucciones, su significado, modo de operaci*n y traducci*n. La$ in$truccione$ tienen algunas letras que 'an relacionadas y que tienen cierta interpretaci*n. Por e&emplo la letra YBY es el registro mas importante que tiene el microcontrolador y es denominado 5CU7UL58;:. %n este registro todas las operaciones pasan a tra')s de el. /o. Instrucci*n 1 588B! f,d 8escripci*n ;bser'aci*n %sta instrucci*n suma el contenido de un registro (umar B _ especfico al contenido del registro de YBY donde f YfY puede ser un registro cualquiera con un determinado 'alor.

(or e%e".lo: (i el contenido de YBY antes de e&ecutar la instrucci*n tena un 'alor de 9D y el registro YfY tiene un 'alor de =, en el momento que se e&ecuta la instrucci*n el resultado obtenido es 9=. A@ora a.rovec@a"o$ en esta primera instrucci*n de e"plicar el significado que tiene la letra YdY en la instrucci*n /ADD6F 3?d0. Una 'e+ finali+ada la instrucci*n, el resultado podr ser almacenado directamente en el acumulador YBY o en el registro YfY para ello se utili+a la letra YdY en el cual podr escribirse YDY o Y1Y[ si la letra dQDel resultado de la operaci*n se ubicar en el registro YBY[ por otro lado si dQ1 el resultado de la operaci*n se ubicar en YfY. Ha&a"o$ un e%e".lo $encillo y supongamos que BQ> y f Q < antes de e&ecutar la instrucci*n4 Si e$cri'i"o$ la in$trucci8n de la siguiente manera4 588B! f,D significa que el contenido del registro YfQ<Y se sumar con el contenido del registro YBQ>Y y el resultado se alo&ar en el acumulador YBY tomando el 'alor de YBQOY[ el registro YfY mantendr su 'alor YfQ<Y. A@ora si la instrucci*n esta escrita as4 588B! f,1 significa que el contenido del registro YfQ<Y se sumar con el contenido del registro YBQ>Y y el resultado se alo&ar en el registro YfY tomando el 'alor de YfQOY[ el acumulador mantendr su 'alor YBQ>Y. E$ta eG.licaci8n de la letra YdY ser 'alida de igual manera para todas las instrucciones que contengan este parmetro.

TCNICOS INDUSTRIALES

27 /112

MICROCONTROLADORES PIC

Otro .unto i".ortante esta referido a la letra YfY la cual puede ser cualquier nombre y no especficamente la letra YfY[ por e&emplo 588B! regist,1 donde regist es un registro de uso general de la memoria :57. /o. Instrucci*n 9 5/8B! f,d 8escripci*n ;bser'aci*n ;peraci*n %sta instrucci*n reali+a una operaci*n l*gica l*gica 5/8 Y5/8Y entre el registroYBY y el registro YfY.

%l microcontrolador PIC1 !$> puede reali+ar una operaci*n 5/8 entre dos registros.

(ara eG.licar "e%or la operaci*n 5/8, supongamos que tenemos un bit 5 y un bit @ que deseamos comparar[ entonces tenemos las siguientes alternati'as combinaciones entre los dos bits4 ENTRADA A 9 D D D 1 1 D 1 1 RESULTADO 5 H A.9 D D D 1

Se .uede o'$ervar clara"ente que solamente para la condici*n de que 5Q1 T @Q1 tendremos 1 en el resultado[ de all el nombre de la operaci*n 5/8 donde dice4 ISi AH) # 9H) entonce$ la $alida $erA )I. %sta e"plicaci*n es 'lida para cada uno de los @its entre dos registros. Ha&a"o$ un e%e".lo sencillo y supongamos que BQ DDDD1111 y f Q 1111DDDD antes de e&ecutar la instrucci*n 5/8B! f,d4 ENTRADA @it O @it @it = @it > @it < @it 9 @it 1 @it D 6 D D D D 1 1 1 1 3 1 1 1 1 D D D D RESULTAD O 6.3 D D D D D D D D

El "icrocontrolador procede a comparar cada uno de los ocho bits que conforman a B y a f. %sta comparaci*n es reali+ada con cada bit perteneciente a su posici*n[ es decir, el bit /o. O deYBY con el @it /o. O de YfY y as sucesi'amente hasta llegar al @it /o D. (e puede obser'ar que en ninguno de los ocho @its de los registros YBY y YfY se obtu'o la condici*n de Y1 T 1Y por lo que todos los bits resultantes fueron cero 1D2. En nue$tro segundo e&emplo tenemos que B Q D111DD11 y f Q DD1D1DD1 antes de e&ecutar la instrucci*n 5/8B! f,d tenemos4 ENTRADA 6 3
TCNICOS INDUSTRIALES

RESULTADO 6.3
28 /112

MICROCONTROLADORES PIC

@it O @it @it = @it > @it < @it 9 @it 1 @it D

D 1 1 1 D D 1 1

D D 1 D 1 D D 1

D D 1 D D D D 1

Al i&ual que el caso anterior, el microcontrolador compara @it a @it el registro YBY y el registro YfY y podemos obser'ar que tan solo el @it /o. = y el @it /o. D cumplen con la condici*n 5/8[ los dems @its dan como resultado cero. /o. Instrucci*n < 5/8LB J 8escripci*n ;bser'aci*n ;peraci*n l*gica 5/8 entre un literal y B

E$ta in$trucci8n? al igual que la instrucci*n e"plicada anteriormente, e&ecuta el mismo procedimiento pero con ciertas diferencias. La instrucci*n 5/8LB J significa que el microcontrolador reali+a una operaci*n l*gica 5/8 entre el registro YBY y el contenido del literal YJY, donde YJY es un literal que puede contener cualquier 'alor entre D y 9== asignado por el programador. Otra di3erencia con respecto a la instrucci*n anterior esta referido al resultado ya que este es colocado directamente en en registro YBY y no e"istir la posibilidad de colocarlo en el registro YJY. /o. Instrucci*n < CL:! f 8escripci*n ;bser'aci*n @orra %sta instrucci*n borra un registro especifico. registro

El "icrocontrolador puede borrar un registro YfY cargndolo con el 'alor YDDY. (upongamos que tenemos un registro denominado regist Q => antes de e&ecutar la instrucci*n. 8espu)s de e&ecutada la instrucci*n el 'alor de regist Q DD. /o. Instrucci*n > CL:B 8escripci*n ;bser'aci*n @orra el %sta instrucci*n borra el registro YBY solamente registro B

Cuando $e e%ecuta esta instrucci*n, el microcontrolador borra el registro YBY cargndolo con YDDY. /o. Instrucci*n = C;7P f,d 8escripci*n ;bser'aci*n Complemen ta el %sta instrucci*n complementa el registro YfY registro f

De$de el .unto de vi$ta de los n0meros binarios, supongamos que tenemos un registro YfY denominado regist Q DD111D11[ cuando es aplicada la instrucci*n tenemos que los D cambian a 'alores 1 y los 'alores 1 cambian a D obteni)ndose un registro in'ertido. %l resultado ser 11DDD1DD.. /o. Instrucci*n 8%C! f,d 8escripci*n 8ecrementa un registro f ;bser'aci*n %sta instrucci*n decrementa en una sola unidad el registro YfY.

E$ta in$trucci8n le decre"enta en una sola unidad el registro YfY. Por e&emplo si nuestro registro denominado regist Q =[ cuando se aplica la instrucci*n 8%C! f,D el
TCNICOS INDUSTRIALES 29 /112

MICROCONTROLADORES PIC

resultado ser BQ>. Por el contrario, si aplicamos la instrucci*n 8%C! f,1 el resultado ser regist Q >.

/o. Instrucci*n

8escripci*n ;bser'aci*n 8ecrementa y %sta instrucci*n decrementa en una sola unidad O 8%C!(Z f,d si es igual a el registro YfY en la cual si el registro YfY es igual cero salta. a cero entonces salta a una instrucci*n

E$ta in$trucci8n esta estrechamente relacionada con las dos siguientes instrucciones dentro del programa. .eamos el siguiente e&emplo4 I/(C:UCCI`/ 1 I/(C:UCCI`/ 9 I/(C:UCCI`/ < 8%C!(Z f,d I: 5 ;C:5 8I:%CCI`/ (U75: 8;( /a7%:;(

La instrucci*n DECFS7 3?d funciona de la siguiente manera4 Primero decrementa en una sola unidad el registro YfY[ de all pueden suceder dos condiciones. (i el resultado es YDY se e&ecuta la instrucci*n numero <[ pero si el resultado es diferente de cero, se e&ecuta la instrucci*n numero 9 /o. Instrucci*n $ I/C! f,d 8escripci*n ;bser'aci*n Incrementa el %sta instrucci*n incrementa en una sola unidad registro YfY en el registro YfY. una unidad

Su#on%a$os que el registro H " F 45 HE cuando se le aplica el comando I8C( "%! se incrementa en una unidad el numero 45 $ el resultado es colocado en H2 F 4' H. /i aplicamos el comando I8C( "%& se incrementa en una unidad el numero 45 $ el resultado es colocado en el registro H" F 4'H
/o. Instrucci*n b I/C!(Z f,d 8escripci*n ;bser'aci*n incrementa y %sta instrucci*n incrementa en una sola unidad si es igual a el registro YfY en la cual si el registro YfY es igual cero salta. a cero entonces salta a una instrucci*n

E$ta in$trucci8n esta estrechamente relacionada con las dos siguientes instrucciones dentro del programa. .eamos el siguiente e&emplo4 I/(C:UCCI`/ 1 I/(C:UCCI`/ 9 I/(C:UCCI`/ < I/C!(Z f,d I: 5 ;C:5 8I:%CCI`/ (U75: 8;( /a7%:;(

La instrucci*n INCFS7 3?d funciona de la siguiente manera4 Primero incrementa en una sola unidad el registro YfY[ de all pueden suceder dos condiciones. (i el resultado es YDY se e&ecuta la instrucci*n n0mero <[ pero si el resultado es diferente de cero, se e&ecuta la instrucci*n n0mero 9 /o. Instrucci*n 1D I;:B! f,d 8escripci*n ;bser'aci*n (e aplica un %sta instrucci*n aplica una operaci*n l*gica ;: Inclusi'o llamada ;: I/CLU(I.; entre dos registros.

El "icrocontrolador (IC)*F,J puede reali+ar una operaci*n ;: I/CLU(I.; entre dos registros.

TCNICOS INDUSTRIALES

30 /112

MICROCONTROLADORES PIC

(ara eG.licar "e%or la operaci*n ;: I/CLU(I.;, supongamos que tenemos un bit 5 y un bit @ que deseamos comparar[ entonces tenemos las siguientes alternati'as combinaciones entre los dos bits4

ENTRADA A 9 D D D 1 1 D 1 1

RESULTADO 5HAK9 D 1 1 1

Se .uede o'$ervar claramente si 5Q1 o @Q1 independientemente, el resultado ser 1[ lo cual quiere decir que solamente cualquiera de los dos registros podr tener 'alor 1 para que su resultado sea 1. Ha&a"o$ un e%e".lo $encillo y supongamos que BQ DDDD1111 y f Q 1111DDDD antes de e&ecutar la instrucci*n I;:B! f,d4 ENTRADA @it O @it @it = @it > @it < @it 9 @it 1 @it D 6 D D D D 1 1 1 1 3 1 1 1 1 D D D D RESULTAD O 6K3 1 1 1 1 1 1 1 1

%l microcontrolador procede a comparar cada uno de los ocho bits que conforman a B y a f. %sta comparaci*n es reali+ada con cada bit perteneciente a su posici*n[ es decir, el bit /o. O deYBY con el @it /o. O de YfY y as sucesi'amente hasta llegar al @it /o D. Podemos obser'ar claramente que el resultado en todos los @its es 1 ya que cualquiera de los dos registros 1 B o f 2 contiene un 1 en nuestro segundo e&emplo tenemos que B Q D111DD11 y f Q DD1D1DD1 antes de e&ecutar la instrucci*n I;:B! f,d tenemos4

ENTRADA 6 3 @it O D D @it 1 D @it = 1 1 @it > 1 D @it < D 1 @it 9 D D @it 1 1 D @it D 1 1

RESULTADO 6.3 D 1 1 1 1 D 1 1

Al i&ual que el ca$o anterior, el microcontrolador compara @it a @it el registro YBY y el registro YfY y podemos obser'ar que tan solo el @it /o. O y el @it /o. 9 no cumplen con la condici*n ;:[ los dems @its dan como resultado 1.
TCNICOS INDUSTRIALES 31 /112

MICROCONTROLADORES PIC

/o. Instrucci*n 9O I;:LB J

8escripci*n ;peracion I;:

;bser'aci*n ;peraci*n l*gica entre el registro YBY y un literal YJY

E$ta in$trucci8n? al igual que la instrucci*n e"plicada anteriormente, e&ecuta el mismo procedimiento pero con ciertas diferencias. La instrucci*n I;:LB J significa que el microcontrolador reali+a una operaci*n l*gica ;: entre el registro YBY y el contenido del literal YJY, donde YJY es un literal que puede contener cualquier 'alor entre D y 9== asignado por el programador. Otra di3erencia con respecto a la instrucci*n anterior esta referido al resultado ya que este es colocado directamente en en registro YBY y no e"istir la posibilidad de colocarlo en el registro YJY. /o. Instrucci*n 11 7;.! f,d 8escripci*n ;bser'aci*n 7ue'e el %sta instrucci*n mue'e el contenido del registro contenido del YfY en el mismo registro YfY o en YBY. registro YfY

E$ta in$trucci8n tiene la finalidad de mo'er el contenido del registro YfY en el mismo registro YfY o hacia el registro YBY. Por e&emplo si aplicamos el comando 7;.! f,D tan solo mue'e el contenido del registro que se encuentra en YfY hacia el acumulador YBY[ por otro lado si aplicamos el comando 7;.! f,1 se mue'e en contenido del registro YfY en el mismo registro YfY. %n este 0ltimo punto, usted podra preguntarse para qu) se necesita mo'er el contenido de un registro y 'ol'erlo a colocar dentro del mismo registroc La respuesta estriba en que cuando se e&ecuta esta instrucci*n cambia una bandera dentro de la arquitectura del microcontrolador. %stas banderas sern e"plicadas posteriormente. /o. Instrucci*n 19 /;P 8escripci*n /o opera ;bser'aci*n %sta instrucci*n no e&ecuta ning0n tipo de acci*n.

La in$trucci8n NO( no e&ecuta ninguna tarea especfica, pero consume > ciclos de relo& completos. Cierta utilidad que le hemos encontrado a esta instrucci*n especficamente esta referida a las rutinas de tiempo. 5lgunas 'eces hemos creado algunas rutinas de tiempo que requieren e"actitud en la tempori+acion y en algunos casos cuando estn siendo e&ecutadas le suele faltar algunos ciclos de relo& adicionales para que sean e"actas[ es all en donde debemos agregar algunas instrucciones /;P. /o. Instrucci*n 1< :L! f,d 8escripci*n ;bser'aci*n :otaci*n a la %sta instrucci*n rota a la i+quierda todos los bits I+quierda de un registro YfY.

E$ta In$trucci8n esta muy relacionada con la bandera denominada Carry perteneciente al registro (C5CU(. La bandera Carry esta afectada directamente por 'arias instrucciones de las cuales podemos mencionar4 :otaci*n a la i+quierda, :otaci*n a la derecha, (uma, :esta, etc. (or e%e".lo, supongamos que nuestro registro Y f Q DDDD1111 Y y que la bandera C5::T tienen un D[ cuando se aplica el comando :L! f,D todos los n0meros del
TCNICOS INDUSTRIALES 32 /112

MICROCONTROLADORES PIC

registro YfY se despla+an hacia la i+quierda. %l 'alor l*gico que se encuentra en la bandera C5::T es colocado en el @it /o. D y el @it /o. O es colocado en la

bandera C5::T. %l resultado de nuestro e&emplo sera4 f Q DDD1111D. y C5::T seria D. %l orden l*gico de los @its lo tenemos definidos as4 @IC /o. O @IC /o. D D D D /o. Instrucci*n 1> ::! f,d @IC /o. = @IC /o. > @IC /o. < @IC /o. 9 @IC /o. 1 @IC /o. D D D 1 1 1 1 5plicamos la Instrucci*n :L! f,d D 1 1 1 1 D 8escripci*n ;bser'aci*n :otaci*n a la %sta instrucci*n rota a la 8erecha todos los bits 8erecha de un registro YfY.

Al i&ual que la instrucci*n anterior, esta muy relacionada con la bandera denominada Carry perteneciente al registro (C5CU(. La bandera Carry esta afectada directamente por 'arias instrucciones de las cuales podemos mencionar4 :otaci*n a la i+quierda, :otaci*n a la derecha, (uma, :esta, etc. Posteriormente e"plicaremos las banderas. (or e%e".lo, supongamos que nuestro registro Y f Q DDDD1111 Y y que la bandera C5::T tienen un D[ cuando se aplica el comando ::! f,D todos los n0meros del registro YfY se despla+an hacia la derecha. %l 'alor l*gico que se encuentra en la bandera C5::T es colocado en el @it /o. O y el @it /o. D es colocado en la bandera C5::T. %l resultado de nuestro e&emplo sera4 f Q DDDDD111. y C5::T seria 1. %l orden l*gico de los @its lo tenemos definidos as4 @IC /o. O @IC /o. D D D D /o. Instrucci*n 1= (U@B! f,d @IC /o. = @IC /o. > @IC /o. < @IC /o. 9 @IC /o. 1 @IC /o. D D D 1 1 1 1 5plicamos la Instrucci*n :L! f,d D D D 1 1 1 8escripci*n ;bser'aci*n :esta el contenido del registro YBY del registro :esta B de f YfY

El "icrocontrolador (IC)*F,J puede restar el contenido del registro YBY del registro YfY[ por e&emplo, supongamos que YB Q > Y y 8ato1 Q [ cuando se aplica el comando (U@B! 8ato1,D se resta G> y el resultado es almacenado en el acumulador YBY. Por otro lado si se aplica el comando (U@B! 8ato1,1 se resta G > y el resultado es colocado en el registro 8ato1. /o. Instrucci*n << (U@LB J 8escripci*n ;bser'aci*n :esta el contenido del registro YBY de un literal :esta B de J YJY

5l igual que la instrucci*n anterior, este resta el contenido del registro YBY de un literal YJY donde YJY es una palabra cualquiera con un 'alor entre D y 9==. %l resultado de la operaci*n es colocado directamente en el registro YBY. /o. Instrucci*n 1 (B5P! f,d 8escripci*n Intercambio de @its ;bser'aci*n (e intercambian los > bits mas altos con los > bits mas ba&os

E$te co"ando tan solo intercambia los cuatro bits mas altos con los cuatro bits mas ba&os. (upongamos por e&emplo que tenemos el siguiente n0mero binario almacenado en Yf Q DDDD1111Y[ cuando es aplicado el comando (B5P! f,D el microcontrolador intercambia los bits altos por los bits ba&os de la siguiente forma4
TCNICOS INDUSTRIALES 33 /112

MICROCONTROLADORES PIC

1111DDDD[ el resultado es colocado en el acumulador YBY. Por otro lado cuando es aplicado el comando (B5P! f,1 el microcontrolador intercambia los bits altos por los bits ba&os de la siguiente forma4 1111DDDD[ el resultado es colocado en el acumulador YfY. /o. Instrucci*n 1O ,;:B! f,d 8escripci*n ;peraci*n l*gica ;: e"clusi'o ;bser'aci*n %ste comando aplica la operaci*n l*gica de ;: %"clusi'o a dos registros.

El "icrocontrolador (IC)*F,J puede reali+ar una operaci*n ;: %,CLU(I.; entre dos registros. (ara eG.licar "e%or la operaci*n ;: %,CLU(I.;, supongamos que tenemos un bit 5 y un bit @ que deseamos comparar[ entonces tenemos las siguientes alternati'as combinaciones entre los dos bits4 ENTRADA A 9 D D D 1 1 D 1 1 RESULTADO 5 H A Gor 9 D 1 1 D

Se .uede o'$ervar clara"ente si ambos registros son iguales el resultado ser D[ pero si ambos registros son diferentes entonces el resultado ser 1. Ha&a"o$ un e%e".lo $encillo y supongamos que BQ DDDD1111 y f Q 1111DDDD antes de e&ecutar la instrucci*n ,;:B! f,d4 ENTRADA @it O @it @it = @it > @it < @it 9 @it 1 @it D 6 D D D D 1 1 1 1 3 1 1 1 1 D D D D RESULTAD O 6K3 1 1 1 1 1 1 1 1

El "icrocontrolador procede a comparar cada uno de los ocho bits que conforman a B y a f. %sta comparaci*n es reali+ada con cada bit perteneciente a su posici*n[ es decir, el bit /o. O deYBY con el @it /o. O de YfY y as sucesi'amente hasta llegar al @it /o D. Podemos obser'ar claramente que el resultado en todos los @its es 1 ya que cualquiera de los dos registros 1 B y f 2 contienen @its diferentes.

En nue$tro $e&undo e%e".lo tenemos que B Q D111DD11 y f Q DD1D1DD1 antes de e&ecutar la instrucci*n ,;:B! f,d tenemos4

TCNICOS INDUSTRIALES

34 /112

MICROCONTROLADORES PIC

ENTRADA 6 3 @it O D D @it 1 D @it = 1 1 @it > 1 D @it < D 1 @it 9 D D @it 1 1 D @it D 1 1

RESULTADO 6.3 D 1 1 1 1 D 1 D

Al i&ual que el caso anterior, el microcontrolador compara @it a @it el registro YBY y el registro YfY y podemos obser'ar que tan solo el @it /o. O, el @it /o. 9 y el @it D cumplen con la condici*n ;: %,CLU(I.;[ los dems @its dan como resultado 1. /o. Instrucci*n <> ,;:LB J 8escripci*n ;bser'aci*n ;peraci*n l*gica ,;: entre el registro B y el literal YJY

E$ta in$trucci8n al igual que la instrucci*n e"plicada anteriormente e&ecuta el mismo procedimiento pero con ciertas diferencias. La instrucci*n ,;:LB J significa que el microcontrolador reali+a una operaci*n l*gica ;: %,CLU(I.; entre el registro YBY y el contenido del literal YJY, donde YJY es un literal que puede contener cualquier 'alor entre D y 9== asignado por el programador. Otra di3erencia con respecto a la instrucci*n anterior esta referido al resultado ya que este es colocado directamente en en registro YBY y no e"istir la posibilidad de colocarlo en el registro YJY. /o. Instrucci*n 1$ @C! f,b 8escripci*n Coloca en Cero un determinado @it ;bser'aci*n %ste comando pone en Cero el @it YbY del registro YfY

(ara e$te ti.o de in$truccione$ pensamos que el me&or e&emplo que podemos se3alar esta basado 'isualmente en un n0mero binario. Cuando se aplica el comando @C! f,b el microcontrolador pone en cero el @it YbY del registro YfY. Para entenderlo me&or obser'emos el siguiente e&emplo4 Su.on&a"o$ que tenemos un registro de ocho bits llamado 7emory Q D1D1D1D1. (i se aplica el comando @C! 7emory,9 quiere decir que al registro 7emory en la posici*n del @it /o. 9 se le cargara un 'alor cero. E%e".lo ) @IC /o. O @IC /o. D 1 D 1 @IC /o. = @IC /o. > @IC /o. < @IC /o. 9 @IC /o. 1 @IC /o. D D 1 D 1 D 1 5plicamos la Instrucci*n @C! 7emory,9 D 1 D D D 1

TCNICOS INDUSTRIALES

35 /112

MICROCONTROLADORES PIC

E%e".lo + @IC /o. O @IC /o. 1 1 1 1 /o. Instrucci*n 1b @(! f,b @IC /o. = @IC /o. > @IC /o. < @IC /o. 9 @IC /o. 1 @IC /o. D 1 1 1 1 1 1 5plicamos la Instrucci*n @C! 7emory,9 1 1 1 D 1 1 8escripci*n ;bser'aci*n Coloca en uno %ste comando Pone en 1 el @it YbY del registro determinado YfY @it

Al i&ual que la in$trucci8n anterior pensamos que el me&or e&emplo que podemos se3alar esta basado 'isualmente en un n0mero binario. Cuando se aplica el comando @(! f,b el microcontrolador pone en 1 el @it YbY del registro YfY. Para entenderlo me&or obser'emos el siguiente e&emplo4 Su.on&a"o$ que tenemos un registro de ocho bits llamado 7emory Q D1D1D1D1. (i se aplica el comando @(! 7emory,< quiere decir que al registro 7emory en la posici*n del @it /o. <se le cargara un 'alor 1. E%e".lo ) @IC /o. O @IC /o. D 1 D 1 @IC /o. = @IC /o. > @IC /o. < @IC /o. 9 @IC /o. 1 @IC /o. D D 1 D 1 D 1 5plicamos la Instrucci*n @C! 7emory,< D 1 1 1 D 1 E%e".lo + @IC /o. O @IC /o. D D D D @IC /o. = @IC /o. > @IC /o. < @IC /o. 9 @IC /o. 1 @IC /o. D D D D D D D 5plicamos la Instrucci*n @C! 7emory,< D D 1 D D D

/o. Instrucci*n 9D @C!(C f,b

8escripci*n ;bser'aci*n Prueba el @it %ste comando prueba el @it YbY del registro YfY y b del registro f salta una linea si esta en D.

%sta instrucci*n esta estrechamente relacionada con las dos siguientes instrucciones dentro del programa. .eamos el siguiente e&emplo4 I/(C:UCCI`/ 1 I/(C:UCCI`/ 9 I/(C:UCCI`/ < @C!(C f,b I: 5 ;C:5 8IC:%CCI;/ (U75: 8;( /U7%:;(

Su.on&a"o$ que tenemos nuestro registro denominado 7emory Q D1D1D1D1[ cuando se le aplica el comando @C!(C 7emory,9 el microcontrolador prueba el @it /o. 9 del registro 7emory para 'er si es igual a cero. %n esta comprobaci*n pueden suceder dos cosas4 (i el @it /o. 9 es igual a D el microcontrolador e&ecuta la instrucci*n n0mero <[ pero en el caso de que el @it /o. 9 sea diferente de D, el microcontrolador e&ecuta la instrucci*n 9.

/o. Instrucci*n 91 @C!(( f,b


TCNICOS INDUSTRIALES

8escripci*n ;bser'aci*n Prueba el @it %ste comando prueba el @it YbY del registro YfY y b del registro f salta una linea si esta en 1.
36 /112

MICROCONTROLADORES PIC

E$ta in$trucci8n esta estrechamente relacionada con las dos siguientes instrucciones dentro del programa. .eamos el siguiente e&emplo4 I/(C:UCCI`/ 1 I/(C:UCCI`/ 9 I/(C:UCCI`/ < @C!(( f,b I: 5 ;C:5 8IC:%CCI;/ (U75: 8;( /U7%:;(

Su.on&a"o$ que tenemos nuestro registro denominado 7emory Q D1D1D1D1[ cuando se le aplica el comando @C!(( 7emory,9 el microcontrolador prueba el @it /o. 9 del registro 7emory para 'er si es igual a 1. %n esta comprobaci*n pueden suceder dos cosas4 (i el @it /o. 9 es igual a 1 el microcontrolador e&ecuta la Instrucci*n numero <[ pero en el caso de que el @it /o. 9 sea diferente de 1, el microcontrolador e&ecuta la Instrucci*n 9 /o. Instrucci*n 99 588LB J 8escripci*n ;bser'aci*n (uma de dos %ste comando suma un 'alor de un literal al n0meros contenido del registro YBY

E$te co"ando es muy sencillo ya que tan solo cuando es aplicado, toma el contenido del registro y se lo suma al registro YBY[ por e&emplo4 (upongamos que B Q 9< y que tenemos un literal J Q 9<[ cuando se aplica el comando, el resultado es la suma del literal mas el contenido del registro YBY, el resultado final queda almacenado en el registro YBY. /o. Instrucci*n 9> C5LL J 8escripci*n ;bser'aci*n Llamada de una (ubrrutina con el nombre J

(ara entender e$ta in$trucci8n, primera debemos aclarar que es una (ubrutina. La subrutina consiste en un grupo de instrucciones que se encuentran aisladas del programa principal y que se e&ecutan cuando son llamadas por un nombre asignado por el programador. Las subrrutinas suelen ser peque3os programas, por e&emplo para obtener retardos de tiempo 1 (ubrrutina de tiempo 2[ pero principalmente podemos decir tambi)n que una (ubrrutina es un peque3o programa que se utili+a muchas 'eces en cualquier parte del programa. Las 'enta&as que ofrecen las subrrutinas estan referida al ahorro considerable de la memoria de programa y su fcil mantenimiento. 5 la subrrutina se le podr asignar cualquier nombre, y este es el nombre utili+ado en la Instrucci*n C5LL como parmetro. La in$trucci8n C5LL J esta estrechamente relacionada con la instrucci*n denominada :%CU:/ y :%CLB 1 .er las siguientes dos Instrucciones 2. /o. Instrucci*n <1 :%CU:/ 8escripci*n ;bser'aci*n :etorno desde una subrrutina

La Instrucci*n :%CU:/ es un comando que no podr estar separado cuando se crea una subrrutina. El .rocedi"iento e$ prcticamente mecnico ya que usted deber crear la subrrutina y darle el nombre para poder ser llamada[ al final de la subrrutina se debe escribir la instrucci*n denominada :%CU:/. %ntonces podemos concluir que una subrrutina esta constituida por un con&unto de instrucciones demarcadas por un nombre que se encuentra al inicio y la instrucci*n :%CU:/ que se encuentra al

final demarcando el final de la subrrutina. Por e&emplo4 supongamos que nuestra (ubrrutina se llama :UCI/5, entonces tenemos4 :UCI/5 I/(C:UCCI`/ 1 I/(C:UCCI`/ 9 I/(C:UCCI`/ <
37 /112

TCNICOS INDUSTRIALES

MICROCONTROLADORES PIC

I/(C:UCCI`/ > :%CU:/ E$.ec13ica"ente el comando :%CU:/ le dice al microcontrolador que debe continuar e&ecutando las instrucciones en el lugar desde donde la subrrutina fue llamada. %sta es la estructura bsica que conforma a una subrrutina. /o. Instrucci*n <D :%CLB J 8escripci*n ;bser'aci*n :etorno de subrrutina y carga a YBY con el contenido del literal YJY

El co"ando :%CLB J se comporta igual al comando :%CU:/ con la diferencia de que esta carga un .alor YJY en el registro YBY cuando finali+a la subrrutina. %l rango de este 'alor YJY esta comprendido entre D y 9==. /o. Instrucci*n 9= CL:B8C 8escripci*n ;bser'aci*n @orra el contenido del registro llamado Batchdog Cimer.

E$ta in$trucci8n borra el contador del B5CC68;S CI7%: 1perro guardin2, en realidad es un contador interno que 'a desde D hasta 9== y que podr ser acti'ado o desacti'ado en la configuraci*n del sistema cuando el microcontrolador 'a a ser grabado. %l tiempo de conteo para este contador tambi)n podr ser prolongado por un preescalador seg0n las necesidades del usuario. La in$trucci8n CL:B8C borra el contenido del contador del perro guardin. (i usted acti'a el Batchdog Cimer, usted deber asegurarse de e&ecutar el comando CL:B8C antes de que el contador finalice el conteo para que el microcontrolador no se reinicialice automticamente. EGi$ten ca$o$ en donde los microcontroladores se confunden y queda bloqueado de&ando automticamente de hacer la tarea encomendada. Cuando sucede esto no e"istir el comando CL:B8C y en consecuencia se reiniciali+ara el microcntrolador. E$ta in$trucci8n e$ "u# venta%o$a cuando se tienen instalados los sistemas en lugares muy remotos y no puede en'iarse a una persona para reiniciali+ar el microcontrolador. /o. Instrucci*n 9 S;C; J 8escripci*n ;bser'aci*n %l contador de programa salta a una direcci*n con el nombre YJY

E$ta e$ una de la$ in$trucci8n mas fcil de entender y consiste tan solo en un salto a otra parte del programa. Cuando se e&ecuta el comando S;C; J, el microcontrolador salta a la direcci*n YJY, donde YJY es una etiqueta cualquiera[ por e&emplo4

(5LC;

I/(C:UCCI`/ 1 S;C; (5LC; I/(C:UCCI`/ < I/(C:UCCI`/ > I/(C:UCCI;/ =

en en e&emplo anterior tenemos que primero se e&ecuta la instrucci*n 1, seguidamente la instrucci*n de S;C; (5LC; la cual le dice al microcontrolador que debe continuar en la instrucci*n =.
TCNICOS INDUSTRIALES 38 /112

MICROCONTROLADORES PIC

/o. Instrucci*n 9$ 7;.LB J

8escripci*n

;bser'aci*n (e carga el registro YBY con el contenido del literal YJY

%sta instrucci*n le ser'ir para tomar el contenido de un literal y cargarlo en el registro YBY[ donde YJY en una palabra cualquiera que tiene asignado un 'alor entre D y 9==. /o. Instrucci*n 9b :%C!I% 8escripci*n ;bser'aci*n :etorno de llamado a interrupci*n

E$ta In$trucci8n es parecida a la Instrucci*n :%CU:/, pero a diferencia de esta, :%C!I% es utili+ada para 'ol'er de una subrrutina de interrupci*n. /o. Instrucci*n <9 (L%%P 8escripci*n ;bser'aci*n %ntra en modo de reposo.

E$ta In$trucci8n le da la orden al microcontrolador de quedar en modo suspendido, en este modo el PIC no e&ecuta ninguna instrucci*n hasta que sea nue'amente reiniciali+ado 1:%(%C2 comen+ando nue'amente el programa. %n este modo el consumo de energa del PIC es mnimo. 8urante este modo el contador del B5CC68;S CI7%: sigue traba&ando y si este esta acti'ado el PIC se reseteara por este medio.

LAS 9ANDERAS E$ta$ 'andera$ se utili+an para dar informaci*n adicional cuando se reali+an operaciones l*gicas y aritm)ticas dentro del microcontrolador. Usted podr tomar decisiones seg0n el 'alor de cada una de las banderas. %"isten diferentes tipos de banderas en un microcontrolador[ entre ellas tenemos4 LAS 9ANDERAS EN LA SU-A4 Lo$ re&i$tro$ 'A$ico$ del microcontrolador PIC1 ! 9$5 tienen una longitud de $ bits e"presados en forma binaria, lo cual quiere decir que el n0mero m"imo e"presado en forma decimal ser el 9==. %n la suma e"isten tres tipos de banderas que pueden proporcionarnos mayor informaci*n del resultado. %stas banderas son denominadas C5::T 1C2, 5carreo de 8gito 18C2 y el %stado Cero 1Z2. Codas estas banderas son acti'adas seg0n sea el caso4 (or e%e".lo, en la suma, la bandera C5::T se coloca en Y1Y cuando el resultado supera el n0mero 9== y permanecer en YDY indicando que no se present* ning0n sobreflu&o[ es decir que el resultado de la suma fue menor. Por otro lado, e"iste otra bandera denominada 5carreo de 8gito Y8CY que e"presa lo que sucede con los > @its menos significati'os[ es decir, si los cuatro @its menos significati'os sobrepasa al numero 1= e"presado en forma decimal, entonces la bandera 8C Q 1, en el caso contrario ser YDY. Final"ente la 'andera de estado YZY se acti'a cuando la operaci*n aritm)tica da como resultado un Y1Y[ de lo contrario se coloca en YDY. LAS 9ANDERAS EN LA RESTA: En la re$ta de dos n0meros la bandera C5::T YCY se coloca en Y1Y cuando el resultado de la operaci*n sea un n0mero positi'o, o se pone en cero para el caso contrario. %sto tan sencillamente quiere decir por e&emplo que si tenemos 5Q9D y @Q1D donde ,Q5G@[ el resultado ser ,Q1D 1 /0mero Positi'o 2[ para el caso
TCNICOS INDUSTRIALES 39 /112

MICROCONTROLADORES PIC

contrario si tenemos 5Q1D y @Q9D donde ,Q5G@ entonces ,QG1D. obteni)ndose un resultado negati'o. La 'andera de acarreo de d1&ito Y8CY se colocar en Y1Y cuando los cuatro @its menos significati'os del registro YBY sea menor que los cuatros bits menos significati'os del registro que se desea restar, en caso contrario se colocar un cero. La bandera de estado YZY solamente se acti'ar cuando ambas cantidades sean iguales. LAS 9ANDERAS EN LA ROTACION El "icrocontrolador (IC)*F,J tiene disponibles dos instrucciones de rotaci*n las cuales rotan los dgitos de un registro a la derecha o a la i+quierda, segun se use. (or e%e".lo, para la rotaci*n a la i+quierda supongamos que nuestro registro Y f Q DDDD1111 Y y que la bandera C5::T tiene un D[ cuando se aplica el comando :L! f,D todos los n0meros del registro YfY se despla+an hacia la i+quierda. %l 'alor l*gico que se encuentra en la bandera C5::T es colocado en el @it /o. D y el @it /o. O es colocado en la bandera C5::T. %l resultado de nuestro e&emplo seria4 f Q DDD1111D. y C5::T seria D. %l orden l*gico de los @its lo tenemos definidos as4

@IC /o. O @IC /o. D D D D

@IC /o. = @IC /o. > @IC /o. < @IC /o. 9 @IC /o. 1 @IC /o. D D D 1 1 1 1 5plicamos la Instrucci*n :L! f,d D 1 1 1 1 D

A@ora para la notaci*n a la derecha, supongamos que nuestro registro Y f Q DDDD1111 Y y que la bandera C5::T tiene un D[ cuando se aplica el comando ::! f,D todos los n0meros del registro YfY se despla+an hacia la derecha. %l 'alor l*gico que se encuentra en la bandera C5::T es colocado en el @it /o. O y el @it /o. D es colocado en la bandera C5::T. %l resultado de nuestro e&emplo seria4 f Q DDDDD111. y C5::T seria 1. %l orden l*gico de los @its lo tenemos definidos as4 @IC /o. O @IC /o. D D D D @IC /o. = @IC /o. > @IC /o. < @IC /o. 9 @IC /o. 1 @IC /o. D D D 1 1 1 1 5plicamos la Instrucci*n :L! f,d D D D 1 1 1

Re$u"en de in$truccione$ /cla$i3icaci8n $e&Ln el 3a'ricante en tre$ &ru.o$0:


7n este resumen las instrucciones estDn clasi"icadas segGn su operacin sea orientada a registros% a bits% o a literales $ de control3 Para que no te con"undas...SSS. 7n esta primera tabla aparecen 67 f $ d. ecuerda que...

6 3 es el registro de trabajo $ almacena datos de "orma momentDnea f 3 es la direccin de un registro% si es llamada apunta al contenido de ese registro d 3 es el destino donde se guarda el resultado de una operacin% si es 8 se guarda en el registro "% $ si es 9 en 2

TCNICOS INDUSTRIALES

40 /112

MICROCONTROLADORES PIC

OPERACIONES ORIENTADAS A REGISTROS Ne$ot:cnicos A002( A802( CL ( CL 2 C;M( 07C( 07C(/R I8C( I8C(/R I; 2( M;T( M;T2( 8;P L( O#eraci;n Estados afectados C%0C%R R R R R R R R R C C C%0C%R R

"%d /umar 2 $ " "%d A80 entre 2 $ " " Limpiar " Limpiar 2 "%d Complementar " "%d 0ecrementar " "%d 0ecrementar "% saltar si cero "%d Incrementar " "%d Incrementar "% saltar si cero "%d ; entre 2 $ " "%d Mo1er " " Mo1er 2 a ( 8o ;peracin "%d otar a la izquierda a tra1Js del carr$ ( "%d otar a la derec=a a tra1Js del carr$ /:B2( "%d estar 2 de " /2AP( "%d Intercambiar nibbles de " U; 2( "%d ; e#clusi1a entre 2 $ "

7n este otro cuadro% a demDs de f aparece . que 1endrMa a ser uno de los * bits del registro f

OPERACIONES ORIENTADAS A BITS Ne$ot:cnicos BC( B/( BT(/C BT(//


TCNICOS INDUSTRIALES

O#eraci;n Limpiar bit b de " Acti1ar bit b de " Probar bit b de "% saltar si cero Probar bit b de "%

Estados afectados

"%b "%b "%b "%b

41 /112

MICROCONTROLADORES PIC

saltar si uno Por Gltimo% aparece - que 1iene a ser una constante de * bit% es decir que K puede tomar 1alores entre ! $ )55% Jstos inclusi1e% segGn la instruccin a utilizar OPERACIONES ORIENTADAS A LITERALES < DE CONTROL Ne$ot:cnicos A00L2 A80L2 CALL CL 20T 6;T; I; L2 M;TL2 7T(I7 7TL2 7T: 8 /L77P /:BL2 U; L2 O#eraci;n Estados afectados C%0C%R R -T;%-T0 R

K /umar literal K a 2 K A80 entre K $ 2 K Llamar subrutina Limpiar 20T A /alta a direccin K A ; entre K $ 2 A Cargar 2 con literal K etornar de interrupcin A etornar $ cargar 2 con K etornar de subrutina Ir al modo de bajo consumo A estarle K a 2 A ; e#clusi1a entre K $ 2

-T;%-T0 C%0C%R R

Bueno% eso es todo% $ creo que mDs que su"iciente.

Su'rutina$ # lla"ado$
I-(ORTANCIA DE LAS RUTINAS /M0 La mayora de los microcontroladores incluyen en su repertorio de instrucciones algunas que permiten saltar a una rutina y, cuando se complementa su e&ecuci*n, retornar al programa principal %l empleo de subrutinas aporta muchas 'enta&as entre las que se destacan las siguientes4 1. (e pueden escribir como subrutinas secciones de c*digo y ser empleadas en muchos programas 1 por e&emplo, la subrutina de e"ploraci*n de un teclado 2.
TCNICOS INDUSTRIALES 42 /112

MICROCONTROLADORES PIC

9. 8an a los programas un carcter modular, es decir, se pueden codificar diferentes m*dulos para usarlos en cualquier programa. <. (e reduce notablemente el tiempo de programaci*n, la detecci*n de errores, usando repetidamente una subrutina. >. %l c*digo es ms fcil de interpretar, dado que las instrucciones de las subrutinas no aparecen en el programa principal. (olo figuran las llamadas C5LLs. LAS INSTRUCCIONES CALL 5 RETURN /M0 La instrucci*n C5LL 1 llamada la subrutina2 consigue que la e&ecuci*n del programa contin0e en la direcci*n donde se encuentra la subrutina a la que hace referencia. %s similar a S;C; pero coloca en la pila la direcci*n de la siguiente instrucci*n que se debe e&ecutar despu)s de la C5LL. La subrutina finali+a con la instrucci*n :%CU:/ 1:etorno de la subrutina2 que retoma la direcci*n guardada en le pila y la coloca en el contador del programa PC continuando el flu&o de control con la instrucci*n que sigue a la C5LL. %n la familia PIC de gama media la pila tiene ocho ni'eles de memoria del tipo !I!; 1primero en entrar, 0ltimo en salir2. (i se produce la llamada a una subrutina durante la e&ecuci*n de otra subrutina, la direcci*n de retorno de esta segunda es colocada en la cima de la pila sobre la direcci*n anterior. %sta segunda direcci*n es la primera en salir de la pila mediante la instrucci*n :%CU:/. Con la pila de ocho ni'eles, una subrutina puede llamar a otra y )sta, a su 'e+, llamar a otra hasta un m"imo de ocho. La gama ba&a s*lo puede reali+ar dos llamadas de este tipo al poseer una pila de s*lo dos ni'eles. Las subrutinas deben colocarse al comien+o de las pginas debido a que el bit $ del contador del programa es puesto a D por la instrucci*n C5LL 1o por cualquier instrucci*n que modifica el PC2. Las subrutinas deben colocarse en la mitad inicial de las pginas 1las 9= palabras2. * Tomado d ! M"#$o#o%&$o'ado$ ( PIC) 'a (o'*#"+% % *% #,"-) A%.*'o / o&$o() S ##"+% 5.1

Con3i&uraci8n de lo$ .uerto$ del (IC


Lleg* el momento de 'er como configurar los puertos del PIC. Para poder hacerlo es necesario conocer la tabla de registros de la memoria de datos, la cual como di&imos, est di'idida en el 9ANCO N y 9ANCO ). Los registros importantes en la configuraci*n de los puertos son4 STATUS direcci*n NGO (ORTA direcci*n NGP (ORT9 direcci*n NG* TRISA direcci*n NGP TRIS9 direcci*n NG*
TCNICOS INDUSTRIALES 43 /112

MICROCONTROLADORES PIC

Por defecto el PIC tendr todos los IA; portds 1es decir los puertos :5 y :@2, colocados como entrada de datos, y si queremos cambiarlos habr que configurarlos. 5l configurar los puertos debers tener en cuenta que4 (i asignas un CERO /N0 a un pin, )ste quedar como $alida y... (i le asignas un UNO /)0, quedar como entrada %sta asignaci*n se hace en4 TRISA para los pines del (UERTO A 1= bits2 TRIS9 para los pines del (UERTO 9 1$ bits2 .: (or E%e".lo: (i TRISA es igual a 1111D todos sus pines sern entradas sal'o :5D que esta como salida (i TRIS9 es igual a DDDDDDD1 todos sus pines sern salidas sal'o :@D que esta como entrada Cuando el PIC arranca se encuentra en el @5/C; D, como C:I(5 y C:I(@ estn en el 9ANCO ) no queda otra, deberemos cambiar de banco. %sto se logra a tra')s del :egistro STATUS STATUS es un :egistro de $ bits u $ casillas, en el cual la /e = 1R(N2 define la posici*n del banco en donde nos encontramos (i pones un CERO /N0 a :PD estaremos en el 9ANCO N (i le pones un UNO /)0 ya 'es, estaremos en el 9ANCO ) REGISTRO STATUS = > < 9 R(N TO (D 7

O IR(

R()

1 DC

D C

Listo, ahora ya sabemos como configurar los puertos, pero lo aclararemos con un e&emplo completo. .amos a escribir un c*digo que configure todos los pines del puerto 5 como entrada y todos los del puerto @ como salida. [GGGGGGGGGGGGGGG%ncabe+adoGGGGGGGGGGGGG list radi" pQ1 f$> he" [ usaremos el PIC 1 f$> [ y la numeraci*n he"adecimal

[GGGGGGGGGGGGmapa de memoriaGGGGGGGGG estado trisa trisb equ equ equ D"D< D"D= D"D [ 5qu le asignamos nombres a los [ registros indicando la posici*n [ en la que se encuentran

[GGGGGGGConfiguraci*n de puertosGGGGGGG

TCNICOS INDUSTRIALES

44 /112

MICROCONTROLADORES PIC

reset

org goto org bsf mo'lL mo'Lf mo'lL mo'Lf bcf

D"DD inicio D"D= estado,=

inicio banco1

[ origen del programa, aqu comen+ar) [ siempre que ocurra un reset [ salto a YinicioY [ origen del c*digo de programa [ pongo rpD a 1 y paso al

bd11111d [ cargo B con 11111 trisa [ y paso el 'alor a trisa bdDDDDDDDDd [ cargo B con DDDDDDDD trisb [ y paso el 'alor a trisb estado,= [ pongo rpD a D y regreso al

bancoD [GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG end [ se acab* [GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

.: De$cri.ci8n del c8di&o: Codo lo que escribas luego de un YEY 1-*%&o / #oma2 ser ignorado por el ensamblador, estos son los famosos comentarios, y sir'e para saber que hace cada lnea de c*digo. 8icho esto no queda ms que describir el c*digo, as que 'amos por partes.

[GGGGGGGGGGGGGGG%ncabe+adoGGGGGGGGGGGGG list radi" pQ1 f$> he" [ usaremos el PIC 1 f$> [ y la numeraci*n he"adecimal

5qu le indicas al ensamblador para que microcontrolador estas codificando 1PIC1 !$>2. y cual ser el sistema de numeraci*n que utili+ars 1he"adecimal2.

/ota que hay tres columnas, en este caso la primera est 'aca. :espeta las tabulaciones para no confundir al ensamblador. [GGGGGGGGGGGGmapa de memoriaGGGGGGGGG estado trisa trisb equ equ equ D"D< D"D= D"D [ 5qu le asignamos nombres a los [ registros indicando la posici*n [ en la que se encuentran

:ecuerdas lo de la memoria de datos...c @ien, al registro (C5CU(, que est en la posici*n D"D< de la memoria de datos le puse la etiqueta Ie$tadoI. equ es algo as comoooo...i&ual . 1%s decir, le estoy asignando el nombre estado al registro que est en la posici*n D"D< de la memoria de datos2.
TCNICOS INDUSTRIALES 45 /112

MICROCONTROLADORES PIC

Luego hice lo mismo con trisa y trisb. 5hora sigamos... [GGGGGGGConfiguraci*n de puertosGGGGGGG reset org goto org bsf mo'lL mo'Lf mo'lL mo'Lf bcf bancoD La directi'a or& indica el sitio de la memoria en donde se escribe una parte del programa. %n este caso el contador de programa apuntar a la direcci*n D"DD 1$ ( &2 entonces e&ecutar la instrucci*n que sigue a continuaci*n, 1saltar a la etiqueta inicio2 y nuestro c*digo de programa comien+a en la direcci*n de memoria D"D= 1aqu salto por encima de la interrupci*n D"D>2 9SF 1SET 0ILE RE1ISTER2, es la instrucci*n que pone un uno en el bit del registro especificado, en este caso pone a uno el bit = del registro (C5CU( 1 ' $-02, para pasar al banco 1. "ovl! es algo as como... mue'e el siguiente literal al :egistro B. 6 es el :egistro de Craba&o, y lo usamos para almacenar momentneamente los datos que queremos mo'er. una 'e+ hecho esto pasamos el dato a trisa, o a trisb, seg0n el caso. "ov!3 es algo as como... mue'e el contenido del registro B al registro f, en este caso f sera trisa o trisb. 9CF 12IT CLEAR 0ILE RE1ISTER2, )sta instrucci*n limpia el bit del registro especificado, o lo pone a cero, en este caso pone a cero el bit = del registro (C5CU( para regresar al banco D. [GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG end [ se acab* D"DD inicio D"D= estado,= [ origen del programa, aqu comen+ar) [ siempre que ocurra un reset [ salto a YinicioY [ origen del c*digo de programa [ pongo rpD a 1 y paso al

inicio banco1

bd11111d [ cargo B con 11111 trisa [ y paso el 'alor a trisa bdDDDDDDDDd [ cargo B con DDDDDDDD trisb [ y paso el 'alor a trisb estado,= [ pongo rpD a D y regreso al

TCNICOS INDUSTRIALES

46 /112

MICROCONTROLADORES PIC

MA8:AL 07 MIC ;C;8T ;LA0; 7/ PIC P VCTICA 07 LAB; AT; I;

P:5CCIC5 8% L5@;:5C;:I; /e 1
%/C%/8I8; 8% U/ L%8
[fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff [ !ebrero D1, 9D19 [ nombre4 led9.asm2 [ Programa producido por4 (%/5CI Z;/5L L5 LI@%:C58 [ Circuito de encendido de un led en :@D, del puerto @ [ 7icrocontrolador 4 PIC1 ! 9$5 [ fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

LIST

P=P16F628A INCLUDE

"P16F628A.INC"
47 /112

TCNICOS INDUSTRIALES

MICROCONTROLADORES PIC

CBLOCK ENDC ORG

0X20

0X00

; Orig ! " # $r%gr&'&( &)*+ ,%' !-&r. ; /i '$r )* %,*rr& *! r / 0

g%0% INICIO ORG 0X01 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; CONFIGURACION DE PUERTO A CO2O DIGITALES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO 2O3L4 0506 2O34F C2CON ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;CONFIGURACION DE PUERTOS( CO2O I7O ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BSF STATUS(8 ; PASAR DEL BANCO 0 AL BANCO 1 BCF STATUS(6 2O3L4 B9111111119 ; CONFIGURA PUERTO A CO2O ENTRADAS 2O34F TRISA CLRF TRISB BCF STATUS(8 ; PASAR DEL BANCO 1 AL BANCO 0 BCF STATUS(6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CLRF PORTB ; LI2PIA PUERTO B ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; INICIO DEL PROGRA2A ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO1 BSF PORTB(0 ; PRENDE RB0 GOTO INICIO1 ; IR A INICIO1 END ; FIN DEL PROGRA2

8I5S:575 P5:5 L5 C;/%,I`/ 8% U/ PIC 1 ! 9$5

TCNICOS INDUSTRIALES

48 /112

MICROCONTROLADORES PIC

P:5CCIC5 8% L5@;:5C;:I; /e 9

TCNICOS INDUSTRIALES

49 /112

MICROCONTROLADORES PIC

L%%: %L %(C58; 8% I/C%::UPC;:%(APUL(58;:%( 8%L %/C:%/58;: C;/%CC58;( 5 :5=G:5D T :%!L%-5: %L /I.%L L`SIC; 8% L;( 7I(7;( (;@:% L;( L%8( C;/%CC58;( 5 :@=G:@D
[fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff [ !ebrero D1, 9D19 [ nombre4 led9.asm2 [ Programa producido por4 (%/5CI Z;/5L L5 LI@%:C58 [ Circuito puerto @, refle&o de puerto 5 [ 7icrocontrolador 4 PIC1 ! 9$5 [GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

List pQ1 ! 9$5 [Cipo de procesador includeYP1 ! 9$5.I/CY [8efiniciones de registros internos [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ org D"DD goto Inicio [.ector de reset org D"D= Inicio mo'lL mo'lL clrf bsf clrf mo'lL mo'Lf bcf mo'f 7o'Lf goto end D"DO C7C;/ P;:C@ [@orra los latch de salida (C5CU(,:PD [(elecciona banco 1 C:I(@ [Puerta @ se configura como salida bdDD111111d C:I(5 [Puerta 5 se configura como entrada (C5CU(,:PD [(elecciona banco D P;:C5,B P;:C@ I/ICI;1 [Leer las entradas :5DG:5= [:efle&ar en las salidas [@ucle sin fin [!in del programa fuente

I/ICI;1

P:5CCIC5 8% L5@;:5C;:I; /e <


TCNICOS INDUSTRIALES 50 /112

MICROCONTROLADORES PIC

%/C%/8I8; 8% U/ L%8 C;/ I/C%::UPC;:


[fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff [ [ !ebrero D1, 9D19 [ nombre4 led9.asm2 [ Programa producido por4 (%/5CI Z;/5L L5 LI@%:C58 [ Circuito con un interruptor como entrada, y un led de salida [ 7icrocontrolador 4 PIC1 ! 9$5 [GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

LIST

P=P16F628A INCLUDE CBLOCK ENDC ORG

"P16F628A.INC" 0X20

0X00

; Orig ! " # $r%gr&'&( &)*+ ,%' !-&r. ; /i '$r )* %,*rr& *! r / 0

g%0% INICIO ORG 0X01 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; CONFIGURACION DE PUERTO A CO2O DIGITALES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO 2O3L4 0506 2O34F C2CON ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;CONFIGURACION DE PUERTOS( CO2O I7O ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BSF STATUS(8 ; PASAR DEL BANCO 0 AL BANCO 1 BCF STATUS(6 2O3L4 B9111111119 ; CONFIGURA PUERTO A CO2O ENTRADAS 2O34F TRISA CLRF TRISB BCF STATUS(8 ; PASAR DEL BANCO 1 AL BANCO 0 BCF STATUS(6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CLRF PORTB ; LI2PIA PUERTO B ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; INICIO DEL PROGRA2A ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO1 BTFSS PORTA(0 ; PREGUNTA CO2O ESTA EL RA0 GOTO APAGA ; SI EST: EN ;0< PASA A LA SIGUIENTE INSTRUCCI=N GOTO PRENDE ; SI EST: EN ;1< SALTA UNA INSTRUCCI=N PRENDE BSF PORTB(0 ; PRENDE RB0 GOTO INICIO1 ; IR A INICIO1 APAGA BCF PORTB(0 ; APAGA RB0 GOTO INICIO1 ; IR A INICIO1 END ; FIN DEL PROGRA2 A

8I5S:575 P5:5 L5 C;/%,I`/ 8% U/ PIC 1 ! 9$5 8% %/C%/8I8; 8% U/ L%8, C;/ I/C%::UC;: %/ %L PU%:C; 5, 1:5D, C;7; %/C:5852.
TCNICOS INDUSTRIALES 51 /112

MICROCONTROLADORES PIC

P:5CCIC5 8% L5@;:5C;:I; /e >

TCNICOS INDUSTRIALES

52 /112

MICROCONTROLADORES PIC

%/C%/8I8; 8% U/ L%8 C;/ PUL(58;: P5:5 %L %/C%/8I8; T :%(%C P5:5 %L 5P5S58;


[fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff [ !ebrero D1, 9D19 [ nombre4 led9.asm2 [ Programa producido por4 (%/5CI Z;/5L L5 LI@%:C58 [ Circuito con un pulsador como entrada, y un led de salida [ 7icrocontrolador 4 PIC1 ! 9$5 [GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

LIST

P=P16F628A INCLUDE CBLOCK ENDC ORG

"P16F628A.INC" 0X20

0X00

; Orig ! " # $r%gr&'&( &)*+ ,%' !-&r. ; /i '$r )* %,*rr& *! r / 0

g%0% INICIO ORG 0X01 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; CONFIGURACION DE PUERTO A CO2O DIGITALES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO 2O3L4 0506 2O34F C2CON ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;CONFIGURACION DE PUERTOS( CO2O I7O ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BSF STATUS(8 ; PASAR DEL BANCO 0 AL BANCO 1 BCF STATUS(6 2O3L4 B9111111119 ; CONFIGURA PUERTO A CO2O ENTRADAS 2O34F TRISA CLRF TRISB BCF STATUS(8 ; PASAR DEL BANCO 1 AL BANCO 0 BCF STATUS(6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CLRF PORTB ; LI2PIA PUERTO B ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; INICIO DEL PROGRA2A ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO1 BTFSS PORTA(0 ; PREGUNTA CO2O ESTA EL RA0 GOTO INICIO1 ; IR A INICIO1 INICIO2 BTFSC PORTA(0 ; PREGUNTA CO2O ESTA EL RA0 GOTO INICIO2 ; IR A INICIO2 PRENDE BSF PORTB(0 ; PRENDE RB0 GOTO PRENDE ; IR A PRENDE END ; FIN DEL PROGRA2A

8I5S:575 P5:5 L5 C;/%,I`/ 8% U/ PIC 1 ! 9$5 8% %/C%/8I8; 8% U/ L%8, C;/ PUL(58;: P5:5 %L %/C%/8I8; T :%(%C P5:5 %L 5P5S58;

TCNICOS INDUSTRIALES

53 /112

MICROCONTROLADORES PIC

P:5CCIC5 8% L5@;:5C;:I; /e =

TCNICOS INDUSTRIALES

54 /112

MICROCONTROLADORES PIC

%/C%/8I8; 8% U/ L%8 C;/ PUL(58;: :5D, P5:5 %L %/C%/8I8; T :51 P5:5 %L 5P5S58;
[fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff [ !ebrero D1, 9D19 [ nombre4 led9.asm2 [ Programa producido por4 (%/5CI Z;/5L L5 LI@%:C58 [ Circuito con pulsador de marcha y parada, como entrada, y un led de salida [ 7icrocontrolador 4 PIC1 ! 9$5 [GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

LIST

P=P16F628A INCLUDE CBLOCK ENDC ORG

"P16F628A.INC" 0X20

0X00

; Orig ! " # $r%gr&'&( &)*+ ,%' !-&r. ; /i '$r )* %,*rr& *! r / 0

g%0% INICIO ORG 0X01 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; CONFIGURACION DE PUERTO A CO2O DIGITALES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO 2O3L4 0506 2O34F C2CON ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;CONFIGURACION DE PUERTOS( CO2O I7O ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BSF STATUS(8 ; PASAR DEL BANCO 0 AL BANCO 1 BCF STATUS(6 2O3L4 B9111111119 ; CONFIGURA PUERTO A CO2O ENTRADAS 2O34F TRISA CLRF TRISB BCF STATUS(8 ; PASAR DEL BANCO 1 AL BANCO 0 BCF STATUS(6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CLRF PORTB ; LI2PIA PUERTO B ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; INICIO DEL PROGRA2A >PULSADOR 2ARC?A@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PULSA2ARC?A BTFSS PORTA(0 ; PREGUNTA CO2O ESTA EL RA0 GOTO PULSA2ARC?A ; IR A PULSA2ARC?A CALL R 0&r"%A20'/ ; IR A RETARDO DE 20 '/. PULSA2ARC?A1 BTFSC PORTA(0 ; PREGUNTA CO2O ESTA EL RA0 GOTO PULSA2ARC?A1 ; IR A PULSA2ARC?A1 CALL R 0&r"%A20'/ ; IR A RETARDO DE 20 '/ GOTO PRENDE ; IR A PRENDE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; PULSADOR APAGA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PULSASTOP BTFSS PORTA(1 ; PREGUNTA CO2O ESTA EL RA1 GOTO PULSASTOP ; IR A PULSASTOP CALL R 0&r"%A20'/ ; IR A RETARDO DE 20 '/
TCNICOS INDUSTRIALES 55 /112

MICROCONTROLADORES PIC

PULSASTOP1 RA1

BTFSC

PORTA(1

; PREGUNTA CO2O ESTA EL

GOTO PULSASTOP1 ; IR A PULSASTOP1 GOTO R 0&r"%A20'/ ; IR A RETARDO DE 20 '/ GOTO APAGA ; IR A APAGA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PRENDE BSF PORTB( ; PRENDE RB0 GOTO PULSASTOP ; IR A PULSASTOP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; APAGA BCF PORTB(0 ; APAGA RB0 GOTO PULSA2ARC?A ; IR A PULSA2ARC?A ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INCLUDE BRETARDOS.INCC END ; FIN DEL PROGRA2A 8I5S:575 P5:5 L5 C;/%,I`/ 8% U/ PIC 1 ! 9$5 8% %/C%/8I8; 8% U/ L%8, C;/ PUL(58;: :5D, P5:5 %L %/C%/8I8; T :51 P5:5 %L 5P5S58;

P:5CCIC5 8% L5@;:5C;:I; /e

TCNICOS INDUSTRIALES

56 /112

MICROCONTROLADORES PIC

(U75 8% U/ LIC%:5L T %L PU%:C; 5. %L :%(ULC58; (% .I(U5LIZ5 %/ %L PU%:C; @


[fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff [ !ebrero D1, 9D19 [ nombre4 led9.asm2 [ Programa producido por4 (%/5CI Z;/5L L5 LI@%:C58 [ Circuito de suma [ 7icrocontrolador 4 PIC1 ! 9$5 [GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

LIST

P=P16F628A INCLUDE CBLOCK ENDC ORG

"P16F628A.INC" 0X20

0X00

; Orig ! " # $r%gr&'&( &)*+ ,%' !-&r. ; /i '$r )* %,*rr& *! r / 0

g%0% INICIO ORG 0X01 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; CONFIGURACION DE PUERTO A CO2O DIGITALES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO 2O3L4 0506 2O34F C2CON ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;CONFIGURACION DE PUERTOS( CO2O I7O ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BSF STATUS(8 ; PASAR DEL BANCO 0 AL BANCO 1 BCF STATUS(6 2O3L4 B9111111119 ; CONFIGURA PUERTO A CO2O ENTRADAS 2O34F TRISA CLRF TRISB BCF STATUS(8 ; PASAR DEL BANCO 1 AL BANCO 0 BCF STATUS(6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CLRF PORTB ; LI2PIA PUERTO B ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; INICIO DEL PROGRA2A ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INICIO1 2O3L4 0X02 ADD4F PORTA(4 2O34F PORTB GOTO INICIO1 END

CI:CUIC; 8% (U75 8% U/ LIC%:5L T %L PU%:C; 5

TCNICOS INDUSTRIALES

57 /112

MICROCONTROLADORES PIC

P:5CCIC5 8% L5@;:5C;:I; /e O
TCNICOS INDUSTRIALES 58 /112

MICROCONTROLADORES PIC

:%(C5 8% U/ LIC%:5L T %L PU%:C; 5. %L :%(ULC58; (% .I(U5LIZ5 %/ %L PU%:C; @


[fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff [ !ebrero D1, 9D19 [ nombre4 led9.asm2 [ Programa producido por4 (%/5CI Z;/5L L5 LI@%:C58 [ Circuito de suma [ 7icrocontrolador 4 PIC1 ! 9$5 [GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

LIST

P=P16F628A INCLUDE CBLOCK ENDC ORG

"P16F628A.INC" 0X20

0X00

; Orig ! " # $r%gr&'&( &)*+ ,%' !-&r. ; /i '$r )* %,*rr& *! r / 0

g%0% INICIO ORG 0X01 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; CONFIGURACION DE PUERTO A CO2O DIGITALES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO 2O3L4 0506 2O34F C2CON ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;CONFIGURACION DE PUERTOS( CO2O I7O ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BSF STATUS(8 ; PASAR DEL BANCO 0 AL BANCO 1 BCF STATUS(6 2O3L4 B9111111119 ; CONFIGURA PUERTO A CO2O ENTRADAS 2O34F TRISA CLRF TRISB BCF STATUS(8 ; PASAR DEL BANCO 1 AL BANCO 0 BCF STATUS(6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CLRF PORTB ; LI2PIA PUERTO B ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; INICIO DEL PROGRA2A ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INICIO1 2O3L4 0X02 SUB4F PORTA(4 2O34F PORTB GOTO INICIO1 END

CI:CUIC; 8% :%(C5 8% U/ LIC%:5L T %L PU%:C; 5

TCNICOS INDUSTRIALES

59 /112

MICROCONTROLADORES PIC

P:5CCIC5 8% L5@;:5C;:I; /e $
TCNICOS INDUSTRIALES 60 /112

MICROCONTROLADORES PIC L%8( (%CU%/CI5L%(, C;/ L5 I/(C:UCCI`/ :L! [fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff [ !ebrero D1, 9D19 [ nombre4 led$.asm2 [ Programa producido por4 (%/5CI Z;/5L L5 LI@%:C58 [ Circuito utili+ando la instrucci*n rlf, rotar a la i+quierda [ 7icrocontrolador 4 PIC1 ! 9$5 [GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG LI(C PQP1 ! 9$5 I/CLU8% YP1 ! 9$5.I/CY C@L;C? :;C5: %/8C ;:S D,9D

D,DD

[ ;rigen del programa, aqu comen+ar) [ siempre que ocurra un reset

goto I/ICI; ;:S D,D> [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [ C;/!ISU:5CI;/ 8% PU%:C; 5 C;7; 8ISIC5L%( [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ I/ICI; 7;.LB D"DO 7;.B! C7C;/ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [C;/!ISU:5CI;/ 8% PU%:C;(, C;7; IA; [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ @(! (C5CU(,= [ P5(5: 8%L @5/C; D 5L @5/C; 1 @C! (C5CU(, 7;.LB @d11111111d [ C;/!ISU:5 PU%:C; 5 C;7; %/C:585( 7;.B! C:I(5 CL:! C:I(@ @C! (C5CU(,= [ P5(5: 8%L @5/C; 1 5L @5/C; D @C! (C5CU(, [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ CL:! P;:C@ [ LI7PI5 PU%:C; @ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ I/ICI;1 7;.LB D,D1 [ C5:S5 B C;/ DDDDDDD1 7;.B! :;C5: [ L; P5(5 5L :%SI(C:; :;C5 :;C5/8; 7;.! :;C5:,D [ P5(5 %L C;/C%/I8; 8% :;C5: 5 B 7;.B! P;:C@ [ T 8% 5LLI 5L PU%:C; @ C5LL :etardog9Dms CL:! P;:C@ C5LL :etardog9Dms :L! :;C5:,1 [ 8%(PL5Z5 U/ @IC 5L C;/C%/I8; [ 8% :;C5: T L; SU5:85 S;C; :;C5/8; I/CLU8% U:%C5:8;(.I/CV %/8

TCNICOS INDUSTRIALES

61 /112

MICROCONTROLADORES PIC CI:CUIC; 8% :;C5CI`/ 8% L%8 C;/ L5 I/(C:UCCI`/ :L!

TCNICOS INDUSTRIALES

62 /112

MICROCONTROLADORES PIC

P:5CCIC5 8% L5@;:5C;:I; /e b
[C;/C58;: C;/ ,;: [fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff [ !ebrero D1, 9D19 [ nombre4 led$.asm2 [ Programa producido por4 (%/5CI Z;/5L L5 LI@%:C58 [ Circuito utili+ando la instrucci*n rlf, rotar a la i+quierda [ 7icrocontrolador 4 PIC1 ! 9$5 [GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG LI(C PQP1 ! 9$5 I/CLU8% YP1 ! 9$5.I/CY C@L;C? C;/C %/8C ;:S D,9D

D,DD

[ ;rigen del programa, aqu comen+ar) [ siempre que ocurra un reset

goto I/ICI; ;:S D,D> [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [ C;/!ISU:5CI;/ 8% PU%:C; 5 C;7; 8ISIC5L%( [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ I/ICI; 7;.LB D"DO 7;.B! C7C;/ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [C;/!ISU:5CI;/ 8% PU%:C;(, C;7; IA; [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ @(! (C5CU(,= [ P5(5: 8%L @5/C; D 5L @5/C; 1 @C! (C5CU(, 7;.LB @d11111111d [ C;/!ISU:5 PU%:C; 5 C;7; %/C:585( 7;.B! C:I(5 CL:! C:I(@ @C! (C5CU(,= [ P5(5: 8%L @5/C; 1 5L @5/C; D @C! (C5CU(, [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ CL:! P;:C@ [ LI7PI5 PU%:C; @ [[[[[[[[[[[[[[[[[[[[[[[[[[, [[[[[[[[[[[[[[[[[[[[[[[[ inicio1 bsf P;:C@,D [P:%/8% :@D 8%L PU%:C;@ C5LL :etardog9DDms C5LL :etardog9DDms 7;.! C;/C,D ,;:LB @dDD111d ['erifica si el contador llego a 1b @C!(C (C5CU(,9 [si no es asi salta una linea goto inicio9 [(i llego a b lo atiende en manual I/C! C;/C,1 [incrementa el contador 7;.! C;/C,D [pasa el contador a B clrf P;:C@ C5LL :etardog9DDms goto inicio1 inicio9 CL:! C;/C [pone el contador a D clrf P;:C@ goto inicio9 I/CLU8% U:%C5:8;(.I/CV end

TCNICOS INDUSTRIALES

63 /112

MICROCONTROLADORES PIC C;/C58;: C;/ ,;:

P:5CCIC5 8% L5@;:5C;:I; /e 1D
[CI:CUIC; 8%(C%LL5/C% 8% U/5 L57P5:5 L%8 C;/ C%7P;:IZ58;: [fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff [ !ebrero D1, 9D19 [ nombre4 led9.asm2 [ Programa producido por4 (%/5CI Z;/5L L5 LI@%:C58 [ Circuito un led destellante con tempori+ador de 9 s [ 7icrocontrolador 4 PIC1 ! 9$5 [GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG LI(C PQP1 ! 9$5 I/CLU8% YP1 ! 9$5.I/CY CIC?( %EU 8dO$d C@L;C? CI%7P; %/8C ;:S D,9D D,DD [ ;rigen del programa, aqu comen+ar) [ siempre que ocurra un reset

goto I/ICI; ;:S D,D> [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [ C;/!ISU:5CI;/ 8% PU%:C; 5 C;7; 8ISIC5L%( [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ I/ICI; 7;.LB D"DO 7;.B! C7C;/ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [C;/!ISU:5CI;/ 8% PU%:C;(, C;7; IA; [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ @(! (C5CU(,= [ P5(5: 8%L @5/C; D 5L @5/C; 1 @C! (C5CU(, 7;.LB @d11111111d [ C;/!ISU:5 PU%:C; 5 C;7; %/C:585( TCNICOS INDUSTRIALES 64 /112

MICROCONTROLADORES PIC 7;.B! C:I(5 CL:! C:I(@ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [C;/!ISU:5CI;/ 8% CI7%: 7;.LB bdD1D1D111d [(%SU/ L;( @IC( 8%L :%SI(C:; ;PCI; 7;.B! ;PCI;/g:%S @C! (C5CU(,= [ P5(5: 8%L @5/C; 1 5L @5/C; D @C! (C5CU(, [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ CL:! P;:C@ [ LI7PI5 PU%:C; @ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ I/ICI;1 @(! P;:C@,D C5LL P5U(5 @C! P;:C@,D C5LL P5U(5 S;C; I/ICI;1 [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [CICL; 8% C%7P;:IZ5CI;/ P5U(5 ;C:gCIC (ISU% 7;.LB 7;.B! 7;.LB 7;.B! @C!(( S;C; @C! 8%C!(Z S;C; :%CU:/ %/8 CIC?( CI%7P; 8d1= d C7:D I/CC;/,9 (ISU% I/CC;/,9 CI%7P;,1 ;C:gCIC [CI%7P;g%(P%:5 Q CIC?( f ;C:gCIC [SU5:85 .5L;: %/ 7%7;:I5 [;C:gCICQ9= G 1= Q1DD [;C:gCIC Q D.D= <9seg [ CQ > f D.9=us f 1DD f 9= QD.D9= seg [h8%(@;:857I%/C;cQ9= [I/CC;/,9QC;I! , (%SU/ :%SI(C:; I/CC;/

[ tiempo real Q ;C:gCIC " CIC?( Q D.D9= " O$ Q 9seg

TCNICOS INDUSTRIALES

65 /112

MICROCONTROLADORES PIC

P:5CCIC5 8% L5@;:5C;:I; /e 11
[P:;S:575 8% 5::5/EU% %/ %(C:%LL5 C:Ii/SUL; 8% U/ 7;C;: 5(j/C:;/; C:I!i(IC; [fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff [ !ebrero D1, 9D19 [ nombre4 led9.asm2 [ Programa producido por4 (%/5CI Z;/5L L5 LI@%:C58 [ Circuito de arranque en estrella tringulo de motor asncrono trifsico [ 7icrocontrolador 4 PIC1 ! 9$5 [GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

LIST

P=P16F628A INCLUDE CBLOCK ENDC ORG

"P16F628A.INC" 0X20

0X00

; Orig ! " # $r%gr&'&( &)*+ ,%' !-&r. ; /i '$r )* %,*rr& *! r / 0

g%0% INICIO ORG 0X01 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; CONFIGURACION DE PUERTO A CO2O DIGITALES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO 2O3L4 0506 2O34F C2CON ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;CONFIGURACION DE PUERTOS( CO2O I7O ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BSF STATUS(8 ; PASAR DEL BANCO 0 AL BANCO 1 BCF STATUS(6 2O3L4 B9111111119 ; CONFIGURA PUERTO A CO2O ENTRADAS 2O34F TRISA CLRF TRISB BCF STATUS(8 ; PASAR DEL BANCO 1 AL BANCO 0 BCF STATUS(6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CLRF PORTB ; LI2PIA PUERTO B ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; INICIO DEL PROGRA2A >PULSADOR 2ARC?A@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PULSA2ARC?A BTFSS PORTA(0 ; PREGUNTA CO2O ESTA EL RA0 GOTO PULSA2ARC?A ; IR A PULSA2ARC?A CALL R 0&r"%A20'/ ; IR A RETARDO DE 20 '/. PULSA2ARC?A1 BTFSC PORTA(0 ; PREGUNTA CO2O ESTA EL RA0 GOTO PULSA2ARC?A1 ; IR A PULSA2ARC?A1 CALL R 0&r"%A20'/ ; IR A RETARDO DE 20 '/ GOTO PRENDE ; IR A PRENDE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; PULSADOR APAGA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TCNICOS INDUSTRIALES 66 /112

MICROCONTROLADORES PIC

PULSASTOP PULSASTOP1 RA1

BTFSS PORTA(1 ; PREGUNTA CO2O ESTA EL RA1 GOTO PULSASTOP ; IR A PULSASTOP CALL R 0&r"%A20'/ ; IR A RETARDO DE 20 '/ BTFSC PORTA(1 ; PREGUNTA CO2O ESTA EL ; IR A PULSASTOP1 ; IR A RETARDO DE 20 '/ ; IR A APAGA

GOTO PULSASTOP1 GOTO R 0&r"%A20'/ GOTO APAGA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PRENDE @(! P;:C@,D
@(! C5LL @C! C5LL @(! P;:C@,1 :etardog=s P;:C@,D :etardog=DDms P;:C@,9

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; GOTO PULSASTOP ; IR A PULSASTOP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; APAGA CLRF PORTB S;C; PULSA2ARC?A
I/CLU8% Ulcdg>bit.I/CV I/CLU8% U:%C5:8;(.I/CV I/CLU8% ULC8g7%/(.I/CV %/8

TCNICOS INDUSTRIALES

67 /112

MICROCONTROLADORES PIC

P:5CCIC5 8% L5@;:5C;:I; /e 11
[P:;S:575 8% 5::5/EU% %/ %(C:%LL5 C:Ii/SUL; 8% U/ 7;C;: 5(j/C:;/; C:I!i(IC; [fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff [ !ebrero D1, 9D19 [ nombre4 led9.asm2 [ Programa producido por4 (%/5CI Z;/5L L5 LI@%:C58 [ Circuito de arranque en estrella tringulo de motor asncrono trifsico [ 7icrocontrolador 4 PIC1 ! 9$5 [GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

LI(C

PQP1 ! 9$5 I/CLU8% C@L;C? %/8C ;:S goto ;:S I/ICI;

YP1 ! 9$5.I/CY D,9D D,DD D,D> PCL,!

7ensa&es addLf 7ensa&e1 8C Y 7;C;: 5P5S58;Y,D,DD 7ensa&e9 8C Y7;C;: %/C%/8I8;Y, D,DD 7ensa&e< 8C Y(C5:C %(C:%LL5 Y, D"DD 7ensa&e> 8C Y(C5:C C:I5/SUL; Y, D"DD

I/ICI; 7;.LB D,DO 7;.B!

C7C;/

@(! (C5CU(,= 7;.LB @dDDD1D1DDd 7;.B! C:I(5 CL:! C:I(@ @C! (C5CU(,= CL:! P;:C@ CL:! P;:C5 C5LL LC8gIniciali+a C5LL LC8gLinea1 7;.LB 7ensa&e1 C5LL LC8g7ensa&e

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; INICIO DEL PROGRA2A >PULSADOR 2ARC?A@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PULSA2ARC?A BTFSS PORTA(0 ESTA EL RA0 GOTO PULSA2ARC?A
TCNICOS INDUSTRIALES

; PREGUNTA CO2O ; IR A PULSA2ARC?A


68 /112

MICROCONTROLADORES PIC

PULSA2ARC?A1 RA0

CALL R 0&r"%A20'/ BTFSC PORTA(0

; IR A RETARDO DE 20 '/. ; PREGUNTA CO2O ESTA EL

GOTO PULSA2ARC?A1 ; IR A PULSA2ARC?A1 CALL R 0&r"%A20'/ ; IR A RETARDO DE 20 '/ GOTO PRENDE ; IR A PRENDE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; PULSADOR APAGA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PULSASTOP BTFSS PORTA(1 ; PREGUNTA CO2O ESTA EL RA1 GOTO PULSASTOP ; IR A PULSASTOP CALL R 0&r"%A20'/ ; IR A RETARDO DE 20 '/ PULSASTOP1 BTFSC PORTA(1 ; PREGUNTA CO2O ESTA EL RA1 GOTO PULSASTOP1 ; IR A PULSASTOP1 GOTO R 0&r"%A20'/ ; IR A RETARDO DE 20 '/ GOTO APAGA ; IR A APAGA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PRENDE @(! P;:C@,D
@(! P;:C@,1 C5LL LC8gLinea1 7;.LB 7ensa&e9 C5LL LC8g7ensa&e C5LL LC8gLinea9 7;.LB 7ensa&e< C5LL LC8g7ensa&e C5LL :etardog=s

@C! P;:C@,D C5LL :etardog=DDms @(! P;:C@,9 C5LL LC8gLinea1 7;.LB 7ensa&e9 C5LL LC8g7ensa&e C5LL LC8gLinea9 7;.LB 7ensa&e> C5LL LC8g7ensa&e

PORTB( ; PRENDE RB0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; GOTO PULSASTOP ; IR A PULSASTOP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; APAGA CLRF PORTB S;C; PULSA2ARC?A
I/CLU8% Ulcdg>bit.I/CV I/CLU8% U:%C5:8;(.I/CV I/CLU8% ULC8g7%/(.I/CV %/8

TCNICOS INDUSTRIALES

69 /112

MICROCONTROLADORES PIC

TCNICOS INDUSTRIALES

70 /112

You might also like