You are on page 1of 94

INDICE

Introducción.
TEMA 1: HARDWARE
1.1. Arquitectura Harvard.
1.2. Mapa de memoria.
1.3. Registros.
1.4. Temporizador / contador (TMP! "#T $ %&''P(.
1.). Puertos de entrada / sa*ida.
1.+. ,nterrupciones.
TEMA 2: PROGRAMACIÓN EN ASM
2.1. ,nstrucciones A%M de* P,- 1+./4
2.1.1. #e contro* $ mane0o de *itera*es.
2.1.2. 1rientadas a registros.
2.1.3. 1rientadas a 2its.
2.2 Modos de direccionamiento.
2.3. T3cnicas de programaci4n en A%M.
2.4. '0emp*os de programas A%M.
TEMA 3: ESCRITRA DE PROGRAMAS EN ASM
3.1. 5so de* 2*oc6 de notas con "indo7s
3.2. Programa MP&A8
3.2.1. Herramientas de* MP&A8.
3.2.2. .unciones de* MP&A8 (men9s(.
3.2.3. :u;a de uso de* ensam2*ador MPA%M (tutoria*(.
................-rear pro$ecto.
................,ntroducir c4digo
................'nsam2*ado (compi*ar(
................%imu*ador< registros! "atc= "indo7! 2rea6 points.
TEMA !: DESARRO""O DE PROGRAMA EN ASM PARA PIC1
4.1. >ector de reset.
4.2. 'ntrada.
4.3. 'nv;o de ATR.
4.4. 'nv;o de ? $ espera siguiente instrucci4n.
4.). -omprue2a instrucciones< '@1A@12@1+@3@32@34@3AA3-@4@)A
4.+. -a*cu*a posici4n de *as Be$s en *a eeprom.
4.C. -opia 2uDDer de datos.
4./. Proceso $ *ectura de 2*oque de / 2$tes.
4.?. -omunicaci4n entre e* deco $ *a tar0eta.
4.1. -ontro* de *ectura $ escritura de datos en *a eeprom.
4.11. A*goritmo desencriptaci4n %eca.
4.12. &ectura de ta2*as %eca.
,ETR1#5--,1E<
1.1 Arquitectura Harvard
&a arquitectura tradiciona* de computadoras $ microprocesadores estF 2asada en *a arquitectura
>on Eeumann! en *a cua* *a unidad centra* de proceso (-P5(! estF conectada a una memoria 9nica
donde se guardan *as instrucciones de* programa $ *os datos.
'* tamaGo de *a unidad de datos o instrucciones estF Di0ado por e* anc=o de* 2us que comunica *a
memoria con *a -P5. As; un microprocesador de / 2its con un 2us de / 2its! tendrF que mane0ar
datos e instrucciones de una o mFs unidades de / 2its (2$tes( de *ongitud. %i tiene que acceder a
una instrucci4n o dato de mFs de un 2$te de *ongitud! tendrF que rea*izar mFs de un acceso a *a
memoria.
H e* tener un 9nico 2us =ace que e* microprocesador sea mFs *ento en su respuesta! $a que no
puede 2uscar en memoria una nueva instrucci4n mientras no Dina*icen *as transDerencias de datos
de *a instrucci4n anterior.
Resumiendo todo *o anterior! *as principa*es *imitaciones que nos encontramos con *a arquitectura
>on Eeumann son <
1I. &a *imitaci4n de *a *ongitud de *as instrucciones por e* 2us de datos! que =ace que e*
microprocesador tenga que rea*izar varios accesos a memoria para 2uscar instrucciones comp*e0as.
2I. &a *imitaci4n de *a ve*ocidad de operaci4n a causa de* 2us 9nico para datos e instrucciones que
no de0a acceder simu*tFneamente a unos $ otras! *o cua* impide superponer am2os tiempos de
acceso.
&a arquitectura Harvard tiene *a unidad centra* de proceso (-P5( conectada a dos memorias (una
con *as instrucciones $ otra con *os datos( por medio de dos 2uses diDerentes.
5na de *as memorias contiene so*amente *as instrucciones de* programa (Memoria de Programa(! $
*a otra s4*o a*macena datos (Memoria de #atos(.
Am2os 2uses son tota*mente independientes $ pueden ser de distintos anc=os. Para un procesador
de %et de ,nstrucciones Reducido! o R,%- (Reduced ,nstrucci4n %et -omputer(! e* set de
instrucciones $ e* 2us de memoria de programa pueden diseGarse de ta* manera que todas *as
instrucciones tengan una so*a posici4n de memoria de programa de *ongitud.
AdemFs! a* ser *os 2uses independientes! *a -P5 puede acceder a *os datos para comp*etar *a
e0ecuci4n de una instrucci4n! $ a* mismo tiempo *eer *a siguiente instrucci4n a e0ecutar.
>enta0as de esta arquitectura<
1I. '* tamaGo de *as instrucciones no esta re*acionado con e* de *os datos! $ por *o tanto puede ser
optimizado para que cua*quier instrucci4n ocupe una so*a posici4n de memoria de programa!
*ogrando as; ma$or ve*ocidad $ menor *ongitud de programa.
2I. '* tiempo de acceso a *as instrucciones puede superponerse con e* de *os datos! *ogrando una
ma$or ve*ocidad en cada operaci4n.
5na pequeGa desventa0a de *os procesadores con arquitectura Harvard! es que de2en poseer
instrucciones especia*es para acceder a ta2*as de va*ores constantes que pueda ser necesario inc*uir
en *os programas! $a que estas ta2*as se encontraran D;sicamente en *a memoria de programa (por
e0emp*o en *a 'PR1M de un microprocesador(.
'* microcontro*ador P,- 1+./4 posee arquitectura Harvard! con una memoria de datos de / 2its! $
una memoria de programa de 14 2its.
#iagrama de 2*oques de* microcontro*ador P,-1+./4
'n *a Digura anterior vemos *a arquitectura interna organizada en 2*oques interconectados! en donde
se inc*u$e *a memoria RAM! *a memoria ''PR1M! *os puertos de entrada $ sa*ida (,/1(! etc.
1.2. MAPA DE MEMORIA
MEMORIA RAM:
'* microcontro*ador P,-1+./4 puede direccionar 12/ posiciones diDerentes de memoria RAMJ pero
Microc=ip Tecno*ogies so*amente =a imp*ementado / posiciones para este P,-. 'sta memoria esta
dividida en dos partes<
K &a primera parte consta de 12 registros que serFn uti*izados por Dunciones especia*es de*
microcontro*ador. -omienza en *a direcci4n = $ termina en *a 8=.
K &a segunda parte consta de +/ registros de memoria RAM que serFn uti*izados para
a*macenar datos tempora*es requeridos por *os programas. -omienza en *a direcci4n -= $ termina
en *a posici4n 4.=
'ste tipo de memoria ( RAM(! se caracteriza por perder *os datos si se **egase a desconectar e*
microcontro*ador o *a tensi4n 2a0a por de2a0o de *os *;mites m;nimos.
&a memoria RAM as; como a*gunos registros especia*es son *os mismos en *os dos 2ancos de* mapa
de memoria de* P,-.
MEMORIA DE PROGRAMA TIPO EEPROM:
'sta memoria tiene 1 B L 14 8its de memoria tipo .*as=. 'sta memoria es *a que uti*izaremos para
a*macenar nuestro programa dentro de* microcontro*ador P,-1+./4.
'* tipo de memoria uti*izada en este microcontro*ador! podrF ser gra2ada o 2orrada e*3ctricamente.
&a memoria tipo .*as= tiene *a caracter;stica de poderse 2orrar en 2*oques comp*etos $ no podrFn
2orrarse posiciones concretas o espec;Dicas.
'ste tipo de memoria no es vo*Fti*! es decir! no pierde *os datos si se interrumpe *a energ;a.
'n *a siguiente imagen se muestra como estF organizada *a memoria dentro de* microcontro*ador.
&a memoria de* programa comienza en *a posici4n = $ termina en *a posici4n 3..=.
Not#: '* contador de programa P- de* microcontro*ador P,-1+./4 tiene una *ongitud de 13 8its por
*o que imp*ica que podrF direccionar cua*quier posici4n comprendida en un rango de *os / B L 14J
pero *a empresa Microc=ip Tecno*ogies s4*amente =a imp*ementado internamente 1 B que
representa desde = =asta 3..=. 'n e* caso de que se direccione Duera de este rango!
automFticamente causarF un so*apamiento.
&a memoria para a*macenar e* programa! tipo EEPROM ( E*ectrica* Erasa2*e Programma2*e Read
On*$ Memor$(! que puede ser reescrita! nos resu*tarF perDecta para rea*izar prue2as $
eLperimentos! ademFs de para *a programaci4n on@2oard (actua*izaci4n de* programa interno de
c=ip sin necesidad de retirar*o de* circuito de prue2a(.
&a memoria de programa siempre estF direccionada desde e* -ontador de Programa ( PC(! mientras
que *a memoria de datos puede direccionarse directamente desde parte de* c4digo 1P de *a
instrucci4n o indirectamente a trav3s de un registro denominado $SR (Registro de %e*ecci4n de*
8anco(.
H aqu; tenemos una vista eLterior de *os %in& de* P,-1+./4<
'* P,-1+./4 esta dotado de un tota* de 1' %in(& distri2uidos en dos Di*as para*e*as de ? pines cada
una. &os pines marcados con AM5& representan *as *;neas de ,/1 disponi2*es para nuestras
ap*icaciones! *os pines R1N1 $ E':R1 son *os pines de a*imentaci4n! *os pines en >'R#' estFn
reservados para e* Duncionamiento de* P,- (M-&R para e* reset $ 1%-1@2 para e* re*o0 (.
1.3. REGISTROS
ORGANI)ACION:
&a memoria interna de datos! tam2i3n **amada arc=ivo de registros (register Di*e(! esta dividida en
dos grupos<
K &os r(*i&tro& (&%(ci#+(& (/ registros(.
K &os r(*i&tro& d( %ro%ó&ito *(n(r#+(& (C2 registros(.
&os registros especia*es ocupan *as / primeras posiciones que van desde *a a *a C! $ *os
registros de prop4sito genera*es *as posiciones que siguen! de *a / a *a 4..
&os registros especia*es contienen *a pa*a2ra de estado ( STATS(! *os registros de datos de *os
tres puertos de entrada sa*ida (Puerto A! Puerto 8! Puerto -(! *os / 2its menos signiDicativos de*
Program -ounter ( PC(! e* Temporizador ( TRM,( $ un registro puntero **amado .i*e %e*ect Register
( $SR(. &a posici4n no contiene ning9n registro en especia* $ es uti*izada en e* mecanismo de
direccionamiento indirecto.
&os registros de prop4sito genera* se dividen en dos grupos<
K *os r(*i&tro& d( %o&ición -i.# (/ registros(.
K &os /#nco& d( r(*i&tro& (+4 registros(.
&os primeros ocupan *as / posiciones que van de *a / a *a .. &os 2ancos de registros consisten en
=asta cuatro grupos o 2ancos de 1+ registros cada uno! que se encuentran superpuestos en *as
direcciones que van de *a 1 a *a 4.. %e puede operar con un so*o 2anco a *a vez! e* cua* se
se*ecciona mediante *os 2its ) $ + de* $i*e Se*ect Register ( $SR(
Otro& r(*i&tro& (&%(ci#+(&:
&as oc=o primeras posiciones de* Frea de datos estFn reservadas para a*o0ar registros de prop4sito
especia*! quedando *as restantes *i2res para contener *os datos u operandos que se desee (registros
de prop4sito genera*(.
'* registro IND$ que ocupa *a posici4n no estF imp*ementando D;sicamente $! como se =a
eLp*icado! se *e reDerencia en e* direccionamiento indirecto de datos aunque se uti*iza e* contenido
de $SR.
'n *a direcci4n estF e* registro TMR, (Temporizador( que puede ser *e;do $ escrito como cua*quier
otro registro.
'* P- ocupa *a posici4n 2 de* Frea de datos en donde se =a**a e* registro PC" a* que se aGaden 3
2its auLi*iares $ se conectan con *os dos nive*es de *a Pi*a en *as instrucciones -A&& $ R'T&".
'* registro de 'stado ( STATS( ocupa *a posici4n 3 $ entre sus 2its se encuentran *os
seGa*izadores -! #- $ M $ *os 2its ,RP! RP1 $ RP que se*eccionan *a pFgina en *a memoria de
programa.
$RS se u2ica en *a direcci4n 4 $ puede usarse para contener *as direcci4n de* dato en *as
instrucciones con direccionamiento indirecto $ tam2i3n para guardar operandos en sus ) 2its de
menos peso.
&os registros que ocupan *as posiciones ) $ + soportan *os Puertos A $ 8 de '/%. Pueden ser *e;dos $
escritos como cua*quier otro registro $ mane0an *os va*ores de *os 2its que entran $ sa*en por *os
pines de '/% de* microcontro*ador.
REGISTROS ESPECIA"ES DE" PIC10$'!
&os registros especia*es ( S$R o Specia* $unction Registers( son una serie de registros usados por
e* P,- para Dunciones de contro* de Duncionamiento de* =ard7are! direccionamiento especia*! etc. 'n
*a siguiente ta2*a estFn *os registros especia*es disponi2*es.
REGISTROS DE $NCIONES ESPECIA"ES:
Acu1u+#dor 2 r(*i&tro W.
&os siguientes grFDicos representan un diagrama simp*iDicado de *a arquitectura interna de* camino
de *os datos en *a -P5 de *os microcontro*adores P,- $ de *os microprocesadores tradiciona*es.
12servamos que *a principa* diDerencia entre am2os se encuentra en *a u2icaci4n de* registro de
tra2a0o! que para *os P,-Os se denomina W ( Wor3in* R(*i&t(r(! $ para *os tradiciona*es es e*
Acu1u+#dor.
'n *os microcontro*adores tradiciona*es todas *as operaciones se rea*izan so2re e* #cu1u+#dor. &a
sa*ida de* #cu1u+#dor esta conectada a una de *as entradas de *a 5nidad Aritm3tica $ &4gica
( A"(! $ por *o tanto 3ste es siempre uno de *os dos operandos de cua*quier instrucci4n. Por
convenci4n! *as instrucciones de simp*e operando (2orrar! incrementar! decrementar!
comp*ementar(! act9an so2re e* #cu1u+#dor. &a sa*ida de *a A" va so*amente a *a entrada de*
#cu1u+#dor! por *o tanto e* resu*tado de cua*quier operaci4n siempre quedara en e* #cu1u+#dor.
Para operar so2re un dato de memoria! despu3s de rea*izar *a operaci4n tendremos que mover
siempre e* #cu1u+#dor a *a memoria con una instrucci4n adiciona*.
'n *os microcontro*adores P,-! *a sa*ida de *a A" va a* registro W $ tam2i3n a *a memoria de
datos! por *o tanto e* resu*tado puede guardarse en cua*quiera de *os dos destinos. 'n *as
instrucciones de do2*e operando! uno de *os dos datos siempre de2e estar en e* registro W! como
ocurr;a en e* mode*o tradiciona* con e* #cu1u+#dor. 'n *as instrucciones de simp*e operando e*
dato en este caso se toma de *a memoria (tam2i3n por convenci4n(.
&a gran venta0a de esta arquitectura es que permite un gran a=orro de instrucciones $a que e*
resu*tado de cua*quier instrucci4n que opere con *a memoria (sea de simp*e o do2*e operando(!
puede de0arse en *a misma posici4n de memoria o en e* registro W! seg9n se se*eccione con un 2it
de *a misma instrucci4n. &as operaciones con constantes provenientes de *a memoria de programa
(*itera*es( se rea*izan s4*o so2re e* registro W.
'n *a memoria de datos de *os P,-Os se encuentran u2icados casi todos *os registros de contro* de*
microprocesador $ sus periD3ricos autocontenidos! $ tam2i3n *as posiciones de memoria de usos
genera*es.
Cont#dor d( Pro*r#1#.
'ste registro! norma*mente denominado PC! es equiva*ente a* de todos *os microprocesadores $
contiene *a direcci4n de *a pr4Lima instrucci4n a e0ecutar. %e incrementa automFticamente a*
e0ecutar cada instrucci4n! de manera que *a secuencia natura* de e0ecuci4n de* programa es *inea*!
una instrucci4n despu3s de *a otra. A*gunas instrucciones (que **amaremos de contro*( cam2ian e*
contenido de* PC a*terando *a secuencia *inea* de e0ecuci4n. #entro de estas instrucciones se
encuentran :1T1 $ -A&& que permiten cargar en Dorma directa un va*or constante en e* PC
=aciendo que e* programa sa*te a cua*quier posici4n de *a memoria. 1tras instrucciones de contro*
son *os %B,P o sa*tos condiciona*es! que producen un incremento adiciona* de* PC si se cump*e una
condici4n especiDica! =aciendo que e* programa sa*te! sin e0ecutar! *a instrucci4n siguiente.
'* PC es un registro de 13 2its en e* 1+./4! *o que permite direccionar /.1?2 posiciones de memoria
de programa! pero que internamente so*amente podrF direccionar 1.24..
A diDerencia de *a ma$or;a de *os microprocesadores convenciona*es! e* PC es tam2i3n accesi2*e a*
programador como registro de memoria interna de datos! en *a posici4n 2. 's decir que cua*quier
instrucci4n com9n que opere so2re registros puede ser uti*izada para a*terar e* PC $ desviar *a
e0ecuci4n de* programa.
St#c3:
'n *os microcontro*adores P,- e* &t#c3 es una memoria interna dedicada! de tamaGo *imitado!
separada de *as memorias de datos $ de programa! inaccesi2*e a* programador! $ organizada en
Dorma de pi*a! que es uti*izada so*amente! $ en Dorma automFtica! para guardar *as direcciones de
retorno de su2rutinas e interrupciones. -ada posici4n es de 11 2its $ permite guardar una copia
comp*eta de* PC. -omo en toda memoria tipo pi*a! a *os datos se accede de Dorma "I$O ( "ast In
$irst Out( de manera que e* 9*timo en entrar es e* primero en sa*ir.
'* tamaGo de* &t#c3 en *os 1+./4 es de / posiciones.
'* &t#c3 $ e* puntero interno que *o direcciona! son invisi2*es para e* programador! so*o se accede a
e**os automFticamente para guardar o rescatar *as direcciones de programa cuando se e0ecutan *as
instrucciones de **amada o retorno de su2rutinas! cuando se produce una interrupci4n o cuando se
e0ecuta una instrucci4n de retorno de e**a.
P#+#/r# d( E&t#do d(+ Proc(&#dor 4STATS5:
&a pa*a2ra de estado de* procesador contiene *os tres 2its de estado de *a A&5 (-! #- $ M(! $ otros
) 2its que se inc*u$eron en este registro.
Registro %TAT5%
@@@@C@@@@+@@@@)@@@@4@@@@3@@@@2@@@@1@@@@
@@@,RP@@RP1@@RP@@T1@@P#@@@@M@@@#-@@@-
'* 2it M indica que e* resu*tado de *a u*tima operaci4n Due -'R1. '* 2it - indica acarreo de* 2it mFs
signiDicativo (2it C( de* resu*tado de *a u*tima operaci4n de suma. 'n e* caso de *a resta se comporta
a *a inversa! - resu*ta 1 si no =u2o pedido de pr3stamo. '* 2it #- (digit carr$( indica acarreo de*
cuarto 2it (2it 3( de* resu*tado de *a u*tima operaci4n de suma o resta! con un comportamiento
anF*ogo a* de* 2it -! $ es 9ti* para operar en 8-# (para sumar o restar n9meros en c4digo 8-#
empaquetado(. '* 2it - es usado ademFs en *as operaciones de rotaci4n derec=a o izquierda como
un paso intermedio entre e* 2it $ e* 2it C.
'* 2it P# (P1"'R #1"E( sirve para detectar si *a a*imentaci4n Due apagada $ encendida
nuevamente! tiene que ver con *a secuencia de inicia*izaci4n! e* 7atc= dog timer $ *a instrucci4n
s*eep! $ su uso se deta**ara en *a secci4n reDerida a* modo P1"'R #1"E. '* 2it T1 (T,M'@15T(
sirve para detectar si una condici4n de reset Due producida por e* 7atc= dog timer! esta re*acionado
con *os mismos e*ementos que e* 2it anterior $ su uso se deta**ara en *a secci4n reDerida a* "AT-H
#1: T,M'R. &os 2its de se*ecci4n de pagina RP/RP1/,RP se uti*izan en *as instrucciones de sa*to
:1T1 $ -A&&.
Manipu*ando e* 2it n9mero ) ( RP,( de* registro STATS podremos indicar a* microcontro*ador si
queremos tra2a0ar en e* 2anco PP o en e* P1P.
&a operaci4n norma* de* microcontro*ador se eDect9a en e* 2anco PP. Pero cuando nos cam2iamos
de* 2anco PP a* 2anco P1P es para eDectuar ciertos cam2ios que deDinen como estarFn conDigurados
*os puertos de* microcontro*ador.
'n *a siguiente imagen vemos *a asignaci4n que tienen cada uno de *os oc=o 8its de* registro
STATS<
%i o2servamos de nuevo *a ta2*a de registros de* P,-1+./4 vemos que eListen a*gunas diDerencias
entre e* 2anco PP $ e* 2anco P1P. &os registros denominados OPTION6 TRISA6 TRIS76 EECON1 2
EECON2 no eListen en e* 2anco QR.
%i necesitamos acceder a* registro TRISA! que so*amente se encuentra en e* 2anco P1P!
o2*igatoriamente =a2rF que cam2iarse de* 2anco QR a* 2anco Q1R por medio de *as instrucciones de*
microcontro*ador.
H tendremos que acceder a* 2anco Q1R so*amente para uti*izar *os registros que no se encuentran en
e* 2anco QR. 5na vez uti*izados esos registros ( $ modiDicados si Duese necesario(! regresaremos a*
2anco QR para que e* microcontro*ador siga con su tarea asignada en *a memoria de* programa.
'n e* caso de *os registros OPTION $ TRISA 2 7 no serF necesario rea*izar e* cam2io de 2anco! $a
que tenemos dos instrucciones que podremos uti*izar para =acer*o! a pesar de que Microc=ip
recomienda no usar*as para mantener *a compati2i*idad con e* 0uego de instrucciones de*
microprocesador 1+-SS.
E" REGISTRO CONTADOR TMR,:
'* registro TMR, es un contador de / 2its! es decir un particu*ar tipo de registro cu$o contenido es
incrementado con una cadencia regu*ar $ programa2*e directamente por e* =ard7are de* P,-.'ste
registro puede usarse para contar eventos eLternos por medio de un pin de entrada especia* (modo
contador( o para contar pu*sos internos de re*o0 de Drecuencia constante (modo timer(. AdemFs! en
cua*quiera de *os dos modos! se puede insertar un presca*er! es decir un divisor de Drecuencia
programa2*e que puede dividir por 2! 4! /! 1+! 32! +4! 12/ o 2)+. 'ste divisor puede ser uti*izado
a*ternativamente como presca*er de* TMR o como postsca*er de* "atc= #og Timer! seg9n se *o
programe.
'n *a prFctica! a diDerencia de *os otros registros! e* TMR, no mantiene ina*terado e* va*or que tiene
memorizado! sino que *o incrementa continuamente.
%i por e0emp*o escri2imos en 3* e* va*or 1! despu3s de un tiempo igua* a cuatro cic*os de maquina!
e* contenido de* registro comienza a ser incrementado a 11! 12! 13 $ as; sucesivamente con una
cadencia constante $ tota*mente independiente de *a e0ecuci4n de* resto de* programa.
5na vez a*canzado e* va*or 2))! e* registro TMR es puesto a cero automFticamente comenzando
entonces a contar desde cero $ no desde e* va*or origina*mente cargado.
&a Drecuencia de conteo es directamente proporciona* a *a Drecuencia de re*o0 ap*icada a* c=ip $
puede ser modiDicada programando adecuadamente a*gunos 2its de conDiguraci4n.
'n *a Digura siguiente estF representada *a cadena de 2*oques internos de* P,- que determinan e*
Duncionamiento de* registro TMR.
&os 2*oques .osc/4 $ T-B,! mostrados en azu*! representan *as dos posi2*es Duentes de seGa* de
re*o0! para e* contador TMR,.
.osc/4 es una seGa* generada internamente por e* P,- tomada de* circuito de re*o0 $ que es igua* a
*a Drecuencia de* osci*ador dividida por cuatro.
T-B, es una seGa* generada por un posi2*e circuito eLterno $ ap*icada a* pin T-B,
correspondiente a* pin 3 de* P,-1+./4.
&os 2*oques T-% $ P%A mostrados en verde son dos conmutadores de seGa* en cu$a sa*ida se
presenta una de *as dos seGa*es de entrada en Dunci4n de* va*or de *os 2its T-% $ P%A de* registro
OPTION.
'* 2*oque PRESCA"ER es un divisor programa2*e cu$o Duncionamiento veremos mFs en deta**e.
A continuaci4n veremos como es posi2*e dividir posteriormente *a Drecuencia de conteo! interna 4
eLterna! activando e* PR'%-A&'R.
E" PRESCA"ER:
'* PRESCA"ER consiste en un divisor programa2*e de / 2its a uti*izar en e* caso de que *a
Drecuencia de conteo enviada a* contador TMR, sea demasiado e*evada para nuestros prop4sitos.
%e conDigura a trav3s de *os 2its PS,6 PS1 2 PS2 de* registro OPTION.
&a Drecuencia .osc/4 es una cuarta parte de *a Drecuencia de re*o0. 5ti*izando un crista* de !M89
tendremos una .osc/4 igua* a 1 MH9. Ta* Drecuencia es enviada directamente a* registro TMR, sin
suDrir ningun cam2io. &a cadencia de conteo que se o2tiene es por *o tanto igua* a 1 mi**4n de
incrementos por segundo de* va*or presente en TMR,! que para muc=as ap*icaciones podr;a
resu*tar demasiado e*evada.
-on e* uso de* PRESCA"ER podemos dividir posteriormente *a Drecuencia .osc/4 conDigurando
oportunamente *os 2its PS,6 PS1 2 PS2 de* registro OPTION seg9n *a siguiente ta2*a.
P%2...P%1...P%...#,>,%1R....R'-. %A&,#A PR''%-A&'R (M=z.(
............................2..................................).
................1............4..................................2).
........1..................../..................................12).
........1........1...........1+...................................+2.)
1...........................32...................................31.2)
1................1...........+4...................................1).+2)
1........1..................12/....................................C./13
1........1........1..........2)+....................................3.?+
E.(1%+o %r:ctico: introducir un retardo igua* a un segundo uti*izando e* registro TMR,.
#e2emos programar e* 2it T-% a para se*eccionar como Duente de conteo e* re*o0 de* P,-! e* 2it
P%A a para asignar e* PRESCA"ER a* registro TMR, en *ugar de a* W#tc8 Do* Ti1(r (de* que
trataremos mFs ade*ante( $ *os 2its de conDiguraci4n de* PRESCA"ER a 1 para o2tener una
Drecuencia de divisi4n igua* a 1<32.
&a Drecuencia que o2tendremos en TMR, serF igua* a<
$o&c ; 1M89 < 32 ; 31.2=, H9
Memorizamos en TMR, e* va*or + de modo que e* registro TMR, a*canza e* cero despu3s de 2)
cuentas (2)+ @ + T 2)( o2teniendo as; una Drecuencia de paso por cero de* TMR, igua* a<
31.2=, < 2=, ; 12= H9
'* siguiente paso serF memorizar en un registro de / 2its e* va*or 12) de ta* modo que!
decrementando este registro en 1 por cada paso por cero de TMR,! se o2tenga una Drecuencia de
pasos por cero de* registro igua* a<
12=<12= ; 1H9 41 &(*undo5.
En r(&u1(n: se trata de contro*ar si TMR, =a a*canzado e* cero! *uego de reinicia*izar*o a + $
decrementar e* va*or contenido en un registro con va*or 12). -uando e* registro a*cance tam2i3n e*
va*or cero! entonces =a2rF trascurrido un segundo.
$NCIONAMIENTO DE" POWER DOWN MODE:
'* Po>(r Do>n Mod( o S+((% Mod(! es un estado particu*ar de Duncionamiento de* Pi-! uti*izado
para reducir e* consumo de corriente en *os momentos que no rea*iza ninguna tarea o estF a *a
espera de un suceso eLterno.
%i tomamos como e0emp*o un contro* remoto para T>! veremos que *a ma$or parte de* tiempo e*
micro permanece a *a espera de *a presi4n de a*guna tec*a. Apenas oprimida! eDect9a una 2reve
transmisi4n $ queda nuevamente a *a espera de *a presi4n de otra tec*a.
'* tiempo de uso eDectivo de *a -P5 de* micro estF por tanto! *imitado a unos pocos mi*isegundos
necesarios para eDectuar *a transmisi4n mientras que durante varias =oras no eDect9a ninguna tarea
particu*ar (en e* caso de uti*izar *a t3cnica &(c#r(1ot(! en *a que se =ace un uso mFs intensivo de*
mando! ocurre todo *o contrarioU(.
Para no consumir in9ti*mente *a energ;a de *as 2ater;as! es posi2*e apagar varios de *os circuitos de*
micro $ reencender*os s4*o en correspondencia con a*g9n suceso eLterno.
>eamos como.
"A INSTRCCION S"EEP:
&a instrucci4n S"EEP es uti*izada para co*ocar e* P,- en Po>(r Do>n Mod( $ reducir *a corriente
a2sor2ida! que pasarF de unos 2 mA (a ) vo*t $ e* c*oc6 en 4MHz( a unos 2uA! o sea! unas 1
veces menos.
Para entrar en Po>(r Do>n Mod( /#&t# in&(rt#r +# in&trucción S"EEP (n cu#+?ui(r %#rt( d(+
%ro*r#1#.
Cu#+?ui(r in&trucción &i*ui(nt no serF eDectuada por e* P,- e* cua* Dina*izarF en este punto *a
e0ecuci4n! apagarF *os circuitos internos! eLcepto aque**os necesarios para mantener e* estado de
*os puertos de I<O $ aque**os que *o sacarFn de esa condici4n! *os cua*es comentaremos a
continuaci4n.
Para despertar a* P,- se uti*izan diversas t3cnicas<
1. Reset de* P,- **evando a cero e* pin 4 (M-&R(.
2. Timeout de* "atc= #og Timer (si estF =a2i*itado(.
3. >eriDicaci4n de una interrupci4n (interrupci4n desde e* pin R8/,ET! cam2io de estado en e*
puerto 8! Dina*izaci4n de *a escritura so2re *a ''PR1M(.
'n *os dos primeros casos! e* P,- es reseteado $ *a e0ecuci4n es retomada en *a situaci4n de
memoria.
'n e* tercer caso! e* P,- se comporta como en e* caso de una interrupci4n norma*! siguiendo
primeramente e* Int(rru%t 8#nd+(r! retomando *a e0ecuci4n despu3s de *a instrucci4n %&''P. Para
que e* P,- sea despertado por una interupt de2en ser =a2i*itados *os D*ag de* registro INTCON.
E" WATCH DOG TIMER 4WDT5:
'* W#tc8 Do* Ti1(r (que podr;a traducirse como temporizador perro guardiFn( es un osci*ador
interno a* P,-! pero comp*etamente independiente de* resto de *a circuiter;a! cu$a Dunci4n es
e*iminar eventua*es 2*oqueos de *a -P5 de* P,- $ resetear*o para que retome *a e0ecuci4n norma*
de* programa.
Para poder e*iminar un eventua* 2*oqueo de *a -P5 durante *a e0ecuci4n de* programa principa*! se
inserta en 3* una instrucci4n especia*<-&R"#T (-*eaR "atc= #og Timer(&a cua* pone a cero en
interva*os regu*ares e* WDT! no permiti3ndo*e **egar a* Dina* de su temporizaci4n. %i *a -P5 no
rea*iza esta instrucci4n antes de* t3rmino de *a temporizaci4n! entonces! se asume que e* programa
se =a 2*oqueado por a*g9n motivo $ se eDect9a e* reset de *a -P5.
'* periodo m;nimo a*canzado e* cua* *a -P5 es reseteada es de unos 1' 1& (depende de *a
temperatura $ de *a tensi4n de a*imentaci4n(. 's posi2*e! sin em2argo! asignar e* presca*er a* "#T
a Din de o2tener retardos ma$ores (=asta unos 263 &(*undo&(.
Para =a2i*itar e* WDT de2emos! en *a Dase de programaci4n! =a2i*itar e* D*ag WDTE de *a pa*a2ra de
conDiguraci4n. &a moda*idad de activaci4n de este D*ag! depende de* programador usado.
A&i*n#ción d(+ %r(&c#+(r #+ WDT:
Actuando so2re e* 2it PSA de* registro OPTION@REG es posi2*e asignar e* presca*er a* WDT para
o2tener tiempos de intervenci4n ma$ores. '* 2it P%A va seteado a uno con *a instrucci4n<
7S$ OPTION@REG6PSA
'n caso contrario! e* presca*er serF asignado a* TIMER ,. 12viamente! asignando e* presca*er a*
WDT! no serF posi2*e usar*o con e* TIMER , $ viceversa.%eg9n *os va*ores de *os 2its PS,6 PS1 2
PS2 de* OPTION@REG podremos o2tener distintos interva*os de retardo. &a e*ecci4n correcta
de2erF ser =ec=a teniendo en cuenta e* mFLimo retardo que *ogramos o2tener en nuestro programa
tras *a e0ecuci4n de dos instrucciones C"RWDT sucesivas.
'n *a ta2*a siguiente vemos *os retardos! seg9n *os va*ores de P%! P%1 $ P%2<
P%2...P%1...P%....#,>,%1R......................Retardo (ms( .
.........................1...............................1/ ...............1..........2...............................3+
........1.................4...............................C2 ........1.......1........../.............................144
1........................1+.............................2// 1...............1.........32.............................)C+
1........1................+4...........................1.1)2 1........1.......1........12/..........................2.34
1.=. PERTOS DE ENTRADA<SA"IDA 4I<O5.
&os microprocesadores P,-1+./4 tienen 2 puertos de entrada/sa*ida para*e*os de usos genera*es
denominados Pu(rto A $ Pu(rto 7.
'* Pu(rto A es de ! /it& $ e* Pu(rto 7 es de ' /it&
.
&os puertos de* microcontro*ador P,-1+./4 son e* medio de comunicaci4n con e* mundo eLterior! en
e**os podremos conectar *os periD3ricos o circuitos necesarios como por e0emp*o *os m4du*os &-#!
motores e*3ctricos! etcJ pero estas coneLiones no se podrFn rea*izar ar2itrariamente. 'Listen unas
reg*as 2Fsicas que de2erFn cump*irse para que e* microcontro*ador no suDra daGos o se destru$a.
Para e**o es necesario conocer *os *imites de corriente que puede mane0ar e* microcontro*ador.
"IMITE DE CORRIENTE PARA "OS PERTOS AAA B A7A.
&os puertos PAP $ P8P de* microcontro*ador podrFn ser programados como entradas $ sa*idas
indiDerentemente. Para e* caso de que sean programados como sa*ida se denominan AModo
$u(nt(A por que suministran corriente $ cuando son programados como entrada se denominan
AModo Su1id(roA por que reci2en corriente.
&a mFLima corriente que puede suministrar una *;nea programada como sa*ida es de 2 mi*i@
amperios! pero si uti*izamos toda *as *;neas de* puerto PAP programadas como sa*ida! no de2erF
eLceder de )mA para todo e* puerto PAP. Para e* caso de* puerto P8P no de2erF eLceder de 1
mA.
%i *as programamos como entradas (%umidero(! *a corriente mFLima que puede mane0ar una so*a
*;nea es de 2) mA. Para e* caso de* puerto PAP programado con todas sus *;neas como entrada! *a
mFLima es de / mA. 'n e* caso de* puerto P8P es de 1) mA.
'n caso de querer uti*izar periD3ricos que mane0en ma$or cantidad de corriente de *a especiDicada!
=a2rF que ap*icar un circuito acop*ador como por e0emp*o *os 2uDDers! transistores que se encarguen
de contro*ar *a corriente! etc.
Id(nti-ic#ción d( +o& Pin(& uti+i9#do& %#r# +o& %u(rto& d( (ntr#d# 2 &#+id#.
'n *a imagen siguiente se podrF o2servar c*aramente que e* microcontro*ador tiene dos puertos
denominados PAP $ P8P. '* puerto PAP tiene ) *;neas disponi2*es ( RA,6 RA16 RA26 RA36 RA!( $ e*
puerto P8P tiene / *;neas disponi2*es ( R7,6 R716 R726 R736 R7!6 R7=6 R706 R7C(.
Am2os Puertos suman un tota* de 13 *;neas que podrFn ser programadas independientemente como
entradas o como sa*idas. 'stas son *as *;neas que estarFn destinadas a comunicar e*
microcontro*ador con e* mundo eLterior! como por e0emp*o motores! diodos *uminosos P&edsP!
m4du*os &-#! tec*ados matricia*es! etc.
Tam2i3n =a$ que =acer menci4n a que e* Pin n9mero 3 perteneciente a* puerto PAP ( RA!( tam2i3n
tiene otra nomenc*atura denominada ATOCDIA! *o cua* quiere decir que esta *;nea se puede
programar como entrada! sa*ida $ temporizador/contador.
Con-i*ur#ción d( +o& %u(rto& d( Entr#d#<S#+id#.
&os 2its de cada puerto se conDiguran mediante *os 2its correspondientes de un registro de contro*
asociado que reci2e e* nom2re de TRIS. 'n rea*idad cada puerto soporta dos registros<
1. '* registro de datos! a* que se denomina Puerto A o 8 ( PortA o Port7(.
2I '* registro de contro* TRISA o TRIS7! con e* que se programa e* sentido ('ntrada o %a*ida( de
*as *;neas de cada puerto.
&os Puertos A $ 8 se corresponden con *as posiciones ) $ + de* Frea de datos. -ada uno de sus 2its
puede programarse como una *;nea de 'ntrada o de %a*ida! seg9n se ponga un 1 4 un en e* 2it de*
registro de contro* TRIS correspondiente.
5n 1 en e* 2it PLP de* registro TRISA pone en a*ta impedancia ('ntrada( *a *;nea asociada PLP de*
Puerto A. %i en e* 2it PLP de TRISA =u2iese un ! e* contenido de* 2iesta2*e de datos
correspondiente de* Puerto A pasar;a a *a patita de '/% eLterna.
-ua*quier *;nea puede Duncionar como 'ntrada o como %a*ida. %in em2argo! si act9a como 'ntrada!
*a inDormaci4n que se introduce desde e* eLterior no se memoriza o gra2a! pasa simp*emente por un
dispositivo triestado por *o cua* e* va*or de dic=a inDormaci4n de2e mantenerse =asta que sea *e;da.
&a *ectura se rea*iza en Ati(1%o r(#+A.
-uando una patita de '/% Dunciona como sa*ida! e* 2it que proviene de* 2us de datos se guarda en
e* 2iesta2*e de* dato con *o cua* *a inDormaci4n que oDrece esta patita permanece invaria2*e =asta
que se reescri2a otro 2it.
Para conDigurar *a patita como 'ntrada! =a$ que cargar un 1 en e* 2iesta2*e de contro* de '/%
mientras que =a$ que cargar un si se desea que sea %a*ida.
-ada *;nea de '/% de *os puertos se programa de Dorma independiente $ puede ser 'ntrada o %a*ida.
-uando se produce un reset! todos *os 2its de *os registros TRIS pasan a tener e* va*or 1 $ todas
*as *;neas de '/% act9an como 'ntrada por evidentes motivos de seguridad para evitar daGos
irrepara2*es.
&os puertos que contienen entradas $ sa*idas necesitan una atenci4n especia* a* escri2ir e*
programa. ,nstrucciones como /&- $ /c- comienzan *e$endo e* va*or de* puerto $ cargFndo*o en e*
registro WJ a**; e0ecutan *a puesta a 1 4 a de* 2it se*eccionado $! *uego! depositan e* registro W en
e* puerto. Tam2i3n =a$ que tener en cuenta *as modiDicaciones que se produzcan en *as patitas que
son entrada $ pasan a sa*ida! pues pueden estar presentes datos antiguos en e* registro de sa*ida
de* puerto a* ser memorizados.
Ha$ que prestar muc=a atenci4n a *as operaciones que! tras una *ectura de un puerto. sigue una
escritura de *a misma. %e de2e de0ar pasar un tiempo determinado para que se esta2i*ice e* vo*ta0e
de *as patitas. ,nsertando entre *a *ectura $ *a escritura una instrucci4n NOP o cua*quier otra que no
imp*ique a *os puertos! se e*iminan estos errores potencia*es.
1.0. INTERRPCIONES.
'* sistema de interrupciones consiste en un mecanismo por e* cua* un evento interno o eLterno!
as;ncrono respecto de* programa! puede interrumpir *a e0ecuci4n de 3ste produciendo
automFticamente un sa*to a una su2rutina de atenci4n! de manera que pueda atender
inmediatamente e* evento! $ retomar *uego *a e0ecuci4n de* programa eLactamente en donde
esta2a en e* momento de ser interrumpido.
'ste mecanismo es mu$ 9ti* por e0emp*o para e* mane0o de timers o rutinas que de2en repetirse
peri4dicamente (reDres= de disp*a$! antire2ote de tec*ado! etc.(! detecci4n de pu*sos eLternos!
recepci4n de datos! etc.
$uncion#1i(nto
&as interrupciones se comportan casi eLactamente igua* que *as su2rutinas. #esde e* punto de vista
de* contro* de* programa! a* producirse una interrupci4n se produce e* mismo eDecto que ocurrir;a si
e* programa tuviese un CA"" ,,,!8 en e* punto en que se produ0o *a interrupci4n. 'n uno de *os
registros de contro* de* sistema de interrupciones eListe un 2it de =a2i*itaci4n genera* de
interrupciones GIE! que de2e ser programado en 1 para que *as interrupciones puedan actuar.
A* producirse una interrupci4n! este 2it se 2orra automFticamente para evitar nuevas
interrupciones. &a instrucci4n RET$IE que se uti*iza a* Dina* de *a rutina de interrupci4n! es id3ntica
a un retorno de su2rutina! sa*vo que ademFs co*oca en uno automFticamente e* 2it GIE vo*viendo a
=a2i*itar *as interrupciones. #entro de *a rutina de interrupci4n! e* programa de2erF pro2ar e*
estado de *os D*ags de interrupci4n de cada una de *as Duentes =a2i*itadas! para detectar cua* Due *a
que caus4 *a interrupci4n $ as; decidir que acci4n tomar.
"ó*ic# d( int(rru%cion(& %#r# +o& Econtro+#dor(& PIC10$'F.
$u(nt(&.
&a seGa* que produce *a interrupci4n es en rea*idad una so*a! que resu*ta de *a com2inaci4n de
todas *as Duentes posi2*es $ de *os 2its de =a2i*itaci4n. 'Listen dos grupos de Duentes! unas que se
=a2i*itan con so*o co*ocar en uno e* 2it GIE! $ otras que ademFs necesitan que este puesto a uno e*
2it PEIE. AdemFs! cada Duente de interrupciones tiene su respectivo 2it de =a2i*itaci4n individua*.
&as Duentes de interrupci4n var;an con cada versi4n! $ pueden ser por e0emp*o<
K ,nterrupci4n eLterna por pin R7,<INT.
K #es2orde de* Timer ( TMR,(.
K -am2io en e* estado de *os 2its 4 a C de* puerto 8.
K #es2orde de* timer 1.
K #es2orde de* timer 2.
K ,nterrupci4n de* capture/compare 1.
K ,nterrupci4n de* capture/compare 2.
K transmisi4n o recepci4n de un carFcter por *a interDace serie sincr4nica.
K transmisi4n o recepci4n de un carFcter por *a interDace serie asincr4nica.
K .in de conversi4n A/#.
K &ectura/escritura de* puerto para*e*o de comunicaci4n con otros microprocesadores.
K 'scritura de EEPROM Dina*izada.
2.1. INSTRCCIONES ASM DE" PIC10$'!.
'* microcontro*ador P,- 1+./4 tiene un tota* de 3C instrucciones de una so*a pa*a2ra! $ ademFs
otras 2' instrucciones especia*es que se corresponden con com2inaciones de 2 4 3 instrucciones
simp*es.
&as instrucciones tienen *etras re*acionadas (parFmetros( $ que tienen una interpretaci4n
diDerenciada.
&a *etra Q WR es e* registro mFs importante que tiene e* P,- $ se *e denomina ACM"ADOR! $a
que *as operaciones pasan a trav3s de 3*.
&a *etra Q 3R es un *itera* (va*or num3rico( que puede contener cua*quier va*or asignado por e*
programador entre $ 2)) (es e* mFLimo que se puede representar con un 2$te(.
&a *etra Q -R es cua*quier nom2re dado a un registro.
&a *etra Q dR indica en que *ugar se a*macenarF e* resu*tado de *a instrucci4n (en e* acumu*ador Q
WR o en e* registro Q -R(.
K %i d T ! e* resu*tado se a*macenarF en Q WR.
K %i d T 1! e* resu*tado se a*macenarF en Q -R.
Aunque nadie =a dic=o que tengamos que =acer caso a Microc=ip en todas sus recomendacionesU
A* menos para e* uso que =acemos de* P,-! no tendremos pro2*emas con estas dos instrucciones
(como mu$ 2ien dice %omarda (.
2.1.1. DE CONTRO" B MANEGO DE "ITERA"ES.
INSTRCCIÓN: ADD"W 3 (=eL T 3' 66(
D(&cri%ción:%umar a* acumu*ador e* va*or 6.
O%(r#ción:" T " V 6
'sta instrucci4n suma un va*or de un *itera* a* contenido de* registro Q WR $ *o guarda en Q WR.
E.(1%+o:
M1>&" 3 J carga e* acumu*ador " con e* va*or 3.
A##&" 1 J suma 1 a* acumu*ador.
A* Dina* e* acumu*ador tendrF e* va*or 4.
R(*i&tro STATS: ModiDica *os 2its M! #- $ -.
K M va*e 1 si e* resu*tado de *a operaci4n es .
K #- va*e 1 si e* resu*tado de *a operaci4n es un n9mero superior a 1).
K - va*e 1 si e* resu*tado de *a operaci4n es positivo o e* 2it C de* registro que contiene e*
resu*tado va*e . 'n caso contrario - va*e (resu*tado negativo(.
INSTRCCIÓN: AND"W 3 (=eL T 3? 66(
D(&cri%ción:1peraci4n *4gica AE# entre e* acumu*ador " $ e* *itera* 6
O%(r#ción:" T " AE# 6
'sta instrucci4n rea*iza una operaci4n *4gica AE# entre e* contenido de Q WR $ 3. '* resu*tado se
guarda siempre en e* acumu*ador Q WR.
E.(1%+o:
%i cargamos e* acumu*ador con e* 2inario 11118 $ =acemos un AE# con e* 2inario 11118!
nos quedarF e* resu*tado de *a operaci4n en e* acumu*ador Q WR.
M1>&" 11118
AE#&" 11118
'* resu*tado de *a operaci4n queda en Q"R T 118.
EH%+ic#ción d( +# o%(r#ción AND:
Tenemos 4 posi2*es com2inaciones entre dos 2its
AE# T
AE# 1 T
1 AE# T
1 AE# 1 T 1
>emos que so*amente en e* caso de que am2os 2its sean 1! e* resu*tado serF 1. 'sta instrucci4n
compara dos 2$tes! 2it a 2it.
R(*i&tro STATS: ModiDica e* 2it M.
K M va*e 1 si e* resu*tado de *a operaci4n es .
INSTRCCIÓN: CA"" 3 (=eL T 26 66(
D(&cri%ción: &*ama a una su2rutina en *a direcci4n 6.
O%(r#ción: -A&& @@ 6...R'T5RE @@ P-V1.
'sta instrucci4n **ama a un grupo de instrucciones (su2rutina( que comienzan en *a direcci4n 3!
donde 3 puede ser un va*or num3rico o una etiqueta. %iempre termina con *a instrucci4n de retorno
( RETRN o RET"W(.
D(-inición d( &u/rutin#:
%on un grupo de instrucciones que Dorman un programa dentro de* programa principa* $ que se
e0ecutan cuando *as **ama e* programa principa*.
ti+id#d:
%irven para uti*izar*as varias veces en cua*quier parte de* programa! sin necesidad de tener que
copiar *as mismas instrucciones! con e* consiguiente a=orro de memoria.
$uncion#1i(nto:
-uando un programa e0ecuta una instrucci4n CA""! guarda en e* &t#c3 e* va*or de* registro PCV1
( PC T Program -ounter( de manera que a* regresar de *a su2rutina contin9a con *a instrucci4n
siguiente recuperFndo*a de* &t#c3! e0ecutando *a instrucci4n de retorno RETRN o RET"W.
"i1it#cion(&:
'n e* P,-1+./4 tenemos disponi2*es ' niI(+(& d( &t#c3! por *o que e* n9mero mFLimo de CA""
reentrantes (instrucciones CA"" que contengan otra instrucci4n CA""( queda *imitado a /.
E.(1%+o:
PR,E-,PA&< etiqueta que identiDica una direcci4n de memoria.
R'TAR#1< etiqueta que identiDica e* comienzo de una su2rutina.
85-&'< etiqueta que identiDica una direcci4n de memoria.

PRINCIPAL CALL RETARDO
BTFSC PORTB, RB0
GOTO PRINCIPAL
*
*
*
RETARDO CLRF CONTADOR
BUCLE DECFSZ CONTADOR, 1
GOTO BUCLE
RETURN
'n este *istado vemos que *a su2rutina R'TAR#1 sa*ta a un grupo de instrucciones que Dorman un
2uc*e $ cuando 3ste termina regresa para seguir con *a instrucci4n siguiente a* sa*to (8T.%-...(.
R(*i&tro STATS: Eo modiDica ning9n 2it de estado.
INSTRCCIÓN: C"RWDT (=eL T +4(
D(&cri%ción: Pone e* temporizador "#T a cero.
O%(r#ción: "#T T
'sta instrucci4n se uti*iza cuando programamos e* P,- con *a opci4n W#tc8 Do* =a2i*itada.
Para evitar e* reset de* P,-! e* programa de2e contener c;c*icamente *a instrucci4n C"RWDT para
poner*o a cero. %i no se pone a cero a tiempo! e* WDT interpretarF que se =a 2*oqueado e*
programa $ e0ecutarF un reset para des2*oquear*o.
E.(1%+o:
Bucle CLRWDT
*
*
*
GOTO Bucle
R(*i&tro STATS: Eo modiDica ning9n 2it de estado.
INSTRCCIÓN: GOTO 3 (=eL T 2/ 66(
D(&cri%ción: %a*to incondiciona* a 6.
O%(r#ción: %a*to @@ 6
'sta instrucci4n e0ecuta un sa*to de* programa a *a direcci4n 6. '* parFmetro Q 3R puede ser un va*or
num3rico o una etiqueta.
E.(1%+o:

INSTRUCCIÓN 1
GOTO ABAJO
INSTRUCCIÓN 3
INSTRUCCIÓN 4
INSTRUCCIÓN
ABAJO INSTRUCCIÓN !
Primero se e0ecuta *a instrucci4n 1! despu3s GOTO $ contin9a con *a instrucci4n + sa*tFndose *as
instrucciones 3! 4 $ ).
R(*i&tro STATS: Eo modiDica ning9n 2it de estado.
INSTRCCIÓN: IOR"W 3 (=eL T 3/ 66(
D(&cri%ción: 1peraci4n *4gica 1R entre e* acumu*ador W $ e* *itera* 3
O%(r#ción: " T " 1R 6
'sta instrucci4n rea*iza un OR inc*usivo entre e* contenido de* acumu*ador Q WR $ e* *itera* 3. '*
resu*tado se guarda siempre en e* acumu*ador (Q 3R es un va*or! no un registro(.
E.(1%+o:
%i cargamos e* acumu*ador con e* 2inario 11118 $ 6T 11118! nos quedarF e* resu*tado de
*a operaci4n en e* acumu*ador Q"R.M1>&" 11118,1R&" 11118'* resu*tado de *a
operaci4n queda en Q"R T 111111118.
EH%+ic#ción d( +# o%(r#ción OR:
Tenemos 4 posi2*es com2inaciones entre dos 2its
1R T
1R 1 T 1
1 1R T 1
1 1R 1 T 1
>emos que so*amente en e* caso de que am2os 2its sean ! e* resu*tado serF . 'sta instrucci4n
compara dos 2$tes! 2it a 2it.
R(*i&tro STATS: ModiDica e* 2it M.
K M va*e 1 si e* resu*tado de *a operaci4n es .
INSTRCCIÓN: MOJ"W 3 (=eL T 3 66(
D(&cri%ción: Mover e* *itera* 3 a* #cu1u+#dor.
O%(r#ción: " T 6
'sta instrucci4n asigna a* acumu*ador Q WR e* va*or de* *itera* 3 (entre $ 2))(.
E.(1%+o:
%i tenemos e* acumu*ador a cero o con cua*quier va*or! $ queremos que contenga e* que *e
asignemos nosotros directamente entonces usaremos esta instrucci4n<
" T .
>a*or a asignar T 1.
,nstrucci4n< M1>&" 1
'* acumu*ador va*drF 1 (" T 1(.
-on distinto va*or de partida de* acumu*ador<
" T 22).
M1>&" 1
'* acumu*ador va*drF 1 (" T 1(.
R(*i&tro STATS: Eo modiDica ning9n 2it de estado.
INSTRCCIÓN: OPTION (=eL T +2(
D(&cri%ción: :uarda e* va*or de* #cu1u+#dor en e* registro OPTION.
O%(r#ción: 1PT,1E T ".
'sta instrucci4n guarda en e* registro especia* OPTION e* va*or contenido en e* acumu*ador Q WR.
E.(1%+o:
M1>&" 1H J carga e* acumu*ador con e* va*or 1H.
1PT,1E J carga e* registro 1PT,1E con e* acumu*ador.
'sta instrucci4n eListe para mantener *a compati2i*idad con *os P,- producidos con anterioridad! $
como en e* Duturo podr;a de0ar de imp*ementarse! Microc=ip aconse0a rea*izar e* e0emp*o anterior de
esta otra Dorma<
8%. %TAT5%! RP J activa e* 2anco 1.
M1>&" 1H J carga e* acumu*ador con 1H.
M1>". 1PT,1EWR': J carga 1PT,1E con e* acumu*ador.
R(*i&tro STATS: Eo modiDica ning9n 2it de estado.
INSTRCCIÓN: RET$IE (=eL T ?(
D(&cri%ción: Retorna de una interrupci4n.
O%(r#ción: .,E ,ET'RR5P-,1E.
'sta instrucci4n devue*ve e* contro* a* programa principa* despu3s de e0ecutarse una su2rutina de
gesti4n de interrupci4n.
E.(1%+o:
1R: H
85-&' :1T1 85-&' J 2uc*e inDinito.
1R: 4HJ vector de interrupci4n.
R'T.,' J retorna de *a interrupci4n.
'ste c4digo de programa e0ecuta un 2uc*e inDinito. %i =a2i*itamos una de *as interrupciones de*
1+./4! en cuanto 3sta se produzca pasarF e* contro* a* programa situado en *a direcci4n 4H $ *a
instrucci4n RET$IE regresa de *a interrupci4n.A* e0ecutarse una interrupci4n! e* 2it GIE de* registro
INTCON se pone a $ as; evita que otra interrupci4n se produzca mientras $a estF con una en
marc=a.
-on *a instrucci4n RET$IE ponemos de nuevo e* 2it GIE a 1 para as; atender de nuevo a Duturas
interrupciones.
R(*i&tro STATS: Eo modiDica ning9n 2it de estado.
INSTRCCIÓN: RET"W (=eL T 34 66(
D(&cri%ción: Retorno de su2rutina $ carga *itera* 6 en e* acumu*ador.
O%(r#ción: R'T1RE1 con " T 6.
'sta instrucci4n retorna de una su2rutina a* programa principa*! cargando e* acumu*ador Q WR con
e* *itera* Q 3R.'s *a 9*tima instrucci4n que Dorma una su2rutina (a* igua* que RETRN(.XH para qu3
me sirve regresar de una su2rutina con un determinado *itera* en e* acumu*adorY Eos serF mu$ 9ti*
a* programar con TA7"AS.
E.(1%+o:

CALL SUBRUT1 " ll#$# # Su%&u'1(
)O*WF DATO 1 " c#&+# W e, D#'-1(
CALL SUBRUT. " ll#$# # Su%&u'.(
)O*WF DATO. " c#&+# W e, D#'-.(
*
*
SUBRUT1 RETLW 0A " c#&+# W / 0A 0 &e'-&,#(
SUBRUT. RETLW 0B " c#&+# W / 0B 0 &e'-&,#(
R(*i&tro STATS: Eo modiDica ning9n 2it de estado.
INSTRCCIÓN: RETRN (=eL T
D(&cri%ción: Retorno de su2rutina.
O%(r#ción: R'T1RE1.
'sta instrucci4n retorna de una su2rutina a* programa principa* en *a instrucci4n siguiente a *a
**amada de *a su2rutina! tomando e* va*or a*macenado en e* &t#c3 para continuar.
's *a 9*tima instrucci4n que Dorma una su2rutina (a* igua* que RET"W(.
'0emp*o<Z/2[

CALL CO)PARA " ll#$# # C-$1#&#(
INSTRUCCION1
INSTRUCCION.
*
*
CO)PARA INSTRUCCIÓN R1
INSTRUCCIÓN R.
RETURN
Aqu; **amamos a *a su2rutina -1MPARA! se e0ecutan *as instrucciones R1 $ R2 $ con e* RETRN
regresa a *a instrucci4n siguiente a* CA"" $ e0ecuta *as instrucciones 1! 2 $ sigue con e* programa.
R(*i&tro STATS: Eo modiDica ning9n 2it de estado.
INSTRCCIÓN: S"EEP (=eL T +3(
D(&cri%ción: 'n modo reposo..
O%(r#ción: 'E '%P'RA.
'sta instrucci4n detiene *a e0ecuci4n de* programa $ de0a e* P,- en modo suspendido.
Eo e0ecuta ninguna instrucci4n =asta que sea nuevamente reinicia*izado (reset(.#urante este modo!
e* contador de* "atc= #og ( WDT( sigue tra2a0andoJ $ si *o tenemos activado! e* P,- se resetearF
por este medio.
'* consumo de energ;a es m;nimo.
E.(1%+o: (no =a$(
R(*i&tro STATS: Eo modiDica ning9n 2it de estado.
INSTRCCIÓN: S7"W 3 (=eL T 3- 66(
D(&cri%ción: Resta a* *itera* 6 e* va*or de* acumu*ador.
O%(r#ción: " T 6 @ "
'sta instrucci4n resta a* *itera* 3 e* va*or a*macenado en e* acumu*ador Q WR $ e* resu*tado se
guarda en e* acumu*ador.
E.(1%+o:
M1>&" 1 J carga e* acumu*ador " con e* va*or 1.
%58&" 1) J resta a 1) e* va*or de* acumu*ador.
A* Dina* e* acumu*ador tendrF e* va*or " T ).
R(*i&tro STATS: ModiDica *os 2its M! #- $ -.
K M va*e 1 si e* resu*tado de *a operaci4n es .
K #- va*e 1 si e* resu*tado de *a operaci4n es un n9mero superior a 1).
K - va*e 1 si e* resu*tado de *a operaci4n es positivo o e* 2it C de* registro que contiene e*
resu*tado va*e . 'n caso contrario - va*e (resu*tado negativo(.
INSTRCCIÓN: TRIS - (=eL T +.(
D(&cri%ción: :uarda e* acumu*ador en uno de *os registros de TRIS.
O%(r#ción: TR,% de D T ".
'sta instrucci4n guarda e* va*or de* acumu*ador Q WR en uno de *os registros especia*es de TRIS
que indicamos en e* parFmetro Q -R.
&os registros TRIS determinan e* Duncionamiento como entrada $ sa*ida de *as *;neas ,/1 de* P,-.
E.(1%+o:

)O*LW 1!2 " c#&+# el #cu$ul#3-& W c-, el 4#l-& 1!2(
TRIS PORTA " c#&+# el &e+56'&- PORTA c-, el #cu$ul#3-&(
'sta instrucci4n eListe para mantener *a compati2i*idad con *os P,- producidos anteriormente!$
como en e* Duturo podr;a de0ar de imp*ementarse! Microc=ip aconse0a rea*izar e* e0emp*o anterior de
esta otra Dorma (aunque ocupa mFs memoria...(<

BSF STATUS, RP0 " #c'54# el %#,c- 1(
)O*LW 1!2 " c#&+# el #cu$ul#3-& c-, el 4#l-& 1!2
)O*WF TRISA " c#&+# el &e+56'&- PORTA c-, W(
R(*i&tro STATS: Eo modiDica ning9n 2it de estado.
INSTRCCIÓN: FOR"W 3 (=eL T 3A 66(
D(&cri%ción: 1peraci4n *4gica OR (Hc+u&iIo entre e* #cu1u+#dor $ e* *itera* 3.
O%(r#ción: " T " S1R 6
'sta instrucci4n rea*iza un OR (Hc+u&iIo entre e* contenido de* acumu*ador Q WR $ e* va*or de*
*itera* 3. '* resu*tado se guarda siempre en e* #cu1u+#dor ( 3 es un *itera*! no un registro(.
E.(1%+o:
%i cargamos e* #cu1u+#dor con e* 2inario 11118 $ =acemos un FOR con e* 2inario
11118! nos quedarF e* resu*tado de *a operaci4n en e* acumu*ador Q WR.
M1>&" 11118
S1R&" 11118
'* resu*tado de *a operaci4n queda en Q WR T 11118.
EH%+ic#ción d( +# o%(r#ción FOR:
Tenemos 4 posi2*es com2inaciones entre dos 2its<
S1R T
S1R 1 T 1
1 S1R T 1
1 S1R 1 T
>emos que si am2os 2its son igua*es e* resu*tado serF . H si am2os son diDerentes! e* resu*tado
serF 1. 'sta instrucci4n compara dos 2$tes! 2it a 2it.
R(*i&tro STATS: ModiDica e* 2it M.
K M va*e 1 si e* resu*tado de *a operaci4n es .
2.1.2 ORIENTADAS A REGISTROS.
INSTRCCIÓN: ADDW$ -6d (=eL T C DD(
D(&cri%ción: %uma e* acumu*ador $ e* registro QDR.
O%(r#ción: d T " V D (d puede ser " 4 D(.
'sta instrucci4n suma e* contenido de* #cu1u+#dor con e* registro Q -R! $ e* resu*tado se guarda
dependiendo de* va*or de Q dR.
%i d T ! se guarda en Q WR.
%i d T 1! se guarda en Q -R.
%i no se pone nada! e* va*or por deDecto es 1 $ se guarda en Q -R.
Tam2i3n se puede indicar directamente Q WR 4 Q -R.
E.(1%+o: %i tomamos como va*ores inicia*es " T ) $ #AT1 T 1.

ADDWF DATO " DATO / 1 0 W / (
ADDWF DATO, 1" DATO / 1 0 W / (
ADDWF DATO, 0" W / 1 0 DATO / 10(
ADDWF DATO, W" W / 1 0 DATO / 10(
R(*i&tro STATS: ModiDica *os 2its M! #- $ -.
K M va*e 1 si e* resu*tado de *a operaci4n es .
K #- va*e 1 si e* resu*tado de *a operaci4n es un n9mero superior a 1).
K - va*e 1 si e* resu*tado de *a operaci4n es positivo o e* 2it C de* registro que contiene e*
resu*tado va*e . 'n caso contrario - va*e (resu*tado negativo(.
INSTRCCIÓN: ANDW$ -6d (=eL T ) DD(
D(&cri%ción: 1peraci4n *4gica AND entre e* #cu1u+#dor $ e* registro -.
O%(r#ción: d T " AE# D (d puede ser Q"R o QDR(.
'sta instrucci4n rea*iza una operaci4n *4gica AND entre e* contenido de* acumu*ador Q WR $ e*
registro Q -R. '* resu*tado se guarda seg9n sea e* va*or de Q dR.
%i d T ! se guarda en Q WR.
%i d T 1! se guarda en Q -R.
%i no se pone nada! e* va*or por deDecto es 1 $ se guarda en Q -R.
Tam2i3n se puede indicar directamente Q WR 4 Q -R.
E.(1%+o:
%i queremos eLtraer *os 4 2its menos signiDicativos de un registro! podremos uti*izar una mFscara
para o2tener*os.
5samos e* va*or 11118 para rea*izar *a operaci4n ADN $ as; o2tener*os (para *os 4 2its mFs
signiDicativos uti*izar;amos e* va*or 11118(.
-argamos e* va*or de* cua* queremos eLtraer *os 4 2its menos signiDicativos en Q -R (D T
11118(.
-argamos e* #cu1u+#dor con *a mFscara (" T 11118(.
AE#". D!"
'* resu*tado queda guardado en e* #cu1u+#dor (" T 118(.
EH%+ic#ción d( +# o%(r#ción AND:
Tenemos 4 posi2*es com2inaciones entre dos 2its
AE# T
AE# 1 T
1 AE# T
1 AE# 1 T 1
>emos que so*amente en e* caso de que am2os 2its sean 1! e* resu*tado serF 1.
'sta instrucci4n compara dos 2$tes! 2it a 2it.
R(*i&tro STATS: ModiDica e* 2it M.
K M va*e 1 si e* resu*tado de *a operaci4n es .
INSTRCCIÓN: C"R$ - (=eL T 1 /D(
D(&cri%ción: Pone a cero e* registro QDR.
O%(r#ción: . T .
'sta instrucci4n pone a cero e* va*or contenido en e* registro direccionado por e* parFmetro Q -R.
Puede decirse que 2orra e* registro Q -R.
E.(1%+o:
%i queremos poner a cero e* registro TMR,! cu$a direcci4n es 1H! tendr;amos que uti*izar<
-&R. 1H
%i =emos inc*uido a* inicio de* c4digo Duente e* Dic=ero PIC10$'!.INC! podemos uti*izar e* nom2re
sim24*ico de dic=o registro<
-&R. TMR
R(*i&tro STATS: ModiDica e* 2it M $ *o pone a 1 ($a que e* resu*tado de *a operaci4n es (.
INSTRCCIÓN: C"RW (=eL T 1 (
D(&cri%ción: Pone e* #cu1u+#dor a cero.
O%(r#ción: " T
'sta instrucci4n pone a cero e* va*or contenido en e* registro Q WR ( #cu1u+#dor(
E.(1%+o: Eo es necesario\
R(*i&tro STATS: ModiDica e* 2it M $ *o pone a 1 ($a que e* resu*tado de *a operaci4n es (.
INSTRCCIÓN: COM$ -6d (=eL T ? DD(
D(&cri%ción: -omp*ementa e* registro Q -R.
O%(r#ción: d T E1T D (d puede ser Q WR 4 Q -R(.
'sta instrucci4n eDect9a e* comp*emento de* va*or contenido en e* registro direccionado por e*
parFmetro Q -R.
&a operaci4n de co1%+(1(nt#r consiste en invertir *os 2its< poner *os ceros a unos $ *os unos a
ceros.
'* parFmetro Q dR determina e* destino de* va*or o2tenido.
%i d T Q WR! e* resu*tado se a*macena en e* #cu1u+#dor.
%i d T Q -R! e* resu*tado se a*macena en e* propio registro Q -R.
E.(1%+o:
%i tenemos en P1RTA e* va*or 11118! a* e0ecutar<
-1M. P1RTA
'* resu*tado serF P1RTA T 11118.
%i ap*icamos para e* mismo va*or inicia*! *a instrucci4n<
-1M. P1RTA! "
'* resu*tado serF " T 11118 $ P1RTA T 11118.
R(*i&tro STATS: ModiDica e* 2it M.
K M va*e 1 si e* resu*tado de *a operaci4n es .
INSTRCCIÓN: DEC$ -6d (=eL T 3 DD(
D(&cri%ción: #ecrementa en 1 e* registro QDR.
O%(r#ción: d T D A 1 (d puede ser Q WR 4 Q -R(.
'sta instrucci4n decrementa e* contenido de* registro direccionado por e* parFmetro Q -R. '*
parFmetro Q dR determina e* destino de* va*or o2tenido.
%i d T Q WR! e* resu*tado se a*macena en e* #cu1u+#dor.
%i d T Q -R! e* resu*tado se a*macena en e* propio registro Q -R.
E.(1%+o:
%i tenemos un registro #,A T C.
Ap*icando *a instrucci4n
#'-. #,A! ! tendremos " T + $ #,A T C.
%i ap*icamos esta otra
#'-. #,A! 1! tendremos #,A T +.
R(*i&tro STATS: ModiDica e* 2it M.
K M va*e 1 si e* resu*tado de *a operaci4n es .
INSTRCCIÓN: DEC$S) -6d (=eL T 8 DD(
D(&cri%ción: #ecrementa en 1 a Q -R! $ si Q -R T sa*ta *a siguiente instrucci4n.
O%(r#ción: d T D A 1! si d T %A&TA (d puede ser Q WR 4 Q -R(.
'sta instrucci4n decrementa e* contenido de* registro direccionado por e* parFmetro Q -R! $ si e*
resu*tado es se sa*ta *a instrucci4n siguiente. '* parFmetro Q dR determina e* destino de* va*or
o2tenido.
%i d T Q WR! e* resu*tado se a*macena en e* #cu1u+#dor.
%i d T Q -R! e* resu*tado se a*macena en e* propio registro Q -R.
E.(1%+o:
#'-.%M >A&1R! "
,E%TR5--,1E 1
,E%TR5--,]E 2
%i e* contenido de* registro Q>A&1RR a* decrementar*o en 1 es igua* a ! se guarda e* resu*tado en e*
#cu1u+#dor $ sigue con *a ,E%TR5--,1E2! sa*tFndose *a ,E%TR5--,1E1.
%i e* resu*tado que guardamos en W no es ! sigue con *a ,E%TR5--,1E1 $ despu3s con *a
,E%TR5--,1E2 (no se sa*ta *a inmediata siguiente(.
R(*i&tro STATS: Eo modiDica ning9n 2it de estado.
INSTRCCIÓN: INC$ -6d (=eL T A DD(
D(&cri%ción: ,ncrementa en 1 e* registro Q -R.
O%(r#ción: d T D V 1 (d puede ser Q WR 4 Q -R(.
'sta instrucci4n incrementa en uno e* contenido de* registro direccionado por e* parFmetro Q -R. '*
parFmetro Q dR determina e* destino de* va*or o2tenido.
%i d T Q WR! e* resu*tado se a*macena en e* #cu1u+#dor.
%i d T Q -R! e* resu*tado se a*macena en e* propio registro Q -R.
E.(1%+o:
%i tenemos un registro #,A T C.
Ap*icando *a instrucci4n
,E-. #,A! ! tendremos " T / $ #,A T C.
%i ap*icamos esta otra
,E-. #,A! 1! tendremos #,A T /.
R(*i&tro STATS: ModiDica e* 2it M.
K M va*e 1 si e* resu*tado de *a operaci4n es .
INSTRCCIÓN: INC$S) -6d (=eL T . DD(
D(&cri%ción: ,ncrementa en 1 a Q -R! $ si Q -R T sa*ta *a siguiente instrucci4n.
O%(r#ción: d T D V 1! si d T %A&TA (d puede ser Q WR 4 Q -R(.
'sta instrucci4n incrementa en uno e* contenido de* registro direccionado por e* parFmetro Q -R! $ si
e* resu*tado es se sa*ta *a instrucci4n siguiente. '* parFmetro Q dR determina e* destino de* va*or
o2tenido.
%i d T Q WR! e* resu*tado se a*macena en e* #cu1u+#dor.
%i d T Q -R! e* resu*tado se a*macena en e* propio registro Q -R.
E.(1%+o:
,E-.%M >A&1R! "
,E%TR5--,1E 1
,E%TR5--,]E 2
%i e* contenido de* registro Q>A&1RR a* incrementar*o en 1 es igua* a ! se guarda e* resu*tado en e*
acumu*ador $ sigue con *a ,E%TR5--,1E2! sa*tFndose *a ,E%TR5--,1E1.
%i e* resu*tado que guardamos en " no es ! sigue con *a ,E%TR5--,1E1 $ despu3s con *a
,E%TR5--,1E2 (no se sa*ta *a inmediata siguiente(.
R(*i&tro STATS: Eo modiDica ning9n 2it de estado.
INSTRCCIÓN: IORW$ -6d (=eL T 4 DD(
D(&cri%ción: 1peraci4n *4gica OR inc+u&iIo entre e* #cu1u+#dor $ un registro.
O%(r#ción: d T " 1R D (d puede ser Q WR 4 Q -R(.
'sta instrucci4n rea*iza una operaci4n *4gica OR inc+u&iIo entre e* acumu*ador Q WR $ e* registro
direccionado por e* parFmetro Q -R. '* parFmetro Q dR determina donde se a*macenarF e* resu*tado
de *a operaci4n.
%i d T ! se guarda en Q WR.
%i d T 1! se guarda en Q -R.
%i no se pone nada! e* va*or por deDecto es 1 $ se guarda en Q -R.
Tam2i3n se puede indicar directamente Q WR 4 Q -R.
E.(1%+o:
%i asignamos *os va*ores " T 11118 $ D T 11118.

IORWF 7 " W / 10101010B 0 7 / 11111111B(
IORWF 7, 1" W / 10101010B 0 7 / 11111111B(
IORWF 7, 0" 7 / 01010101B 0 W / 11111111B(
IORWF 7, W" 7 / 01010101B 0 W / 11111111B(
R(*i&tro STATS: ModiDica e* 2it M.
K M va*e 1 si e* resu*tado de *a operaci4n es .
INSTRCCIÓN: MOJ$ -6d (=eL T / DD(
D(&cri%ción: Mueve e* contenido de Q -R a* #cu1u+#dor o a* propio registro Q -R.
O%(r#ción: d T D (d puede ser Q WR 4 Q -R(.
'sta instrucci4n copia e* contenido de* registro direccionado por e* parFmetro Q -R en e* acumu*ador
Q WR o en e* mismo registro Q -R. '* parFmetro Q dR determina e* destino.
%i d T ! se guarda en Q WR.
%i d T 1! se guarda en Q -R.
%i no se pone nada! e* va*or por deDecto es 1 $ se guarda en Q -R.
Tam2i3n se puede indicar directamente Q WR 4 Q -R.
'* motivo para copiar e* contenido de un registro so2re si mismo! no es otro que poder compro2ar
en e* registro STATS e* estado de* 2it M.
E.(1%+o:
%i tenemos e* registro '#A# T 3/.

)O*F EDAD, 0 " 8#ce 9ue W / 3:(
)O*F EDAD, 1 " 8#ce 9ue EDAD / 3:(
)O*F EDAD, W " 8#ce 9ue W / 3:(
)O*F EDAD " 8#ce 9ue EDAD / 3:(
R(*i&tro STATS: ModiDica e* 2it M.
K M va*e 1 si e* resu*tado de *a operaci4n es .
INSTRCCIÓN: MOJW$ - (=eL T /D(
D(&cri%ción: Mueve e* contenido de Q WR a* registro Q -R.
O%(r#ción: D T ".
'sta instrucci4n copia e* contenido de* acumu*ador Q WR en e* registro direccionado por e* parFmetro
Q -R.
E.(1%+o: %i queremos escri2ir e* va*or 1H en e* registro TMR,! que estF situado en *a
direcci4n 1H! tendremos que cargar primero e* va*or en e* #cu1u+#dor $ despu3s copiar*o a*
registro.

)O*WF 102 " c#&+#& el 4#l-& 102 e, el acumulador(
)O*WF 012 " c-15# el acumulador e, l# 35&ecc5;, 012(
-on *os registros uti*izados por e* P,- para Dunciones espec;Dicas! es =a2itua* no escri2ir
directamente su direcci4n! sino e* nom2re sim24*ico deDinido en e* Dic=ero PIC10$'!.INC. 'n e*
e0emp*o anterior nos quedar;a as;<

)O*WF 102 " c#&+#& el 4#l-& 102 e, el acumulador(
)O*WF T)R0 " c-15# el #cu$ul#3-& e, el &e+56'&- TMR0(
R(*i&tro STATS: Eo modiDica ning9n 2it de estado.
INSTRCCIÓN: NOP (=eL T (
D(&cri%ción: Eo opera.
O%(r#ción: @ @ @ @ @ @
'sta instrucci4n no rea*iza ninguna Dunci4n espec;Dica! pero consume ! cic+o& d( r(+o. comp*etos.
's 9ti* para insertar un retardo igua* a un cic*o de mFquina.
E.(1%+o:
5ti*izando un crista* de cuarzo de 4 M=z. en e* osci*ador! podremos o2tener un retardo igua* a un
microsegundo por cada instrucci4n NOP que insertemos en e* c4digo de* programa<

RETARDO NOP
NOP
NOP
RETURN
-ada vez que **amemos a *a su2rutina R'TAR#1! o2tendremos 3 microsegundos de demora.
R(*i&tro STATS: Eo modiDica ning9n 2it de estado.
INSTRCCIÓN: R"$ -6d (=eL T # DD(
D(&cri%ción: Rota a *a izquierda e* registro QDR.
O%(r#ción: d T ^^ 1 (d puede ser Q"R 4 QDR(.
'sta instrucci4n rota a *a izquierda todos *os 2its de* registro direccionado en e* parFmetro Q -R
pasando por e* 2it CARRB de* registro STATS (o si se preDiere! desde *os 2its menos signiDicativos
a *os mFs signiDicativos(.
's como si 1u+ti%+ic:r#1o& %or do& e* contenido de* registro.
>eamos e* registro Q -R de Dorma grFDica<
'* #C pasa a* CARRB de* registro STATS! e* contenido de* CARRB pasa a* #! e* # a* #1! etc.
'* parFmetro Q dR determina e* destino.
%i d T ! se guarda en Q WR.
%i d T 1! se guarda en Q -R.
%i no se pone nada! e* va*or por deDecto es 1 $ se guarda en Q -R.
Tam2i3n se puede indicar directamente Q WR 4 Q -R.
E.(1%+o:
%i tenemos e* registro >A&1R T 18 $ ap*icamos *a instrucci4n
R&. >A&1R
e* resu*tado serF >A&1R T 18 $ e* 2it - T .
%i tenemos e* registro >A&1R T 18 $ ap*icamos *a instrucci4n
R&. >A&1R
'* resu*tado serF >A&1R T 8 $ e* 2it - T 1.
R(*i&tro STATS: ModiDica e* 2it - ( CARRB(.
INSTRCCIÓN: RR$ -6d (=eL T - DD(
D(&cri%ción: Rota a *a derec=a e* registro QDR.
O%(r#ción: d T D __ 1 (d puede ser Q"R 4 QDR(.
'sta instrucci4n rota a *a derec=a todos *os 2its de* registro direccionado en e* parFmetro Q -R
pasando por e* 2it CARRB de* registro STATS (o si se preDiere! desde *os 2its mFs signiDicativos a
*os menos signiDicativos(.
's como si diIidiKr#1o& %or do& e* contenido de* registro.
>eamos e* registro Q -R de Dorma grFDica<
'* 2it - de* registro STATS pasa a* #C! e* # pasa a* 2it -! e* #1 a* #! etc.
'* parFmetro Q dR determina e* destino.
%i d T ! se guarda en Q WR.
%i d T 1! se guarda en Q -R.
%i no se pone nada! e* va*or por deDecto es 1 $ se guarda en Q -R.
Tam2i3n se puede indicar directamente Q WR 4 Q -R.
E.(1%+o:
%i tenemos e* registro >A&1R T 18 $ ap*icamos *a instrucci4n
RR. >A&1R
e* resu*tado serF >A&1R T 8 $ e* 2it - T 1.
%i tenemos e* registro >A&1R T 18 $ ap*icamos *a instrucci4n
RR. >A&1R
'* resu*tado serF >A&1R T 18 $ e* 2it - T .
R(*i&tro STATS: ModiDica e* 2it - ( CARRB(.
INSTRCCIÓN: S7W$ -6d (=eL T 2 DD(
D(&cri%ción: Resta e* acumu*ador de* registro QDR.
O%(r#ción: d T D A " (d puede ser Q"R 4 QDR(.
'sta instrucci4n resta e* va*or contenido en e* acumu*ador Q WR de* va*or contenido en e* registro
direccionado por e* parFmetro Q -R. '* parFmetro Q dR determina e* destino.
%i d T ! se guarda en Q WR.
%i d T 1! se guarda en Q -R.
%i no se pone nada! e* va*or por deDecto es 1 $ se guarda en Q -R.
Tam2i3n se puede indicar directamente Q WR 4 Q -R.
E.(1%+o:
%eg9n sean *os va*ores de " $ e* registro #AT1! si ap*icamos
%58". #AT1! o2tendremos diDerentes resu*tados en e* 2it -ARRH.
%i #AT1 T 3 $ " T 2J e* resu*tado serF #AT1 T 1 $ - T 1.
%i #AT1 T 2 $ " T 2J e* resu*tado serF #AT1 T $ - T 1.
%i #AT1 T 1 $ " T 2J e* resu*tado serF #AT1 T ..H $ - T .
>emos que - T 1 porque e* resu*tado es positivo $ - T cuando e* resu*tado es negativo.
R(*i&tro STATS: ModiDica *os 2its M! #- $ -.
K M va*e 1 si e* resu*tado de *a operaci4n es .
K #- va*e 1 si e* resu*tado de *a operaci4n es un n9mero superior a 1).
. - va*e 1 si e* resu*tado de *a operaci4n es positivo o e* 2it C de* registro que contiene e* resu*tado
va*e . 'n caso contrario - va*e (resu*tado negativo(.
INSTRCCIÓN: SWAP$ -6d (=eL T ' DD(
D(&cri%ción: ,ntercam2ia *os 4 2its mFs signiDicativos con *os 4 menos (ni22*es(
O%(r#ción: D T 123 %"AP 4)+C de Q -R.
'sta instrucci4n intercam2ia e* va*or de *os 4 2its mFs signiDicativos (#C@#4( contenidos en e*
registro direccionado por e* parFmetro Q -R! con *os 4 2its menos signiDicativos (#3@#( de* mismo.
'* parFmetro Q dR determina e* destino.
%i d T ! se guarda en Q WR.
%i d T 1! se guarda en Q -R.
%i no se pone nada! e* va*or por deDecto es 1 $ se guarda en Q -R.
Tam2i3n se puede indicar directamente Q WR 4 Q -R.
E.(1%+o:
%i tenemos >A&1R T 11118 $ " T 8! a* ap*icar
%"AP. >A&1R J >A&1R T 11118 $ " T 8.
%"AP. >A&1R! "J >A&1R T 11118 $ " T 11118.
-on *a primera instrucci4n modiDicamos e* va*or de* registro #AT1! $ en *a segunda instrucci4n
modiDicamos e* va*or de* #cu1u+#dor sin que var;e e* registro #AT1.
R(*i&tro STATS: Eo modiDica ning9n 2it de estado.
INSTRCCIÓN: FORW$ -6d (=eL T + DD(
D(&cri%ción: 1peraci4n *4gica FOR entre e* #cu1u+#dor $ Q -R.
O%(r#ción: d T D S1R " (d puede ser Q WR 4 Q -R(.
'sta instrucci4n eDect9a *a operaci4n *4gica FOR (1R eLc*usivo( entre e* va*or contenido en e*
acumu*ador Q WR $ e* va*or contenido en e* registro direccionado por e* parFmetro Q -R. '* parFmetro
Q dR determina e* destino.
%i d T ! se guarda en Q WR.
%i d T 1! se guarda en Q -R.
%i no se pone nada! e* va*or por deDecto es 1 $ se guarda en Q -R.
Tam2i3n se puede indicar directamente Q WR 4 Q -R.
E.(1%+o:
%i tenemos e* registro >A&1R T 11118 $ " T 111111118! a* ap*icar *a instrucci4n
S1R". >A&1R J =ace >A&1R T 11118 $ " no var;a.
S1R". >A&1R! " J =ace " T 11118 $ >A&1R no var;a.
EH%+ic#ción d( +# o%(r#ción FOR:
Tenemos 4 posi2*es com2inaciones entre dos 2its
S1R T
S1R 1 T 1
1 S1R T 1
1 S1R 1 T
>emos que si am2os 2its son igua*es e* resu*tado serF . H si am2os son diDerentes! e* resu*tado
serF 1. 'sta instrucci4n compara dos 2$tes! 2it a 2it.
'sto nos sirve para comparar dos va*ores $ compro2ar si son igua*es o no.
%upongamos que tenemos e* registro E5M'R1 $ queremos compro2ar si es igua* a 2+H.
Tendr;amos que eDectuar *as siguientes instrucciones<

)O*LW .!2" c#&+# el #cu$ul#3-& c-, el 4#l-& # c-$1#&#&(
<ORWF NU)ERO, W " c-$1#&# el #cu$ul#3-& c-, NU)ERO(
BTFSS STATUS, Z " 6#l'# l# 5,6'&ucc5;, 65+u5e,'e 65 <OR / 0(
GOTO DISTINTO " 6#l'# # DISTINTO 65 <OR ,- e6 0(
GOTO IGUAL " 6#l'# # IGUAL(
R(*i&tro STATS: ModiDica e* 2it M.
. M va*e 1 si e* resu*tado de *a operaci4n es .
2.1.3. ORIENTADAS A 7ITS.
INSTRCCIÓN: 7C$ -6/ (=eL T 18 DD(
D(&cri%ción: Pone a cero e* 2it Q /R de* registro Q -R.
O%(r#ción: .(2( T
'sta instrucci4n pone a cero un 2it que =a$amos e*egido de un registro determinado.
E.(1%+o:

BCF PORTA, RA4 " 1-,e # 0 el %5' RA4 3el &e+56'&- PORTA
BCF PORTA, 4 " 5+u#l, 65 ,- c-,-ce$-6 e, ,-$%&e 3el %5'
%i en e* P1RTA tenemos como va*or inicia* 111111118! despu3s de ap*icar e* e0emp*o anterior!
P1RTA T 11111118.
R(*i&tro STATS: Eo modiDica ning9n 2it de estado.
INSTRCCIÓN: 7S$ -6/ (=eL T 18 DD(
D(&cri%ción: Pone a uno e* 2it Q2R de* registro QDR.
O%(r#ción: .(2( T 1
'sta instrucci4n pone a uno un 2it que =a$amos e*egido de un registro determinado.
E.(1%+o:

BSF PORTA, RA0 " 1-,e # 1 el %5' RA0 3el &e+56'&- PORTA
BSF PORTA, 0 " 5+u#l, 65 ,- c-,-ce$-6 e, ,-$%&e 3el %5'
%i en e* P1RTA tenemos como va*or inicia* 8! despu3s de ap*icar e* e0emp*o anterior!
P1RTA T 18.
R(*i&tro STATS: Eo modiDica ning9n 2it de estado.
INSTRCCIÓN: 7T$SC -6/ (=eL T 18 DD(
D(&cri%ción: -omprue2a un 2it Q /R de* registro Q -R $ se sa*ta *a instrucci4n siguiente si va*e
.
O%(r#ción: .(2( T Y %,! sa*ta una instrucci4n
'sta instrucci4n comprue2a e* va*or de* 2it Q /R en e* registro Q -R! $ si Q /R T entonces se sa*ta *a
siguiente instrucci4n.
%i Q /R T 1 no sa*ta $ sigue con su e0ecuci4n norma*.
E.(1%+o:

BTFSC PORTA, .
INSTRUCCIÓN 1
INSTRUCCIÓN .
%i en P1RTA tenemos como va*or inicia* 11111118! e* programa contin9a con *a instrucci4n 2!
sa*tFndose *a instrucci4n 1.
%i en P1RTA tenemos e* va*or 18! e* programa sigue con *a instrucci4n 1 $ despu3s *a
instrucci4n 2.
R(*i&tro STATS: Eo modiDica ning9n 2it de estado.
INSTRCCIÓN: 7T$SS -6/ (=eL T 18 DD(
D(&cri%ción: -omprue2a un 2it Q /R de* registro Q -R $ se sa*ta *a instrucci4n siguiente si va*e
1.
O%(r#ción: .(2( T 1 Y %,! sa*ta una instrucci4n.
'sta instrucci4n comprue2a e* va*or de* 2it Q /R en e* registro Q -R! $ si Q /R T 1 entonces se sa*ta *a
siguiente instrucci4n.
%i Q /R T no sa*ta $ sigue con su e0ecuci4n norma*.
E.(1%+o:

BTFSS PORTB, =
INSTRUCCIÓN 1
INSTRUCCIÓN .
%i en P1RT8 tenemos como va*or inicia* 18! e* programa contin9a con *a instrucci4n 2!
sa*tFndose *a instrucci4n 1.
%i en P1RT8 tenemos e* va*or 11111118! e* programa sigue con *a instrucci4n 1 $ despu3s *a
instrucci4n 2.
R(*i&tro STATS: Eo modiDica ning9n 2it de estado.
2.2 MODOS DE DIRECCIONAMIENTO
Dir(ccion#1i(nto dir(cto: +# 1(1ori# d( d#to& 4RAM5.
&a memoria interna se direcciona en Dorma dir(ct# por medio de *os / 2its QDR contenidos en *as
instrucciones que operan so2re registros. #e esta manera se puede direccionar cua*quier posici4n
desde *a a *a ...
'n *os microcontro*adores que tengan mFs de un 2anco! antes de acceder a a*guna varia2*e que se
encuentre en *a zona de *os 2ancos de registros! e* programador de2erF asegurarse de =a2er
programado *os 2its de se*ecci4n de 2anco en e* registro $SR.
Dir(ccion#1i(nto indir(cto: (+ r(*i&tro $SR.
'* registro $SR sirve como puntero para direccionamiento indir(cto ademFs de servir para
se*eccionar e* 2anco activo. &a posici4n de* mapa de RAM es *a **amada direcci4n indirecta.
%i en cua*quier instrucci4n se opera con *a direcci4n ! en rea*idad se estarF operando con *a
direcci4n a donde apunte e* contenido de* $SR.
Por e0emp*o si e* $SR contiene e* va*or 1A=! una instrucci4n que opere so2re *a direcci4n ! en
rea*idad *o =arF so2re *a direcci4n 1A=. Puede decirse que *a posici4n 1A= de memoria Due
direccionada en Dorma indirecta a trav3s de* puntero $SR.
'0emp*o <

" E6'e 1&-+&#$# %-&&# : 1-65c5-,e6 3e $e$-&5# # 1#&'5& 3e l# 35&ecc5;, 1A
FSR e9u 04 ">3e75,5c5;, 3el 1u,'e&- FSR?
"(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((

$-4l@ : "1&e1#&# 1#&# &e1e'5& : 4ece6
$-4@7 DATO ">el &e+56'&- DATO e6 el c-,'#3-& 3el
%ucle?
$-4l@ 1A8 "#1u,'# # l# 35&ecc5;, 1A8
$-4@7 FSR "+u#&3# e, FSR l# 35&ecc5;, 1A8
%ucle cl&7 0 "%-&&# u,# 1-65c5;, 3e $e$-&5# >1-,e #
ce&-?
5,c7 FSR "#1u,'# # l# 65+u5e,'e
3ec76A DATO "65 '-3#4B# ,- %-&&; '-3#6 >#C, ,- e6
ce&-?
+-'- %ucle "6#l'# # %ucle >65+ue %-&&#,3-?
'* direccionamiento indir(cto es mu$ 9ti* para procesar posiciones consecutivas de memoria (como
en e* e0emp*o( o para e* direccionamiento de datos en su2rutinas.
Dir(ccion#1i(nto in1(di#to:
'* dato uti*izado por *a instrucci4n se codiDica a* mismo tiempo que *a propia instrucci4n. 'n este
caso! a* dato se *e denomina Q*itera*R.
Dir(ccion#1i(nto r(+#tiIo:
Eo eListe este modo de direccionamiento en *os microprocesadores P,-.
2.3 TECNICAS DE PROGRAMACIÓN
S7RTINAS B ""AMADAS:
&a ma$or;a de *os microcontro*adores inc*u$en en su repertorio de instrucciones a*gunas que
permiten sa*tar a una rutina $! cuando se comp*eta su e0ecuci4n! retornar a* programa principa*.
'* emp*eo de su2rutinas aporta muc=as venta0as entre *as que se destacan *as siguientes<
1. %e pueden escri2ir como su2rutinas secciones de c4digo $ ser emp*eadas en muc=os programas
( por e0emp*o! *a su2rutina de eLp*oraci4n de un tec*ado (.
2. #an a *os programas un carFcter modu*ar! es decir! se pueden codiDicar diDerentes m4du*os para
uti*izar*os en cua*quier programa.
3. %e reduce nota2*emente e* tiempo de programaci4n $ *a detecci4n de errores! uti*izando
repetidamente una su2rutina.
!. '* c4digo es mFs DFci* de interpretar! dado que *as instrucciones de *as su2rutinas no aparecen en
e* programa principa*! s4*o Diguran *as **amadas ( CA""(.
"AS INSTRCCIONES CA"" B RETRN:
&a instrucci4n CA"" (**amada a su2rutina( consigue que *a e0ecuci4n de* programa contin9e en *a
direcci4n donde se encuentra *a su2rutina a *a que =ace reDerencia. 's simi*ar a GOTO pero co*oca
en *a pi*a *a direcci4n de *a siguiente instrucci4n que se de2e e0ecutar despu3s de terminar con *a
su2rutina.
&a su2rutina Dina*iza con *a instrucci4n RETRN (retorno de *a su2rutina( que retoma *a direcci4n
guardada en *a pi*a $ *a co*oca en e* contador de* programa PC continuando e* D*u0o de contro* con
*a instrucci4n que sigue a CA"".
'n *a Dami*ia P,- de gama media *a pi*a tiene oc8o niI(+(& d( 1(1ori# de* tipo "I$O (9*timo en
entrar! primero en sa*ir(. %i se produce *a **amada a una su2rutina durante *a e0ecuci4n de otra
su2rutina! *a direcci4n de retorno de esta segunda es co*ocada en *a cima de *a pi*a so2re *a
direcci4n anterior. 'sta segunda direcci4n es *a primera en sa*ir de *a pi*a mediante *a instrucci4n
RETRN.
-on *a pi*a de oc=o nive*es! una su2rutina puede **amar a otra $ 3sta! a su vez! **amar a otra =asta
un mFLimo de oc=o.
CONS"TA A TA7"AS:
'n muc=as ocasiones es necesario para un programador eDectuar una coincidencia entre a*guna
cantidad de va*ores conocidos $ un n9mero desconocido que se tiene como ;ndice.
Por e0emp*o< 2asados en e* contenido de una posici4n de memoria RAM (;ndice( se puede o2tener
de una serie consecutiva de datos a*macenados en memoria de programa (a *os datos PconocidosP
a*macenados se *e denomina t#/+#(! e* dato desp*azado n posiciones =acia de*ante desde e*
comienzo de *a ta2*a. '* n9mero n corresponde a* contenido de *a posici4n de memoria RAM 4
;ndice.
Programa e0emp*o<

-776e' e9u 0C8 " 1-65c5;, 3e $e$-&5# RA)
@ e9u 0 " 3e6'5,- W
7 e9u 1 " 3e6'5,- F
((((((((((((((((
((((((((((((((((
((((((((((((((((
$-47 -776e',@ " '-$#$-6 # W el ,C$e&- , u'5l5A#3- c-$- B,35ce
c#ll '#%l# " 1-65c5;, e, 3-,3e 6e e,cue,'&# l# 6e&5e 3e 3#'-6
" e, e6'e 65'5- lue+- 3el &e'-&,- 3e l#
6u%&u'5,# 6e '5e,e e, W el 3#'- " leB3- 3e l# '#%l#
((((((((((((((((
((((((((((((((((
((((((((((((((((
'#%l#
#33@7 PCL,7 " 6e 6u$# #l PC el W -%'e,5e,3- c-$- &e6ul'#3- u, 6#l'-
5,3eD#3-
&e'l@ 308 " 6B W 6u$#3- #l PCL e6 0 6e &e'-&,# e, e6'# 1-65c5;,, W/308
&e'l@ 318 " 6B W 6u$#3- #l PCL e6 1 6e &e'-&,# e, e6'# 1-65c5;,, W/318
&e'l@ 3.8 " 6B W 6u$#3- #l PCL e6 . 6e &e'-&,# e, e6'# 1-65c5;,, W/3.8
&e'l@ 338 " 6B W 6u$#3- #l PCL e6 3 6e &e'-&,# e, e6'# 1-65c5;,, W/338
&e'l@ 348 " 6B W 6u$#3- #l PCL e6 4 6e &e'-&,# e, e6'# 1-65c5;,, W/348
&e'l@ 38 " 6B W 6u$#3- #l PCL e6 6e &e'-&,# e, e6'# 1-65c5;,, W/38
" (((

(
Para terminar! despu3s de o2servar e* e0emp*o anterior! de2emos tener en cuenta que antes de
**amar a *a su2rutina t#/+#! se de2e cargar en e* registro de tra2a0o " e* va*or de* ;ndice $ una vez
se retorne de dic=a su2rutina! es en este mismo registro de tra2a0o en donde se o2tiene e*
resu*tado de *a consu*ta a *a ta2*a (vemos que *a sucesi4n de instrucciones r(t+> 3 se encuentra en
memoria de programa(.
CONJERSIÓN A ASCII:
'* con0unto de caracteres ASCII ( American Standard Code Dor InDormation Interc=ange( es e*
c4digo de representaci4n en =eLadecima* de* a*Da2eto! *os n9meros de* a* ?! *os principa*es
s;m2o*os de puntuaci4n $ a*gunos caracteres de contro*.
Con.unto d( c#r:ct(r(& ASCII
-omo vemos en *a ta2*a anterior! podemos dividir a cada carFcter representado en =eLadecima*
como una parte a*ta de 3 2its ( Mo&t &i*ni-ic#nt c#r#ct(r T n9meros de* a* C( $ una parte 2a0a
de 4 2its ( "(#&t &i*ni-ic#nt c#r#ct(r T n9meros de* a* .(. 'n tota*! *a representaci4n *a
=acemos con C 2its.
#e *os pro2*emas usua*es en *a programaci4n estF e* convertir un n9mero =eLadecima*
representado en / 2its a dos caracteres A%-,, *os cua*es sean *a representaci4n de dic=o n9mero
para permitir su visua*izaci4n en panta**as &-#! monitores! impresoras! etc.
'0emp*o<
Para representar e* n9mero =eLadecima* C,8 que en 2inario es ,111,,,,/ como *os dos
caracteres ASCII PCP $ PP! grFDicamente<
C , en =eLadecima* (/ 2its(
ACA A,A en ascii (1+ 2its(
3C8 3,8 ascii en =eLadecima* (1+ 2its(
TransportFndo*o a un programa<

Nu$2eD e9u 0C8 " 1-65c5;, 3-,3e 6e #l$#ce,# el ,C$e&- #
c-,4e&'5&
A6c552 e9u 0D8 " 1-65c5;, 3-,3e 6e #l$#ce,# el
&e6ul'#3- 1#&'e #l'#
A6c55L e9u 0E8 " 1-65c5;, 3-,3e 6e #l$#ce,# el
&e6ul'#3- 1#&'e %#E#
(((((((((((((((((((((((
(((((((((((((((((((((((
$-4l@ 0F8 " 3#'- 1#&# e,$#6c#&#& 1#&'e #l'#
#,3@7 Nu$2eD,0 " 6e e,$#6c#&# l# 1#&'e #l'# 3el ,C$e&- 8eD# 0 1#6# # W
5-&l@ 308 " c-,45e&'e el ,C$e&- e, #6c55
$-4@7 A6c55L " el ,C$e&- 9ue3# 6#l4#3- e, l# 4#&5#%le 3e 6#l53#
$-4l@ 0F08 " 3#'- 1#&# e,$#6c#&#& 1#&'e %#E#
#,3@7 Nu$2eD,1 " 6e e,$#6c#&# l# 1#&'e %#E# 3el ,C$e&- 8eD# 0 9ue3#
#llB
6@#17 Nu$2eD,0 " 6e 5,45e&'e, 1#&'e #l'# 0 %#E#
5-&l@ 308 " c-,45e&'e el ,C$e&- e, #6c55
$-4@7 A6c55L " el ,C$e&- 9ue3# 6#l4#3- e, l# 4#&5#%le 3e 6#l53#(
(((((((((((((((((((((
(((((((((((((((((((((
'* e0emp*o anterior Dunciona de Dorma correcta siempre $ cuando *os ni22*es de* n9mero
=eLadecima* a convertir est3n en e* rango de a ?. Ha2rF que rea*izarse un tratamiento adiciona* a
3stos si se encuentran en e* rango de A= a .=.
RAMI$ICACIÓN ML"TIP"E.
-uando se tiene que so*ucionar un diagrama de D*u0o como e* de *a Digura! en e* cua* tenemos tres
posi2*es respuestas a una pregunta! se p*antean *as so*uciones aqu; presentadas.
Tr(& %o&i/i+id#d(& %#r# un# %r(*unt#.
5na de *as Dormas de so*ucionar en un programa este pro2*ema es<
So+ución 1.
#eterminando para *a opci4n 1! *a opci4n 2 $ *a opci4n 3 un va*or consecutivo como<


-1c5;,1 e9u 0
-1c5;,. e9u 1
-1c5;,3 e9u .
5no de estos posi2*es va*ores **evar*o a " $ en una parte de* programa tratar*o as;<


Dec565;,F "65'5- e, 3-,3e l# 1&e+u,'# GHG 'e,3&B#
6-luc5;,
#33@7 PCL,1
+-'- Acc5;,1
+-'- Acc5;,.
+-'- Acc5;,3
Acc5;,1F
((((((((((((((((((((((((((((((( "5,6'&ucc5-,e6 c-&&e61-,35e,'e6 # l# Acc5;, 1
(((((((((((((((((((((((((((((((
(((((((((((((((((((((((((((((((
+-'- e,cue,'&-
Acc5;,.F
((((((((((((((((((((((((((((((( "5,6'&ucc5-,e6 c-&&e61-,35e,'e6 # l# Acc5;, .
(((((((((((((((((((((((((((((((
(((((((((((((((((((((((((((((((
+-'- e,cue,'&-

Acc5;,3F
((((((((((((((((((((((((((((((( "5,6'&ucc5-,e6 c-&&e61-,35e,'e6 # l# Acc5;, 3
(((((((((((((((((((((((((((((((
(((((((((((((((((((((((((((((((
e,cue,'&-F "65'5- 3e e,cue,'&- lue+- 3e u,# 3e l#6 #cc5-,e6
((((((((((((((((((((((((((((((( "c-,'5,u#c5;, 3el 1&-+&#$#
(((((((((((((((((((((((((((((((
So+ución 2.
1tra Dorma posi2*e es comparando uno por uno *os va*ores de *as diDerentes opciones a*macenadas
en memoria RAM en una varia2*e **amada OPCION

$-4l@ O1c5;,1
D-&@7 OPCION,0 " 6e &e#l5A# l# 4e&575c#c5;, 3e OPCION &e61ec'- # W
%'76c STATUS,Z " 4e&575c#,3- l# %#,3e&# Z
+-'- Acc5;,1
$-4l@ O1c5;,.
D-&@7 OPCION,0 " 6e &e#l5A# l# 4e&575c#c5;, 3e OPCION &e61ec'- # W
%'76c STATUS,Z " 4e&575c#,3- l# %#,3e&# Z
+-'- Acc5;,.
$-4l@ O1c5;,3
D-&@7 OPCION,0 " 6e &e#l5A# l# 4e&575c#c5;, 3e OPCION &e61ec'- # W
%'76c STATUS,Z " *e&575c#,3- l# %#,3e&# Z
+-'- Acc5;,3
Acc5;,1F
((((((((((((((((((((((((((((((( " 5,6'&ucc5-,e6 c-&&e61-,35e,'e6 # l# Acc5;,
1
(((((((((((((((((((((((((((((((
(((((((((((((((((((((((((((((((
+-'- e,cue,'&-
Acc5;,.F
((((((((((((((((((((((((((((((( " 5,6'&ucc5-,e6 c-&&e61-,35e,'e6 # l# Acc5;,
.
(((((((((((((((((((((((((((((((
(((((((((((((((((((((((((((((((
+-'- e,cue,'&-
Acc5;,3F
((((((((((((((((((((((((((((((( " 5,6'&ucc5-,e6 c-&&e61-,35e,'e6 # l# Acc5;,
3
(((((((((((((((((((((((((((((((
(((((((((((((((((((((((((((((((
e,cue,'&-F " 65'5- 3e e,cue,'&- lue+- 3e u,# 3e l#6 #cc5-,e6
((((((((((((((((((((((((((((((( " c-,'5,u#c5;, 3el 1&-+&#$#
(((((((((((((((((((((((((((((((
Aunque este 9*timo m3todo es mFs *argo que e* anterior! es vF*ido cuando *os va*ores de *as
diDerentes opciones no &on con&(cutiIo& entre si.
ARITMMTICA:
#entro de *os microcontro*adores P,- se cuenta con instrucciones aritm3ticas ta*es como<
ADDW$ $ ADD"W para eDectuar operaciones de suma.
S7W$ $ S7W$ para eDectuar operaciones de resta.
R"$ para rea*izar mu*tip*icaciones por 2.
RR$ para rea*izar divisiones entre 2.
Hasta este punto podr;amos ver e* con0unto de instrucciones un poco *imitado. %in em2argo!
uti*izando t3cnicas avanzadas de programaci4n podemos o2tener operaciones mFs comp*e0as.
Podemos o2tener varias rutinas matemFticas genera*es de *os P,- 1+-SS $ 1C-SS en estas
direcciones<
=ttp<//777.iespana.es/portosin/MAT'MAT,-A%1+-SS
=ttp<//777.iespana.es/portosin/MAT'MAT,-A%1C-SS
TEMPORI)ACIÓN:
A veces se necesita rea*izar un retardo de tiempo cuando programamos. &os retardos de tiempo se
pueden o2tener mediante =ard7are o por medio de cic*os repetitivos
2asados en soDt7are.
&a precisi4n de *os retardos generados por soDt7are depende en esencia de*
tipo de osci*ador que se uti*ice como 2ase de tiempo en e* microcontro*ador (*a ma$or precisi4n se
o2tiene de *os crista*es de cuarzo(.
&a ve*ocidad a *a que se e0ecuta e* c4digo (instrucciones( depende de *a ve*ocidad de* osci*ador $ de*
n9mero de cic*os de mFquina e0ecutados. &as instrucciones necesitan 1 4 2 cic*os de mFquina para
ser e0ecutadas.
5n cic*o de mFquina es un tiempo uti*izado por e* microcontro*ador para rea*izar sus operaciones
internas $ equiva*e a cuatro cic*os de* osci*ador. Por tanto< Tcic*o mFq.T 4 ` Tosc $ Tcic*o mFq T 4 /
Dosc '* n9mero de cic*os de mFquina uti*izados por una instrucci4n para ser e0ecutada depende de *a
misma. &as instrucciones que modiDican e* contador de programa necesitan dos (2( cic*os de
mFquina! mientras que todas *as demFs necesitan tan so*o uno (1(.
'* =ec=o de generar cic*os repetitivos por medio de* programa $ ca*cu*ar e* tiempo tota* de
e0ecuci4n nos puede a$udar a generar tiempos precisos.
Cic+o r(%(titiIo d( r(t#rdo
'* cic*o repetitivo de retardo de *a Digura se tomarF un n9mero de cic*os as;<


Operación nº de ciclos
l# c#&+# 3e I e, W 1
l# c#&+# 3e W e, el c-,'#3-& 1
el 3ec&e$e,'- 3el c-,'#3-& $5e,'&#6 ,- lle+ue # ce&- IJ1
el 3ec&e$e,'- 3el c-,'#3-& cu#,3- lle+ue # ce&- .
el 6#l'- # L--1 . * >IJ1?
Total: 3*k+1
Por cada instrucci4n agregada de2e inc*uirse en *a cuenta tota* e* n9mero de cic*os correspondiente
a dic=a instrucci4n.
Tra2a0ando a 4 M=z $ asumiendo que 6 se remp*aza por e* va*or 1)d en e* e0emp*o tendr;amos un
tiempo igua* a<
E9mero de cic*os T (3`1)( V1 T 4+ cic*os de mFquina!
Tcic*o mFq.T 4 / 4 M=z T 1 a segundo! e* tiempo tota* entonces serF de 4+ asegundos.
2.!. EGEMP"OS DE PROGRAMAS ASM.
EGEMP"O 1:

"Al$#ce,#& el 4#l-& .!8 e, 1 1-65c5-,e6 c-,'5+u#6 3e l# $e$-&5# 3e 3#'-6,
e$1eA#,3- 3e63e
"l# 35&ecc5;, 0D10

L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
5,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6
5,'e&,-6
C-,'#3-& e9u 0D0c "C-,'#3-& 5,'e&,-
P&5$e&# e9u 0D10 "P-65c5;, 5,5c5#l
-&+ 0D00 "*ec'-& 3e Re6e'
I,5c5- $-4l@ (1 "C#&+# el #cu$ul#3-& c-, 1
>3ec5$#l?
$-4@7 C-,'#3-& "C#&+# el c-,'#3-& c-, 1 >3ec5$#l?
$-4l@ P&5$e&#
$-4@7 FSR "I,5c5# 1u,'e&- c-, 35&ecc5;,
5,5c5#l
$-4l@ 0D.! "C#&+# 4#l-& # #l$#ce,#&
Bucle $-4@7 INDF "Al$#ce,# 4#l-& e, 1-6( 5,35c#3#
1-& FSR
5,c7 FSR,F "I,c&e$e,'# el 1u,'e&- FSR
3ec76A C-,'#3-&,F "Dec&e$e,'# c-,'#3-& 8#6'# lle+#&
# 0
+-'- Bucle "Re+&e6# # Bucle 65 C-,'#3-& ,-
e6 0
e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O 2:

"Su$#& 3-6 4#l-&e6 >3 0 K? 0 +u#&3#& el &e6ul'#3- e, l# 1-65c5;, 0D10

L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
5,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6
5,'e&,-6
T-'#l e9u 0D10 "De75,e l# 1-65c5;, 3el &e6ul'#3-
-&+ 0D00 "*ec'-& 3e Re6e'
I,5c5- $-4l@ 0D03 "C#&+# 1e&( 6u$#,3- e, W
#33l@ 0D0K "Su$# el .L 6u$#,3-
$-4@7 T-'#l "Gu#&3# el &e6ul'#3- e, el
&e+56'&- T-'#l
e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O 3:

"T&e6 4#l-&e6 A,B 0 C +u#&3#3-6 0# e, $e$-&5#( A1l5c#& l# ecu#c5;,F >AMB?JC
"

L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
5,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6
5,'e&,-6
D#'-NA e9u 0D10 "De75,e l# 1-65c5;, 3el 3#'- A
D#'-NB e9u 0D11 "De75,e l# 1-65c5;, 3el 3#'- B
D#'-NC e9u 0D1. "De75,e l# 1-65c5;, 3el 3#'- C
Re6ul'#3- e9u 0D13 "De75,e l# 1-65c5;, 3el
&e6ul'#3-
-&+ 0D00 "*ec'-& 3e Re6e'
I,5c5- $-47 D#'-NA,W "C#&+# 1e&(6u$#,3-
#33@7 D#'-NB,W "Su$# .L 6u$#,3-
$-4@7 Re6ul'#3- "Al$#ce,# &e6ul'#3- 1#&c5#l
$-47 D#'-NC,W "C#&+# 6u6'&#e,3-
6u%@7 Re6ul'#3-,F "Re6'# 3el $5,ue,3- 0 #l$#ce,#
e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O !:

"C-$1#&#& 3-6 ,C$e&-6 A 0 B( S5 A/B, el &e6ul'#3- e6 0( S5 A O B, el &e6ul'#3-
"e6 AJB( S5 A P B el &e6ul'#3- e6 AMB( Al 6#l5& 3e e6'# &u'5,# 'e,3&e$-6 el
4#l-& e, el &e+56'&- "Re6ul'#3-(
"
"2#0 9ue 3e6'#c#& 9ue, #l ,- 8#%e& 5,6'&ucc5-,e6 3e c-$1#&#c5;,, e6'# 6e &e#l5A#
$e35#,'e
"&e6'#6(

L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
5,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6
5,'e&,-6
D#'-NA e9u 0D10 "*#&5#%le 3el 3#'- A
D#'-NB e9u 0D11 "*#&5#%le 3el 3#'- B
Re6ul'#3- e9u 0D1. "*#&5#%le 1#&# el &e6ul'#3-
-&+ 0D00 "*ec'-& 3e Re6e'
I,5c5- $-47 D#'-NB,W "C#&+# el 3#'- B
6u%@7 D#'-NA,W "Re6'#Qc-$1#&# c-, 3#'- A
%'76c STATUS,Z "S-, 5+u#le6 >Z/1?HH
+-'- AN5+u#lNB "S5, e,'-,ce6 6#l'# # AN5+u#lNB
%'76c STATUS,C "N-( A $#0-& 9ue B >C/0?HH
+-'- AN$#0-&NB "S5, e,'-,ce6 6#l'# # AN$#0-&NB
AN$e,-&NB $-47 D#'-NA,W "N-, A e6 $e,-& 9ue B
#33@7 D#'-NB,W "Su$# # $R6 B
$-4@7 Re6ul'#3- "Gu#&3# el &e6ul'#3-
+-'- S#l53#
AN$#0-&NB $-4@7 Re6ul'#3- "Gu#&3# el &e6ul'#3-
+-'- S#l53#

AN5+u#lNB cl&7 Re6ul'#3- "P-,e # 0 el &e6ul'#3-
S#l53# e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O =:

"Su$#& 3-6 ,C$e&-6 A 0 B, 3e 1! %5'6 c#3# u,-(
"

L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
5,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6
5,'e&,-6
D#'-NANL e9u 0D10 "De75,e l# 1-65c5;, 3el 3#'- A
>%#E-?
D#'-NAN2 e9u 0D11 "De75,e l# 1-65c5;, 3el 3#'- A
>#l'-?
D#'-NBNL e9u 0D1. "De75,e l# 1-65c5;, 3el 3#'- B
>%#E-?
D#'-NBN2 e9u 0D13 "De75,e l# 1-65c5;, 3el 3#'- B
>#l'-?
Re6ul'#3-NL e9u 0D14 "De75,e l# 1-65c5;, 3el &e6ul'#3-
>%#E-?
Re6ul'#3-N2 e9u 0D1 "De75,e l# 1-65c5;, 3el &e6ul'#3-
>#l'-?
-&+ 0D00 "*ec'-& 3e Re6e'
I,5c5- $-47 D#'-NANL,W "C#&+# $e,-6 1e6- 3el 3#'- A
#33@7 D#'-NBNL,W "Su$# $e,-6 1e6- 3el 3#'- B
$-4@7 Re6ul'#3-NL "Al$#ce,# el &e6ul'#3-
$-47 D#'-NAN2,W "C#&+# $R6 1e6- 3el 3#'- A
%'76c STATUS,C "2u%- #c#&&e- #,'e&5-& HH
#33l@ 1 "S5, 6u$# 1 #l #cu$ul#3-&
#33@7 D#'-NBN2,W "Su$# $R6 1e6- 3el 3#'- B
$-4@7 Re6ul'#3-N2 "Gu#&3# el &e6ul'#3-
e,3 "F5, 3el 1&-+&#$# 7ue,'
EGEMP"O 0:

"Re6'#& 3-6 ,C$e&-6, A 0 B, 3e 1! %5'6 c#3# u,-(
"
"Au,9ue e6'e eEe&c5c5- e6 65$5l#& #l #,'e&5-&, 6e 3e%e #1&ec5#& 9ue, el
"c-,'e,53- 3el #cu$ul#3-& #c'C# c-$- 6u6'&#e,3- 0 el -1e&#,3-, c-$- $5,ue,3-(
"
"I+u#l$e,'e 8#0 9ue #1&ec5#& 9ue el 7l#+ CARRS 6e 3e%e 5,'e&1&e'#& 3e 7-&$#
"5,4e&6# # c-$- 6e 8#ce c-, l# 6u$# ># G0G 8#0 3e6%-&3#$5e,'-?(

L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
5,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6
5,'e&,-6
D#'-NANL e9u 0D10 "De75,e l# 1-65c5;, 3el 3#'- A
>%#E-?
D#'-NAN2 e9u 0D11 "De75,e l# 1-65c5;, 3el 3#'- A
>#l'-?
D#'-NBNL e9u 0D1. "De75,e l# 1-65c5;, 3el 3#'- B
>%#E-?
D#'-NBN2 e9u 0D13 "De75,e l# 1-65c5;, 3el 3#'- B
>#l'-?
Re6ul'#3-NL e9u 0D14 "De75,e l# 1-65c5;, 3el &e6ul'#3-
>%#E-?
Re6ul'#3-N2 e9u 0D1 "De75,e l# 1-65c5;, 3el &e6ul'#3-
>#l'-?
-&+ 0D00 "*ec'-& 3e Re6e'
I,5c5- $-47 D#'-NBNL,W "C#&+# $e,-6 1e6- 3el 3#'- B
>6u6'&#e,3-?
6u%@7 D#'-NANL,W "Re6'# $e,-6 1e6- 3el 3#'- A
>$5,ue,3-?
$-4@7 Re6ul'#3-NL "Al$#ce,# el &e6ul'#3-
$-47 D#'-NBN2,W "C#&+# $R6 1e6- 3el 3#'- B
>6u6'&#e,3-?
%'766 STATUS,C "2u%- #c#&&e- >CARRS / 0?
#,'e&5-& HH
#33l@ 1 "S5, #T#3e 1 #l #cu$ul#3-&
>6u6'&#e,3-?
6u%@7 D#'-NAN2,W "Re6'# $R6 1e6- 3el 3#'- A
>$5,ue,3-?
$-4@7 Re6ul'#3-N2 "Gu#&3# el &e6ul'#3-
e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O C:

OPERACIONES LOGICAS EN PROGRA)ACION
E, 1&-+&#$#c5;, # 4ece6 ,-6 e,c-,'&#$-6 c-, l# ,ece653#3 3e c-$1#&#& 4#l-&e6
1#&# '-$#& 3ec565-,e6( A e6'e '51- 3e 3ec565-,e6 le6 ll#$#$-6 -1e&#c5-,e6
l;+5c#6 0 l#6 9ue ,-6 1-3e$-6 e,c-,'&#& 6-,F
A 5+u#l # B

A 356'5,'- 3e B

A 5+u#l - $#0-& 9ue B

A $#0-& 9ue B

A $e,-& - 5+u#l #

A $e,-& 9ue B

T-3#6 e6'#6 -1e&#c5-,e6 '5e,e, 6-luc5;, e, 1&-+&#$#c5-, u'5l5A#,3-
5,6'&ucc5-,e6 3e e,6#$%l#3-& 0 l#6 1-65%5l53#3e6 9ue ,-6 3# el Re+56'&- 3e
E6'#3-(
El Re+56'&- 3e E6'#3- >0# l- 8e$-6 456'- #,'e6? -cu1# l# 1-65c5;, 0D03 3el B#,c-
0 0 0D:3 3el B#,c- 1(
Su6 : %5' 6-,F
%5' = IRP Selecc5-,# %#,c-6 1#&# 35&ecc5-,#$5e,'- 5,35&ec'-(
%5' ! RP1 Selecc5;, 1R+5,# 3e $e$-&5# 3e 1&-+&#$#(
%5' RP0 Selecc5;, 1R+5,# 3e $e$-&5# 3e 1&-+&#$#(
%5' 4 T)R0 T5$e&(
%5' 3 PD P-@e& D-@,(
%5' . Z Ze&- 1 S5 el &e6ul'#3- 3e u,# -1e&#c5;, e6 0(
0 S5 el &e6ul'#3- 3e u,# -1e&#c5;, e6 356'5,'- 3e 0(
%5' 1 DC Ac#&&e- e, el 4L %5' 3e $e,-6 1e6-(
%5' 0 C Ac#&&e- e, el :L %5' 1 #c#&&e- e, l# 6u$# 0 ,- e, #l &e6'#(
0 #c#&&e- e, l# &e6'# 0 ,- e, l# 6u$#(
De '-3-6 e6'-6 &e+56'&-6 4#$-6 # u'5l5A#& el %5' . 0 el %5' 0(
L# G%#,3e&#G e6 el G%5' 3e u, &e+56'&- 9ue 6e 1-,e # 0 - # 1 cu#,3- 6e eEecu'#
u, 3e'e&$5,#3- '51- 3e 5,6'&uccc5;,G
P#&# e6'e '51- 3e -1e&#c5-,e6 l# c#&+# 3e l# %#,3e&# e6 ,-&$#l$e,'e #u'-$R'5c#(
E6 &ec-$e,3#%le c-$1&-%#& el e6'#3- 3e l# %#,3e&# #,'e6 3e &e#l5A#& l#
5,6'&ucc5-, 1#&# 'e,e& l# ce&'eA# 3e 6u e6'#3- 1-6'e&5-&(
C-$- 4#$-6 # c-$1#&#& . 4#l-&e6, # e6'-6 l-6 ll#$#&e$-6 A 0 B 0 #l Re+56'&- 3e
T&#%#E- le ll#$#&e$-6 W >#cu$ul#3-&?(
Operacion A=B

$-47 A,W "C#&+# W c-, $#+,5'u3 A
6u%@7 B,W "Re6'# # B el &e+56'&- W
%'76c S'#'u6,Z "C-$1&ue%# el %5' . 65 e6 0 6#l'#( Pe&- c-$- Z/1
1-&9ue "&e6ul'#3- 3e l# -1e&#c5;, /0 ,- 6#l'# 0
4# # l# "65+u5e,'e 5,6'&ucc5;, 9ue e6
+-'-
+-'- 3-,3eN6e#
Operacion AB

$-47 B,W "C#&+# W c-, 4#l-& B
6u%@7 A,W "Re6'# # A el Re+56'&- 3e T&#%#E- W
%'766 S'#'u6,C "C-$1&ue%# el %5' C 3e E6'#3- 0 65 e6 1 6#l'# 1e&-
#l "6e& A $e,-& 9ue B ,- 8#0 #c#&&e- 1-& l- 9ue
C / 0
+-'- 3-,3eN6e#
Operacion A!B

$-47 A,W "C#&+# A e, W
6u%@7 B,W "Re6'# # B el Re+56'&- 3e T&#%#E- W >- 6e# A?
%'76c S'#'u6,C "C-$1&ue%# el %5' C 3el &e+56'&- E6'#3- 0 c-$- C /
0 ,- "8#0 6#l'-
+-'- 3-,3eN6e#
Resumiendo:

L-+5c# Ne$-'ec,5c- O1e&#c5-, B#,3e&#
A/B %'76c AJOW >BJA? Z/1
AOB %'76c AJOW >BJA? C/0
APB %'766 BJO W >AJB?
EGEMP"O ':

O1e&#c5-,e6 E,'&#3# Q S#l53#
O%Ee'54-6F
U *e&575c#& el $-3- e, el 9ue 6e 3e%e 1&-+&#$#& el 6e,'53- 3e l-6
1ue&'-6(
U Re#l5A#& l# e,'&#3#6 1-& 1ue&'- $e35#,'e l# lec'u&# 3e 5,'e&&u1'-&e6(
U E6c&5%5& 6-%&e u, 1ue&'- 3e 6#l53#(
P&-ce35$5e,'-F
E, el 1&-ce6- 3e u'5l5A#c5;, 3e u, 1ue&'- 3e%e 'e,e&6e e, cue,'# c-$- 1&5$e&#
5,6'#,c5# l# 1&-+&#$#c5;, 3el 6e,'53- e, 9ue 35c8- 1ue&'- 4# # u'5l5A#&6e( U,#
4eA e,ce,353- el $5c&-c-,'&-l#3-& '-3-6 0 c#3# u,- 3e l-6 1ue&'-6 9ue3#,
1&-+&#$#3-6 c-$- e,'&#3#, e,'-,ce6 '#, 6-l- 3e%e, 1&-+&#$#&6e l-6 9ue 6e 9u5e&e,
u'5l5A#& c-$- 6#l53#(
El 1&-+&#$# 3e%e e,'-,ce6 e, u, %ucle 5,75,5'- lee& el ,54el l;+5c- 9ue c-l-c#,
l-6 6@5'c8 0 1#6#& e6'e &e6ul'#3- #l 1ue&'- A c-$1le$e,'#,3- el e6'#3- 3e l#
5,7-&$#c5;, 1ue6'- 9ue 3e #cue&3- # l# 3561-65c5;, 3e l-6 LED6 u, e6'#3- %#E- e,
el 1ue&'- e,c5e,3e el LED c-&&e61-,35e,'e 0 u, e6'#3- #l'- e, el 1ue&'-, #1#+#
el LED(

P&-+&#$#F
6'#'u6 e9u 038
-1'5-,& e9u :18
'&56# e9u :8
1-&'# e9u 08
'&56% e9u :!8
1-&'% e9u 0!8
"I,5c5-F
%67 6'#'u6, "6e 1#6# #l %#,c- 1 3e RA)
cl&7 '&56# "6e 1&-+&#$# el 1ue&'- A c-$- 6#l53#
$-4l@ 0F8 "3#'- 1#&# l# 1&-+&#$#c5;, 3el 1ue&'- B
$-4@7 '&56% "1#&'e #l'# c-$- 6#l53# 0 %#E# c-$- e,'&#3#
%c7 -1'5-,&,= "6e 8#%5l5'#, &e656'e,c5#6 3e Pull U1
%c7 6'#'u6, "6e 1#6# #l %#,c- 0 3e RA)
L--1 c-$7 1-&'%,0 "lee 1ue&'- B, c-$1l( 4#l-& 0 &e6ul'#3- # W
$-4@7 1-&'# "6e 1#6# el &e6ul'#3- 3e W #l 1ue&'- A
+-'- L--1 "eEecu'# u, c5cl- 5,75,5'-
e,3
EGEMP"O N:

"************************************************
" ESTE PROGRA)A ENCIENDE DOS LEDS DESDE EL CENTRO
" DEL PUERTO B S LOS ROTA 2ASTA LOS E<TRE)OS CADA
" *EZ VUE EL )ICRO TIENE UN CERO EN EL PIN RA4
"************************************************
LIST P/1!F:4
STATUS EVU 3
PORTA EVU
TRISA EVU
PORTB EVU !
TRISB EVU !
RP0 EVU
ORG 0<C
CONTA1 RES 1 " REGISTRO GENERAL PARA EL RETARDO
CONTA. RES 1 " REGISTRO GENERAL PARA EL RETARDO
CONTA3 RES 1 " REGISTRO GENERAL PARA EL RETARDO
ORG 0<00
INICIO BSF STATUS,RP0 " ENTRA EN EL BANCO 1
)O*LW 0<1F " )UE*E 1F8 A W
)O*WF TRISA " CONFIGURA EL PUERTO A CO)O
ENTRADA
)O*LW 0<00 " )UE*E 00 A W
)O*WF TRISB " CONFIGURA EL PUERTO B CO)O
SALIDA
BCF STATUS,RP0 " SALE DEL BANCO 1
CLRF PORTB " LI)PIA EL PUERTO B
OTRA BTFSC PORTA,4 " PREGUNTA SI EL PIN 4 DEL
PUERTO A ES CERO
GOTO OTRA " SALTA A LA ETIVUETA OTRA
)O*LW 0<1: " )UE*E 1:8 A W
)O*WF PORTB " CARGA W EN EL PUERTO B
CALL RETARDO " LLA)A A LA ETIVUETA RETARDO
BTFSC PORTA,4 " PREGUNTA SI EL PIN 4 DEL
PUERTO A ES CERO
GOTO OTRA1 " SALTA A LA ETIVUETA OTRA1
)O*LW 0<.4 " )UE*E .48 A W
)O*WF PORTB " CARGA W EN EL PUERTO B
CALL RETARDO " LLA)A A LA ETIVUETA RETARDO
BTFSC PORTA,4 " PREGUNTA SI EL PIN 4 DEL
PUERTO A ES CERO
GOTO OTRA1 " SALTA A LA ETIVUETA OTRA1
)O*LW 0<4. " )UE*E 4.8 A W
)O*WF PORTB " CARGA W EN EL PUERTO B
CALL RETARDO " LLA)A A LA ETIVUETA RETARDO
BTFSC PORTA,4 " PREGUNTA SI EL PIN 4 DEL
PUERTO A ES CERO
GOTO OTRA1 " LLA)A A
)O*LW 0<:1 " )UE*E :18 A W
)O*WF PORTB " CARGA W EN EL PUERTO B
CALL RETARDO " LLA)A A LA ETIVUETA RETARDO
OTRA1 CLRF PORTB " LI)PIA EL PUERTO B
GOTO OTRA " SALTA A LA ETIVUETA OTRA
RETARDO
)O*LW 0<3. " )UE*E 3.8 A W
)O*WF CONTA3 " CARGA W A CONTA3
RET3 )O*LW 0<0 " )UE*E 08
)O*WF CONTA. " CARGA W A CONTA.
RET. )O*LW 0<DA " )UE*E DA8 A W
)O*WF CONTA1 " CARGA W A CONTA1
RET1 NOP " NO OPERA
NOP " NO OPERA
NOP " NO OPERA
NOP " NO OPERA
NOP " NO OPERA
NOP " NO OPERA
DECFSZ CONTA1,1 " DECRE)ENTA CONTA1 EN 1 S SALTA SI
ES CERO
GOTO RET1 " SALTA A LA ETIVUETA RET1
DECFSZ CONTA.,1 " DECRE)ENTE CONTA. EN 1 S SALTA SI
ES CERO
GOTO RET. " SALTA A LA ETIVUETA RET.
DECFSZ CONTA3,1 " DECRE)ENTA CONTA3 EN 1 S SALTA SI
ES CERO
GOTO RET3 " SALTA A LA ETIVUETA RET3
RETURN " RETORNA
END
EGEMP"O 1,:

"/////////////////////////////////"
" PROSECTO SE)WFOROF 1! LEDXY:.1="S "
" FOR)ANDO 4 ESVINAS DE UN CRUCE( "
"/////////////////////////////////"
STATUS EVU 0D3
PORTA EVU 0D
TRISA EVU 0D
PORTB EVU 0D!
TRISB EVU 0D!
RB0 EVU 0 " ROJ0N1
RB1 EVU 1 " A)ARILLON1
RB. EVU . " *ERDEN1
RB3 EVU 3 " CRUCEN1
RB4 EVU 4 " ROJON.
RB EVU " A)ARILLON.
RB! EVU ! " *ERDEN.
RB= EVU = " CRUCEN.
ORG 0D0C
CONTAD RES 1
CONTAD1 RES 1
ORG 0
BSF STATUS,
CLRF TRISA
CLRF TRISB
BCF STATUS,
INICIO CLRF PORTA
CLRF PORTB
SE)A1
BSF PORTB,RB0 " LUZ ROJAN1 ENCENDIDA
BSF PORTB,RB! " LUZ *ERDEN. ENCENDIDA
CALL RETARDO
BCF PORTB,RB! " LUZ *ERDEN. APAGADA
BSF PORTB,RB " LUZ A)ARILLAN. ENCENDIDA
CALL RETARDO
BCF PORTB,RB " LUZ A)ARILLAN. APAGADA
BSF PORTB,RB4 " LUZ ROJAN. ENCENDIDA
BSF PORTB,RB3 " LUZ DE CRUCEN1 ENCENDIDA
CALL RETARDO
BCF PORTB,RB0 " LUZ ROJAN1 APAGADA
BCF PORTB,RB3 " LUZ DE CRUCEN1 APAGADA
BSF PORTB,RB. " LUZ *ERDEN1 ENCENDIDA
CALL RETARDO
BCF PORTB,RB. " LUZ *ERDEN1 APAGADA
BSF PORTB,RB1 " LUZ A)ARILLAN1 ENCENDIDA

CALL RETARDO
BCF PORTB,RB1 " LUZ A)ARILLAN1 APAGADA
BSF PORTB,RB0 " LUZ ROJAN1 ENCENDIDA
BSF PORTB,RB= " LUZ DE CRUCEN. ENCENDIDA
CALL RETARDO

BCF PORTB,RB=
GOTO INICIO
RETARDO
CALL RETARDO1
DECFSZ CONTAD,1
GOTO RETARDO
)O*LW 0
)O*WF CONTAD
RETURN
RETARDO1
DECFSZ CONTAD1,1
GOTO RETARDO1
)O*LW 0
)O*WF CONTAD1
RETURN

END
EGEMP"O 11:

"*****************************************"
"C-,'&-l 3e 1ue&'#6 3e e,'&#3# 1-& LEDF "
"C-,'&-l#& 1-& u, LED 65 c5e&'- ,u$e&- 3e "
"5,'e&&u1'-&e6 c#$%5#, 3e #%5e&'-6 # "
"ce&&#3-6( C#3# 4eA 9ue c#$%5# l# Pue&'# "
"3e 6#l53# l- 5,35c#( "
"*****************************************"

LIST P/1!F:4 " Se e$1le# el PIC1!F:4
RADI< 2E< " S56'e$# 3e ,u$e&#c5;, 8eD#3ec5$#l

"ETIVUETAS DEL PROGRA)A

W EVU 0D00 " Re+56'&- 3e 3e6'5,- W F 3/0
F EVU 0D01 " Re+56'&- 3e 3e6'5,- F F 3/1
STATUS EVU 0D03 " El &e+56'&- ESTADO -cu1# l# 35&ecc5;, 0<03 3e l-6
" 3-6 %#,c-6
PTANTRISA EVU 0D0 " L# PUERTA A -cu1# l# 35&ecc5;, 0<0 3el %#,c- 0
" 0 6u &e+56'&- 3e c-,75+u&#c5;, l# 35&ecc5;, 0<0 3el
" %#,c- 1 >35&ecc5;, 6-%&e %#,c- 1 / 0D:?
PTBNTRISB EVU 0D0! " L# PUERTA B -cu1# l# 35&ecc5;, 0<0! 3el %#,c- 0
" 0 6u &e+56'&- 3e c-,75+u&#c5;, l# 35&ecc5;, ! 3el
" %#,c- 1 >35&ecc5;, 6-%&e %#,c-1 / 0D0:!?
AU< EVU 0D0C " Re+56'&- #uD5l5#& e, el 9ue 6e c#&+# el e6'#3- 3e
" l-6 5,'e&&u1'-&e6

"PROGRA)A PRINCIPAL

ORG 0 " El 1&-+&#$# c-$5e,A# e, l# 35&ecc5-, 0 0
INICIO %67 STATUS, " Selecc5;, 3el %#,c- 1 #l 1-,e& #
1 el %5' 3e "0D03
$-4l@ %Z00000111Z " Se c#&+# W c-, el 3#'- l5'e&#l
00000111
$-4@7 PTANTRISA " Se c#&+# TRISA c-, el 3#'-
00000111 e, 1ue&'# A
" 9ue3#, c-,75+u&#3-6 c-$- e,'&#3# l-6
%5'e6 RAO, "RA1 0 RA.
cl&7 PTBNTRISB " TRISB 6e c#&+# c-, 00000000 0 6e c-,75+u&#
c-$- "6#l53#
%c7 STATUS, " Selecc5;, 3el %#,c- 0 #l 1-,e& #
0 el %5' 3e "STATUS
cl&7 PTANTRISA " Re+56'&- 0<0/PUERTAA/00000000
cl&7 PTBNTRISB " Re+56'&- 0<0!/PUERTAB/00000000
cl&7 AU< " Re+56'&- 0<0C/AU</00000000
BUCLE $-47 PTANTRISA,W " Se c#&+# W c-, el 3#'- 3e l#
PUERTA A
D-&@7 AU<,W " <ORWF e,'&e W 0 el &e+56'&- 3e AU<
%'76c STATUS,. " De'ec'# 65 6e 8# #c'54#3- el %5' . >Z?
3e STATUS " #l &e#l5A#&6e l# -1e&#c5;,
<ORWF 65 e6 0 6#l'#
+-'- BUCLE " S5 ,- 8# c#$%5#3- 65+ue
8#6'# 9ue u,- c#$%5e
LUZ %'766 PTBNTRISB,0 " S5 el %5' 0 3e PUERTAB / 1 6#l'#( Se
c-$1&ue%# "65 el LED e6'# e,ce,353- 1#&#
6#%e& 65 8#0 9ue "#1#+#&l- - e,ce,3e&l-
+-'- PUESTA1 " Se ll#$# # l# &u'5,# Pue6'#1
>e,c5e,3e el LED?
+-'- PUESTA0 " Se ll#$# # l# &u'5,# Pue6'#0
>#1#+# el LED?
PUESTA1 %67 PTBNTRISB,0 " Se 1-,e # 1 el %5' 0 3e l# 1ue&'# B
>LED?( Se "e,c5e,3e LED
+-'- ACTUAL
PUESTA0 %c7 PTBNTRISB,0 " Se 1-,e # 0 el %5' 0 3e l#
1ue&'# B >LED?( Se "#1#+# LED
ACTUAL $-47 PTANTRISA,W " W/ 3#'-6 3e PUERTAA
$-4@7 AU< " Se c#&+# AU< c-, 4#l-& W
lue+- 6e c-$1&-%#&R 65 "8# c#$%5#3-
+-'- BUCLE " S#l'- # %ucle 1#&# e$1eA#& 3e ,ue4-
END
EGEMP"O 12:

"******************************************************************************"
"C-,'&-l 3e e,'&#3#6 0 #456#3-& 3e c#3# e,'&#3# 1-& LED 0 #456#3-& #cC6'5c- "
"E6'e 1&-+&#$# ,- 7u,c5-,# e, &e#l53#3 1e&- 6-, &u'5,#6 9ue 65&4e, 3e eEe$1l-( "
"******************************************************************************"
l56' 1/1!c:4
&#35D 8eD
6'#'u6 e9u 0D03
1'#N'&56# e9u 0D0
1'%N'&56% e9u 0D0!
'$&0 e9u 0D01
5,'c-, e9u 0D0%
c-,'#3-& e9u 0D0c
-&+ 0

5,5c5- %67 6'#'u6, "5& #l %#,c- 1 3e l# $e$-&5#
cl&7 1'%N'&56% "Cc,75+u&# l# 1ue&'# % 3e 6#l53#
$-4l@ %Z00011111Z "W/00011111 '#$%5[, 1-3B# u6#&
$-4l@ 0D17
$-4@7 1'#N'&56# "c-,75+u&# l# 1ue&'# A 3e e,'&#3#
%c7 6'#'u6, "5& #l %#,c- 0
cl&7 1'#N'&56# "1'#N'&56#/00000000
cl&7 1'%N'&56% "1'%N'&56%/00000000
c-,'&-l %'76c 1'#N'&56#,0 "c-,'&-l# l# 1#'# 0 3e Pue&'# A
c#ll &#0
%'76c 1'#N'&56#,1 "c-,'&-l# l# 1#'# 1 3e Pue&'# A
c#ll &#1
%'76c 1'#N'&56#,. "c-,'&-l# l# 1#'# 1 3e Pue&'# A
c#ll &#.
%'76c 1'#N'&56#,3 "c-,'&-l# l# 1#'# 1 3e Pue&'# A
c#ll &#3
%'76c 1'#N'&56#,4 "c-,'&-l# l# 1#'# 1 3e Pue&'# A
c#ll &#4
+-'- c-,'&-l
&#0 %67 1'%N'&56%,0 "e,c5e,3e le3
%67 1'%N'&56%,! "#c'54# el %uAAe&
cl&7 1'#N'&56#
&e'u&,
&#1 %67 1'%N'&56%,1 "e,c5e,3e le3
%67 1'%N'&56%,! "#c'54# el %uAAe&
cl&7 1'#N'&56#
&e'u&,
&#. %67 1'%N'&56%,. "e,c5e,3e le3
%67 1'%N'&56%,! "#c'54# el %uAAe&
cl&7 1'#N'&56#
&e'u&,
&#3 %67 1'%N'&56%,3 "e,c5e,3e le3
%67 1'%N'&56%,! "#c'54# el %uAAe&
cl&7 1'#N'&56#
&e'u&,
&#4 %67 1'%N'&56%,4 "e,c5e,3e le3
%67 1'%N'&56%,! "#c'54# el %uAAe&
cl&7 1'#N'&56#
&e'u&,
e,3
EGEMP"O 13:

"********************************************************"
"C-,'&-l 3e l-6 le36 RB0 0 RB1 3e63e el 5,'e&&u1'-& RA0( "
"RB0 &e7leE# el e6'#3- 3e RA0, RB1 el c-$1le$e,'- 3e RA0("
"********************************************************"

L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
I,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6 5,'e&,-6
-&+ 0D00 "*ec'-& 3e Re6e'
I,5c5- cl&7 PORTB "B-&&# l-6 l#'c8 3e 6#l53#
%67 STATUS,RP0 "Selecc5-,# %#,c- 1
cl&7 TRISB "Pue&'# B 6e c-,75+u&# c-$-
6#l53#
$-4l@ %Z00011111Z
$-4@7 TRISA "Pue&'# A 6e c-,75+u&# c-$-
e,'&#3#
%c7 STATUS,RP0 "Selecc5-,# %#,c- 0
L--1 cl&@3' "Re7&e6c# el WDT '5$e&
%'76c PORTA,0 "RA0 / 1 HH
+-'- RA0Ne6N1 "S5
%c7 PORTB,0 "N-, 3e6c-,ec'# RB0
%67 PORTB,1 "C-,ec'# RB1
+-'- L--1 "Bu%le 65, 75,
RA0Ne6N1 %67 PORTB,0 "Ac'54# RB0
%c7 PORTB,1 "Ac'54# RB1
+-'- L--1 "Bucle 65, 75,
e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O 1!:

"************************************************"
" ESTE PROGRA)A 2ACE UN CONTADOR DECI)AL DE UN "
" DISPLAS DE = SEG)ENTOS, SE INCRE)ENTA CADA *EZ "
" VUE EL )ICRO TIENE UNA INTERRUPCION POR EL PIN "
" RBOQINT "
"************************************************"
LIST P/1!F:4
STATUS EVU 038
PORTA EVU 08
TRISA EVU 08
PORTB EVU 0!8
TRISB EVU 0!8
INTCON EVU 0B8
CONTA EVU 0C8
LOOPS EVU 0D8
LOOPS. EVU 0E8
OPCION EVU 018
Z EVU 0.8
W EVU 008
RESET
ORG 0<00 " *ECTOR DE RESET
GOTO INICIO " SALTA AL INICIO DEL PROGRA)A

ORG 0<04 " *ECTOR VUE ATIENDE LA INTERRUPCION
CALL RETARDO " LLA)A A RETARDO
BTFSC PORTB,0 " PREGUNTA POR EL PIN RB0
GOTO SALE " SALTA A LA ETIVUETA SALE
BTFSS INTCON,1 " CONFIR)A SI LA INTERRUPCION FUE
(((((((((((((((((((((((((((((("CAUSADA POR EL PIN INT
GOTO SALE " SALTA A LA ETIVUETA SALE
INCF CONTA " INCRE)ENTA EL CONTADOR
)O*F CONTA,W " CARGA W CON EL CONTADOR
<ORLW 0<0A " <OR PARA *ER SI ES IGUAL A 0A8
BTFSC STATUS,Z " PRUEBA SI EL CONTADOR LLEGÓ A 0A8
CLRF CONTA " SI LLEGÓ A 10 PASA A 0
)O*F CONTA,W " PASA EL DATO AL DISPLAS
)O*WF PORTA
CALL RETARDO " LLA)A A RETARDO
SALE
BCF INTCON,1 " PONE A CERO LA BANDERA DE INTERRUPCION
RETFIE " REGRESA AL PROGRA)A PRINCIPAL
RETARDO
)O*LW (100
)O*WF LOOPS
TOP. )O*LW (110
)O*WF LOOPS.
TOP NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ LOOPS.
GOTO TOP
DECFSZ LOOPS
GOTO TOP.
RETLW 0
INICIO
BSF STATUS, " ENTRA AL BANCO 1
)O*LW 0F02 " CARGA 0F8 EN W
)O*WF TRISA " CONFIGURA EL PUERTO A CO)O SALIDA
)O*LW 0FF2 " CARGA 0FF8 EN W
)O*WF TRISB " CONFIGURA EL PUERTO B CO)O ENTRADA
)O*LW :02 " CARGA :08 EN W
)O*WF OPCION " CONFIGURA FLANCO DE BAJADA PARA INT
BCF STATUS, " SALE DEL BANCO 1
)O*LW K02 " CARGA K08 EN W
)O*WF INTCON " )UE*E W AL REGISTRO INTCON
CLRF CONTA " INICIA CONTADOR EN CERO
)O*F CONTA,W " PASA EL *ALOR DEL CONTADOR A W
)O*WF PORTA " CARGA W EN EL DISPLAS

CICLO NOP
NOP
GOTO CICLO
END
EGEMP"O 1=:

"S-%&e el 3561l#0 3e cR'-3- c-$C, c-,ec'#3- # l# 1ue&'# B, 6e 3e6e# "456u#l5A#&
el e6'#3- l;+5c- G0G - G1G 3el 5,'e&&u1'-& RA0( )e35#,'e
"el 5,'e&&u1'-& RA1 6e #c'54# - ,- el 1u,'- 3ec5$#l(

L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
5,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6
5,'e&,-6

-&+ 0D00 "*ec'-& 3e Re6e'
+-'- I,5c5-
-&+ 0D0 "S#l4# el 4ec'-& 3e 5,'e&&u1c5;,
I,5c5- cl&7 PORTB "B-&&# l-6 l#'c8 3e 6#l53#
%67 STATUS,RP0 "Selecc5-,# %#,c- 1
cl&7 TRISB "Pue&'# B 6e c-,75+u&# c-$-
6#l53#
$-4l@ %Z00011111Z
$-4@7 TRISA "Pue&'# A 6e c-,75+u&# c-$-
e,'&#3#
%c7 STATUS,RP0 "Selecc5-,# %#,c- 0

L--1 cl&@3' "Re7&e6c# el WDT
%'76c PORTA,0 "C8e9ue# RA0
+-'- RA0Ne6N1 "E6 ,54el G1G
$-4l@ %Z00111111Z
$-4@7 PORTB "*56u#l5A# el 3B+5'- 0
+-'- Te6'NRA1
RA0Ne6N1 $-4l@ %Z00000110Z
$-4@7 PORTB "*56u#l5A# el 3B+5'- 1

Te6'NRA1 %'76c PORTA,1 "C8e9ue# RA1
+-'- RA1Ne6N1 "E6'R # G1G
%c7 PORTB,= "De6c-,ec'# 1u,'- 3ec5$#l
+-'- L--1
RA1Ne6N1F %67 PORTB,= "Ac'54# 1u,'- 3ec5$#l
+-'- L--1
e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O 10:

"El D561l#0 3e = 6e+$e,'-6( Dec-3575c#3-& 8eD( # = 6e+$e,'-6(
")e35#,'e l-6 cu#'&- 5,'e&&u1'-&e6 RA0JRA3 6e 5,'&-3uce u, 4#l-& 8eD#3ec5$#l 3e
4 %5'6
"9ue 3e%e 456u#l5A#&6e 6-%&e el 3561l#0

L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
5,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6
5,'e&,-6

-&+ 0D00 "*ec'-& 3e Re6e'
"************************************************************************
"T#%l#F E6'# &u'5,# c-,45e&'e el c;35+- %5,#&5- 1&e6e,'e e, l-6 4 %5'6 3e "$e,-6
1e6- 3el &e+( W e, 6u e9u54#le,'e # = 6e+$e,'-6( El c;35+- = "6e+$e,'-6 &e'-&,#
'#$%5[, e, el &e+( W
"************************************************************************
T#%l#F #33@7 PCL,F "De61l#A#$5e,'- 6-%&e l# '#%l#
&e'l@ %Z00111111Z "DB+5'- 0
&e'l@ %Z00000110Z "DB+5'- 1
&e'l@ %Z01011011Z "DB+5'- .
&e'l@ %Z01001111Z "DB+5'- 3
&e'l@ %Z01100110Z "DB+5'- 4
&e'l@ %Z01101101Z "DB+5'-
&e'l@ %Z01111101Z "DB+5'- !
&e'l@ %Z00000111Z "DB+5'- =
&e'l@ %Z01111111Z "DB+5'- :
&e'l@ %Z01100111Z "DB+5'- K
&e'l@ %Z01110111Z "DB+5'- A
&e'l@ %Z01111100Z "DB+5'- B
&e'l@ %Z00111001Z "DB+5'- C
&e'l@ %Z01011110Z "DB+5'- D
&e'l@ %Z01111001Z "DB+5'- E
&e'l@ %Z01110001Z "DB+5'- F
I,5c5- cl&7 PORTB "B-&&# l-6 l#'c8 3e 6#l53#
%67 STATUS,RP0 "Selecc5-,# %#,c- 1
cl&7 TRISB "Pue&'# B 6e c-,75+u&# c-$-
6#l53#
$-4l@ %Z00011111Z
$-4@7 TRISA "Pue&'# A 6e c-,75+u&# c-$-
e,'&#3#
%c7 STATUS,RP0 "Selecc5-,# %#,c- 0

L--1 cl&@3' "Re7&e6c#& el WDT
$-47 PORTA,W
#,3l@ %Z00001111Z "Lee el c;35+- 3e RA0JRA3
c#ll T#%l# "C-,45e&'e # = 6e+$e,'-6
$-4@7 PORTB "*56u#l5A# 6-%&e el 3561l#0
+-'- L--1
e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O 1C:

*56u#l5A#c5;, = 6e+$e,'-6
O%Ee'54-6F
XY!1!.3" Re#l5A#& l# 3ec-3575c#c5;, 3e BCD # = 6e+$e,'-6 1-& 6-7'@#&e
XY!1!.3" )ul'51leD#& e, el '5e$1- l# 5,7-&$#c5;, 1#&# . 3B+5'-6 = 6e+$e,'-6
P&-ce35$5e,'-F
El $['-3- u'5l5A#3- 1#&# l# 456u#l5A#c5;, 35,R$5c# c-,656'e e, 456u#l5A#& c#3#
3B+5'- 3u&#,'e u, 5,6'#,'e 3e '5e$1- 0 # u,# 4el-c53#3 '#l 9ue +&#c5#6 # l#
1e&656'e,c5# 3el -E- el e7ec'- 75,#l e6 9ue '-3-6 l-6 3B+5'-6 e6'R, e,ce,353-6
#l '5e$1-(
L56'#3- 3el 1&-+&#$# 3el 3561l#0 e, #66e$%le&
"&u'5,# 3e 3561l#0 35,R$5c- 3e 3-6 3B+5'-6
Y3e75,e BAN\0 %c7 STATUS,RP0
Y3e75,e BAN\1 %67 STATUS,RP0
C-,'. e9u 0D0D
D#'-1 e9u 0D0E
D#'-. e9u 0D0F
Del1 e9u 0D10
Del. e9u 0D11
D561l#0
BAN\1
cl&7 TRISA "1ue&'- A c-$- 6#l53#
cl&7 TRISB "1ue&'- B c-$- 6#l53#
BAN\0
$-4l@ 0D03 "5,8#%5l5'# '&#,656'-&e6
$-4@7 PORTA
"
$-4l@ (10 "4#l-& 3e &e1e'5c5-,e6
$-4@7 C-,'.
L--1D561
"
"S#c#& #l 1ue&'- el D#'- 1 1-& u, '5e$1- e61ecB75c-
"
$-47 D#'-1,W "D#'- 1#&# 3ec-3575c#&
c#ll T#%l# "Dec-3575c#c5;, 3el 3#'-
$-4@7 PORTB "D#'- 3ec-3575c#3- # 1ue&'-
%c7 PORTA,0 "2#%5l5'# V 3#'- 1
c#ll Re'D5+ "Re'#&3- 3e 3B+5'-
%67 PORTA,0 "I,8#%5l5'# V 3#'- 1
,-1 "Re'#&3- 3e #1#+#3-
,-1
,-1
,-1
"
"S#c#& #l 1ue&'- el D#'- . 1-& u, '5e$1- e61ecB75c-
"
$-47 D#'-.,W "D#'- 1#&# 3ec-3575c#&
c#ll T#%l# "Dec-3575c#c5;, 3el 3#'-
$-4@7 PORTB "D#'- 3ec-3575c#3- # 1ue&'-
%c7 PORTA,1 "2#%5l5'# V 3#'- .
c#ll Re'D5+ "Re'#&3- 3e 3B+5'-
%67 PORTA,1 "I,8#%5l5'# V 3#'- .
,-1 "Re'#&3- 3e #1#+#3-
,-1
,-1
,-1
"
3ec76A C-,'.,F "Dec&e$e,'# C-,'., elu3e 65+( 6B ce&-
+-'- L--1D561 "Re15'e c5cl-
&e'u&,
T#%l#
#33@7 PCL,F
&e'l@ 0D01 "Cu#,3- el 3B+5'- e6 0
&e'l@ 0D4F "Cu#,3- el 3B+5'- e6 1
&e'l@ 0D1. "Cu#,3- el 3B+5'- e6 .
&e'l@ 0D0! "Cu#,3- el 3B+5'- e6 3
&e'l@ 0D4C "Cu#,3- el 3B+5'- e6 4
&e'l@ 0D.4 "Cu#,3- el 3B+5'- e6
&e'l@ 0D.0 "Cu#,3- el 3B+5'- e6 !
&e'l@ 0D0F "Cu#,3- el 3B+5'- e6 =
&e'l@ 0D00 "Cu#,3- el 3B+5'- e6 :
&e'l@ 0D04 "Cu#,3- el 3B+5'- e6 K
&e'l@ 0D0: "Cu#,3- el 3B+5'- e6 A
&e'l@ 0D!0 "Cu#,3- el 3B+5'- e6 B
&e'l@ 0D31 "Cu#,3- el 3B+5'- e6 C
&e'l@ 0D4. "Cu#,3- el 3B+5'- e6 D
&e'l@ 0D30 "Cu#,3- el 3B+5'- e6 E
&e'l@ 0D3: "Cu#,3- el 3B+5'- e6 F
"
Re'D5+
$-4l@ .
$-4@7 Del1
L--11
$-4l@ (0
$-4@7 Del.
L--1.
3ec76A Del.,F
+-'- L--1.
3ec76A Del1,F
+-'- L--11
&e'u&,
El l56'#3- #,'e&5-& 1ue3e u'5l5A#&6e c-$- 6u%&u'5,# c#&+#,3- 1&e45#$e,'e l#6
4#&5#%le6 3#'-1 0 3#'-. c-, l-6 4#l-&e6 8eD#3ec5$#le6 9ue 6e 3e6e# 456u#l5A#&(
EGEMP"O 1'

"Ge,e&#c5;, 3e ,C$e&-6 #le#'-&5-6
"
"C#3# 4eA 9ue 6e #1l59ue u, 1ul6- 1-& RA0, 6e +e,e&# u, ,C$e&- %5,#&5- 3e ":
%5'6 #le#'-&5- 9ue 6e&R 456u#l5A#3- 6-%&e l-6 : le36 c-,ec'#3-6 e, l# "1ue&'# B,
3u&#,'e 3 6e+u,3-6(
"
"E,'&e l#6 357e&e,'e6 '[,5c#6, l# e$1le#3# 1#&# -%'e,e& el ,C$e&-, "c-,656'e e,
c#1'u&#& el 4#l-& 3el T)R0 e, u, $-$e,'- 3#3-(

L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
I,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6 5,'e&,-6

Nu$e&- e9u 0D0c "NC$e&- #le#'-&5-
Del#0NC-,' e9u 0D03 "C-,'#3-& 3e 5,'e&4#l-6

-&+ 0D00 "*ec'-& 3e Re6e'

"************************************************************************
"Del#0N.0N$6F E6'# &u'5,# 3e 'e$1-&5A#c5;, '5e,e 1-& -%Ee'- ele5$5,#&
el "Ge7ec'- &e%-'eG 3e l-6 1e&57[&5c-6 elec'&-$ecR,5c-6( Re#l5A# u, 3el#0 3e ".0
$S( S5 el PIC '&#%#E# # u,# 7&ecue,c5# 3e 4)2A, el T)R0 e4-luc5-,# "c#3# uS( S5
9ue&e$-6 'e$1-&5A#& .0000 uS >.0 $S? c-, u, 1&ee6c#le& 3e ".!, el T)R0 3e%e&R
c-,'#& =: e4e,'-6 >=: * .!?( El 4#l-& =: e9u54#le # "0D4e 8eD( 0 c-$- el T)R0
e6 #6ce3e,'e 8#%&R 9ue c#&+#& 6u c-$1le$e,'- # "1 >0D%1 8eD(?(
"************************************************************************
Del#0N.0N$6
%c7 INTCON,T0IF "De6c-,ec'# el 7l#+ 3e
&e%-6#$5e,'-
$-4l@ 0D%1 "C-$1le$e,'- 8eD( 3e =:
$-4@7 T)R0 "c#&+# el T)R0
Del#0N.0N$6N1
cl&@3' "Re7&e6c#& el WDT
%'766 INTCON,T0IF "Re%#6#$5e,'- 3el T)R0 HH
+-'- Del#0N.0N$6N1"T-3#4B# ,-
&e'u&,

"************************************************************************
"Del#0N4#&F E6'# &u'5,# 3e 1&-1;65'- +e,e&#l &e#l5A# u,# 'e$1-&5A#c5;, "4#&5#%le
e,'&e 0 $S 0 1.(:G( Se e$1le# u, 1&ee6c#le& 3e .! 0 #l T)R0 "6e le c#&+# c-,
1K( L# 4el-c53#3 3e '&#%#E- e6 3e 4)8A 0 1-& '#,'- el "T)R0 6e 5,c&e$e,'# c#3#
uS( De e6'# 7-&$#, el T)R0 3e%e c-,'#& 1K "e4e,'-6 9ue, c-, u, 1&ee6c#le& 3e
1.: 8#ce u, 5,'e&4#l- '-'#l 3e 0000 "uSQ0 $S >1K * .!?( El 4#l-& 1K 8#0 9ue
eD1&e6#&l- "e, 2eD( >c3? 0 "c-$- el T)R0 e6 #6ce,3e,'e 8#%&R 9ue c#&+#& 6u
c-$1le$e,'- >3C 8eD(?(
"D5c8- 5,'e&4#l- 3e 0 $S 6e &e15'e '#,'#6 4ece6 c-$- 5,359ue l#
4#&5#%le "GDel#0Nc-,'G, e6 1-& ell- 9ue el 3el#0 $B,5$- e6 3e 0 $S
>Del#0Nc-,'/1? "0 el $RD5$# 3e 1.(:G >Del#0Nc-,'/.?(
"************************************************************************
Del#0N4#& %c7 INTCON,T0IF "De6c-,ec'# el 7l#+ 3e
&e%-6#$5e,'-
$-4l@ 0D3c "C-$1le$e,'- 8eD( 3e 1K
$-4@7 T)R0 "c#&+# el T)R0
I,'e&4#l- cl&@3' "Re7&e6c# el WDT
%'766 INTCON,T0IF "Re%#6#$5e,'- 3el T)R0 HH
+-'- I,'e&4#l- "T-3#4B# ,-
3ec76A Del#0NC-,',F "Dec&e$e,'# c-,'#3-& 3e 5,'e&4#l-6
+-'- Del#0N4#& "Re15'e el 5,'e&4#l- 3e 0 $S
&e'u&,
I,5c5- cl&7 PORTB "B-&&# l-6 l#'c8 3e 6#l53#
%67 STATUS,RP0 "Selecc5-,# %#,c- 1
cl&7 TRISB "Pue&'# B 6e c-,75+u&# c-$-
6#l53#
$-4l@ %Z00011111Z
$-4@7 TRISA "Pue&'# A 6e c-,75+u&# c-$-
e,'&#3#
$-4l@ %Z00000111Z
$-4@7 OPTIONNREG "P&ee6c#le& 3e .! 1#&# el T)R0
%c7 STATUS,RP0 "Selecc5-,# %#,c- 0


L--1 cl&@3' "Re7&e6c# el WDT
%'766 PORTA,0 "Ac'54#3- RA0 HH
+-'- L--1 "T-3#4B# N-
$-47 T)R0,W "A8-&# 65(
$-4@7 Nu$e&- "C#1'u&# el 4#l-& 3el T)R0 >NL
#le#'-&5-?
c#ll Del#0N.0N$6 "El5$5,# &e%-'e6

RA0N1 cl&@3' "Re7&e6c# el WDT
%'76c PORTA,0 "De6#c'54#3- RA0 HH
+-'- RA0N1 "T-3#4B# ,-
$-47 Nu$e&-,W "Se 8# 1&-3uc53- u, 5$1ul6- e, RA0,
6e lee
$-4@7 PORTB "el 4#l-& c#1'u&#3- 3el T)R0
>NL #le#'-&5-?
"0 6e 6#c# 1-& l-6 le36 3e l# PUERTA B
$-4l@ 3Z!0Z
$-4@7 Del#0NC-,' "I,5c5# 4#&5#%le 3e 'e$1-&5A#c5;,
c#ll Del#0N4#& "Te$1-&5A# 3 6e+u,3-6
cl&7 PORTB "De6c-,ec'# l#6 6#l53#6

+-'- L--1
e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O 1N

"Ge,e&#c5;, 3e ,C$e&-6 #le#'-&5-6( El 3#3- elec'&;,5c-
"
"Se '&#'# 3e +e,e&#& u, ,C$e&- #le#'-&5- e,'&e 1 0 !( Cu#,3- RA0 e6'R # "G1G,
6-%&e el 3561l#0 3e = 6e+$e,'-6 c-,ec'#3- # l# 1ue&'# B, 6e 4#, "456u#l5A#,3- 3e
7-&$# 6ecuec5#l l-6 ,C$e&-6 3el 1 #l !, c-, 5,'e&4#l-6 "3e 0(0G( Al 1#6#& RA0 #
,54el G0G, 6e 456u#l5A# el ,C$e&- #le#'-&5- "-%'e,53- 3u&#,'e u, '5e$1- 3e 3G(
Lue+- el 3561l#0 6e #1#+# 0 l# "6ecue,c5# 6e &e15'e(

L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
5,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6 5,'e&,-6

Nu$e&- e9u 0D0c "NC$e&- #le#'-&5-
Del#0NC-,' e9u 0D03 "C-,'#3-& 3e 5,'e&4#l-6
Te$1-&#l e9u 0D0e "*#&5#%le 'e$1-&#l

-&+ 0D00 "*ec'-& 3e Re6e'

"************************************************************************
"T#%l#F E6'# &u'5,# c-,45e&'e el c;35+- %5,#&5- 1&e6e,'e e, l-6 4 %5'6 3e "$e,-6
1e6- 3el &e+( W e, 6u e9u54#le,'e # = 6e+$e,'-6( El c;35+- = "6e+$e,'-6 &e'-&,#
'#$%5[, e, el &e+( W
T#%l#F #33@7 PCL,F "De61l#A#$5e,'- 6-%&e l# '#%l#
&e'l@ %Z00111111Z "DB+5'- 0
&e'l@ %Z00000110Z "DB+5'- 1
&e'l@ %Z01011011Z "DB+5'- .
&e'l@ %Z01001111Z "DB+5'- 3
&e'l@ %Z01100110Z "DB+5'- 4
&e'l@ %Z01101101Z "DB+5'-
&e'l@ %Z01111101Z "DB+5'- !

"************************************************************************
"Del#0N.0N$6F E6'# &u'5,# 3e 'e$1-&5A#c5;, '5e,e 1-& -%Ee'- el5$5,#& el "Ge7ec'-
&e%-'eG 3e l-6 1e&57[&5c-6 elec'&-$ecR,5c-6( Re#l5A# u, 3el#0 3e ".0 $S( S5 el
PIC '&#%#E# # u,# 7&ecue,c5# 3e 4)2A, el T)R0 e4-luc5-,# "c#3# uS( S5 9ue&e$-6
'e$1-&5A#& .0000 uS >.0 $S? c-, u, 1&ee6c#le& 3e ".!, el T)R0 3e%e&R c-,'#& =:
e4e,'-6 >=: * .!?( El 4#l-& =: e9u54#le # "0D4e 8eD( 0 c-$- el T)R0 e6
#6ce3e,'e 8#%&R 9ue c#&+#& 6u c-$1le$e,'- # "1 >0D%1 8eD(?(
Del#0N.0N$6 %c7 INTCON,T0IF "De6c-,ec'# el 7l#+ 3e
&e%-6#$5e,'-
$-4l@ 0D%1 "C-$1le$e,'- 8eD( 3e =:
$-4@7 T)R0 "c#&+# el T)R0
Del#0N.0N$6N1 cl&@3' "Re7&e6c# el WDT
%'766 INTCON,T0IF "Re%#6#$5e,'- 3el T)R0 HH
+-'- Del#0N.0N$6N1 "T-3#4B# ,-
&e'u&,

"************************************************************************
"Del#0N4#&F E6'# &u'5,# 3e 1&-1;65'- +e,e&#l &e#l5A# u,# 'e$1-&5A#c5;, "4#&5#%le
e,'&e 0 $S 0 1.(:G( Se e$1le# u, 1&ee6c#le& 3e .! 0 #l T)R0 "6e le c#&+# c-,
1K( L# 4el-c53#3 3e '&#%#E- e6 3e 4)8A 0 1-& '#,'- el "T)R0 6e 5,c&e$e,'# c#3#
uS( De e6'# 7-&$#, el T)R0 3e%e c-,'#& 1K "e4e,'-6 9ue, c-, u, 1&ee6c#le& 3e
1.: 8#ce u, 5,'e&4#l- '-'#l 3e 0000 "uSQ0 $S >1K * .!?( El 4#l-& 1K 8#0 9ue
eD1&e6#&l- e, 2eD( >c3? 0 "c-$- el T)R0 e6 #6ce,3e,'e 8#%&R 9ue c#&+#& 6u
c-$1le$e,'- >3C 8eD(?(
"D5c8- 5,'e&4#l- 3e 0 $S 6e &e15'e '#,'e6 4ece6 c-$- 5,359ue l#
4#&5#%le "GDel#0Nc-,'G, e6 1-& ell- 9ue el 3el#0 $B,5$- e6 3e 0 $S
>Del#0Nc-,'/1? "0 el $RD5$- 3e 1.(:G >Del#0Nc-,'/.?(
Del#0N4#&F %c7 INTCON,T0IF "De6c-,ec'# el 7l#+ 3e
&e%-6#$5e,'-
$-4l@ 0D3c "C-$1le$e,'- 8eD( 3e 1K
$-4@7 T)R0 "c#&+# el T)R0
I,'e&4#l- cl&@3' "Re7&e6c# el WDT
%'766 INTCON,T0IF "Re%#6#$5e,'- 3el T)R0 HH
+-'- I,'e&4#l- "T-3#4B# ,-
3ec76A Del#0NC-,',F "Dec&e$e,'# c-,'#3-& 3e 5,'e&4#l-6
+-'- Del#0N4#& "Re15'e el 5,'e&4#l- 3e 0 $S
&e'u&,
I,5c5- cl&7 PORTB "B-&&# l-6 l#'c8 3e 6#l53#
%67 STATUS,RP0 "Selecc5-,# %#,c- 1
cl&7 TRISB "Pue&'# B 6e c-,75+u&# c-$-
6#l53#
$-4l@ %Z00011111Z
$-4@7 TRISA "Pue&'# A 6e c-,75+u&# c-$-
e,'&#3#
$-4l@ %Z00000111Z
$-4@7 OPTIONNREG "P&ee6c#le& 3e .! 1#&# el T)R0
%c7 STATUS,RP0 "Selecc5-,# %#,c- 0


L--1 cl&@3' "Re7&e6c# el WDT
%'766 PORTA,0 "Ac'54#3- RA0 HH
+-'- L--1 "T-3#4B# N-
$-47 T)R0,W "A8-&# 65(
$-4@7 Nu$e&- "C#1'u&# el 4#l-& 3el T)R0 >NL
#le#'-&5-?
c#ll Del#0N.0N$6 "El5$5,# &e%-'e6

"El ,C$e&- #le#'-&5- e6, $e35#,'e &e6'#6 c-,6ecu'54#6, 3545353- e,'&e !( "De
e6'# 7-&$# el Cl'5$- &e6'- 6e&R e,'&e 0 0 9ue 6e&R 5,c&e$e,'#3- e, "u,# u,53#3
1#&# 9ue 3e75,5'54#$e,'e 6#l+# u, ,C$e&- e,'&e 1 0 !(
D5453eF $-4l@ 3Z!Z
6u%@7 Nu$e&-,W "Re6'# ! #l ,C$e&- #le#'-&5-
$-4@7 Nu$e&- "l- +u#&3#
6u%l@ 3ZZ
%'766 STATUS,C ")5&# 65 e6 $e,-& 3e
+-'- D5453e "N-
5,c7 Nu$e&-,F "El ,C$e&- 9ue3# e,'&e 1 0 !
"E6'# 6ecue,c5# 3e 5,6'&ucc5-,e6 '5e,e 1-& $565;, 1&e6e,'#& 6-%&e el "3561l#0
l-6 ,C$e&-6 3el 1 #l ! # 5,'e&4#l-6 3e 0(0G c-, -%Ee'- 3e 3#& "u,# 6e,6#c5;, 3e
$-45$5e,'- 3el 3#3-( D5c8- $-45$5e,'- 6e $#,'5e,e "$5e,'&#6 RA0 e6'[ # G1G( Al
1-,e&6e # G0G 6e 1&e6e,'# el ,C$e&- "#le#'-&5- c#1'u&#3- 1&e45#$e,'e 3e63e el
T)R0(1]M.3
D#3-F $-4l@ 3Z!Z
$-4@7 Te$1-&#l "I,5c5# el c-,'#3-& 3el 3#3-
RA0N1 cl&@3' "Re7&e6c- 3el WDT
%'766 PORTA,0 ")5&# 65 RA0 e6'R # 1
+-'- S#l53# "N-, 456u#l5A# el #le#'-&5-
$-47 Te$1-&#l,W "NC$e&- # 456u#l5A#&
c#ll T#%l# "C-,4e&65;, # BCD
$-4@7 PORTB "*56u#l5A# 6-%&e el 3561l#0
$-4l@ 3Z1Z
$-4@7 Del#0NC-,' "*#&5#%le 3e 'e$1-&5A#c5;,
c#ll Del#0N4#& "'e$1-&5A# 0(0G
3ec76A Te$1-&#l,F "S5+u5e,'e ,C$e&-
+-'- RA0N1
+-'- D#3-

c#ll Del#0N.0N$6 "El5$5,# &e%-'e6

S#l53#F $-47 Nu$e&-,W "Rec-+e el #le#'-&5-
c#ll T#%l# "L- c-,45e&'e e, = 6e+$e,'-6
$-4@7 PORTB "S#l53# # D561l#0
$-4l@ 3Z!0Z
$-4@7 Del#0NC-,' "I,5c5# 4#&5#%le 3e 'e$1-&5A#c5;,
c#ll Del#0N4#& "Te$1-&5A# 3G
cl&7 PORTB "De6c-,ec'# l# 6#l53#
+-'- L--1
e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O 2,

"El 1&-+&#$# &e#l5A# u,# 'e$1-&5A#c5;, 3e 0( 6e+u,3-6( Se 6u1-,e u,#
"7&ecue,c5# 3e '&#%#E- 3el PIC 3e 4 )2A, 1-& l- 9ue el T)R0 e4-luc5-,# "c#3# 1
uS >4T-6c/1uS ?(
"
"Al T)R0 6e le c#&+# c-, .0 J . >6u c-$1le$e,'-, =? 0 6e 6elecc5-,# u,
"1&ee6c#le& 3e :( L# 'e$1-&5A#c5;, #6B -%'e,53# e6 3e u,-6 1KK0 uS( S5 "e6'# 6e
&e15'e .0 4ece6, 6e -%'5e,e u,# 'e$1-&5A#c5;, '-'#l e, '-&,- # "l-6 00000uS(

L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
5,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6 5,'e&,-6
C-,'#3-& e9u 0D10 "*#&5#%le 1#&# el c-,'#3-&
-&+ 0D00 "*ec'-& 3e Re6e'

I,5c5- %67 STATUS,RP0 "Selecc5-,# %#,c- 1 3e 3#'-6
$-4l@ %Z11000010Z
$-4@7 OPTIONNREG "C-,75+u&# 1&ee6c#le& 3e :
#65+,#3- # T)R0
%c7 STATUS,RP0 "Selecc5-,# %#,c- 0 3e 3#'-6
$-4l@ (.0
$-4@7 C-,'#3-& "I,5c5# l# 4#&5#%le c-,'#3-&
Bucle1 cl&7 INTCON "De6c-,ec'# 7l#+ 3el T)R0 e
5,'e&&u1c5-,e6
$-4l@ (=
$-4@7 T)R0 "C#&+# el T)R0 c-, c-$1le$e,'-
3e .0
Bucle. %'766 INTCON,T0IF "F5, 3el T)R0 >7l#+ T0IF/1? HH
+-'- Bucle. "N-, e61e&#&
3ec76A C-,'#3-&,F "S5( Re1e'5& '#,'#6 4ece6 c-$- 5,359ue
el c-,'#3-&
+-'- Bucle1
e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O 21

"Jue+- 3e luce6(
"
"Se 3e6e# &e#l5A#& u,# &-'#c5;, 6ecue,c5#l e, el e,ce,353- 3e c#3# le3
"c-,'ec'#3- # l# 1ue&'# B( S5 RA0 / 0, l# &-'#c5;, 6e&R 3e 3e&ec8# # "5A9u5e&3#
0 45ce4e&6#( C#3# le3 1e&$#,ece e,ce,353- 0(. 6e+u,3-6 >.0 "$S?

L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
5,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6 5,'e&,-6
C-,'#3-& e9u 0D0c "*#&5#%le 1#&# l# 'e$1-&5A#c5;,

-&+ 0D00 "*ec'-& 3e Re6e'
"************************************************************************
"Del#0 e6 u,# &u'5,# 9ue &e#l5A# u,# 'e$1-&5A#c5;, 3e .0 $S 9ue e6 el "'5e$1-
e, 9ue 8#, 3e 1e&$#,ece& e,ce,353-6 c#3# u,- 3e l-6 le36(
"
"S5 el PIC '&#%#E# # u,# 7&ecue,c5# 3e 4)2A, el T)R0 e4-luc5-,# c#3# uS( "S5 6e
3e6e# 'e$1-&5A#& .000 uS >.$S? c-, u, 1&ee6c#le& 3e 1.:, el T)R0 "3e%e&R
c-,'#& 1K e4e,'-6 >1K * 1.: / .4K!0?( El 4#l-& 1K e9u54#le # "0Dc3 0, c-$- el
T)R0 e6 #6ce,3e,'e, 8#%&R 9ue c#&+#& 6u c-$1le$e,'- ">0D3c?( E6'# 'e$1-&5A#c5;,
8#%&R 9ue &e1e'5&l# 10 4ece6 1#&# c-,6e+u5&
"el '-'#l 3e6e#3- >.0000?(
Del#0 $-4l@ (10
$-4@7 C-,'#3-& "C#&+# el c-,'#3-& c-, 10
Del#0N0 %c7 INTCON,T0IF "De6c-,ec'# el 7l#+ 3e &e%-6#$5e,'-
3el T)R0
$-4l@ 0D3c
$-4@7 T)R0 "c#&+# el T)R0
Del#0N1 cl&@3' "Re7&e6c- 3el WDT
%'766 INTCON,T0IF "Re%#6#$5e,'- 3el T)R0 HH
+-'- Del#0N1 "T-3#4B# ,- 8#, 1#6#3- l-6 . $S
3ec76A C-,'#3-&,F "Dec&e$e,'# c-,'#3-&( Se 8# &e1e'53- 10
4ece6 H
+-'- Del#0N0 "T-3#4B# ,-, 'e$1-&5A# . $6
&e'u&, "A8-&# 65
I,5c5- cl&7 PORTB "B-&&# l-6 l#'c8 3e 6#l53#
%67 STATUS,RP0 "Selecc5-,# %#,c- 1
cl&7 TRISB "Pue&'# B 6e c-,75+u&# c-$-
6#l53#
$-4l@ %Z00011111Z
$-4@7 TRISA "Pue&'# A 6e c-,75+u&# c-$-
e,'&#3#
$-4l@ %Z00000110Z
$-4@7 OPTIONNREG "P&ee6c#le& 3e 1.: 1#&# el T)R0
%c7 STATUS,RP0 "Selecc5-,# %#,c- 0

%67 STATUS,C "Ac'54# el c#&&0
L--1 c#ll Del#0 "Te$1-&5A# .0$S
%'76c PORTA,0 "E6'R # 0 RA0 HH
+-'- ANDc8# "N-, &-'#c5;, # 3e&ec8#
ANIA3# &l7 PORTB,F "S5, &-'#c5;, # 5A9u5e&3#
+-'- L--1
ANDc8# &&7 PORTB,F "R-'#c5;, # 3e&ec8#6
+-'- L--1
e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O 22

"C-,'#3-& UPQDOWN %5,#&5-
"S-%&e l-6 : le36 3e 6#l53# c-,ec'#3-6 # l# 1ue&'# B 6e 456u#l5A#&R, e,
"%5,#&5-, el ,C$e&- 3e 1ul6-6 #1l5c#3-6 1-& l# e,'&#3# RA0( RA1 3e'e&$5,# "65 l#
cue,'# e6 #6ce,3e,'e ># G1G - 3e6ce,3e,'e(

L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
5,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6 5,'e&,-6
-&+ 0D00 "*ec'-& 3e Re6e'
"************************************************************************
"Del#0N.0N$6F E6'# &u'5,# 3e 'e$1-&5A#c5;, '5e,e 1-& -%Ee'- el5$5,#& el "Ge7ec'-
&e%-'eG 3e l-6 1e&57[&5c-6 elec'&-$ecR,5c-6( Re#l5A# u, 3el#0 3e ".0 $S( S5 el
PIC '&#%#E# # u,# 7&ecue,c5# 3e 4)2A, el T)R0 e4-luc5-,# "c#3# uS( S5 9ue&e$-6
'e$1-&5A#& .0000 uS >.0 $S? c-, u, 1&ee6c#le& 3e "1.:, el T)R0 3e%e&R c-,'#&
1"! e4e,'-6 >1! * 1. ( El 4#l-& 1! "e9u54#le # Kc 8eD( 0 c-$- el T)R0 e6
#6ce3e,'e 8#%&R 9ue c#&+#& 6u "c-$1le$e,'- # 1 >!3 8eD(?(
Del#0N.0N$6 %c7 INTCON,T0IF "De6c-,ec'# el 7l#+ 3e
&e%-6#$5e,'-
$-4l@ 0D!3 "C-$1le$e,'- 8eD( 3e
1!
$-4@7 T)R0 "c#&+# el T)R0
Del#0N.0N$6N1 cl&@3' "Re7&e6c#& el WDT
%'766 INTCON,T0IF "Re%#6#$5e,'- 3el
T)R0 HH
+-'- Del#0N.0N$6N1 "T-3#4B# ,-
%c7 INTCON,T0IF "A8-&# 65, &e1-,e& el 7l#+
&e'u&,
I,5c5- cl&7 PORTB "B-&&# l-6 l#'c8 3e
6#l53#
%67 STATUS,RP0 "Selecc5-,# %#,c- 1
cl&7 TRISB "Pue&'# B 6e c-,75+u&#
c-$- 6#l53#
$-4l@ %Z00011111Z
$-4@7 TRISA "Pue&'# A 6e c-,75+u&#
c-$- e,'&#3#
$-4l@ %Z00000110Z
$-4@7 OPTIONNREG "P&ee6c#le& 3e 1.: 1#&#
el T)R0
%c7 STATUS,RP0 "Selecc5-,# %#,c- 0

L--1 cl&@3' "Re7&e6c#& el WDT
%'766 PORTA,0 "Su%53# 3e l# 6eT#l RA0 H
+-'- L--1 "N-
c#ll Del#0N.0N$6 "El5$5,# &e%-'e6
L--1N. cl&@3' "Re7&e6c#& el WDT
%'76c PORTA,0 "B#E#3# 3e RA0 >1ul6-? HH
+-'- L--1N. "N-
c#ll Del#0N.0N$6 "2# 8#%53- 1ul6-,
el5$5,#& &e%-'e6
%'766 PORTA,1 "RA1 / 1
+-'- D-@, "N-, cue,'# 3e6ce,3e,'e
U1 5,c7 PORTB,F "Cue,'# #6ce,3e,'e
+-'- L--1
D-@, 3ec7 PORTB,F "Cue,'# 3e6ce,3e,'e
+-'- L--1
e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O 23:

"C-,'#3-& UPQDOWN 3ec5$#l 3e u, 3B+5'-
"
"S-%&e el 3561l#0 = 6e+$e,'-6 c-,ec'#3- # l# 1ue&'# B 6e 456u#l5A#&R el ",C$e&-
3e 1ul6-6 #1l5c#3-6 1-& l# e,'&#3# RA0( RA1 3e'e&$5,# 65 l# "cue,'# e6
#6ce,3e,'e ># G1G - 3e6ce,3e,'e(

L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
5,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6 5,'e&,-6

C-,'#3-& e9u 0D0c "*#&5#%le 3el c-,'#3-&

-&+ 0D00 "*ec'-& 3e Re6e'
"************************************************************************
"T#%l#F E6'# &u'5,# c-,45e&'e el c;35+- BCD 1&e6e,'e e, l-6 4 %5'6 3e "$e,-6
1e6- 3el &e+( W e, 6u e9u54#le,'e # = 6e+$e,'-6( El c;35+- = "6e+$e,'-6 &e'-&,#
'#$%5[, e, el &e+( W(
T#%l#F #33@7 PCL,F "De61l#A#$5e,'- 6-%&e l#
'#%l#
&e'l@ %Z00111111Z "DB+5'- 0
&e'l@ %Z00000110Z "DB+5'- 1
&e'l@ %Z01011011Z "DB+5'- .
&e'l@ %Z01001111Z "DB+5'- 3
&e'l@ %Z01100110Z "DB+5'- 4
&e'l@ %Z01101101Z "DB+5'-
&e'l@ %Z01111101Z "DB+5'- !
&e'l@ %Z00000111Z "DB+5'- =
&e'l@ %Z01111111Z "DB+5'- :
&e'l@ %Z01100111Z "DB+5'- K
"************************************************************************
"Del#0N.0N$6F E6'# &u'5,# 3e 'e$1-&5A#c5;, '5e,e 1-& -%Ee'- el5$5,#& el "Ge7ec'-
&e%-'eG 3e l-6 1e&57[&5c-6 elec'&-$ecR,5c-6( Re#l5A# u, 3el#0 3e ".0 $S( S5 el
PIC '&#%#E# # u,# 7&ecue,c5# 3e 4)2A, el T)R0 e4-luc5-,# "c#3# uS( S5 9ue&e$-6
'e$1-&5A#& .0000 uS >.0 $S? c-, u, 1&ee6c#le& 3e "1.:, el T)R0 3e%e&R c-,'#& 1!
e4e,'-6 >1! * 1. ( El 4#l-& 1! "e9u54#le # Kc 8eD( 0 c-$- el T)R0 e6
#6ce3e,'e 8#%&R 9ue c#&+#& 6u "c-$1le$e,'- # 1 >!3 8eD(?(
Del#0N.0N$6 %c7 INTCON,T0IF "De6c-,ec'# el 7l#+ 3e
&e%-6#$5e,'-
$-4l@ 0D!3 "C-$1le$e,'- 8eD( 3e 1!
$-4@7 T)R0 "c#&+# el T)R0
Del#0N.0N$6N1 cl&@3' "Re7&e6c#& el WDT
%'766 INTCON,T0IF "Re%#6#$5e,'- 3el T)R0 HH
+-'- Del#0N.0N$6N1 "T-3#4B# ,-
%c7 INTCON,T0IF "A8-&# 65, &e1-,e& el 7l#+
&e'u&,
I,5c5- cl&7 PORTB "B-&&# l-6 l#'c8 3e 6#l53#
%67 STATUS,RP0 "Selecc5-,# %#,c- 1
cl&7 TRISB "Pue&'# B 6e c-,75+u&# c-$-
6#l53#
$-4l@ %Z00011111Z
$-4@7 TRISA "Pue&'# A 6e c-,75+u&# c-$-
e,'&#3#
$-4l@ %Z00000110Z
$-4@7 OPTIONNREG "P&ee6c#le& 3e 1.: 1#&# el T)R0
%c7 STATUS,RP0 "Selecc5-,# %#,c- 0

cl&7 C-,'#3-& "Pue6'# # 0 3el c-,'#3-&

L--1 $-47 C-,'#3-&,W
c#ll T#%l# "C-,45e&'e BCD # = 6e+$e,'-6
$-4@7 PORTB "*56u#l5A# el 4#l-& 3el
c-,'#3-&
W#5'N0 cl&@3' "Re7&e6c#& el WDT
%'766 PORTA,0 "Su%53# 3e l# 6eT#l RA0 H
+-'- W#5'N0 "N-
c#ll Del#0N.0N$6 "El5$5,# &e%-'e6
W#5'N1 cl&@3' "Re7&e6c#& el WDT
%'76c PORTA,0 "B#E#3# 3e RA0 >1ul6-? HH
+-'- W#5'N1 "N-
c#ll Del#0N.0N$6 "2# 8#%53- 1ul6-, el5$5,#&
&e%-'e6
%'766 PORTA,1 "RA1 / 1
+-'- D-@, "N-, cue,'# 3e6ce,3e,'e
U1 5,c7 C-,'#3-&,F "I,c&e$e,'# c-,'#3-&
$-4l@ (10
6u%@7 C-,'#3-&,W
%'766 STATUS,Z "E6 $#0-& 3e K HH
+-'- L--1 "N-
cl&7 C-,'#3-& "S5, 1ue6'# # 0 3el c-,'#3-&
+-'- L--1
D-@, 3ec7 C-,'#3-&,F "Dec&e$e,'# el c-,'#3-&
$-4l@ 0D77
6u%@7 C-,'#3-&,W
%'766 STATUS,Z "E6 $e,-& 3e 0 HH
+-'- L--1 "N-
$-4l@ 0D0K
$-4@7 C-,'#3-& "S5, 1ue6'# # K 3el c-,'#3-&
+-'- L--1
e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O 2!:

"Ge,e&#c5;, 3e -,3#6 cu#3&#3#6 3e 357e&e,'e6 7&ecue,c5#6 4#&5#,3- el "4#l-& 3el
T)R0(
"L# lB,e# 3e 6#l53# RB0 c#$%5#&R 3e e6'#3- # u,# 7&ecue,c5# 3e'e&$5,#3# "1-& el
4#l-& 5,'&-3uc53- $e35#,'e l-6 3 5,'e&&u1'-&e6 RA0JRA.F
"
"RA. RA1 RA0 F&ecue,c5# Pe&5-3-
Se$51e&5-3-
"JJJ JJJ JJJ JJJJJJJJJJ JJJJJJJ
JJJJJJJJJJJ
"0 0 0 0 \2A JJJ JJJ
"0 0 1 1 \2A 1000 uS 00 uS
"0 1 0 . \2A 00 uS .0 uS
"0 1 1 3 \2A 333 uS 1!! uS
"1 0 0 4 \2A .0 uS 1. uS
"1 0 1 \2A .00 uS 100 uS
"1 1 0 ! \2A 1!! uS :3 uS
"1 1 1 = \2A 143 uS =1 uS
"
"E, el '&#'#$5e,'- 3e 5,'e&&u1c5;, 9ue 1&-4-c#&R el 3e6%-&3#$5e,'- 3el "T)R0, 6e
1ue3e #1&ec5#& c-$- 6e 6#l4# el W 0 el &e+56'&- 3e e6'#3-, 1#&# "&ecu1e&#&l-6
1-6'e&5-&$e,'e( E6 l- 9ue 6e ll#$# G6#l4#& el c-,'eD'-G(

L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
5,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6 5,'e&,-6

*#l-& e9u 0D0c "*#&5#%le 3e 7&ecue,c5#
WNTe$1 e9u 0D03 "W 'e$1-&#l
S'#'u6NTe$1 e9u 0D0e "Re+56'&- 3e e6'#3- 'e$1-&#l

-&+ 0D00 "*ec'-& 3e Re6e'
+-'- I,5c5-
-&+ 0D04 "*ec'-& 3e 5,'e&&u1c5;,
+-'- I,'e&&u1c5-,
"************************************************************************
"T#%l#F e6'# &u'5,# 3e4uel4e el 4#l-& # c#&+#& e, el T)R0 6e+C, l# "7&ecue,c5#
6elecc5-,#3#( P#&'5e,3- 3e u,# 7&ecue,c5# +e,e&#l 3e 4 )2A, "el T)R0 e4-luc5-,#
c#3# 1 uS( Se 6elecc5-,# u,# 1&ee6c#le& 3e 4( El "4#l-& # c#&+#& e, T)R0 6e
-%'5e,e 3e 354535& el 6e$51e&5-3- 3e l# "7&ecue,c5# 3e6e#3# e,'&e el 1&ee6c#le&(
Al 4#l-& -%'e,53- 6e le &e6'# . "1-& $-'54-6 3e 65,c&-,56$- 5,'e&,- 3el PIC, 6e
c-,45e&'e # 8eD( 0 6e "c-$1le$e,'#(
T#%l#F #33@7 PCL,F "C#lcul# 3e61l#A#$5e,'- 3e l#
'#%l#
&e'l@ 0D00 "0 \2A
&e'l@ 0D:! "1 \2A
&e'l@ 0Dc ". \2A
&e'l@ 0D3# "3 \2A
&e'l@ 0De4 "4 \2A
&e'l@ 0De# " \2A
&e'l@ 0Dee "! \2A
&e'l@ 0D71 "= \2A
I,'e&&u1c5-, $-4@7 WNTe$1 "S#l4# el W
6@#17 STATUS,W
$-4@7 S'#'u6NTe$1 "S#l4# el &e+56'&- 3e e6'#3-
$-47 *#l-&,W
$-4@7 T)R0 "Rec#&+# el T)R0
%c7 INTCON,T0IF "De6#c'54# el 7l#+ T)R0

$-4l@ %Z00000001Z
D-&@7 PORTB,F "B#6cul# RB0

6@#17 S'#'u6NTe$1,W
$-4@7 STATUS "Recu1e&# el &e+56'&- 3e e6'#3-
6@#17 WNTe$1,F
6@#17 WNTe$1,W "Recu1e&# el &e+56'&- W
&e'75e
I,5c5- cl&7 PORTB "B-&&# l-6 l#'c8 3e 6#l53#
%67 STATUS,RP0 "Selecc5-,# %#,c- 1
cl&7 TRISB "Pue&'# B 6e c-,75+u&# c-$-
6#l53#
$-4l@ %Z00011111Z
$-4@7 TRISA "Pue&'# A 6e c-,75+u&# c-$-
e,'&#3#
$-4l@ %Z00000001Z
$-4@7 OPTIONNREG "P&ee6c#le& 3e 4 1#&# el T)R0
%c7 STATUS,RP0 "Selecc5-,# %#,c- 0

$-4l@ %Z00100000Z
$-4@7 INTCON "I,'e&&u1c5;, T)R0 8#%5l5'#3#

L--1 cl&@3' "Re7&e6c#& el WDT
$-47 PORTA,W
#,3l@ %Z00000111Z
%'766 STATUS,Z "RA0JRA. / 0 HH
+-'- S#l53#NO, "N-, 6#l53# 3e 7&ecue,c5#
%c7 INTCON,GIE "S5, 5,'e&&u1c5-,e6 OFF, 7&ecue,c5#
OFF
+-'- L--1
S#l53#NO, c#ll T#%l# "De'e&$5,# 4#l-& # c#&+#& e,
T)R0
$-4@7 *#l-& "C#&+# l# 4#&5#%le
%67 INTCON,GIE "I,'e&&u1c5-,e6 ON
+-'- L--1
e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O 2=:

"El T)R0 c-$- c-,'#3-& 3e e4e,'-6 eD'e&,-6
"U, 6e,6-& -1'-elec'&;,5c- c-,ec'#3- # RA4 +e,e&# u, 1ul6- c#3# 4eA 9ue "u,
-%Ee'- 6e 5,'e&1-,e e,'&e el e$56-& 0 el &ece1'-& 3e luA( El T)R0 6e "e,c#&+# 3e
c-,'#&l-6 3e1e,35e,3- 3el 4#l-& 3el 1&ee6c#le&( D5c8- 4#l-& "6e #Eu6'# $e35#,'e
3 5,'e&&u1'-&e6 >RA0JRA.? c-,ec'#3-6 # l# Pue&'# A, eD56'5e,3- #6B : 1&eJ
354565-,e6F
"
" I. I1 I0 D54565;,
" JJ JJ JJ JJJJJJJJ
" 0 0 0 1F.
" 0 0 1 1F4
" 0 1 0 1F:
" 0 1 1 1F1!
" 1 0 0 1F3.
" 1 0 1 1F!4
" 1 1 0 1F1.:
" 1 1 1 1F.!
"
"El c-,'#Ee 6e 4# 456u#l5A#,3- e, %5,#&5- 6-%&e l-6 le36 c-,ec'#3- # l# "Pue&'#
B 0 3e%e $ul'51l5c#&6e 1-& el 4#l-& 3el 1&ee6c#le& 6elecc5-,#3-, "1#&#
3e'e&$5,#& el ,C$e&- '-'#l 3e 1ul6-6( El c-,'#3-& 6e &e6e'e# #l "1-,e& RA3 #
G1G( De%e 'e,e&6e e, cue,'# el Ge7ec'- &e%-'eG 9ue 6e "1&-3uce e, el 5,'e&&u1'-&
RA4(
L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
5,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6 5,'e&,-6
-&+ 0D00 "*ec'-& 3e Re6e'
I,5c5- cl&7 PORTB "B-&&# l-6 l#'c8 3e 6#l53#
%67 STATUS,RP0 "Selecc5-,# %#,c- 1
cl&7 TRISB "Pue&'# B 6e c-,75+u&# c-$-
6#l53#
$-4l@ %Z00011111Z
$-4@7 TRISA "Pue&'# A 6e c-,75+u&# c-$-
e,'&#3#
$-4l@ %Z00110000Z
$-4@7 OPTIONNREG "T)R0 c-,'#3-& 6e,65%le #l
3e6ce,3e,'e 3e RA4
%c7 STATUS,RP0 "Selecc5-,# %#,c- 0


L--1 cl&7 T)R0 "Pue6'# # 0 3el c-,'#3-&
L--11F cl&@3' "Re7&e6c# el WDT
%'76c PORTA,3 ")5&# 65 I3 e6'R #c'54- >RESET?
+-'- L--1 "S5 Cue,'# 3e'e,53# 0 1ue6'# #
0
$-47 PORTA,W "N-, lee& I.JI0 1#&# 7-&$#& el ,ue4-
4#l-&
#,3l@ %Z00000111Z "3el 1&ee6c#le&
%67 STATUS,RP0 "Selecc5-,# 1R+5,# 1
5-&@7 OPTIONNREG,F "Ac'u#l5A# el ,ue4- 4#l-& 3el
1&ee6c#le&
%c7 STATUS,RP0 "Selecc5-,# 1R+5,# 0
$-47 T)R0,W "Lee el 4#l-& 3el c-,'#3-&

$-4@7 PORTB "S#l53# # le36
+-'- L--11

e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O 20:

EL CONTROL DEL TIE)PO EN UN )ICROCONTROLADOR

)e353#6 3e '5e$1- e6'R,3#&F
1 $5c&-6e+u,3- / 0,000(001 6e+u,3-6
1 ,#,-6e+u,3- / 0,000(000(001 6e+u,3-6
L# $e353# 3el '5e$1- e, u, $5c&-P5c e6'# 6uEe'# # 3 'e$#6F
1J El -6c5l#3-& eD'e&,-
.J El T)R0
3J El D5456-& 3e 7&ecue,c5#6
El -6c5l#3-& eD'e&,- 3e1e,3e 3el '51- 3el 656'e$# 3e -6c5l#c5;,( *#$-6 #
c-,653e&#& eDclu654#$e,'e el '51- <T # c&56'#l 3e 4 )8A(
Rec-&3e$-6 9ue c#3# c5cl- 3e 5,6'&ucc5;, '#&3# e, 8#ce&6e 4 1e&5-3-6 3e &el-E
1-& l- 9ue c-, u, -6c5l#3-& 3e 4 )8A(F
1 Pe&5-3- / 16e+u,3-Q4(000(000/0,000(000(. 6e+u,3-6 / 0,. $5c&-6e+u,3-6
4 Pe&5-3-6 / 1 c5cl- 5,6'&ucc5;, / 0,. $6+( D 4 / 1 $6+( / 1000 ,#,-6e+u,3-6
El c-,'#3-& T)R0 - 'e$1-&5A#3-& l- 4#$-6 # -%6e&4#& 6-l- e, e6'e c#6- c-$-
$e353-& %#6R,3-6e e, el &el-E 0 6e 3# cu#,3- el %5' T0CS >? 3e OPTION > B#,c-1
&e+56'&- :1 2? e6 5+u#l # 0(
El T)R0 9ue e6 u, &e+56'&- 7B65c- 3e l# $e$-&5# SFR B#,c-0 1-65c5;, 01 2 #u$e,'#
3e 4#l-& 8#6'# lle+#& # . e, c#3# c5cl- 3e 5,6'&ucc5;,, cu#,3- lle+# # .
1&-4-c# u, 3e6%-&3#$5e,'- c-,'&-l#%le e, el %5' T0IF >.? 3e INTCON 9ue 6e 1-,e #
1 3e61u[6 3el 3e6%-&3#$5e,'-(
El T)R0 6e 1ue3e c#&+#& c-, cu#l9u5e& &e+56'&- 3e 0 # .(
El 35456-& 3e 7&ecue,c5# e6 u, 656'e$# 1-& el 9ue 6e+C, c5e&'#6 c-$%5,#c5-,e6 6e
#1l5c#, 35456-&e6 3e '5e$1- 9ue ,-6 1e&$5'e, &#le,'5A#& l-6 c5cl-6 3e
5,6'&ucc5-,e6(
E6'#6 c-$%5,#c5-,e6 6e -%'5e,e, c-, l-6 %5'6 0,1 0 . 3el Re+56'&- OPTION >:1 2?
FOR)ULA PARA CALCULAR EL TIE)POF
T5e$1- / 4 D T5e$1- 3e c#3# c5cl- D *#l-& # c-,'#& 3e T)R0 D D5456-& 3e
7&ecue,c5#
ED1l5c#c5;,F
4 JJJJ c5cl- 3e 5,6'&ucc5;, / 4 c5cl-6 3e &el-E
T5e$1- 3e c#3# c5cl- JJJJ 1Q*#l-& 3el -6c5l#3-&
*#l-& # c-,'#& 3e T)R0 JJJ *#l-& 5,'&-3uc53- e, el T)R0 9ue #6c5e,3e 8#6'# .
D5456-& 3e 7&ecue,c5# JJJ F#c'-& c-,6'#,'e #1l5c#3- 1#&# #l#&+#& l-6 1e&5-3-6
3el &el-E
P-& l- 9ue el $RD5$- '5e$1- c-,'&-l#%le 1-& u, 1&-+&#$# c#&+#3- el T)R0 c-, .
el 35456-& 3e 7&ecue,c5# c-, el 4#l-& >111? - 6e# . 0 u, -6c5l#3-& 3e 4 )8A(
6e&B#F
T5e$1-/ 4 D 1Q4000000 D . D . / 0,0!0. 6e+u,3-6 / !,0. $5c&-6e+u,3-6(
EEe$1l-F
P1#&# c-,6e+u5& u, 6e+u,3- 3e '5e$1-( >N- e6 eD#c'#$e,'e u, 6e+u,3- 1e&- 4#le
1#&# el eEe$1l-, c-, -'&#6 c-$%5,#c5-,e6 u -'&-6 c&56'#le6 e6 7#c5l 3e
c-,6e+u5&?F
"P&-+&#$# e, e,6#$%l#3-& 1#&# c-,6e+u5& 1 6e+u,3- M ; J
"De61u[6 3e 1&-4-c#& u, RESET 6e e,ce,3e&R u, LED # 1 6e+u,3-
"Al 1&-+&#$#& el $5c&-c-,'&-l#3-& 3e6c-,ec'#& el WDT
l56' 1/1!c:4
&#35D 8eD
'$&0N-1' e9u 0D01
6'#'u6 e9u 0D03
5,'c-, e9u 0D0%
1'% e9u 0D0!
#uD e9u 0D0e
-&+ 0
5,5c5- %67 6'#'u6, "1-,e %5' 3e
6'#'u6 / 1 ( I& #l B#,c- 1
cl&7 1'%
"6elecc5-,# 1ue&'#B c-$- 6#l53#
$-4l@ %^00000111^ "@/00000111
$-4@7 '$&0N-1' "c#&+# el 35456-&
3e 7&ecue,c5#6 c-, 111 >1F.?
%c7 6'#'u6, "1-,e %5'
3e 6'#'u6 / 0 ( I& #l %#,c- 0
cl&7 1'% "Re+56'&-
3e Pue&'# B / 0
u,6+3 $-4l@ 0D!4 "C#&+# W c-, 0D!4 >e,
3ec5$#l 100?
$-4@7 #uD "C#&+# el
&e+56'&- #uD >0D0e? c-, el 4#l-& 0D!4 >100?
c-,'# %c7 5,'c-,,. "1-,e # 0 el %5'
. 3e INTCON (SeT#l5A#3-& 3e

"3e6%-&3#$5e,'- 3el T)R0 / 0
$-4l@ 0D3: "c#&+# W c-,
4#l-& l5'e&#l 0D3: >.1! e, 3ec5$#l?
$-4@7 '$&0N-1' "C#&+# el T)R0 c-,
el 4#l-& 0D3: >.1!? l- 9ue 3# u,

"1e&5-3- 8#6'# el 3e6%-&3#$5e,'- 3e .J.1!/3K
c-,'#1 %'766 5,'c-,,. "C-$1&ue%# 65 T0IF
# c#$%5#3- # 1 65 e6 #65 e6

"1-&9ue 8u%- 3e6%-&3#$5e,'- 3el T)R0 0 e, e6e c#6-
"6e
1&-3uce u, %&5,c-
+-'- c-,'#1 "E, c#3# c5cl-
3e 5,6'&ucc5;, el T)R0 6u%e u,# u,53#3

"8#6'# lle+#& # .
3ec76A #uD,1 "3ec&e$e,'# u,#
u,53#3 1-& c#3# c5cl- 3e 5,6'&ucc5;,
"0
&ec#&+# el &e+56'&- #uD c-, el ,ue4- 4#l-&(
"1-&
c5cl- #uD/#uDJ1 65 lle+# # 0 %&5,c#
+-'- c-,'# "4uel4e #l %ucle
3e 3K e, el T)R0
$-4l@ 0D77 "c#&+# W c-,
11111111
$-4@7 1'% "e,c5e,3e l-6
LED
e,3
&e6u$5e,3-F
'5e$1- / 4 D 1Q4000000 D 3K D 100 D . / 0,KK4 6e+u,3-6
EGEMP"O 2C:

"C-,'&-l 3e '5e$1-, $53e 1 6e+u,3- $#6 - $e,-6 >eD#c'#$e,'e 0,KK4 3e "6e+u,3-?(
"Rel-E <T # 4)8A( WDTJ3e68#%5l5'#3-
l56' 1/1!c:4
&#35D 8eD
'$&0N-1' e9u 0D01
6'#'u6 e9u 0D03
5,'c-, e9u 0D0%
1'% e9u 0D0!
#uD e9u 0D0e
-&+ 0
5,5c5- %67 6'#'u6, "1-,e %5' 3e 6'#'u6 / 1 ( I& #l
B#,c- 1
cl&7 1'% "6elecc5-,# 1ue&'#B c-$- 6#l53#
$-4l@ %Z00000111Z "@/00000111
$-4@7 '$&0N-1' "c#&+# 35456-& 3e 7&ec( c-, 111 >1F.?
%c7 6'#'u6, "1-,e %5' 3e 6'#'u6 / 0 ( I& #l
%#,c- 0
cl&7 1'% "Re+56'&- 3e Pue&'# B / 0
u,6+3 $-4l@ 0D!4 "C#&+# W c-, 0D!4 >e,
3ec5$#l 100?
$-4@7 #uD "C#&+# &e+56'&- #uD>0D0e?c-,
4#l-& 0D!4>100?
c-,'# %c7 5,'c-,,. "1-,e # 0 el %5' . 3e INTCON
(SeT#l5A#3-& 3e
"3e6%-&3#$5e,'- 3el T)R0 / 0
$-4l@ 0D3: "c#&+# W c-, l5'e&#l 0D3: >.1!
e, 3ec5$#l?
$-4@7 '$&0N-1' "C#&+# T)R0 c-, 4#l-& 0D3: >.1!?l-
9ue 3# u,
"1e&5-3- 8#6'# 3e6%-&3#$5e,'- 3e .J
.1!/3K
c-,'#1 %'766 5,'c-,,. "C-$1&ue%# 65 T0IF # c#$%5#3- # 1 65 e6
#65
"e6 1-&9ue 8u%- 3e6%-&3#$5e,'- 3el T)R0
0 e,
"e6e c#6- 6e 1&-3uce u, 6#l'-
+-'- c-,'#1 "E, c#3# c5cl- 3e 5,6'&ucc5;, el T)R0 6u%e
"u,# u,53#3 8#6'# lle+#& # .
3ec76A #uD,1 "3ec&e$e,'# u,# u,53#3 1-& c#3# c5cl- 3e
"5,6'&ucc5;, 0 &ec#&+# el &e+56'&- #uD c-, "el ,ue4- 4#l-&(
"1-& c5cl- #uD/#uDJ1 65 lle+# # 0 6#l'#
+-'- c-,'# "4uel4e #l %ucle 3e 3K e, el
T)R0
$-4l@ 0D77 "c#&+# W c-, 11111111
$-4@7 1'% "e,c5e,3e l-6 LED
e,3
EGEMP"O 2':

C#lcul- 3e '5e$1- e, %ucle6 3e &e'#&3- #,53#3-6(
BR65c#$e,'e l# 1&ec565;, 3el '5e$1- e, l-6 $5c&-c-,'&-l#3-&e6 3e1e,3e 3el '51-
3e -6c5l#3-& 0 e6 e, l-6 -6c5l#3-&e6 <T - 6e# l-6 c-,'&-l#3-6 1-& c&56'#l 3e
cu#&A- e, l-6 9ue 6e -%'5e,e $eE-& 1&ec565;,( Se 1ue3e e,c-,'&#& $#6
5,7-&$#c5;, 6-%&e l-6 -6c5l#3-&e6 #cu35e,3- # l# 1#+5,# 3e $5c&-c851
E6'#$-6 '-3-6 3e #cue&3- e, 9ue l#6 5,6'&ucc5-,e6 3e l-6 1&-+&#$#6 6-, 3e 1 - .
c5cl-6 3e 5,6'&ucc5;, 0 '#$%5[, e6'#$-6 3e #cue&3- 9ue c#3# 5,6'&ucc5;, e9u54#le
# 4 c5cl-6 3e &el-E( S 65 ,- l- e6'#$-6 e6 1&e7e&5%le 9ue ,- 65+#6 le0e,3-(
P#&'#$-6 3e u, -6c5l#3-& '51- %R65c- 3e 4 )8A, l- 9ue ,-6 3#&B#F
TR >T5e$1- Rel-E?/ Pe&5-3- 3e -6c5l#3-&QF&ecue,c5# -6c5l#3-&
TR/16+Q4(000(000 3e c5cl-6 1-& 6e+u,3-/ 0,000000.
TR e, ,#,-6e+u,3-6/ 1(000(000(000Q4(000(000/.0 ,#,-6e+u,3-6
TI >T5e$1- I,6'&ucc5-,?/4 D TR/ 4 D .0 ,6+ /1000 ,6+ / 1$5c&-6e+u,3- / 1u6+(
Re6u$5e,3-F c#3# 5,6'&ucc5;, '#&3# 6e+C, el '51- e,'&e 1u6+( 0 . u6+( e,
eEecu'#&6e(
*e#$-6 cu#,3- '#&3#, c#3# 5,6'&ucc5;, 3e 1&-+&#$#F
G-'-, C#ll, Re'u&,, Re'lW, Re'75e JJJJJJJJ T#&3#, . c5cl-6 3e 5,6'&ucc5;,
Dec76A, I,c76A, B'76c, B'766 JJJJJJJJJJJJJJJJ T#&3#, 1 - . c5cl-6 6e+C,
5,6'&ucc5;,
T-3#6 l#6 3e$R6 -&3e,e6 '#&3#, 1 c5cl- 3e 5,6'&ucc5;,(
A8-&# 4#$-6 # e6'u35#& u, %ucle 3e &e'#&3- #,53#3- '51-(
P&5$e&- e$1eA#$-6 c-, l#6 &u'5,#6 3e 5,5c5- 3e c-,75+u&#c5;, 3e 1-65c5-,e6 3e
$e$-&5#, '#,'- 3e c-,'1 c-$- 3e c-,'., el5$5,#3- T)RO 0 WDT, 0 &e#l5A#3- u,
5,5c5- 3e 1&-+&#$# %R65c-, e, cu#l9u5e& 1&-+&#$# ll#$#$-6 # u, %ucle 3e '5e$1-(
De%e$-6 6u1-,e& '#$%5[, 9ue c#&+#$-6 c-,'1 0 c-,'. c-, . 0 9ue 8e$-6 3#3- e,
el &e+56'&- OPTION l# -&3e, 3e 9ue el c-,'e- e6 3e6ce,3e,'e(
JJJJJJJJJJJJJJCARGAR $-4@7 0DFF,@
JJJJJJJJJJJJJJJJJJJJJJJJJJJ $-4@l CONT'1 "c#&+# CONT1 c-,
.
JJJJJJJJJJJJJ BUCLE 3ec76A CONT1,1
JJJJJJJJJJJJJJJJJJJJJJJJJJJ +-'- BUCLE
JJJJJJJJJJJJJJJJJJJJJJJJJJJ 3ec76A CONT'.,1
JJJJJJJJJJJJJJJJJJJJJJJJJJJ +-'- CARGAR
JJJJJJJJJJJJJJJJJJJJJJJJJJJ &e'u&,
El %ucle 3e c-,'1 ,ece65'# 3 c5cl-6 1#&# eEecu'#&6e
1 c5cl- JJJJJJ 3ec76A c-,'#1,1
. c5cl-6 JJJJ +-'- %ucle
e6'- 3u&#,'e . 4ece6 l# 4eA .! ,ece65'# 6-l- . c5cl-6 1-&9ue lle+# # 0 0
6#l'# l# 5,6'&ucc5;, +-'- %ucle, e6'- ,-6 3#&B# e, 7-&$# $#'e$R'5c#
>. D .?M . / =!= - e, +-&$# 3e 7-&$ul# >c-,'#1 D 3?M./ c5cl-6 %ucle c-,'#1
Se+u5$-6 #8-&# c-, el %ucle c-,'#.F
El %ucle c-,'#. ,ece65'# 3 c5cl-6 0 4uel4e #l %ucle #,'e&5-& 3e c-,'#1(
Dec&e$e,'# 5 e, c-,'#. 0 &e15'e el c5cl- #,'e&5-& e, c-,'#1
1 c5cl- JJJJJJJ 3ec76A c-,'#.,1
. c5cl-6 JJJJJJ +-'- %ucle
E6'-6 c5cl-6 6e &e15'e, . 4ece6 e, c-,'#. l- 9ue $#'e$R'5c#$e,'e 3#F
> . > =!= M 3 ?? M . / '-'#l c5cl-6 9ue e, 7-&$# 3e 7-&$ul# ,-6 3#&B#
> c-,'#. >>> c-,'#1 D 3? M .? M 3? M . / '-'#l c5cl-6 5,6'&ucc5;,
T-'#l c5cl-6 5,6'&ucc5;, D 4 D '5e$1- 3e &el-E / '5e$1- '-'#l
E6 3ec5& 9ue 1-3e$-6 1&ec#&+#& l#6 1-65c5-,e6 3e c-,'#1 0 c-,'#. c-,
3e'e&$5,#3-6 4#l-&e6 9ue 6e&45&R, 1#&# c-,6e+u5& el 1e&5-3- 3e '5e$1- 9ue ,-6
5,'e&e6e(
E6'e %ucle c-, e6'#6 7-&$ul#6 #T#35e,3- c-,'#3-&e6 0 %l-9ue#,3- l# 7u,c5;, 3e
5,'e&&u1c5;, 3el T)R0 0 WDT, 1e&$5'e #l#&+#& 5,3e75,53#$e,'e el '5e$1- 3e
c-,'e- 3#3- 9ue 65 #T#35$-6 u,# ,ue4# 1-65c5;, - C-,'#3 #l %ucle #,'e&5-&, e6'e
6e &e1e'5&B# .! 4ece6 $#6 l- 9ue ,-6 lle4#&B# # $5,u'- 0 c-, -'&- %ucle # l#6 3
8-&#6, #l $e6, e'c( e'c( e'c( 0 c-, 10 %ucle6 u, %ue, $-,';, 3e #T-6(
EGEMP"O 2N:

P&-+&#$# C-,'#3-& $e35#,'e T)R0
El 1&-+&#$# 6e %#6# e, u, 65$1le c-,'#3-& c-,75+u&#3- # ,54el 3e6ce,3e,'e 3e u,#
6eT#l cu#3&#3# c-,'&-l#3#(
L# c#&#c'e&B6'5c# 1&5,c51#l 3el 1&-+&#$# e6 l# 3e, e, u, '5e$1- e6'#%lec53- 1-&
l# 1#u6# 3el 1&-+&#$#, c-,'&-l#& l# cue,'# 3e l#6 -6c5l#c5-,e6 3e u,# 7-&$#
G&e+ul#&G 456u#l5AR,3-l# 1-& u, Eue+- 3e : LEDS >RB0JRB=?( A6B, e6'-6 ,-6
$-6'&#&#, l# c#,'53#3 3e 1ul6-6 e, u, '5e$1- 3e'e&$5,#3-(
Se 8# 3e 'e,e& e, cue,'# 9ue c-,75+u&#,3- el c-,'#3-& $e35#,'e el OPTIONNREG 3el
%#,c-1> lB,e#6 34J3 ?, 6e #,ul# el 35456-& 3e 7&ecue,c5# 3el &el-E 5,'e&,- 0 6e
45,cul# #l c-,'#3-& eD'e&,-(
E6'- 8#ce 9ue el -6c5l#3-& 5,'e&,- 7u,c5-,# # 4 c5cl-6 1-& 5,6'&ucc5;,, l- 9ue
65+,575c# 9ue el $5c&-Jc-,'&-l#3-& 7u,c5-,# # $RD5$# 4el-c53#3( Te,5e,3- e6'- e,
cue,'#, l# 1#u6# 9ue 6e &e#l5A# 1#&# c-,'#& c5cl-6 # 3e 6e& eDce654#$e,'e
6u1e&5-& # l- ,-&$#l cu#,3- el 35456-& 3e 7&ecue,c5#6 6e 45,cul# #l c-,'#3-& 3el
1&-+&#$#, 1#&# e6'e %ucle 3e '5e$1- 8e$-6 c&e#3- u,# 1#u6# #,53#3# 3e . 4ece6
., . 4ece6 > lB,e#6 40J1?(
P#&# c-,'&-l#& l# cue,'# e, el 1e&5-3- 3e '5e$1- e6'#%lec53-, e6'# 6e lle4# #
c#%- $e35#,'e u,# l5$15eA# 3el T)R0 >el 1&-15- c-,'#3-&? 0 c&e#& u, %ucle
5,75,5'- e, l# $56$# lB,e# 3e 7-&$# c-$- #1#&ece e, l# lB,e# 4J 3el 1&-+&#$#
#3Eu,'-( A6B 6e 7ue&A# # 9ue l#6 1ue&'#6 3e 6#l53# $ue6'&e, el Cl'5$- 3#'-
3e6c#&+#3- e, el #cu$ul#3-&, e, e6'e c#6- l# cue,'# 3el T)R0 >lB,e#6 .J3?(
PROGRA)A AS)F
"CONTADOR CON T)R0
"CRISTAL 4)2A WDT/OFF>DESCONECTA)OS EL PERRO GUARDIAN?

LIST P/1!F:4
LIST C/13.
RADI< 2E<

T)R0 EVU 0<01 "REGISTRO DE TI)ER
ESTADO EVU 0<03 "DIRECCION DE ESTADO
PANTA EVU 0<0 "PUERTA A
PBNTB EVU 0<0! "PUERTA B
OPTIONNREG EVU 0<:1 "REGISTRO OPTION
TRISA EVU 0<: "TRIS A
TRISB EVU 0<:! "TRIS B
INTCON EVU 0<0B "REGISTRO DE INTERRUPCIONES
DELAS. EVU 0<0C "*ALOR DEL RETRASO.
DELAS3 EVU 0<1C "*ALOR DEL RETRASO3
DELAS4 EVU 0<3C "*ALOR DEL RETRASO3
DELAS1 EVU 0<0D "*ALOR DEL RETRASO1


ORG 0<00
INICIO CLRF PBNTB "BORRAR LAS PUERTAS DE SALIDA
BSF ESTADO, "SELECCION DEL BANCO 1 DE )E)ORIA
CLRF TRISB "CONFIGURA)OS PUERTA B DE
SALIDA
)O*LW 0D1F "0<1F/00011111
)O*WF TRISA "CONFIGURA)OS PUERTA A DE
ENTRADA
)O*LW 0<30 "0<30/00110000
)O*WF OPTIONNREG "CONFIGURA)OS T)R0 CO)O CONTADOR
DESCENDENTE
BCF ESTADO, "SELECCION DEL BANCO 0 DE )E)ORIA


CONTROL CLRF T)R0 "LI)PIA)OS T)R0
)O*LW 0<0. "0<0./00000010
)O*WF DELAS1 "CARGA)OS LA CUENTA DE W AL REGISTRO
PAUSA )O*LW 0<FF "0<FF/11111111
)O*WF DELAS. "CARGA)OS LA CUENTA DE W AL REGISTRO
PAUSA. )O*LW 0<FF "0<FF/11111111
)O*WF DELAS3 "CARGA)OS LA CUENTA DE W AL REGISTRO
PAUSA1 DECFSZ DELAS3,1 "DECRE)ENTA)OS EN LA UNIDAD EL
REGISTRO
GOTO PAUSA1 "SALTA)OS A LA ETIVUETA
DECFSZ DELAS.,1 "DECRE)ENTA)OS EN LA UNIDAD EL
REGISTRO
GOTO PAUSA. "SALTA)OS A LA ETIVUETA
DECFSZ DELAS1,1 "DECRE)ENTA)OS EN LA UNIDAD EL REGISTRO
GOTO PAUSA "SALTA)OS A LA ETIVUETA
)O*F T)R0,0 "CARGA)OS CUENTA DEL CONTADOR AL
ACU)ULADOR
)O*WF PBNTB ")UESTRA INFOR)ACION DE W EN
PUERTAS SALIDA
PARADA CLRF T)R0 "LI)PIEZA DEL T)R0>CO)IENZO DE BUCLE INFIN(?
GOTO PARADA "RETORNA)OS LINEA ANTERIOR

END "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O 3,:

El '5$e& e6 u, ele$e,'- 9ue 7-&$# 1#&'e 3e l-6 $5c&-c-,'&-l#3-&e6, e6 el
&e61-,6#%le 3e 3-6 1-65%5l53#3e6 6e+u, c-,75+u&#c5;, el 3e 3e'e&$5,#& 5,'e&4#l-6
c-,c&e'-6 3e '5e$1- c-$- 'e$1-&5A#3-& - 1#&# c-,'#& 5$1ul6-6 1&-3uc53-6 e, el
eD'e&5-& c-$- c-,'#3-&(
De e6'e 3561-65'54- 8#0 9ue c-,653e&#& 3-6 c-6#6F u,# 3e ell#6 e6 el c-,'#3-&
1&-15#$e,'e 35c8- - T)R0 0 -'&- 6u c-,75+u&#c5-,( El T)R0 -cu1# l# 1-65c5-, 01
3el B#,c- 0, l# c-,75+u&#c5-, %#65c# 6e l-c#l5A# e, el &e+56'&- OPTION 9ue -cu1#
l# 1-65c5-, :1 3el B#,c- 1 ( El &e+56'&- T)R0 e6 le5%le 0 e6c&5%5%le 0 '5e,e :
%5'6(
P#&# c-,75+u&#& el '5$e& 6e 3e%e, 3e 'e,e& e, cu#,'# l-6 65+u5e,'e6 &e+56'&-6
3el PICF
1 El &e+56'&- OPTION 1#&# 6u c-,75+u&#c5-,
. El &e+56'&- INTCON 1#&# 9ue c-,'&-le l#6 5,'e&&u1c5-,e6
3 El WDT >Pe&&- +u#&35#,?
A8-&# 4#$-6 # eD1l5c#& '&e6 7-&$#6 %#65c#6 1#&# c-,'&-l#& el '5e$1- e, u,
1&-+&#$#
1? S5, &e%-6#$5e,'- >7l#+? ,5 5,'e&&u1c5-,
C-$- 3ec5#$-6 el T)R0 e6 el &e+56'&- 01 3e : %5'6 3el B#,c- 0( S5 c-,653e&#$-6
el &e6+56'&- e, %5,#&5- e6'e ,u$e&- 5&# 3el 0000 0000 #l 1111 1111( Bue,- el
656'e$# c-,656'e e, c-,'&-l#& e6'e &e+56'&- 0 4e& cu#,3- u,# 1-65c5-, 3el $56$-
e, 6u &u'5,# 3e 5,c&e$e,'- c#$%5# 3e 0 # 1(
CLRF T)R0 "Re+56'&- T)R0 / 0000 0000
CONTROL BTFSS T)R0, "ED1l-&# 65 el B5' 65 e6'# # 1 6#l'#
GOTO CONTROL "*uel4e # l# &u'5,# 3e c-,'&-l#& el %5'
RETURN
Ru'5,# 65$1le 3e c-,'&-l 3e '5e$1- 9ue #3$5'e $-3575c#c5-,e6 e, 7u,c5;, 3el
5,'e&[6 3el 1&-+&#$#, c-$- 65e$1-& -E- c-, el WDT(
.? C-,'&-l 3el '5e$1- c-, &e%-6#$5e,'- 0 65, 5,'e&&u1c5;,
E, e6'e 656'e$# ,-6 4#$-6 # %#6#& e, el 7l#+ - %#,3e&# 3el T)R0 9ue e6 el %5' .
3el Re+56'&- INTCON( Se 3e%e 'e,e& e, cue,'# l# %#,3e&# 9ue 3e%e 3e e6'#& # 0
3#3- 9ue 6-l- 6e 1ue3e 8#ce& 1-& 6-7'@#&e
U, 1-65%le eEe$1l- 6e&5#F
Vue&e$-6 c-,'&-l#& 1e&5-3-6 3e '5e$1- 3e 0 $6 0 1#&# ell- 8e$-6 c-,75+u&#3- el
35456-& 3e '5e$1-6 # 1F.! 0 7l#,c- #6ce,3e,'e( T&#6l#3#$-6 l# c57&# 3e 0
$5l56e+u,3- # $5c&-6e+u,3- l- 9ue ,-6 3# 0(000 u6 l- 354535$-6 1-& .! 9ue e6
el 35456-& 3e '5e$1-6 c-,75+u&#3-, - 6e#
0$6/0000u6 JJJJ 0000Q.!/ MJ1K
e6 3ec5& 1K 1ul6-6 8#6'# c#$%5- 3e %#,3e&# 3e 0 # 1, e6 3ec5& 9ue &e%-6e l-6
. 3e &e+56'&- 3e T)R0, 1e&- 1&5$e&- 3e%e$-6 %u6c#& el c-$1le$e,'- # 1#&'5& 3e
3-,3e 3e%e&e$-6 6u$#& . e6 3ec5& .J1K/!0(
!0 e, 8eD#3ec5$#l e6 0D3c( L# &u'5,# e, e,6#$%l#3-& 6e&5# l# 65+u5e,'eF
45e,e 3e u,# 5,6'&ucc5;, CALL
CONTROL BCF INTCON,T01F "P-,e$-6 # 0 el 7l#+ '$&0
)O*LW 0<3C "W/0D3c JJ !0
)O*WF T)R0 "C#&+#$-6 T)R0 c-, !0
TIE)PO BTFSS INTCON,T0IF "T01F/1 65,- 6#l'#
GOTO TIE)PO "I,c&e$e,'# c#3# c5cl-
RETURN "Se 8# 1&-3uc53- el &e%-6#$5e,'-
3? C-,'&-l 3el '5e$1- c-, INTERRUPCION
El c#lcul- 1#&# -%'e,e& el 3#'- 3el &e+56'&- # c#&+#& e, el T)R0 e6 5+u#l #l
eEe$1l- #,'e&5-& #6B c-$- l#6 1&5$e&#6 1#u'#6 3el 1&-+&#$#, 1e&- el Re+56'&-
INTCON 6e 3e%e #Eu6'#& 1#&# 9ue 6e 1&-3uAc# 5,'e&&u1c5-,e6 1-& l- 9ue l-6 %5'6 =
0 3e%e, 3e e6'#& # 1 0 1-& ul'5$- 3e%e$-6 &ec-&3#& l# 5,6'&ucc5;, RETFIE, c-,
'-3- ell-6 $#6 - $e,-6 9ue3#&B# l# &u'5,# #6BF
"45e,e 3e u,# 5,6'&ucc5;, CALL
CONTROL )O*LW 0D3C "W/0D3c
)O*WF T)R0 "T)R0/0D3c
TIE)PO DECFSZ T)R0,1 "C-,'&-l# 0 3ec&e$e,'#
GOTO TIE)PO "c-,'&-l 1-65c5-,
RETFIE "4uel'# '&#6 5,'e&&u1c5-,
EGEMP"O 31:

E6'# e6 u,# &u'5,# $u0 u'5l5A#3# e, 1&-+&#$#c5;,, e6 3e u6- +e,e&#l 0 65&4e 1#&#
8#ce& 'e$1-&5A#c5-,e6 3e '5e$1- 4#&5#%le e,'&e 0 $S >4KK.0 ,S( ? 0 1.,: S+36(
>1.,=0 S+3-6(?
E6'# &u'5,# l# 4#$-6 # ll#$#& T5e$N1-(
El 1&-+&#$# 3e%e 3e 'e,e& l#6 65+u5e,'e6 c#&#c'e&B6'5c#6
Se 3e%e 3e e$1le#& u, 1&ee6c#le& 3el T)R0 3e .!
El O6c5l#3-& 3e%e 3e 6e& 3e '51- <T 0 4 )8A(
C-, e6'#6 c-,35c5-,e6 LOS CICLOS DE INSTRUCCION '#&3#, 1 uS( , c-, l- 9ue c#3#
c5cl- #u$e,'# el T)R0 8#6'# lle+#& #l 3e6%-&3#$5e,'-(
C#&+#$-6 el &e+56'&- 3el T)R0 c-, !0 c-, l- 9ue 'e,3&e$-6 u, c-,'#3-& c-, 1K
c5cl-6(
S e6'-6 1K c5cl-6 c-, u, 1&ee6c#le& 3e .! ,-6 3#&RF
T5e$1- %#6e / 1K >.J!0? C#&+#3- e, T)R0 D .! / 4KK.0 ,#,- S+3-6(
4KK.0 ,S JJJJJJ 4K,K. $5l5 S+3-6(
A8-&# l- 9ue 3e%e$-6 8#ce& e6 &e1e'5& e6'e c5cl- e,'&e 1 4eA 0 . 4ece6
c#&+#,3- e, u, C-,'#3-& cu#l9u5e&# 3e e6'#6 c57&#6 e,'&e 1 0 .(
L- 9ue ,-6 3#&R u,#6 'e$1-&5A#c5-,e6 3e e,'&e 4K,K. $5l5 S+3-6 0 1.,=.K
Se+u,3-6(
E6'e 1&-+&#$# 6e 3e%e #6-c5#& #l P1!F:4(5,c 3e )5c&-c851
E, el 5,5c5- 3el 1&-+&#$# %#6e 6e 3e%e 3eE#& u, &e+56'&- 3e $e$-&5# 1#&# el
C-,'#3-&
A8-&# 1#6#$-6 #l 1&-+&#$#F
T5e$N1- %c7 INTCON,T0IF "P-,e # 0 el 7l#+ 3e 3e6%-&3#$5e,'-
3el T)R0
$-4l@ %^00111100^ "00111100/!0 e, 3ec5$#l
JJJJ W
$-4@7 T)R0 "C#&+# T)R0 c-, !0 9ue c-,'#&#
8#6'# .
Bucle cl&@3' "B-&&# el Pe&&- Gu#&35#,
%'766 INTCON,T0IF "C-$1&ue%# 65 8u%-
3e6%-&3#$5e,'- 3el T)R0
+-'- Bucle ",- 8u%- 3e6%-&3#$5e,'- 3el T)R0
3ec76A C-,'#3-&,1"S5 8u%- 3e6%-&3#$5e,'- 0 3ec&e$e,'# e, u,- el
"Re+56'&- 3el c-,'#3-& 8#6'# lle+#& # 0, e,'-,ce6 "6#l'#
+-'- T5e$N1- "Re15'e el c5cl- 3e 0 $S(
&e'u&, "Al lle+#& C-,'#3-& # 0 6e 1&-3uce el
6#l'-
"0 6e #1l5c# l# -&3e, &e'u&,(
E6'e 6u%1&-+&#$# 6e c-l-c# e, cu#l9u5e& 1&-+&#$# 'e,5e,3- l# 1&ec#uc5;, 3e 3eE#&
u, &e+56'&- 3e $e$-&5# 1#&# el C-,'#3-&(
EGEMP"O 32:

"L# 5,'e&&u1c5;, 3el T)R0(
"
"Se '&#'# 3e c-$1&-%#& l# 5,'e&&u1c5;, 1&-4-c#3# 1-& el T)R0( El 1&-+&#$#
"lee el e6'#3- 3e l-6 5,'e&&u1'-&e6 c-,ec'#3-6 # RA0 0 RA4 1#&# &e7leE#&l- e,
"l-6 le36 c-,ec'#3-6 # RB0 0 RB4 &e61ec'54#$e,'e( Al $56$- '5e$1- el T)R0
"+e,e&# u,# 5,'e&&u1c5;, c#3# 0(0 6e+( >0 $S? 9ue 6e &e1e'5&R 4ece6 c-,
-%Ee'-
"3e 8#ce& 5,'e&$5'e,c5# 3e .0 $S 6-%&e el le3 c-,ec'#3- # RB=(

L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
5,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e
&e+56'&-6 5,'e&,-6
C-,'#3-& e9u 0D0c "*#&5#%le 1#&# l# 'e$1-&5A#c5;,

-&+ 0D00 "*ec'-& 3e Re6e'
+-'- I,5c5-
-&+ 0D04 "*ec'-& 3e 5,'e&&u1c5;,
I,'e&&u1c5-, %c7 INTCON,T0IF "Re1-,e 7l#+ 3el T)R0
3ec76A C-,'#3-&,F "Dec&e$e,'# el c-,'#3-&
+-'- Se+u5&
C-,N65N0 $-4l@
$-4@7 C-,'#3-& "Re1-,e el c-,'#3-&
,ue4#$e,'e
%'76c PORTB,= "Te6'e# Cl'5$- e6'#3- 3e
RB=
+-'- RB=NESN1 "E6'R # 1
%67 PORTB,= "E6'R # 0, #c'54# RB=
+-'- Se+u5&
RB=NESN1 %c7 PORTB,= "De6#c'54# RB=
Se+u5& $-4l@ 0D3c
$-4@7 T)R0 "Re1-,e el T)R0 c-, 1K
&e'75e "Re'-&,- 3e 5,'e&&u1c5;,
I,5c5- cl&7 PORTB "B-&&# l-6 l#'c8 3e 6#l53#
%67 STATUS,RP0 "Selecc5-,# %#,c- 1
cl&7 TRISB "Pue&'# B 6e c-,75+u&# c-$- 6#l53#
$-4l@ %Z00011111Z
$-4@7 TRISA "Pue&'# A 6e c-,75+u&# c-$- e,'&#3#
$-4l@ %Z00000111Z
$-4@7 OPTIONNREG "P&ee6c#le& 3e .! 1#&# el T)R0

%c7 STATUS,RP0 "Selecc5-,# %#,c- 0
"El T)R0 6e 5,c&e$e,'# c#3# 1 uS( S5 6e e$1le# u, 1&ee6c#le& 3e .!, 3e%e&R
6u7&5& 1K
"5,c&e$e,'-6 1#&# 1&-4-c#& u,# 5,'e&&u1c5;, c#3# 0000 uS >0 $S?( S5 e6'# 6e
&e15'e
"4ece6, el '5e$1- '-'#l '&#,6cu&&53- e6 3e .0000 uS >.0 $S?( El c-$1le$e,'-
3el 4#l-&
"1K e, 8eD( e6 0D3c(
$-4l@ 0D3c
$-4@7 T)R0 "C#&+# el T)R0 c-, 1K
$-4l@ 0D0
$-4@7 C-,'#3-& "NL 3e 4ece6 # &e1e'5& l# 5,'e&&u1c5;,
$-4l@ %Z10100000Z
$-4@7 INTCON "Ac'54# l# 5,'e&&u1c5;, 3el T)R0
L--1 cl&@3' "Re7&e6c# el WDT
%'76c PORTA,0 "Te6'e# el e6'#3- 3e RA0
+-'- RA0NESN1
%c7 PORTB,0 "De6#c'54# RB0
+-'- TESTNRB1
RA0NESN1 %67 PORTB,0 "Ac'54# RB0
TESTNRB1 %'76c PORTA,1 "Te6'e# el e6'#3- 3e RA1
+-'- RA1NESN1
%c7 PORTB,1 "De6#c'54# RB1
+-'- L--1
RA1NESN1 %67 PORTB,1 "Ac'54# RB1
+-'- L--1
e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O 33:

"El $-3- G6lee1G 0 el G3e61e&'#&_ $e35#,'e el @#'c8J3-+ T5$e& >WDT?
"
"E6'e eEe$1l- 1&e'e,3e $-6'&#& el e$1le- 3e l# 5,6'&ucc5;, SLEEP 1#&# 1-,e& #l
PIC e, el
"$-3- `6'#,3 %0_ 3e %#E- c-,6u$-( El 3e61e&'#& 3el $56$- 6e 1&-3uc5&R c#3# 4eA
9ue el WDT &e%#6e(
"E, e6e $-$e,'- 6e 1&-3uc5&R u, 5,c&e$e,'- 3el 4#l-& 3e l# 1ue&'# B 9ue #c'u#&R
c-$- c-,'#3-&
"%5,#&5- 0 ,ue4#$e,'e 6e 4-l4e&R # l# 65'u#c5;, 3e `6'#,3 %0_(
"
"El 1&ee6c#le& 6e #6-c5#&R #l WDT 0 e6'#&R c-$1&e,353- e,'&e 1 0 1.:,
3e1e,35e,3- 3el e6'#3-
"l;+5c- 3e l-6 5,'e&&u1'-&e6 RA0JRA.(
"
"El 4#l-& ,-$5,#l 3el WDT e6 3e 1:$S( E6 3ec5&, c-, u, 1&ee6c#le& 3e 1, el 15c
G3e61e&'#&RG
"c#3# 1:$S, c-, u, 1&ee6c#le& 3e 1.:, l- 8#&R c#3# .,3 6e+u,3-6(
L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
5,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6
5,'e&,-6

-&+ 0D00 "*ec'-& 3e Re6e'
+-'- I,5c5-
-&+ 0D0 "S#l4# 4ec'-& 3e 5,'e&&u1c5;,
I,5c5- cl&7 PORTB "B-&&# l-6 l#'c8
3e 6#l53#
%67 STATUS,RP0 "Selecc5-,# %#,c- 1
cl&7 TRISB "Pue&'# B 6e c-,75+u&# c-$-
6#l53#
$-4l@ %Z00011111Z
$-4@7 TRISA "RA0JRA4 e,'&#3#6

$-4l@ %Z00001000Z
$-4@7 OPTIONNREG "P&ee6c#le& 3e 1 1#&# el WDT
%c7 STATUS,RP0 "Selecc5-,# %#,c- 0

L--1 6lee1 ")-3- S'#,3%0

5,c7 PORTB,F "I,c&e$e,'# el c-,'#3-& %5,#&5- 6-%&e
l# 1ue&'# B
$-47 PORTA,W
#,3l@ %Z00000111Z "Lee el e6'#3- 3e l-6
5,'e&&u1'-&e6 RA0JRA.
5-&l@ %Z00001000Z
%67 STATUS,RP0 "Selecc5-,# el %#,c- 1
$-4@7 OPTIONNREG "AEu6'# 4#l-& 3el 1&ee6c#le&
%c7 STATUS,RP0 "Selecc5-,# el %#,c- 1
+-'- L--1 "*-l4e& #l $-3- S'#,3 %0

e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O 3!:

"3e61e&'#& 3el $-3- SLEEP $e35#,'e 5,'e&&u1c5;, RB0(
"
"L# 5,'e&&u1c5;, 6e 1&-3uce c-, el 7l#,c- 3e6ce,3e,'e 3e RB0( RB0 e6'R
c-,ec'#3#, $e35#,'e
"l# 'ecl# 1, c-, RB4( A RB4 6e le c-,75+u&# c-$- 6#l53# # ,54el G0G( RB0 6e
c-,75+u&# c-$-
"e,'&#3# c-, c#&+# PullJUP( S5 l# 'ecl# e6'R 65, 1ul6#& >#%5e&'#?, RB0
1e&$#,ece&R # G1G(
"Cu#,3- 6e 1ul6# l# 'ecl# RB0 1#6#&R # G0G 1&-4-cR,3-6e l# 5,'e&&u1c5;, 9ue
75,#l5A#&R el
"$-3- SLEEP 3e %#E- c-,6u$-(
"
"El 1&-+&#$# 3e '&#'#$5e,'- 3e l# 5,'e&&u1c5;, 1&-4-c# el e,ce,353- 3el le3
c-,ec'#3- # RB=
"3u&#,'e 1 6e+u,3- 1#&# lue+- 3e6c-,ec'#&l- 0 4-le& #l $-3- SLEEP(
"
"Se &ec-$5e,3# 1-,e& el WDT e, OFF 1#&# 9ue ,- 6e# [l 9u5e, 1&-4-9ue el W#IeJU1
0 3e6c-,ecJ
"'#& el LCD $e35#,'e el Eu$1e& J! 1#&# 9ue ,- 5,'e&75e&# c-, l# lB,e# RB0(
L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
5,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6
5,'e&,-6

\e0N4#& e9u 0D0c "I,5c5- 3e l#6 4#&5#%le6
3el 'ecl#3-
Del#0NC-,' e9u 0D1. "*#&5#%le 3e 'e$1-&5A#c5;,

-&+ 0D00 "*ec'-& 3e &e6e'
+-'- I,5c5-
-&+ 0D04 "*ec'-& 3e 5,'e&&u1c5;,
+-'- I,'e&&u1c5-,

5,clu3e GTECLADO(INCG "I,clu5& &u'5,#6 3e $#,eE- 3el
'ecl#3-

"
********************************************************************************
*
"Del#0N4#&F E6'# &u'5,# 3e 1&-1;65'- +e,e&#l &e#l5A# u,# 'e$1-&5A#c5;, 4#&5#%le
"e,'&e 0 $S 0 1.(:G( Se e$1le# u, 1&ee6c#le& 3e .! 0 #l T)R0 6e le c#&+# c-,
1K(
"L# 4el-c53#3 3e '&#%#E- e6 3e 4)8A 0 1-& '#,'- el T)R0 6e 5,c&e$e,'# c#3# uS(
De
"e6'# 7-&$#, el T)R0 3e%e c-,'#& 1K e4e,'-6 9ue, c-, u, 1&ee6c#le& 3e .! 8#ce
u,#
"5,'e&4#l- '-'#l 3e 0000 uSQ0 $S >1K * .!?( El 4#l-& 1K 8#0 9ue eD1&e6#&l-
"e, 2eD( >c3? 0 c-$- el T)R0 e6 #6ce,3e,'e 8#%&R 9ue c#&+#& 6u c-$1le$e,'- >3C
8eD(?
"D5c8- 5,'e&4#l- 3e 0 $S 6e &e15'e '#,'e6 4ece6 c-$- 5,359ue l# 4#&5#%le
GDel#0Nc-,'G,
"e6 1-& ell- 9ue el 3el#0 $B,5$- e6 3e 0 $S >GDel#0Nc-,'/1? 0 el $RD5$# 3e
1.(:G
">Del#0Nc-,'/.?(
Del#0N4#&F %c7 INTCON,T0IF "De6c-,ec'# el 7l#+ 3e
&e%-6#$5e,'-
$-4l@ 0D3c "C-$1le$e,'- 8eD( 3e 1K
$-4@7 T)R0 "c#&+# el T)R0
I,'e&4#l- cl&@3' "Re7&e6c#& el WDT
%'766 INTCON,T0IF "Re%#6#$5e,'- 3el T)R0 HH
+-'- I,'e&4#l- "T-3#4B# ,-
3ec76A Del#0NC-,',F "Dec&e$e,'# c-,'#3-& 3e
5,'e&4#l-6
+-'- Del#0N4#& "Re15'e el 5,'e&4#l- 3e 0 $S
&e'u&,
"
********************************************************************************
********
"T&#'#$5e,'- 3e l# 5,'e&&u1c5;, 9ue 6e 1&-4-c# c#3# 4eA 9ue e, RB0 6e 3e'ec'# u,
7l#,c-
"#6ce,3e,'e c-$- c-,6ecue,c5# 3e 8#%e& 1ul6#3- l# 'ecl# 1
I,'e&&u1c5-,F %c7 INTCON,INTF "De6#c'54# 7l#+ INTF
%67 PORTB,= "Ac'54# l# 6#l53# RB=
$-4l@ (.0
$-4@7 Del#0NC-,'
c#ll Del#0N4#& "Te$1-&5A# 1 6e+u,3-
%c7 PORTB,= "De6#c'54# RB=
E6N0 %'766 PORTB,0 "E61e&# 9ue RB0 1#6e # G1G
>'ecl# #%5e&'#?
+-'- E6N0
&e'75e "F5, 3e 5,'e&&u1c5;,
"
********************************************************************************
********
"P&-+&#$# P&5,c51#l
I,5c5-F cl&7 PORTB "B-&&# 6#l53#6
%67 STATUS,RP0 "Selecc5-,# 1R+5,# 1 3e 3#'-6
$-4l@ %Z00000111Z "C#&+#6 PullJU1 #c'54#3#6,RB0
6e,65%le #l 3e6ce,3e,'e
$-4@7 OPTIONNREG "0 el 1&ee6c#le& 3e .! #65+,#3-
#l WDT
$-4l@ %Z00001111Z
$-4@7 TRISB "RB=JRB4 6#l53#6, RB3JRB0
e,'&#3#6
%c7 STATUS,RP0 "Selecc5-,# 1R+5,# 0 3e 3#'-6

$-4l@ %Z10010000Z
$-4@7 INTCON "Ac'54# 5,'e&&u1c5;, RB0

L--1 6lee1 "Pue6'# e, 6'#,3 %0 3e %#E-
c-,6u$-
,-1 "W#IeJU1
+-'- L--1

e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O 3=:

"P&-+&#$# 1#&# &e#l5A#& el #1#+#3- 0 e,ce,353- 3e u, LED c-l-c#3- e, "el Pue&'-
A0 %#6#3- e, l# 5,'e&&u1c5;, eD'e&,# INT >RB0?
"
l56' 1/1!F:4
6'#'u6 e9u 0D03
1-&'# e9u 0D0
1-&'% e9u 0D0!
5,'c-, e9u 0D0B
-1'5-,& e9u 0D:1
'&56# e9u 0D:
'&56% e9u 0D:!
Y3e75,e LED 1-&'#,0
Y3e75,e BAN\1 %67 6'#'u6,
Y3e75,e BAN\0 %c7 6'#'u6,
-&+ 0008 "I,35c# #l e,6#$%l#3-& l# 35&ecc5;, 3e $e$-&5#
"3e l# 65+u5e,'e 5,6'&ucc5;,
+-'- I,5c5-
-&+ 0048 "I,35c# #l e,6#$%l#3-& l# 35&ecc5;, 3e $e$-&5#
" 3e l# 65+u5e,'e 5,6'&ucc5;,
I,'e&&u1c5-,
%'766 5,'c-,,1 "e6 5,'e&&u1c5;, INTH
&e'75e "&e'-&,# 3e 5,'e&&u1c5;, 0 GIE/1
%'76c 1-&'#,0 "1&-%#& e6'#3- #c'u#l 3el LED
+-'- P&e,3e& "4# # e,ce,3e& el LED
A1#+#&
%67 1-&'#,0 "#1#+# el LED
+-'- E61e&#
P&e,3e&
%c7 1-&'#,0 "e,c5e,3e el LED
E61e&#
%'766 1-&'%,0 "e61e&# # 9ue 6e 6uel'e el 1ul6#3-&
+-'- E61e&#
%c7 5,'c-,,1 "%-&&# %#,3e&# INT
&e'75e "&e'-&,# 3e 5,'e&&u1c5;, 0 GIE/1
"P&-+&#$# 1&5,c51#l
I,5c5-
BAN\1 "6elecc5;, 3el %#,c- 1
%c7 '&56#,0 "6elecc5-,# 1-&'#,0 c-$- 6#l53#
BAN\0 "6elecc5;, 3e %#,c- 0
%67 1-&'#,0 "#1#+#& LED
"1&-+&#$#c5;, 3e 5,'e&&u1c5;,
%67 5,'c-,,4 "#c'54#& 5,'e&&u1c5;, INT
BAN\1 "6elecc5;, %#,c- 1
%c7 -1'5-,&,! "6elecc5;, 3el 7l#,c- 3e %#E#3# e, el 15, INT
BAN\0
%67 5,'c-,,= "2#%5l5'#& 5,'e&&u1c5-,e6 +l-%#le6
+-'- a "9ue3# # l# e61e&# 3e 5,'e&&u1c5;,
e,3
El 6B$%-l- a 65+,575c# l# 35&ecc5;, 3e $e$-&5# 3e 1&-+&#$# e, 3-,3e 6e e,cue,'&#
[6'e >c5cl- 5,75,5'- 3e e61e&#?
De%e ,-'#&6e l# u%5c#c5;, 3e l# &u'5,# 3e 5,'e&&u1c5;, # 1#&'5& 3e l# 1-65c5;,
3e $e$-&5# 3e 1&-+&#$# 0048(
EGEMP"O 30:

"I,'&-3ucc5;, #l $#,eE- 3el 'ecl#3-(
"
"2#c5e,3- u6- 3e l#6 &u'5,#6 5,clu53#6 e, el 75c8e&- TECLADO(INC, 6e "'&#'# 3e
lee& el 'ecl#3- 0, 456u#l5A#& 6-%&e l-6 le36 3e l# 1ue&'# B el "c;35+- %5,#&5-
3e l# 'ecl# 1ul6#3#( L# 456u#l5A#c5;, 6e $#,'5e,e e6'#%le "3u&#,'e 3-6 6e+u,3-6
8#6'# u,# ,ue4# 1ul6#c5;,(
"
"Se '&#'# 3e u, eEe$1l- e, el 9ue l# Pue&'# B 6e &ec-,75+u&# "35,R$5c#$e,'e(
I,5c5#l$e,'e e6 c-,75+u&#3# c-$- 6#l53# 1#&# 1&e6e,'#c5;, "3el &e6ul'#3-(
P-6'e&5-&$e,'e, l# &u'5,# 3e eD1l-&#c5;, 3el 'ecl#3- "&ec-,75+u&# RB0JRB3 c-$-
e,'&#3#6 0 RB4JRB= c-$- 6#l53#6(
L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
I,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6 5,'e&,-6

\e0N4#& e9u 0D0c "I,5c5- 3e l#6 4#&5#%le6 3e
$#,eE- 3el " 'ecl#3-
Del#0NC-,' e9u 0D1. "*#&5#%le 1#&# l# 'e$1-&5A#c5;,
-&+ 0D00 "*ec'-& 3e Re6e'
+-'- I,5c5-
-&+ 0D0 "S#l4# 4ec'-& 3e 5,'e&&u1c5;,
5,clu3e GTECLADO(INCG "I,clu0e &u'5,#6 3e $#,eE- 3el
'ecl#3-
"************************************************************************
"Del#0N4#&F E6'# &u'5,# 3e 1&-1;65'- +e,e&#l &e#l5A# u,# 'e$1-&5A#c5;, "4#&5#%le
e,'&e 0 $S 0 1.(:G( Se e$1le# u, 1&ee6c#le& 3e .! 0 #l T)R0 "6e le c#&+# c-,
1K( L# 4el-c53#3 3e '&#%#E- e6 3e 4)8A 0 1-& '#,'- el "T)R0 6e 5,c&e$e,'# c#3#
uS( De e6'# 7-&$#, el T)R0 3e%e c-,'#& 1K "e4e,'-6 9ue, c-, u, 1&ee6c#le& 3e
.! 8#ce u, 5,'e&4#l- '-'#l 3e 0000 "uSQ0 $S >1K * .!?( El 4#l-& 1K 8#0 9ue
eD1&e6#&l- e, 2eD( >c3? 0 "c-$- el T)R0 e6 #6ce,3e,'e 8#%&R 9ue c#&+#& 6u
c-$1le$e,'- >3C 8eD(?
"D5c8- 5,'e&4#l- 3e 0 $S 6e &e15'e '#,'e6 4ece6 c-$- 5,359ue l#
4#&5#%le "GDel#0Nc-,'G, e6 1-& ell- 9ue el 3el#0 $B,5$- e6 3e 0
$S>GDel#0Nc-,'/1? "0 el $RD5$# 3e 1.(:G >Del#0Nc-,'/.?(
Del#0N4#&F %c7 INTCON,T0IF "De6c-,ec'# el 7l#+ 3e
&e%-6#$5e,'-
$-4l@ 0D3c "C-$1le$e,'- 8eD( 3e 1K
$-4@7 T)R0 "c#&+# el T)R0
I,'e&4#l- cl&@3' "Re7&e6c#& el WDT
%'766 INTCON,T0IF "Re%#6#$5e,'- 3el T)R0 HH
+-'- I,'e&4#l- "T-3#4B# ,-
3ec76A Del#0NC-,',F "Dec&e$e,'# c-,'#3-& 3e 5,'e&4#l-6
+-'- Del#0N4#& "Re15'e el 5,'e&4#l- 3e 0 $S
&e'u&,
I,5c5- cl&7 PORTB "B-&&# l-6 l#'c8 3e 6#l53#
%67 STATUS,RP0 "Selecc5-,# %#,c- 1
cl&7 TRISB "Pue&'# B 6e c-,75+u&# c-$-
6#l53#
$-4l@ %Z00000111Z
$-4@7 OPTIONNREG "P&ee6c#le& 3e .! 1#&# el T)R0
%c7 STATUS,RP0 "Selecc5-,# %#,c- 0

L--1 cl&@3' "Re7&e6c- 3el WDT
c#ll \e0NSc#, "ED1l-&# el 'ecl#3-
$-4l@ 0D:0
6u%@7 Tecl#,W
%'76c STATUS,Z "2#0 #l+u,# 1ul6#3# HH
+-'- L--1 "N-
$-47 Tecl#,W "Lee el c;35+- 3e l# 'ecl#
1ul6#3#
$-4@7 PORTB "L- 456u#l5A# 6-%&e l-6 le36
3e l# Pue&'# B
$-4l@ (40
$-4@7 Del#0NC-,'
c#ll Del#0N4#& "Te$1-&5A# . 6e+u,3-6
cl&7 PORTB "De6#c'54# 456u#l5A#c5;,
+-'- L--1

e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O 3C:

"El 'ecl#3- 0 el LCD(
"
"2#c5e,3- u6- 3e l#6 &u'5,#6 5,clu53#6 e, l-6 75c8e&-6 TECLADO(INC 0
"LCDNC<<(INC, 6e '&#'# 3e lee& el 'ecl#3- 0, 456u#l5A#& 6-%&e el $;3ul- "LCD el
c;35+- 8eD( 3e l# 'ecl# 1ul6#3#(
"
"El eEe$1l- 1&e'e,3e $-6'&#& c;$- e6 1-65%le +-%e&,#& 3-6 1e&57[&5c-6 "356'5,'-6
c-,ec'#3-6 # l# $56$# 1ue&'# >LCD 0 'ecl#3-?( P#&# ell- %#6'# "&e1&-+&#$#&l#
35,R$5c#$e,'e e, el '5e$1- 6e+C, 6e# ,ece6#&5-(
L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
5,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6 5,'e&,-6

Lc3N4#& e9u 0D0c "I,5c5- 3e l#6 4#&5#%le6
1#&# el LCD
\e0N4#& e9u 0D0e "I,5c5- 3e l#6 4#&5#%le6
3el 'ecl#3-
Te$1-&#lN1 e9u 0D13 "*#&5#%le 'e$1-&#l ,L 1
Te$1-&#lN. e9u 0D14 "*#&5#%le 'e$1-&#l ,L .

-&+ 0D00 "*ec'-& 3e &e6e'
+-'- I,5c5-
-&+ 0D0 "S#l4# 4ec'-& 3e
5,'e&&u1c5;,

5,clu3e GLCDNC<<(INCG "I,clu5& &u'5,#6 3e $#,eE-
3el LCD
5,clu3e GTECLADO(INCG "I,clu5& &u'5,#6 3e $#,eE-
3el 'ecl#3-
T#%l#N)e,6#Ee6F $-4@7 PCL "De61l#A#$5e,'- 6-%&e l#
'#%l#
)e,6N0 e9u a ")e,6N0 #1u,'# #l 1&5$e&
c#&Rc'e&
3' GSe 8# 1ul6#3-F G,0D00
"
********************************************************************************
*****
")e,6#EeF E6'# &u'5,# 456u#l5A# e, el LCD el $e,6#Ee cu0- 5,5c5- e6'R 5,35c#3-
e,
"el #cu$ul#3-&( El 75, 3e u, $e,6#Ee 6e 3e'e&$5,# $e35#,'e el c;35+- 0D00
)e,6#Ee $-4@7 Te$1-&#lN1 "S#l4# 1-65c5;, 3e l# '#%l#
)e,6#EeN1 $-47 Te$1-&#lN1,W "Recu1e&# 1-65c5;, 3e l# '#%l#
c#ll T#%l#N)e,6#Ee6 "Bu6c# c#&#c'e& 3e 6#l53#
$-4@7 Te$1-&#lN. "Gu#&3# el c#&#c'e&
$-47 Te$1-&#lN.,F
%'766 STATUS,Z ")5&# 65 e6 el Cl'5$-
+-'- N-Ne6Nul'5$-
&e'u&,
N-Ne6Nul'5$- c#ll LCDNDATO "*56u#l5A# e, el LCD
5,c7 Te$1-&#lN1,F "S5+u5e,'e c#&#c'e&
+-'- )e,6#EeN1

I,5c5-F %67 STATUS,RP0 "Selecc5-,# 1R+5,# 1 3e
3#'-6
$-4l@ %Z00001111Z
$-4@7 OPTIONNREG "P&ee6c#l& 3e 1.:
#65+,#3- #l WDT
%c7 INTCON,GIE "De6c-,ec'#& 5,'e&&u1c5-,e6
%c7 STATUS,RP0 "Selecc5-,# 1R+5,# 0 3e
3#'-6
cl&@3' "Re7&e6c#& WDT

c#ll UPNLCD "C-,75+u&# Pue&'# A 0 B c-$-
6#l53#6
c#ll LCDNINI "Ru'5,# 3e 5,5c5#l5A#c5;, 3el
LCD
$-4l@ %Z00001100Z
c#ll LCDNREG "LCD e, ON
$-4l@ %Z00000001Z
c#ll LCDNREG "B-&&# LCD 0 2O)E
"S#l53# 3el $e,6#Ee GTecl# 1ul6#3#FG

$-4l@ )e,6N0
c#ll )e,6#Ee "*56u#l5A# el $e,6#Ee

"Bucle 1&5,c51#l
L--1F cl&@3' "Re7&e6c#& el WDT
c#ll \e0NSc#, "ED1l-&# el 'ecl#3-
$-4l@ 0D:0
6u%@7 Tecl#,W
%'76c STATUS,Z "2#0 #l+u,# 1ul6#3# H
+-'- L--1 "N-, 6e+u5& eD1l-&#,3-

c#ll \e0NBCD "C-,45e&'e c;35+- 3e 'ecl# #
c;35+- BCD
$-4l@ 0D:7
c#ll LCDNREG "P-65c5-,# el cu&6-& 3el LCD
$-47 Tecl#,W
6u%l@ (K
%'766 STATUS,C "E6 $#0-& 9ue K >A,
B,C,D,E,F?H
+-'- )#0-&N9ueNK "S5
$-47 Tecl#,W "N-
#33l@ 0D30 "AEu6'e ASCII 3e l-6
c#&#c'e&e6 3el 0 #l K
c#ll LCDNDATO "*56u#l5A#& 6-%&e el LCD
+-'- L--1

)#0-&N9ueNK $-47 Tecl#,W
#33l@ 0D3= "AEu6'e ASCII 3e l-6
c#&#c'e&e6 3e l# A # l# F
c#ll LCDNDATO "*56u#l5A# 6-%&e el LCD
+-'- L--1
e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O 3':

"456u#l5A#& 6-%&e el LCD, l#6 'ecl#6 6e+C, 6e 4#, 1ul6#,3-(
"
"El eEe$1l- 1&e'e,3e $-6'&#& c;$- e6 1-65%le +-%e&,#& 3-6 1e&57[&5c-6 "356'5,'-6
c-,ec'#3-6 # l# $56$# 1ue&'# >LCD 0 'ecl#3-?( P#&# ell- %#6'# "&e1&-+&#$#&l#
35,R$5c#$e,'e e, el '5e$1- 6e+C, 6e# ,ece6#&5-(
L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
I,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6 5,'e&,-6

Lc3N4#& e9u 0D0c "I,5c5- 3e l#6 4#&5#%le6
1#&# el LCD
\e0N4#& e9u 0D0e "I,5c5- 3e l#6 4#&5#%le6
3el 'ecl#3-
C-,'#3-&NC e9u 0D14 "C-,'#3-& 3e c#&#c'e&e6
C-,'#3-&NL e9u 0D1 "C-,'#3-& 3e lB,e#6

-&+ 0D00 "*ec'-& 3e &e6e'
+-'- I,5c5-
-&+ 0D0 "S#l4# 4ec'-& 3e 5,'e&&u1c5;,

5,clu3e GLCDNC<<(INCG "I,clu5& &u'5,#6 3e $#,eE- 3el
"LCD
5,clu3e GTECLADO(INCG "I,clu5& &u'5,#6 3e $#,eE-
3el "'ecl#3-

I,5c5-F %67 STATUS,RP0 "Selecc5-,# 1R+5,# 1 3e 3#'-6
$-4l@ %Z00001111Z
$-4@7 OPTIONNREG "P&ee6c#le& 3e 1.: #65+,#3- #l
WDT
%c7 INTCON,GIE "De6c-,ec'#& 5,'e&&u1c5-,e6
%c7 STATUS,RP0 "Selecc5-,# 1R+5,# 0 3e 3#'-6
cl&@3' "Re7&e6c#& WDT

c#ll UPNLCD "C-,75+u&# Pue&'# A 0 B c-$- 6#l53#6
c#ll LCDNINI "Ru'5,# 3e 5,5c5#l5A#c5;, 3el LCD
$-4l@ %Z00001110Z
c#ll LCDNREG "LCD e, ON, cu&6-& ON
B-&&#NLCD $-4l@ %Z00000001Z
c#ll LCDNREG "B-&&# LCD 0 2O)E
I,5c5#NL $-4l@ (.
$-4@7 C-,'#3-&NL "I,5c5# c-,'#3-& 3e lB,e#6
I,5c5#NC $-4l@ (1!
$-4@7 C-,'#3-&NC "I,5c5# c-,'#3-& 3e c#&#c'e&e6
L--1F cl&@3' "Re7&e6c#& el WDT
c#ll \e0NSc#, "ED1l-&# el 'ecl#3-
$-4l@ 0D:0
6u%@7 Tecl#,W
%'76c STATUS,Z "2#0 #l+u,# 1ul6#3# H
+-'- L--1 "N-, 6e+u5& eD1l-&#,3-

c#ll \e0NBCD "C-,45e&'e c;35+- 3e 'ecl# # c;35+-
BCD

$-47 Tecl#,W
6u%l@ (K
%'766 STATUS,C "E6 $#0-& 9ue K >A, B, C, D, E, F?H
+-'- )#0-&N9ueNK "S5
$-47 Tecl#,W "N-
#33l@ 0D30 "AEu6'e ASCII 3e l-6 c#&#c'e&e6 3el
0 #l K
+-'- *56u#l5A#
)#0-&N9ueNK $-47 Tecl#,W
#33l@ 0D3= "AEu6'e ASCII 3e l-6 c#&#c'e&e6
3e l# A # l# F

*56u#l5A# c#ll LCDNDATO "*56u#l5A# 6-%&e el LCD

"E6 ,ece6#&5- e61e&#& 9ue 6e l5%e&e l# 'ecl# 1ul6#3#, 3e l- c-,'&#&5- l#
456u#l5A#c5;,
"3e e6'# 6e &e1e'5&B# 4#&5#6 4ece6( Se 1ue3e c-$1&-%#& 6u e7ec'- 65 6e #,ul#,
l#6
"5,6'&ucc5-,e6 9ue 45e,e, # c-,'5,u#c5;,(
Tecl#N1ul6#3# c#ll \e0NSc#, "ED1l-&# el 'ecl#3-
$-4l@ 0D:0
6u%@7 Tecl#,F
%'766 STATUS,Z "Se 8# l5%e&#3- HH
+-'- Tecl#N1ul6#3# "T-3#4B# ,-
3ec76A C-,'#3-&NC,F "Se 8#, 5$1&5$53- 1!
c#&#c'e&e6 HH
+-'- L--1 "N-
$-4l@ 0Dc0
c#ll LCDNREG "S5 1-65c5-,# cu&6-& e, l#
65+u5e,'e lB,e#
3ec76A C-,'#3-&NL,F "Se 8#, 5$1&5$53- . lB,e#6 HH
+-'- I,5c5#NC "N-, 6e 5$1&5$e, -'&-6 1! c#&#c'e&e6
+-'- B-&&#NLCD "S5, 6e 5,5c5# el LCD

e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O 3N:

");3ul- LCD Se&5#lF e6'e $;3ul- $ue6'&# $e,6#Ee6 e, u,# 1#,'#ll# 3e c&56'#l
lB9u53- '51- 2D441002 - "65$5l#&, e,45#3-6 3e63e u,# c-$1u'#3-&# # '&#4[6 3el
1ue&'- 6e&5#l RSJ.3.(
LIST P/1!7:4
STATUS EVU 3
RP0 EVU
TRISA EVU
TRISB EVU !
PORTA EVU
PORTB EVU !
CARRS EVU 0
D< EVU 4
DR EVU 0
BAUDN3 EVU (1
BAUDN. EVU (31
BAUDN1 EVU (3.
BAUDN< EVU (31
BAUDN4 EVU (40
BAUDNS EVU (31
W EVU 0
F EVU 1
)SB EVU =
ADCON1 EVU :
ORG 0<C
c-,'#3-& RES 1
c-,'#3-&. RES 1
c-,'#3-&3 RES 1
COUNT1 &e6 1
COUNT. &e6 1
"3#'- &e6 1
REG &e6 1
&e+1 RES 1
&e+. RES 1
c-,' RES 1
c-,'. RES 1
TE)P RES 1
RETCUENTA RES 1
RETCUENTA. RES 1
RETCUENTA4 RES 1
RETCUENTA3 RES 1
c-,'3 &e6 1
ORG 0

CLRF PORTA
CLRF PORTB

BSF STATUS,RP0 " BANCO 1
)O*LW BZ10100Z " 1ue&'- A c-$- e,'&#3#
)O*WF TRISA
)O*LW BZ00000000Z " 1ue&'- B c-$- 6#l53#
)O*WF TRISB
BCF STATUS,RP0 " BANCO 0

"INICIALIZACION DE LA PANTALLA
BCF PORTA,0 " RS EN CERO
BCF PORTA,1 " E EN CERO
)O*LW BZ00110000Z " ESTABLECE VUE LA PANTALLA ES
DE DOS LINEAS(
)O*WF PORTB
CALL PULSO
CALL DELASN4
)O*LW BZ00000110Z " PARA INCRE)ENTAR LA DIRECCION
DEL CUSOR
)O*WF PORTB
CALL PULSO
CALL DELASN4
)O*LW BZ00001110Z
)O*WF PORTB
CALL PULSO " SELECCIONA OPERACION : BITS
CALL DELASN4
$-4l@ (1=
$-4@7 c-,'3
INICIO BTFSC PORTA,. "LA CO)UNICACION SERIAL LLEGA POR PIN RA0
GOTO INICIO
CALL RECEP

3ec76A c-,'3,1
+-'- 6#l'-1
)O*LW BZ00000111Z " PARA INCRE)ENTAR LA DIRECCION
DEL CUSOR
)O*WF PORTB
CALL PULSO
CALL DELASN4
6#l'-1 BSF PORTA,1
)O*F REG,0
)O*WF PORTB "EN*IA EL DATO
CALL PULSO
BCF PORTA,1
GOTO INICIO
PULSO BSF PORTA,0 "EN*IA PULSO DE STROBO
CALL DELASN4
BCF PORTA,0
RETURN
"**********RUTINA DE RECEPCION*******
RECEP CLRF REG
CALL DELASN4 "CO)IENZA LA RECEPCION

)O*LW :
)O*WF COUNT.
RNNE<T BCF STATUS,CARRS
RRF REG,F
BTFSC PORTA,.
BSF REG,)SB
CALL DELASNS
DECFSZ COUNT.,F
GOTO RNNE<T
)O*F REG,W
)O*WF TE)P
CLRW
RETURN

DELASNS )O*LW BAUDNS
GOTO SA*E.
DELASN4 )O*LW BAUDN4
GOTO SA*E.
SA*E. )O*WF RETCUENTA.
REDONA DECFSZ RETCUENTA.,F
GOTO REDONA
RETLW 0
END
EGEMP"O !,:

"El $#,eE- 3e l# 1#,'#ll# LCD
"
"E6'e eEe$1l- 1&e'e,3e 5,'&-3uc5&,-6 e, el $#,eE- 3e l# 1#,'#ll# LCD, "1#&# l#
456u#l5A#c5;, 3e 357e&e,'e6 $e,6#Ee6 >1(e( 2-l#?(
"
"De%e &ec-&3#&6e 9ue l#6 lB,e#6 RA0JRA. #c'C#, #8-&# c-$- 6#l53# 3e "6eT#le6 3e
c-,'&-l 8#c5# el LCD( Al e6'#& c-,ec'#3#6 c-, 6e,3-6 "5,'e&&u1'-&e6, e6'-6 3e%e,
e6'#& # ,54el l;+5c- G1G 1e&$#,e,'e$e,'e(
L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
I,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6 5,'e&,-6

Lc3N4#& e9u 0D0c "*#&5#%le6 >.? 3e l#6 &u'5,#6 3e
$#,eE- 3el "LCD
-&+ 0D00 "*ec'-& 3e Re6e'
+-'- I,5c5-
-&+ 0D0 "S#l4# 4ec'-& 3e 5,'e&&u1c5;,
5,clu3e GLCDNCDD(5,cG "I,clu0e l#6 &u'5,#6 3e $#,eE- 3
"3el LCD
I,5c5- cl&7 PORTB "B-&&# l-6 l#'c8 3e 6#l53#
%67 STATUS,RP0 "Selecc5-,# %#,c- 1
cl&7 TRISB "Pue&'# B 6e c-,75+u&# c-$-
6#l53#
$-4l@ %Z00011000Z
$-4@7 TRISA "RA0JRA. 6#l53#6, RA3JRA4
e,'&#3#6
%c7 STATUS,RP0 "Selecc5-,# %#,c- 0

c#ll LCDNINI "Secue,c5# 3e 5,5c5- 3el LCD
$-4l@ %Z00001111Z
c#ll LCDNREG "E,4B# 5,6'&ucc5;,F LCD ON, Cu&6-& ON
0 %l5,I ON
$-4l@ Z2Z
c#ll LCDNDATO "*56u#l5A# 2
$-4l@ Z-Z
c#ll LCDNDATO "*56u#l5A# -
$-4l@ ZlZ
c#ll LCDNDATO "*56u#l5A# l
$-4l@ Z#Z
c#ll LCDNDATO "*56u#l5A# #
$-4l@ Z Z
c#ll LCDNDATO "*56u#l5A# %l#,c-

L--1 6lee1 "Pue6'# e, S'#,3%0
+-'- L--1 "*uel'# # 6'#,3%0
e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O !1:

"E6'e eEe$1l- 1&e'e,3e 5,'&-3uc5&,-6 e, el $#,eE- 3e l# 1#,'#ll# LCD, 1#&# l#
456u#l5A#c5;, 3e 357e&e,'e6 $e,6#Ee6(
"
"De%e &ec-&3#&6e 9ue l#6 lB,e#6 RA0JRA. #c'C#, #8-&# c-$- 6#l53# 3e "6eT#le6 3e
c-,'&-l 8#c5# el LCD( Al e6'#& c-,ec'#3#6 c-, 6e,3-6 "5,'e&&u1'-&e6, e6'-6 3e%e,
e6'#& # ,54el l;+5c- G1G 1e&$#,e,'e$e,'e(
L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
5,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6 5,'e&,-6

Lc3N4#& e9u 0D0c "*#&5#%le6 >.? 3e l#6
&u'5,#6 3e $#,eE- 3el LCD
Del#0NC-,' e9u 0D0e "*#&5#%le 1#&# l# 'e$1-&5A#c5;,
Te$1-&#lN1 e9u 0D07 "*#&5#%le 'e$1-&#l
Te$1-&#lN. e9u 0D10 "*#&5#%le 'e$1-&#l
-&+ 0D00 "*ec'-& 3e Re6e'
+-'- I,5c5-
-&+ 0D0 "S#l4# 4ec'-& 3e 5,'e&&u1c5;,
5,clu3e GLCDNCDD(5,cG "I,clu0e l#6 &u'5,#6 3e $#,eE- 3el
LCD
"************************************************************************
"Se+C, el 4#l-& c-,'e,53- e, el &e+56'&- W, 6e 3e4uel4e el c#&Rc'e& #
"456u#l5A#&
T#%l#N)e,6#Ee6 $-4@7 PCL "C#lcul# el 3e61l#A#$5e,'- 6-%&e
l# '#%l#
)e,6N0 e9u a ")e,6N0 #1u,'# #l 1&5$e& c#&Rc'e& 3el
$e,6#Ee 0
&e'l@ Z2Z
&e'l@ Z-Z
&e'l@ ZlZ
&e'l@ Z#Z
&e'l@ 0D00 "Ul'5$- c#&Rc'e& 3el $e,6#Ee 0
)e,6N1 e9u a ")e,6N1 #1u,'# #l 1&5$e& c#&Rc'e& 3el
F$e,6#Ee 1
&e'l@ ZAZ
&e'l@ Z3Z
&e'l@ Z5Z
&e'l@ Z-Z
&e'l@ Z6Z
&e'l@ 0D00 "Ul'5$- c#&Rc'e& 3el $e,6#Ee 1
"************************************************************************
"Del#0N4#&F E6'# &u'5,# 3e 1&-1;65'- +e,e&#l &e#l5A# u,# 'e$1-&5A#c5;, "4#&5#%le
e,'&e 0 $S 0 1.(:G( Se e$1le# u, 1&ee6c#le& 3e .! 0 #l T)R0 "6e le c#&+# c-,
1K( L# 4el-c53#3 3e '&#%#E- e6 3e 4)8A 0 1-& '#,'- el "T)R0 6e 5,c&e$e,'# c#3#
uS( De e6'# 7-&$#, el T)R0 3e%e c-,'#& 1K "e4e,'-6 9ue, c-, u, 1&ee6c#le& 3e
.! 8#ce u,# 5,'e&4#l- '-'#l 3e 0000 "uSQ0 $S >1K * .!?( El 4#l-& 1K 8#0
9ue eD1&e6#&l- e, 2eD( >c3? 0 "c-$- el T)R0 e6 #6ce,3e,'e 8#%&R 9ue c#&+#& 6u
c-$1le$e,'- >3C 8eD(?
"D5c8- 5,'e&4#l- 3e 0 $S 6e &e15'e '#,'e6 4ece6 c-$- 5,359ue l#
4#&5#%le "GDel#0Nc-,'G, e6 1-& ell- 9ue el 3el#0 $B,5$- e6 3e 0
$S>GDel#0Nc-,'/1? "0 el $RD5$# 3e 1.(:G >Del#0Nc-,'/.?(
Del#0N4#&F %c7 INTCON,T0IF "De6c-,ec'# el 7l#+ 3e
&e%-6#$5e,'-
$-4l@ 0D3c "C-$1le$e,'- 8eD( 3e 1K
$-4@7 T)R0 "c#&+# el T)R0
I,'e&4#l- cl&@3' "Re7&e6c#& el WDT
%'766 INTCON,T0IF "Re%#6#$5e,'- 3el T)R0 HH
+-'- I,'e&4#l- "T-3#4B# ,-
3ec76A Del#0NC-,',F "Dec&e$e,'# c-,'#3-& 3e 5,'e&4#l-6
+-'- Del#0N4#& "Re15'e el 5,'e&4#l- 3e 0 $S
&e'u&,
"************************************************************************
")e,6#EeF E6'# &u'5,# 456u#l5A# e, el LCD el $e,6#Ee cu0- 5,5c5- e6'R "5,35c#3-
e, el #cu$ul#3-&( El 75, 3e u, $e,6#Ee 6e 3e'e&$5,# $e35#,'e el "c;35+- 0D00
)e,6#Ee $-4@7 Te$1-&#lN1 "S#l4# 1-65c5;, 3e l# '#%l#
)e,6#EeN1 $-47 Te$1-&#lN1,W "Recu1e&# 1-65c5;, 3e l# '#%l#
c#ll T#%l#N)e,6#Ee6 "Bu6c# c#&Rc'e& 3e 6#l53#
$-4@7 Te$1-&#lN. "Gu#&3# el c#&Rc'e&
$-47 Te$1-&#lN.,F
%'766 STATUS,Z ")5&# 65 e6 el Cl'5$-
+-'- N-Ne6Nul'5$-
&e'u&,
N-Ne6Nul'5$- c#ll LCDNDATO "*56u#l5A# e, el LCD
5,c7 Te$1-&#lN1,F "S5+u5e,'e c#&Rc'e&
+-'- )e,6#EeN1
"************************************************************************
"
I,5c5- cl&7 PORTB "B-&&# l-6 l#'c8 3e 6#l53#
%67 STATUS,RP0 "Selecc5-,# %#,c- 1
cl&7 TRISB "Pue&'# B 6e c-,75+u&# c-$-
6#l53#
$-4l@ %Z00011000Z
$-4@7 TRISA "RA0JRA. 6#l53#6, RA3JRA4
e,'&#3#6
$-4l@ %Z00000111Z
$-4@7 OPTIONNREG "P&ee6c#le& 3e .! 1#&# el T)R0
%c7 STATUS,RP0 "Selecc5-,# %#,c- 0

c#ll LCDNINI "Secue,c5# 3e 5,5c5- 3el LCD
$-4l@ %Z00001100Z
c#ll LCDNREG "E,4B# 5,6'&ucc5;,F LCD ON, Cu&6-&
OFF 0 "%l5,I OFF
L--1 $-4l@ %Z00000001Z
c#ll LCDNREG "B-&&# LCD 0 2-$e >c-l-c#& cu&6-& e,
1b "1-65c5;,?(
$-4l@ )e,6N0
c#ll )e,6#Ee "*56u#l5A# el $e,6#Ee 0
$-4l@ (.0
$-4@7 Del#0NC-,'
c#ll Del#0N4#& "Te$1-&5A# . 6e+u,3-6
$-4l@ %Z00000001Z
c#ll LCDNREG "B-&&# LCD 0 2-$e >c-l-c#& cu&6-& e,
1b "1-65c5;,?(
$-4l@ )e,6N1
c#ll )e,6#Ee "*56u#l5A# el $e,6#Ee 1
$-4l@ (.0
$-4@7 Del#0NC-,'
c#ll Del#0N4#& "Te$1-&5A# . 6e+u,3-6
+-'- L--1
e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O !2:

"456u#l5A#c5;, 3e 357e&e,'e6 $e,6#Ee6(
"
"De%e &ec-&3#&6e 9ue l#6 lB,e#6 RA0JRA. #c'C#, #8-&# c-$- 6#l53# 3e 6eT#le6 3e
c-,'&-l 8#c5# el LCD( Al e6'#& c-,ec'#3#6 c-, 6e,3-6 "5,'e&&u1'-&e6, e6'-6 3e%e,
e6'#& # ,54el l;+5c- G1G 1e&$#,e,'e$e,'e(
L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
I,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6 5,'e&,-6

Lc3N4#& e9u 0D0c "*#&5#%le6 >.? 3e l#6
&u'5,#6 3e "$#,eE- 3el LCD
Del#0NC-,' e9u 0D0e "*#&5#%le 1#&# l#
'e$1-&5A#c5;,
Te$1-&#lN1 e9u 0D07 "*#&5#%le 'e$1-&#l
Te$1-&#lN. e9u 0D10 "*#&5#%le 'e$1-&#l
-&+ 0D00 "*ec'-& 3e Re6e'
+-'- I,5c5-
-&+ 0D0 "S#l4# 4ec'-& 3e
5,'e&&u1c5;,
5,clu3e GLCDNCDD(5,cG "I,clu0e l#6 &u'5,#6 3e $#,eE- 3el
LCD
"************************************************************************
"Se+C, el 4#l-& c-,'e,53- e, el &e+56'&- W, 6e 3e4uel4e el c#&Rc'e& #
"456u#l5A#&
T#%l#N)e,6#Ee6 $-4@7 PCL "C#lcul# el 3e61l#A#$5e,'-
6-%&e l# "'#%l#
"************************************************************************
"L# 35&ec'54# 3' +e,e&# '#,'#6 5,'6&ucc5-,e6 &e'l@ c-$- %0'e6 - "c#&#c'e&e6
c-,'e,+#
)e,6N0 e9u a ")e,6N0 #1u,'# #l 1&5$e&
c#&Rc'e& 3el "$e,6#Ee 0
3' GCu&6-PIC1!F:4G,0D00
)e,6N1 e9u a ")e,6N1 #1u,'# #l 1&5$e&
c#&Rc'e& 3el "$e,6#Ee 1
3' GF-&-L#Re656'e,c5#G,0D00
)e,6N. e9u a ")e,6N. #1u,'# #l 1&5$e&
c#&Rc'e& 3el "$e,6#Ee .
3' Ge,EA%-#&3G,0D00
)e,6N3 e9u a ")e,6N3 #1u,'# #l 1&5$e&
c#&Rc'e& 3el "$e,6#Ee 3
3' GI,'e&,e'G,0D00
"************************************************************************
"Del#0N4#&F E6'# &u'5,# 3e 1&-1;65'- +e,e&#l &e#l5A# u,# 'e$1-&5A#c5;, "4#&5#%le
e,'&e 0 $S 0 1.(:G( Se e$1le# u, 1&ee6c#le& 3e .! 0 #l T)R0 "6e le c#&+# c-,
1K( L# 4el-c53#3 3e '&#%#E- e6 3e 4)8A 0 1-& '#,'- el "T)R0 6e 5,c&e$e,'# c#3#
uS( De e6'# 7-&$#, el T)R0 3e%e c-,'#& 1K "e4e,'-6 9ue, c-, u, 1&ee6c#le& 3e
.! 8#ce u,# 5,'e&4#l- '-'#l 3e 0000 "uSQ0 $S >1K * .!?( El 4#l-& 1K 8#0
9ue eD1&e6#&l- e, 2eD( >c3? 0 "c-$- el T)R0 e6 #6ce,3e,'e 8#%&R 9ue c#&+#& 6u
c-$1le$e,'- >3C 8eD(?
"D5c8- 5,'e&4#l- 3e 0 $S 6e &e15'e '#,'e6 4ece6 c-$- 5,359ue l#
4#&5#%le "GDel#0Nc-,'G, e6 1-& ell- 9ue el 3el#0 $B,5$- e6 3e 0
$S>GDel#0Nc-,'/1? "0 el $RD5$# 3e 1.(:G >Del#0Nc-,'/.?(
Del#0N4#&F %c7 INTCON,T0IF "De6c-,ec'# el 7l#+ 3e
&e%-6#$5e,'-
$-4l@ 0D3c "C-$1le$e,'- 8eD( 3e 1K
$-4@7 T)R0 "c#&+# el T)R0
I,'e&4#l- cl&@3' "Re7&e6c#& el WDT
%'766 INTCON,T0IF "Re%#6#$5e,'- 3el T)R0 HH
+-'- I,'e&4#l- "T-3#4B# ,-
3ec76A Del#0NC-,',F "Dec&e$e,'# c-,'#3-& 3e 5,'e&4#l-6
+-'- Del#0N4#& "Re15'e el 5,'e&4#l- 3e 0 $S
&e'u&,
"************************************************************************
")e,6#EeF E6'# &u'5,# 456u#l5A# e, el LCD el $e,6#Ee cu0- 5,5c5- e6'R "5,35c#3-
e, el #cu$ul#3-&( El 75, 3e u, $e,6#Ee 6e 3e'e&$5,# $e35#,'e el "c;35+- 0D00
)e,6#Ee $-4@7 Te$1-&#lN1 "S#l4# 1-65c5;, 3e l# '#%l#
)e,6#EeN1 $-47 Te$1-&#lN1,W "Recu1e&# 1-65c5;, 3e l# '#%l#
c#ll T#%l#N)e,6#Ee6 "Bu6c# c#&#c'e& 3e 6#l53#
$-4@7 Te$1-&#lN. "Gu#&3# el c#&#c'e&
$-47 Te$1-&#lN.,F
%'766 STATUS,Z ")5&# 65 e6 el Cl'5$-
+-'- N-Ne6Nul'5$-
&e'u&,
N-Ne6Nul'5$- c#ll LCDNDATO "*56u#l5A# e, el LCD
5,c7 Te$1-&#lN1,F "S5+u5e,'e c#&#c'e&
+-'- )e,6#EeN1
"************************************************************************
I,5c5- cl&7 PORTB "B-&&# l-6 l#'c8 3e 6#l53#
%67 STATUS,RP0 "Selecc5-,# %#,c- 1
cl&7 TRISB "Pue&'# B 6e c-,75+u&# c-$-
6#l53#
$-4l@ %Z00011000Z
$-4@7 TRISA "RA0JRA. 6#l53#6, RA3JRA4
e,'&#3#6
$-4l@ %Z00000111Z
$-4@7 OPTIONNREG "P&ee6c#le& 3e .! 1#&# el T)R0
%c7 STATUS,RP0 "Selecc5-,# %#,c- 0

c#ll LCDNINI "Secue,c5# 3e 5,5c5- 3el LCD
$-4l@ %Z00001100Z
c#ll LCDNREG "E,4B# 5,6'&ucc5;,F LCD ON, Cu&6-&
OFF 0 "%l5,I OFF
L--1 $-4l@ %Z00000001Z
c#ll LCDNREG "B-&&# LCD 0 2-$e >c-l-c#& cu&6-& e,
1b "1-65c5;,?
$-4l@ )e,6N0
c#ll )e,6#Ee "*56u#l5A# el $e,6#Ee 0
$-4l@ %Z11000101Z
c#ll LCDNREG "C-l-c# cu&6-& e, .b 75l# 3el LCD
$-4l@ )e,6N1
c#ll )e,6#Ee "*56u#l5A# $e,6#Ee 1
$-4l@ (40
$-4@7 Del#0NC-,'
c#ll Del#0N4#& "Te$1-&5A# 4 6e+u,3-6
$-4l@ %Z00000001Z
c#ll LCDNREG "B-&&# LCD 0 2-$e >c-l-c#& cu&6-& e,
1b "1-65c5;,?
$-4l@ )e,6N.
c#ll )e,6#Ee "*56u#l5A# el $e,6#Ee .
$-4l@ %Z11000010Z
c#ll LCDNREG "C-l-c# cu&6-& e, .b 75l# 3el LCD
$-4l@ )e,6N3
c#ll )e,6#Ee "*56u#l5A# el $e,6#Ee 3
$-4l@ (40
$-4@7 Del#0NC-,'
c#ll Del#0N4#& "Te$1-&5A# 4 6e+u,3-6
+-'- L--1
e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O !3:

"Ge,e&#3-& 3e $e,6#Ee6(
"
"E6'e eEe$1l- 1&e'e,3e &e#l5A#& u, +e,e&#3-& 3e $e,6#Ee6 1#&# el LCD( C-, "RA4 #
G1G, el 656'e$# e6'R e, el $-3- 3e 1&-+&#$#c5;,( E, e6'e $-3- el "$e,6#Ee 6e
+&#%# e, l# EEPRO) 3e 3#'-6( C-, RA4 # G0G e,'&#$-6 e, el "$-3- 3e &e1&-3ucc5;,(
El $e,6#Ee +&#%#3- e, l# EEPRO) 6e 456u#l5A# 6-%&e "el LCD(
"
"Cu#,3- el 5,'e&&u1'-& RA3 e6'R # ,54el G1G, e, l# 1-65c5;, #c'u#l 3el "cu&6-&
4#, #1#&ec5e,3- 6ecue,c5#l$e,'e l-6 356'5,'-6 c#&#c'e&e6 "3561-,5%le6( Al
1-,e&l- # G0G 6e 6elecc5-,# el #c'u#l 0 6e +&#%# e, l# "EEPRO)( Al 1#6#&
,ue4#$e,'e # G1G 6e 6elecc5-,# el 65+u5e,'e c#&Rc'e&(
"
"De%e &ec-&3#&6e 9ue l#6 lB,e#6 RA0JRA. #c'C#, #8-&# c-$- 6#l53# 3e "6eT#le6 3e
c-,'&-l 8#c5# el LCD( Al e6'#& c-,ec'#3#6 c-, 6e,3-6 5,'e&&u1'-&e6, e6'-6 3e%e,
e6'#& # ,54el l;+5c- G1G 1e&$#,e,'e$e,'e(
L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
I,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6 5,'e&,-6

Lc3N4#& e9u 0D0c "*#&5#%le6 >.? 3e l#6 &u'5,#6 3e
"$#,eE- 3el LCD
Del#0NC-,' e9u 0D0e "*#&5#%le 1#&# l# 'e$1-&5A#c5;,
Te$1-&#lN1 e9u 0D07 "*#&5#%le 'e$1-&#l
Te$1-&#lN. e9u 0D10 "*#&5#%le 'e$1-&#l
Cu&NP-6 e9u 0D11 "P-65c5;, 3el cu&6-&
-&+ 0D00 "*ec'-& 3e Re6e'
+-'- I,5c5-
-&+ 0D0 "S#l4# 4ec'-& 3e 5,'e&&u1c5;,
5,clu3e GLCDNCDD(5,cG "I,clu0e l#6 &u'5,#6 3e $#,eE- 3el
LCD
"************************************************************************
"Del#0N.0N$6F E6'# &u'5,# 3e 'e$1-&5A#c5;, '5e,e 1-& -%Ee'- el5$5,#& el "Ge7ec'-
&e%-'eG 3e l-6 1e&57[&5c-6 elec'&-$ecR,5c-6( Re#l5A# u, 3el#0 3e ".0 $S( S5 el
PIC '&#%#E# # u,# 7&ecue,c5# 3e 4)2A, el T)R0 e4-luc5-,# "c#3# uS( S5 9ue&e$-6
'e$1-&5A#& .0000 uS >.0 $S? c-, u, 1&ee6c#le& 3e "1.:, el T)R0 3e%e&R c-,'#& 1!
e4e,'-6 >1! * 1. ( El 4#l-& 1! "e9u54#le # Kc 8eD( 0 c-$- el T)R0 e6
#6ce3e,'e 8#%&R 9ue c#&+#& 6u "c-$1le$e,'- # 1 >!3 8eD(?(
Del#0N.0N$6 %c7 INTCON,T0IF "De6c-,ec'# el 7l#+ 3e
&e%-6#$5e,'-
$-4l@ 0D!3 "C-$1le$e,'- 8eD( 3e 1!
$-4@7 T)R0 "c#&+# el T)R0
Del#0N.0N$6N1 cl&@3' "Re7&e6c#& el WDT
%'766 INTCON,T0IF "Re%#6#$5e,'- 3el T)R0 HH
+-'- Del#0N.0N$6N1 "T-3#4B# ,-
%c7 INTCON,T0IF "A8-&# 65, &e1-,e& el 7l#+
&e'u&,
"************************************************************************
"Del#0N4#&F E6'# &u'5,# 3e 1&-1;65'- +e,e&#l &e#l5A# u,# 'e$1-&5A#c5;, "4#&5#%le
e,'&e 0 $S 0 1.(:G( Se e$1le# u, 1&ee6c#le& 3e .! 0 #l T)R0 "6e le c#&+# c-,
1K( L# 4el-c53#3 3e '&#%#E- e6 3e 4)8A 0 1-& '#,'- el "T)R0 6e 5,c&e$e,'# c#3#
uS( De e6'# 7-&$#, el T)R0 3e%e c-,'#& 1K "e4e,'-6 9ue, c-, u, 1&ee6c#le& 3e
.! 8#ce u, 5,'e&4#l- '-'#l 3e 0000 "uSQ0 $S >1K * .!?( El 4#l-& 1K 8#0 9ue
eD1&e6#&l- e, 2eD( >c3? 0 "c-$- el T)R0 e6 #6ce,3e,'e 8#%&R 9ue c#&+#& 6u
c-$1le$e,'- >3C 8eD(?
"D5c8- 5,'e&4#l- 3e 0 $S 6e &e15'e '#,'#6 4ece6 c-$- 5,359ue l#
4#&5#%le "GDel#0Nc-,'G, e6 1-& ell- 9ue el 3el#0 $B,5$- e6 3e 0
$S>GDel#0Nc-,'/1? "0 el $RD5$# 3e 1.(:G >Del#0Nc-,'/.?(
Del#0N4#&F %c7 INTCON,T0IF "De6c-,ec'# el 7l#+ 3e
&e%-6#$5e,'-
$-4l@ 0D3c "C-$1le$e,'- 8eD( 3e 1K
$-4@7 T)R0 "c#&+# el T)R0
I,'e&4#l- cl&@3' "Re7&e6c#& el WDT
%'766 INTCON,T0IF "Re%#6#$5e,'- 3el T)R0 HH
+-'- I,'e&4#l- "T-3#4B# ,-
3ec76A Del#0NC-,',F "Dec&e$e,'# c-,'#3-& 3e 5,'e&4#l-6
+-'- Del#0N4#& "Re15'e el 5,'e&4#l- 3e 0 $S
&e'u&,
"************************************************************************
"EENW&5'eF G&#%# u, %0'e e, l# EEPRO) 3e 3#'-6( L# 35&ecc5;, 6e&R l# "c-,'e,53#
e, EEADR 0 el 3#'- 6e le 6u1-,e 1&e45#$e,'e $e'53- e, EEDATA
EENW&5'e %67 STATUS,RP0 "Selecc5-,# %#,c- 1
%67 EECON1,WREN "Pe&$56- 3e e6c&5'u&#
$-4l@ %Z01010101Z
$-4@7 EECON.
$-4l@ %Z10101010Z
$-4@7 EECON. "Secue,c5# e6'#%lec53# 1-& )5c&-c851
%67 EECON1,WR "O&3e, 3e e6c&5'u&#
%c7 EECON1,WREN "De6c-,ec'# 1e&$56- 3e e6c&5'u&#
W#5' %'766 EECON1,EEIF "Te6'e#& 7l#+ 3e 75, 3e e6c&5'u&#
+-'- W#5'
%c7 EECON1,EEIF "Re1-,e& 7l#+ 3e 75, 3e e6c&5'u&#
%c7 STATUS,RP0 "Selecc5;, %#,c- 0
&e'u&,
"************************************************************************
"EENRe#3F Lee& u, %0'e 3e l# EEPRO)( Se 6u1-,e #l &e+56'&- EEADR c#&+#3- "c-, l#
35&ecc5;, # lee&( E, EEDATA #1#&ece&R el 3#'- leB3-(
EENRe#3 %67 STATUS,RP0 "Selecc5;, 3e %#,c- 1
%67 EECON1,RD "O&3e, 3e lec'u&#
%c7 STATUS,RP0 "Selecc5;, 3e %#,c- 0
&e'u&,
"************************************************************************
I,5c5- cl&7 PORTB "B-&&# l-6 l#'c8 3e 6#l53#
%67 STATUS,RP0 "Selecc5-,# %#,c- 1
cl&7 TRISB "Pue&'# B 6e c-,75+u&# c-$-
6#l53#
$-4l@ %Z00011000Z
$-4@7 TRISA "RA0JRA. 6#l53#6, RA3JRA4
e,'&#3#6
$-4l@ %Z00000111Z
$-4@7 OPTIONNREG "P&ee6c#le& 3e .! 1#&# el T)R0
%c7 STATUS,RP0 "Selecc5-,# %#,c- 0
$-4l@ 0D:0
$-4@7 Cu&NP-6 "P-65c5;, 5,5c5#l 3el cu&6-&
c#ll LCDNINI "Secue,c5# 3e 5,5c5- 3el LCD
$-4l@ %Z00000001Z
c#ll LCDNREG "B-&&# LCD 0 2-$e
$-4l@ %Z00001110Z
c#ll LCDNREG "E,4B# 5,6'&ucc5;,F LCD ON, Cu&6-& ON
0 "%l5,I OFF
cl&7 EEADR "D5&ecc5;, 5,5c5#l 3e l# EEPRO)
L--1 %'766 PORTA,4 ")-3- 1&-+&#$#c5;, HH
+-'- Re1&-3uc5& "N-, $-3- 3e &e1&-3ucc5;,
P&-+&#$#& $-4l@ 0D.0
$-4@7 Te$1-&#lN1 "P&5$e& c#&Rc'e& ASCII

P&-+&#$#&N1 %'766 PORTA,3 "G&#%#& el %0'e e, EEPRO) HH
+-'- G&#%#& "S5
$-47 Cu&NP-6,W
c#ll LCDNREG "C-l-c# el cu&6-&
$-47 Te$1-&#lN1,W
c#ll LCDNDATO "*56u#l5A# el c#&Rc'e&
$-4l@ (10
$-4@7 Del#0NC-,'
c#ll Del#0N4#& "Te$1-&5A# 0( 6e+u,3-6
5,c7 Te$1-&#lN1,F"S5+u5e,'e c#&Rc'e& ASCII
%'766 Te$1-&#lN1,="E6 el Cl'5$- c#&Rc'e& ASCII HH
+-'- P&-+&#$#&N1 "N-
+-'- P&-+&#$#& "S5, e$1eA#& 3e63e el 1&5$e&-
G&#%#& c#ll Del#0N.0N$6 "El5$5,# &e%-'e6
3ec7 Te$1-&#lN1,W
$-4@7 EEDATA "D#'- # +&#%#& e, l# EEPRO)
c#ll EENW&5'e "G&#%# el c#&Rc'e&
5,c7 EEADR,F "S5+u5e,'e 35&ecc5;, EEPRO)
cl&7 EEDATA
c#ll EENW&5'e "G&#%# 0D00
5,c7 Cu&NP-6,F "S5+u5e,'e 1-65c5;, 3el cu&6-&
G&#%#&N1 cl&@3' "Re7&e6c#& el WDT
%'766 PORTA,3 "E61e&#& # 9ue RA3 4uel4# # G1G
+-'- G&#%#&N1
c#ll Del#0N.0N$6 "El5$5,#& &e%-'e6
+-'- L--1 "S5+u5e,'e c#&Rc'e& 3el $e,6#Ee
Re1&-3uc5& $-4l@ %Z00000001Z
c#ll LCDNREG "B-&&# LCD 0 2-$e
$-4l@ %Z00001100Z
c#ll LCDNREG "LCD / ON, cu&6-& / OFF
cl&7 EEADR "D5&ecc5;, 5,5c5#l EEPRO)
Re1&-3uc5&N0 cl&@3' "Re7&e6c- 3el WDT
c#ll EENRe#3 "Lee c#&Rc'e& 3e l# EEPRO)
$-47 EEDATA,F
%'76c STATUS,Z "E6 el Cl'5$- 3el $e,6#Ee HH >0D00?
+-'- Re1&-3uc5&N1"S5
$-47 EEDATA,W
c#ll LCDNDATO "*56u#l5A# el c#&Rc'e&
5,c7 EEADR,F "S5+u5e,'e c#&Rc'e&
+-'- Re1&-3uc5&N0
Re1&-3uc5&N1 $-4l@ (40
$-4@7 Del#0NC-,'
c#ll Del#0N4#& ")#,'5e,e el $e,6#Ee . 6e+u,3-6
"**************************** SECUENCIA DE PARPADEO**********************
Bl5,I $-4l@ (!
$-4@7 Te$1-&#lN. "I,5c5# c-,'#3-& 3e 1#&1#3e-6
Bl5,IN1 $-4l@ %Z00001100Z
c#ll LCDNREG "LCD e, ON
$-4l@ (
$-4@7 Del#0NC-,'
c#ll Del#0N4#& "Te$1-&5A# 0(. 6e+u,3-6
$-4l@ %Z00001000Z
c#ll LCDNREG "LCD e, OFF
$-4l@ (
$-4@7 Del#0NC-,'
c#ll Del#0N4#& "Te$1-&5A# 0(. 6e+u,3-6
3ec76A Te$1-&#lN.,F
+-'- Bl5,IN1 "Re15'e el 1#&1#3e-
$-4l@ (.0
$-4@7 Del#0NC-,'
c#ll Del#0N4#& "Te$1-&5A# 1 6e+u,3-
+-'- L--1

e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O !!:

"EEe$1l- 1#&# u6#& u, LCD 3e .<40 65, &e'&-5lu$5,#c5;,
"
"E6'e 1&-+&#$# 6-l- 1&e'e,3e u,# 5,'&-3ucc5;, 6e,c5ll# 1#&# el u6- 3e l#6
P#,'#ll#6 3e LCD
"#1#&ec5e,3- u, 6e,c5ll- 'eD'-
L56' 1/1!F:4 "T51- 3e uPIC
5,clu3e GP1!F:4(INCG "P&-+&#$# %#6e 3e )5c&-c851

Lc3N4#& e9u 0D0c "P-65c5-,e6 1#&# l#6
&u'5,#6 3e LCD, -E- c-, -cu1#& e6'#6
"1-65c5-,e6
-&+ 0D00 "*ec'-& 3e Re6e'
+-'- I,5c5-
-&+ 0D0 "S#l4# 4ec'-& 3e 5,'e&&u1c5;,
5,clu3e Glc3N#$&(5,cG "I,clu0e l#6 &u'5,#6 3e
$#,eE- 3el LCD
I,5c5- cl&7 PORTB "B-&&# l-6 l#'c8 3e PORTB
%67 STATUS,RP0 "Selecc5-,# %#,c- 1
cl&7 TRISB "Pue&'# B 6e c-,75+u&# c-$-
6#l53#
$-4l@ %Z00011000Z
$-4@7 TRISA "RA0JRA. 6#l53#6, RA3JRA4
e,'&#3#6
%c7 STATUS,RP0 "Selecc5-,# %#,c- 0

c#ll LCDNINI "I,5c5#l5A#c5;, 3el LCD
$-4l@ %Z00001111Z "E6'# -&3e, 1&e1#&# #l LCD 1#&#
3e'e&$5,#& l# 7-&$# 3e
"l# 1&e6e,'#c5;, 3e l-6 3#'-6 e, l#
1#,'#ll# 6e+C, l-6
"3#'-6 9ue 5,'&-3uAc#$-6 6e 4e&#, l-6
3#'-6 3e u,# u
"-'&# 7-&$#( E6'-6 3#'-6 e, W
c#ll LCDNREG "E,4B# 5,6'&ucc5;, 1#&# c-$#,3-6 e,
LCD
$-4l@ ZSZ "D#'- # W
c#ll LCDNDATO "*56u#l5A# S
$-4l@ Z-Z "D#'- # W
c#ll LCDNDATO "*56u#l5A# -
$-4l@ Z0Z "D#'- # W
c#ll LCDNDATO "*56u#l5A# 0
$-4l@ Z Z "D#'- # W
c#ll LCDNDATO "*56u#l5A# G G >,#3#?
$-4l@ Z0Z "D#'- # W
c#ll LCDNDATO "*56u#l5A# 0
$-4l@ Z-Z "D#'- # W
c#ll LCDNDATO "*56u#l5A# -

L--1 6lee1 "Ru'5,# 3e e61e&#
+-'- L--1
e,3
EGEMP"O !=:

"P&-+&#$# 1#&# $#,eE#& l# 1#,'#ll# 3el LCD( P-,e e, l# $56$# e, 1e&53-6 3e .
S+3(
"l#6 1#l#%&#6 Bl#,c-QNe+&-
"
"*#$-6 # u'5l5A#& l# 5,6'&ucc5-, 3e e,6#$%l#3-& G3'G >3e75,e '#%le?( C-, e6'#
-&3e,
"6e 7#c5l5'# l# &e#l5A#c5-, 3e '#%l#6
"
L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
5,clu3e GP1!F:4(INCG "P&-+&#$# 3e )5c&-c851

Lc3N4#& e9u 0D0c "*#&5#%le6 >.? 3e l#6 &u'5,#6 3e
$#,eE- 3el LCD
C-,'#3-& e9u 0D0e "*#&5#%le 1#&# l# 'e$1-&5A#c5;,
Te$1N1 e9u 0D07 "*#&5#%le 'e$1-&#l
Te$1N. e9u 0D10 "*#&5#%le 'e$1-&#l
-&+ 0D00 "*ec'-& 3e Re6e'
+-'- I,5c5-
-&+ 0D0 "S#l4# 4ec'-& 3e 5,'e&&u1c5;,
5,clu3e Glc3N#$&(5,cG "I,clu0e l#6 &u'5,#6 3el LCD
"JJJJJJJJJJJJJJJJJJJJJJJJJJ
")e,6#Ee6 # 456u#l5A#&
"JJJJJJJJJJJJJJJJJJJJJJJJJJ
)e,6#NEe6 $-4@7 PCL "C-,'&-l 3e 3e61l#A#$5e,'-
6-%&e l# '#%l#
)e,6#N1 e9u a
3' GBLANCOG,0<00 "El c-35+- 0D00 3e'e&$5,# 9ue e6
el ul'5$- 3#'-
"3e $e,6#N1
)e,6#N. e9u a
3' GNEGROG,0<00
"JJJJJJJJJJJJJJJJJJJJJJJJJJ
"C-,'&-l 3e '5e$1-( Pe&5-3-6 3e 0 $S 1-& 4#l-& e, Se+u,N3-6
"JJJJJJJJJJJJJJJJJJJJJJJJJJ
T5e$N1- %c7 INTCON,T0IF "De6c-,ec'# el 7l#+ 3e &e%-6#$5e,'-
$-4l@ %Z00111100Z "!0 / W
$-4@7 T)R0 "T)R0/.J!0/1K
cl&@3' "l5$15# WDT
Bucle %'766 INTCON,T0IF "C-$1&ue%# 65 7l#+ 3e
&e%-6#$5e,'- c#$%5#
+-'- Bucle
3ec76A C-,'#3-&,1 "*# &e3uc5e,3- l# 4#&5#%le 1-& c#3#
1#6-
+-'- T5e$N1- "*uel4e # l# &u'5,# 3e T5e$N1-
&e'u&,
"JJJJJJJJJJJJJJJJJJJJJJJJJJ
"Ru'5,# 3e 456u#l5A#c5;, e, el LCD
"JJJJJJJJJJJJJJJJJJJJJJJJJJ
)e,6#Ee $-4@7 Te$1N1 "S#l4# 1-65c5;, 3e l# '#%l#
)e,6#EeN1 $-47 Te$1N1,W "Recu1e&# 1-65c5;, 3e l# '#%l#
c#ll )e,6#NEe6 "Bu6c# c#&Rc'e& 3e 6#l53#
$-4@7 Te$1N. "Gu#&3# el c#&Rc'e&
$-47 Te$1N.,F
%'766 STATUS,Z ")5&# 65 e6 el ul'5$-
+-'- N-Ne6Nul'5$-
&e'u&,
N-Ne6Nul'5$- c#ll LCDNDATO "*56u#l5A# e, el LCD
5,c7 Te$1N1,F "S5+u5e,'e c#&Rc'e&
+-'- )e,6#EeN1
"JJJJJJJJJJJJJJJJJJJJJJJJJJ
"I,5c5- +e,e&#l 3el 1&-+&#$#
"JJJJJJJJJJJJJJJJJJJJJJJJJJ
I,5c5- cl&7 PORTB "B-&&# l-6 l#'c8 3e 6#l53#
%67 STATUS,RP0 "Selecc5-,# %#,c- 1
cl&7 TRISB "Pue&'# B 6e c-,75+u&# c-$-
6#l53#
$-4l@ %Z00011000Z
$-4@7 TRISA "RA0JRA. 6#l53#6, RA3JRA4
e,'&#3#6
$-4l@ %Z00000111Z
$-4@7 OPTIONNREG "P&ee6c#le& 3e .! 1#&# el T)R0
%c7 STATUS,RP0 "Selecc5-,# %#,c- 0

c#ll LCDNINI "Secue,c5# 3e 5,5c5- 3el LCD
$-4l@ %Z00001100Z
c#ll LCDNREG "E,4B# 5,6'&ucc5;, # $-3- LCD
L--1 $-4l@ %Z00000001Z
c#ll LCDNREG "B-&&# LCD 0 Cu&6-& # I,5c5-
$-4l@ )e,6#N1
c#ll )e,6#Ee "*56u#l5A# el $e,6#Ee 0
$-4l@ (.0
$-4@7 C-,'#3-& "C#&+# &e+56'&- %ucle6 c-, .0

c#ll T5e$N1- "Te$1-&5A# . 6e+u,3-6
$-4l@ %Z00000001Z
c#ll LCDNREG "B-&&# LCD 0 Cu&6-& # I,5c5-
$-4l@ )e,6#N.
c#ll )e,6#Ee "*56u#l5A# el $e,6#Ee 1
$-4l@ (.0
$-4@7 C-,'#3-&
c#ll T5e$N1- "Te$1-&5A# . 6e+u,3-6
+-'- L--1
e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O !0:

CON*ERSION DE *ALORES BINARIOS A BCD
L-6 1&-+&#$#6 1-& c#u6# 3e l-6 PIC 3e : %0'e6 3e%e, 3e u6#& 4#l-&e6 e, %5,#&5-
3e 8#6'# 11111111 >0DFF/.? 1-& &e+56'&-(
E6'e 1&-+&#$# $-3575c# el 4#l-& -%'e,53- 0 l- c#&+# e, &e+56'&-6 9ue #cu$ul#, l#
5,7-&$#c5-, e, 4#l-&e6 l5$5'e 3e 11111111 >0DFF? 9ue e6 el '-1e 1-& &e+56'&- e,
e6'-6 $-3ul-6 3e : %5'6
PIC 1!F:4
4 )8A
El 4#l-& # c-,4e&'5& 6e e,cue,'&# e, el Re+56'&- W
&e+56'&-6 1&e45#$e,'e &e6e&4#3-6 c-$- F
REGNL EVU 0<10
REGN2 EVU 0<11
TE)P1 EVU 0D14
NU)NBCD cl&7 REGNL "P-,e el &e+56'&- 0D10 # 0
cl&7 REGN2 "P-,e el &e+56'&- 0D11 # 0
NU)NBCDA #33l@ 0D7! "D#3- 9ue 0D7! e6 .4! e,
3ec5$#l el 3#'- 9ue
"6u$e6 3e W c-, 0D7! 3# u, &e+56'&- 3e
&e6'# c-,
"10 1-& 6u$# 3e c-$1le$e,'- # . e, W,
c-,
"C#&&0 e, ESTADO, C
%'766 ESTADO,0 "c2#0 Ac#&&e-H, e6 3ec5& l# 6u$#
#,'e&5-& 35; u,
"&e6ul'#3- 6u1e&5-& # .
+-'- NU)NBCDC "N-
$-4@7 TE)P1 "S5, $ue4e el 4#l-& 3e W #
TE)P1
5,c7 REGNL,1 "I,c&e$e,'# e, 1 el 4#l-& 3e REGNL
$-47 REGN2, ")ue4e el 4#l-& 3e REGN2 # W
D-&l@ %Z00001010Z "P#6# el &e+56'&- W 1-& l#
$R6c#&# 00001010
%'766 ESTADO,. "E6 0 el &e6ul'#3- 3e l# -1e&#c5;,
c-,'&-l 3e
"ESTADO, Z
+-'- NU)NBCDB "N-
cl&7 REGNL "S5 1-,e& # ce&- el &e+56'&-
5,c7 REGN2,1 "I,c&e$e,'# el 4#l-& 0 l- 1-,e e,
REGN2
NU)NBCDB $-47 REGNL,0 ")ue4e el 4#l-& 3e REGNL A W
+-'- NU)NBCDA "Re15'e l# -1e&#c5;,
NU)NBCDC #33l@ 0D0# "6u$# 10 #l 4#l-& 3e W
6@#17 REGNL,1 "I,'e&c#$%5- 3e l-6 4 %5'6 3e
$e,-61-& l-6 "4 3e $#6 1e6-
5-&@7 REGNL,1 "Se &e#l5A# l# -1e&#c5;, l;+5c# OR 0 6e
c#&+#
"e, W
&e'u&,
El &e6ul'#3- 9ue3# e, l-6 &e+56'&-6 REGNL S REGN2
EGEMP"O !C:

CON*ERSION DE REGISTROS EN CARACTERES ASCII
L-6 3#'-6 6e 6uele, e,c-,'&#& e, u,- - $R6 &e+56'&-6 3e : %5'6(
El 1&5$e&- #l$#ce,# u,# c#,'53#3 e,'&e 0 0 . 65e,3- el &e6'- 3e &e+56'&-6 el
5,35c#3-& 3e $e353#6 c-$1le'#6 3e . u,53#3e6 9ue 6e 8#0#, c-,'#3- e, el
&e+56'&- #,'e&5-&( Se+C, 6e 4#, c-,'#,3- &e+56'&-6 c-, . u,53#3e6 6e 6u$# 1 #l
&e+56'&- 65+u5e,'e(
E6'- e6 l- 9ue 6e c-,-ce c-$- u, ,u$e&- BCD(
E6'e l-'e 3e &e+56'&-6 e6 el 9ue 6e 4# # c-,4e&'5& e, c#&#c'e&e6 ASCII 1#&#
1-3e& 6e& 456u#l5A#3-6 e, 1#,'#ll#6 LCD(
E6'# 6e&R l# &u'5,#F
C#&+#& l-6 &e+56'&-6 3e l# 1#,'#ll# LCD `LCDNC<<(AS)_
Su1-,+#$-6 9ue 'e,e$-6 u, ,u$e&- BCD e, 3-6 &e+56'&-6
REGNL e9u 0D11
REGN2 e9u 0D1.
CON*ERSOR $-47 REGN2,0 ")ue4e el 4#l-& 3e REGN2 # W
#,3l@ %^00001111^ "F5l'&# el 4#l-& c-, e6'#
$R6c#&#
5-&l@ %^00110000^ "Nue4- 75l'&#3-
c#ll LCDNDATO "*56u#l5A# el 3#'- e, l# 1#,'#ll#
LCD
6@#17 REGNL,0 "C#$%5# l-6 4 %5'6 3e $#6 1e6- 1-& l-6 3e
"$e,-6 1e6- 0 45ce4e&6# 0 l- +u#&3# e, W
#,3l@ %^00001111^ "F5l'&# el 4#l-& c-, e6'#
$#6c#&#
5-&l@ %^00110000^ "Nue4- 75l'&#3-
c#ll LCDNDATO "*56u#l5A# el 3#'- e, l# 1#,'#ll#
LCD
$-47 REGNL,0
#$3l@ %^00001111^ "F5l'&# el 4#l-& c-, e6'# $R6c#&#
5-&l@ %^00110000^ "Nue4- 75l'&#3-
c#ll LCDNDATO "*56u#l5A# el 3#'- e, l# 1#,'#ll#
LCD
&e'u&,


E, el c#6- 3e 9ue el 3#'- # 456u#l5A#& e6'e e, u, 6-l- &e+56'&- el 1&-+&#$#
e$1eA#&B# e, l# 5,6'&uccc5;, SWAPF REGNL,
EGEMP"O !':

"C-,45e&'e el 4#l-& %5,#&5- 1&e6e,'e e, 1-65c5;, 0D10 e, BCD( El "&e6ul'#3- 6e
3e1-65'# e, l#6 4#&5#%le6 Bu77e&N2 0 Bu77e&NL(

L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
I,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6 5,'e&,-6
B5,#&5- e9u 0D10 "*#l-& %5,#&5- 5,5c5#l
Bu77e&N2 e9u 0D11 "P#&'e #l'# 3el &e6ul'#3-
Bu77e&NL e9u 0D1. "P#&'e %#E# 3el &e6ul'#3-
Te$1N1 e9u 0D13 "Re+56'&- 'e$1-&#l
-&+ 0D00 "*ec'-& 3e Re6e'
I,5c5- $-47 B5,#&5-,W "C#&+# el 4#l-& %5,#&5- 5,5c5#l
cl&7 Bu77e&NL
cl&7 Bu77e&N2 "I,5c5# &e+56'&-6 3e '&#%#E-

BINNBCDN1 #33l@ 0D7! "Re6'# 10 $e35#,'e 6u$# 3e c-$1le$e,'- # .(
%'766 STATUS,C "2#0 C#&&0H
+-'- BINNBCDN3 "NO(
$-4@7 Te$1N1 "SI(Gu#&3#& e, &e+56'&- 'e$1-&#l(
5,c7 Bu77e&NL,F "I,c&e$e,'#& %0'e %#E-, +u#&3#&l- 0
e,45#&(((
$-47 Bu77e&NL,W "((c-15# # #cu$ul#3-&/ W(((
D-&l@ %Z00001010Z"((0A8 D-& W(
%'766 STATUS,Z "Bu77e&NL e6 5+u#l # 10 HH
+-'- BINNBCDN. "NO(
cl&7 Bu77e&NL "SI( P-,e& Bu77e&NL # 0
5,c7 Bu77e&N2,F "I,c&e$e,'#& Bu77e&N2
BINNBCDN. $-47 Te$1N1,W "Recu1e&#& el 3#'-(
+-'- BINNBCDN1 "C-,'5,u#& l# -1e&#c5;,(
BINNBCDN3 #33l@ 2Z0AZ "TE)PO M 0A8
6@#17 Bu77e&NL,F "P3F0O // P=F4O 0 // Bu77e&NL
5-&@7 Bu77e&NL,F "W OR Bu77e&NL // Bu77e&NL
e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O !N:

"&e#l5A# el 1&-3uc'- 3e 3-6 ,C$e&-6 3e : %5'6 +e,e&#,3- u, &e6ul'#3- 3e
"1! %5'6(
"El 1&-+&#$# e$1le# l# $56$# $ecR,5c# 9ue #l 8#ce& u, 1&-3uc'- 6-%&e el "1#1el(

L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
I,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6 5,'e&,-6
c%l-cI 0D10 "I,5c5- 3e 3e75,5c5;, 3e
4#&5#%le6

)ul'51l5c#,3- "*#&5#%le 1#&# el $ul'51l5c#,3-
)ul'51l5c#3-& "*#&5#%le 1#&# el $ul'51l5c#3-&
Re6ul'#3-N2 "P#&'e #l'# 3el &e6ul'#3-
Re6ul'#3-NL "P#&'e %#E# 3el &e6ul'#3-
E6'#'u6NTe$1 "Re+56'&- 3e e6'#3- 'e$1-&#l
C-,'#3-& "*#&5#%le c-, ,C$e&- 3e 4ece6 #
-1e&#&
e,3c "F5, 3e 3e75,5c5-,e6
-&+ 0D00 "*ec'-& 3e Re6e'
I,5c5- cl&7 Re6ul'#3-N2
cl&7 Re6ul'#3-NL "P-,e # 0000 el &e6ul'#3-
5,5c5#l
$-4l@ 0D0:
$-4@7 C-,'#3-& "I,5c5# el c-,'#3-& c-, :

%c7 STATUS,C "B-&&# el c#&&0
Bucle $-47 )ul'51l5c#,3-,W "C#&+# el $ul'51l5c#,3-
%'76c )ul'51l5c#3-&,0 "E6 1 el %5' 3e $e,-6 1e6- 3el
"$ul'51l5c#3-& HH
#33@7 Re6ul'#3-N2,F "S5, 6e 6u$# el $ul'51l5c#,3-
&&7 Re6ul'#3-N2,F
&&7 Re6ul'#3-NL,F "De61l#A# # l# 3e&ec8# el
&e6ul'#3-
"R-'# # l# 3e&ec8# el $ul'51l5c#3-& 65, 9ue 6e $-35759ue el 7l#+ C#&&0
R-'#N65,NC#&&0 $-47 STATUS,W
$-4@7 E6'#'u6NTe$1 "S#l4# 'e$1-&#l$e,'e el c#&&0
&&7 )ul'51l5c#3-&,F "De61l#A# # l# 3e&ec8# el
"$ul'51l5c#3-&
$-47 E6'#'u6NTe$1,W
$-4@7 STATUS "Recu1e&# el c#&&0 -&5+5,#l
3ec76A C-,'#3-&,F "Re15'e el %ucle : 4ece6
+-'- Bucle
e,3 "F5, 3el 1&-+&#$# 7ue,'e
EGEMP"O =,:

"C-,45e&'e el 4#l-& %5,#&5- 1&e6e,'e e, 1-65c5;, 0D10, c-$1&e,353- e,'&e "0 0 K,
e, 6u e9u54#le,'e e, c;35+- GRAS
"E6'e eEe$1l- 1&e'e,3e 7#$5l5#&5A#& #l u6u#&5- c-, el $#,eE- 3e '#%l#6

L56' 1/1!F:4 "T51- 3e 1&-ce6#3-&
I,clu3e GP1!F:4(INCG "De75,5c5-,e6 3e &e+56'&-6 5,'e&,-6
Bc3 e9u 0D10 "*#l-& BCD 5,5c5#l
G&#0 e9u 0D11 "*#l-& -%'e,53- e, c;35+-
GRAS
-&+ 0D00 "*ec'-& 3e Re6e'
T#%l# #33@7 PCL,F "C#lcul# 3e61l#A#$5e,'-
6-%&e l# '#%l#
&e'l@ %Z00000000Z "C;35+- GRAS 3el 3B+5'- 0
&e'l@ %Z00000001Z "C;35+- GRAS 3el 3B+5'- 1
&e'l@ %Z00000011Z "C;35+- GRAS 3el 3B+5'- .
&e'l@ %Z00000010Z "C;35+- GRAS 3el 3B+5'- 3
&e'l@ %Z00000110Z "C;35+- GRAS 3el 3B+5'- 4
&e'l@ %Z00000111Z "C;35+- GRAS 3el 3B+5'-
&e'l@ %Z00000101Z "C;35+- GRAS 3el 3B+5'- !
&e'l@ %Z00000100Z "C;35+- GRAS 3el 3B+5'- =
&e'l@ %Z00001100Z "C;35+- GRAS 3el 3B+5'- :
&e'l@ %Z00001101Z "C;35+- GRAS 3el 3B+5'- K
I,5c5- $-47 Bc3,W "C#&+# el 4#l-& BCD -&5+5,#l
c#ll T#%l# "C-,45e&'e # GRAS
$-4@7 G&#0 "Gu#&3# el &e6ul'#3-
e,3 "F5, 3el 1&-+&#$# 7ue,'e
'* ensam2*ado de un programa traduce *as instrucciones que se =an escrito uti*izando *os
mnem4nicos de* *engua0e maquina (-A&&! etc.(! a c4digo 2inario e0ecuta2*e por e* microcontro*ador.
&a &(cu(nci# d( 1n(1ónico& se **ama +i&t#do o códi*o -u(nt( de* programa! mientras que e*
códi*o /in#rio se **ama o/.(to o (.(cut#/+(.
5na vez que e* programa se =a escrito $ ensam2*ado (compi*ado no eListe para e* *engua0e
ensam2*ador! so*o se compi*an *os *engua0es de a*to nive* como e* -( $a tenemos un 2inario
e0ecuta2*e.
E&tructur# d( un %ro*r#1# tO%ico:
&os programas desarro**ados para e* microprocesador P,- constan 2Fsicamente de esta estructura<
K D(-inir (+ Microcontro+#dor # u&#r: 'n esta directiva se especiDica e* tipo de
microcontro*ador que serF uti*izadoJ esto se *ogra uti*izando &,%T T P,-1+./4.
K E&t#/+(c(r +#& con&t#nt(& # uti+i9#r: &as constantes son 9ti*es para reDerenciar direcciones
de memoria! posiciones de *os 2its $ va*ores que no cam2iarFn a *o *argo de todo e* programa. 'sto
se *ogra uti*izando *a directiva P'b5P. %i se desea por e0emp*o esta2*ecer un va*or a una constante!
ser;a -1E%T 'b5 1! con *o cua* *e asigna e* va*or de P1P a* registro -1E%T.
K R(&(rI#r +o& (&%#cio& (n 1(1ori# d( +#& I#ri#/+(&: %e uti*iza para reservar espacios en
memorias para *as varia2*es uti*izadas en e* programa. %e *ogra uti*izando *a directiva denominada
PR'%P. Mu$ 9ti* cuando un registro cam2ia su va*or durante *a e0ecuci4n de* programa.
K Con-i*ur#r +o& %u(rto&: 's necesario esta2*ecer si *os 2its de cada puerto serFn uti*izados
como entrada o como sa*ida. Para e**o uti*izamos *os registros especia*es TR,%A $ TR,%8.
K D(&#rro++#r (+ Pro*r#1#: 's e* verdadero coraz4n de* tra2a0o que se rea*iza! puesto que
aqu; se desarro**an *as rutinas que serFn e0ecutadas por e* microcontro*ador.
'n *a imagen anterior! tenemos un pequeGo programa como e0emp*o! para e* microcontro*ador
P,-1+./4 en *a cua* vemos *as zonas en diDerentes co*ores. '* co*or amari**o representa *a deDinici4n
de* microcontro*ador! e* co*or verde representa e* esta2*ecimiento de *as constantes! e* co*or ce*este
representa *a reserva de Memoria! e* co*or ro0o es donde rea*mente comienza e* programa en s; $
representa *a conDiguraci4n de *os puertos $ e* cuerpo de* programa.
&os programas para e* microcontro*ador P,-1+./4 pueden escri2irse tam2i3n en e* 7"OCD DE
NOTAS de Windo>&! e inc*uso con e* (ditor d( t(Hto& de* MSPDOS.
#entro de* 7+oc3 d( not#& o (+ (ditor d( t(Hto& e* programa de2erF escri2irse en cuatro
co*umnas! *as cua*es estarFn destinadas cada una de e**as para una tarea espec;Dica. -ada una de
estas co*umnas tienen *os siguientes nom2res asignados<

NL( De l# C-lu$,# N-$%&e 3e l# C-lu$,#
C-lu$,# 1 E'59ue'#
C-lu$,# . O1e&#c5;,
C-lu$,# 3 O1e&#,3-6
C-lu$,# 4 C-$e,'#&5-(
&a idea es organizar cuatro co*umnas independientes con una separaci4n m;nima de un carFcter
entre una co*umna $ otra.
&os programadores uti*izan *a tec*a de ta2u*aci4n para desp*azarse a trav3s de *as cuatro co*umnas.
&o mFs prFctico es uti*izar e* ta2u*ador para esta2*ecer *as posiciones de *as co*umnas. %i nos
co*ocamos a *a izquierda! nos encontraremos en *a co*umna nI 1 de* editor! *a cua* representa *a
co*umna de *as (ti?u(t#&! pu*sando *a tec*a de ta2u*ador dos veces nos situaremos en *a co*umna
de o%(r#ción. '* ensam2*ador de programa que serF e* encargado de interpretar *os comandos
escritos en e* /+oc3 d( not#&! sa2rF reconocer DFci*mente *a co*umnas deDinidas.
-ada una de *as co+u1n#& tienen sus reg*as genera*es! a continuaci4n mencionamos $ eLp*icamos
cada una de e**as.
"AS ETIQETAS:
&as etiquetas tienen a*gunas reg*as o2*igatorias que de2erFn cump*irse<
K #e2e comenzar eLactamente en *a co*umna 1 de* editor de teLtos.
K &a etiqueta no podrF tener mas de 31 caracteres.
K &a etiqueta podrF estar Dormada por caracteres a*Da@num3ricos.
OPERACION:
'n esta co*umna se escri2en cua*quiera de *as 3C instrucciones de* microcontro*ador P,-1+./4.
OPERANDOS:
&os o%(r#ndo& son *os registros en donde se rea*izan *as operaciones $ *os registros son *os
espacios de memoria donde se a*macenarFn *os resu*tados de *as operaciones. 'ste registro puede
ser una memoria de datos o un registro constante que =emos denominado anteriormente como un
*itera*.
COMENTARIOS:
'n esta co+u1n# se escri2en *os comentarios que eLp*ican *a idea de *o que estF =aciendo e*
programa. '* ensam2*ador ignora esta *;nea en e* momento de generar *os c4digos necesarios para
e* microcontro*ador P,-1+./4. 's *a parte de* c4digo que resu*ta Dundamenta* para poder sa2er que
=ace un Dic=ero sin tener que estudiar un# %or un# todas *as instrucciones de* *istado A%M de*
programa a investigarU
%i partimos de un Dic=ero en =eLadecima* $ *o convertimos a A%M con a*guno de *os programas que
=a$ para e**o (entre e**os e* ,-@Prog( conseguiremos un *istado sin *a co*umna de comentarios. 'sto
no es a*go grave si es un programa de unas pocas *;neas de c4digo. '* pro2*ema es cuando e*
programa ocupa mFs de 1 =o0a.
Para =aceros una idea un poco mFs aproLimada! deciros que e* c4digo A%M de uno de tantos
Dic=eros que =a$ en internet para *as tar0etas piccard1 ocupa unas 1C pFginas. Pero tampoco es
para tanto si tenemos en cuenta que *a ta2*a seca ocupa 4 pFginas $ media. Tan s4*o nos quedar;an
para intentar desciDrar e* c4digo de poco mFs de 12 pFginas.
Tam2i3n se podrFn agregar co1(nt#rio& a* programa desde *a co*umna nI 1 de* (ditor d(
t(Hto&J pero de2erFn comenzar con e* s;m2o*o P R P (punto $ coma(.
'& MP"A7 es un Q'ntorno de #esarro**o ,ntegradoQ (,ntegrated #eve*opment 'nvironment! ,#'(
que Dunciona 2a0o "indo7s! mediante e* cua* podemos desarro**ar ap*icaciones para *os
microcontro*adores de *as Dami*ias P,- 1+/1C.
'& MP&A8 nos permite escri2ir! depurar $ optimizar *os programas diseGados para uti*izar con
dic=os microprocesadores.
#e nada nos servir;a sa2er programar si Dina*mente no podemos =acer*o por carecer de *as
=erramientas necesarias para e**o. Por eso es importante conocer e* Duncionamiento de* MP&A8.
-on e* MP&A8 podemos<
K #epurar programas Duente.
K #etectar errores automFticamente en programas Duente para editar*os.
K #epurar programas uti*izando puntos de corte (2rea6points( mediante va*ores de *os registros
internos.
K 12servar e* D*u0o de* programa con e* simu*ador MP&A8 @%,M! 4 seguir*o en tiempo rea*
uti*izando e* emu*ador P,-MA%T'R.
K Rea*izar medidas de tiempo uti*izando un cron4metro.
K >er varia2*es en *as ventanas de o2servaci4n.
K 'ncontrar respuestas! uti*izando *a a$uda en *;nea de* MP&A8.
'ste entorno Dunciona como un contenedor! es decir! *as diDerentes opciones que contiene estFn
asociadas a programas independientes que se e0ecutarFn cuando sean se*eccionados *os diDerentes
modos dentro de* MP&A8.
Podemos deDinir un ensam2*ador (por e0emp*o en -(! un emu*ador o un gra2ador diDerente a *os que
tiene por deDecto! quedando de esta Dorma integrado a* entorno.
'n e* organigrama que veremos a continuaci4n tenemos *as distintas Dases de imp*ementaci4n que
de2eremos seguir para comp*etar con 3Lito *a programaci4n de* microprocesador.