Вы находитесь на странице: 1из 8

21/04/13

Practicas con PIC. Controlar 3 pulsadores con PIC,controladores pic

Manejo de 3 pulsadores con PIC


Domingo, 21 de Abril del 2013__________________ Incluir en favoritos si quiere volver a visitarnos.

Introducci n.
En esta ocasin vamos a producir un listado con el que detectar 3 pulsadores A, B y C. Cuando se presione el pulsador A, el programa saltar a una subrutina que se encarga de realizar una operacin concreta asignada de antemano por nosotros, una vez ha terminado dicho cometido, la rutina devuelve el control al programa principal. Si se presiona el pulsador B, el flujo del programa saltar a la rutina asignada y se proceder a la ejecucin programada para el pulsador B, despus de lo cual el programa principal toma el control y queda a la espera de que sea pulsado algn pulsador y si el pulsador presionado es el C, saltar a la subrutina asignada a este pulsador ejecutndose dicha subrutina, despus de lo cual el control es de nuevo asumido por el programa principal. Esto es a grandes rasgos lo que pretendemos hacer.

El Principio.
Lo primero que se debe hacer para escribir un programa es utilizar la 'plantilla de programa' y hacer una copia, esto nos ayudar a iniciar cualquier tipo de programa que se refiera a los PIC, ese es el motivo de su existencia, si se acostumbra a usarla ver las ventajas, ya que tiene la cabecera de un buen nmero de programas que usan las mismas primera lneas. Sin embargo se debe personalizar.
; ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ; P L A N T I L L AD EP R O G R A M A C I O NE NP I C ^ ; ^ ; E s t a sl i n e a ss i r v e nd ei n f o r m a c i o na lp r o g r a m a d o r ^ ;D e b e nd o c u m e n t a r s et o d a sl a sr u t i n a sye lm o t i v od es e r ^ ; ( L a st i l d e se s t a no m i t i d a sd em a n e r ai n t e n c i o n a d a ) ^ ; ^ ; N OO L V I D EH A C E RU N AC O P I AD EE S T EA R C H I V OE N T E SD EU S A R L O ^ ; _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _^ ; R e c o r d a rq u ec o n :0s ed e s i g n aa lr e g i s t r oW yc o n ^ ; 1s ed e s i g n aa la r c h i v of ^ ; ^ ; I n d i c a re lc h i pau s a r= >L I S TP = P I C 1 6 F 8 4 ;ys o l oF 8 4c h i p ^ ; Yl ad i r e c t i v ai n c l u d e= ># I N C L U D E< P 1 6 F 8 4 . I N C > ^ ; ^ ;I n d i c a rq u eh a c ee lp r o g r .= >T e m ad e lq u et r a t a ^ ; T I T U L O ,F E C H A ,E T C . ^ ; ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ; T I T L E " Xe j e m p .C o n t a d o rd o b l e0 0 9 9 " S U B T I T L E " R e v i s i o nN X " ; F e c h a : 0 0 / 0 0 / 0 0 ; A u t o r : ? ? ? ? ? ? ; _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ E R R O R L E V E L P R O C E S S O R 0 ,3 0 2 ,3 0 6 1 6 F 8 4 A ; m e n s a j e sd ee r r o r ; 1 6 F 8 4 A 2 0 / P

L I S TP = P I C 1 6 F 8 4 # I N C L U D E< P 1 6 F 8 4 . I N C >

; I n c l u s i o nd ef i c h e r od ee t i q u e t a s

www.hispavila.com/3ds/chipspic/trespulsadores.html

; * * * * * * * * * * * * * * * *O s c i l a d o r( R e l o j )u t i l i z a n d o* * * * * * * * * * * * * * * * ; ;0 4 M h ze nm o d oX Tc o n1u s e gp o ri n s t r u c c i n , _ X T _ O S C ;

1/8

21/04/13

Practicas con PIC. Controlar 3 pulsadores con PIC,controladores pic

; ;R e dR Ca l r e d e d o rd e3 M H z ,_ R C _ O S C ; A T E N C I O N .N ou s a rl as i g u i e n t el n e ah a s t as a b e rb i e ns us i g n i f i c a d o . ; _ _ C O N F I G _ C P _ O F F& _ P W R T E _ O F F& _ W D T _ O F F& _ X T _ O S C ; ; ; D e f i n i c i o noD e c l a r a c i o nd ee q u s( i g u a l d a d e s ) C O N T A e q u 0 x 0 C 0 x 0 D ;M E M O R I Ae m p i e z ae n0 C H ;C O N T Ar e g i s t r oa u x i l i a rp a r aR E T A R D O ;r e g i s t r oa u x i l i a rq u el l e v ae lc o n t e od e ld i g i t o

D I G I T O e q u # d e f i n eb a n k 1 # d e f i n eb a n k 0 O r g

; D E F I N I C I O N E SU S U A R I O b s fS T A T U S , R P 0 ; M a c r op a r aa b r e v i a re lB A N C O1 b c fS T A T U S , R P 0 ; M a c r op a r aa b r e v i a re lB A N C O0 0 x 0 0 ; P o s i c i o n0d el aM e m o r i ad eP r o g r a m a( a p u n t a d o r ) ; V i e n ec u a n d od a m o st e n s i n a lc i r c u i t o . I N I C I O ; S a l t aal ae t i q u e t aI N I C I O

g o t o ; ;A Q U ID E B E NI RL A SS U B R U T I N A SC O M OR E T A R D O ,T A B L A S ,E T C . ; . . . . . . ; -A Q U IE M P I E Z AP R O G R A M AI n i c i o :b a n k 1 ; I rap a g i n a 1p a r aa j u s t a rl o sp u e r t o s M O V L W0 0 h ; C a r g a r0 0=b ' 0 0 0 0 0 0 0 0 'e nW M O V W FT R I S A ; H a c e rs a l i d at o d a sl a sl n e a sP O R T A M O V L WF F h ; C a r g a rF F=b ' 1 1 1 1 1 1 1 1 ' M O V W FT R I S B ; H a c e rs a l i d at o d a sl a sl n e a sP O R T B b a n k 0 ; I rap a g i n a 0p a r as e g u i rp r o g r a m a ; -A Q U IC O N T I N U AP R O G R A M A. . . . . . E N D ;f i nd ep r o g r a m a

Una observacin ms, para no producir confusin en los conceptos, deberamos aceptar que: 'el programador' es el software (como IcProg) que utilizamos con el PC para 'quemar' los chips; 'el quemador' es el dispositivo hardware (placa PCB) en el que insertamos el chip para grabar (quemar) el programa; 'el programa' es el cdigo o listado de rutinas y subrutinas que una vez ensamblado (.hex) le dice al chip que ha de hacer; y 'el analista', es decir, el hombre es el que crea o escribe el listado. Bueno aclarado esto, seguimos. Esto lo describiremos para el caso de no disponer de la plantilla. Lo primero que debemos hacer como siempre es; preparar los puertos de E/S y asignar los distintos registros que se vayan a usar en el programa. Es conveniente la disposicin del orden del listado despus de las declaraciones, seguido de las subrutinas, antes de la rutina principal o cuerpo del programa. Esto permite el normal desarrollo de los distintos pasos y adems permite un seguimiento ms eficaz a la hora de depurar posibles errores o posibles fallos en el programa.

El esquema.
El esquema que se vaya a usar en el desarrollo del programa es un punto muy importante, a la vista del mismo, pueden surgir ciertas preguntas y soluciones a las mismas y aparecer otras que no se han sospechado en el momento de concebirlo, as pues, el esquema y el programa son casi siempre un todo.

www.hispavila.com/3ds/chipspic/trespulsadores.html

2/8

21/04/13

Practicas con PIC. Controlar 3 pulsadores con PIC,controladores pic

Esquema para el programa

El Programa.
Si dispone de la plantilla puede saltarse estos primeros pasos, si no, siga adelante. Deben respetarse los nombres de las etiquetas y su forma no duplicando los nombres, el programa MPLAB distingue entre Maysculas y minsculas, otro punto a tener en cuenta es que las lneas de instrucciones deben empezar en la columna 0 y sin nmero de lnea, es muy conveniente recordar el documentar nuestro trabajo, nos ser de gran ayuda a largo plazo. Tambin es conveniente guardar la forma en el listado respetando los espacios, para lo cual usaremos los tabuladores a nivel 8. Lgicamente, de este listado para no confundirnos deben eliminarse las lneas que no se vayan a utilizar, en cada caso. Los listados, deben ser escuetos, procurando limpiar las lneas que no sean necesarias, sin que por esto, se eliminen las notas aclaratorias que son importantes. No he quitado la cabecera por dos razones: 1- No entorpece ni es causa de ocupar espacio en la memoria y 2Nos recuerda qu se debe hacer al programar. Por otra parte, se pueden apreciar tres importantes campos o zonas en el listado, las cuales intentar describir: En primer lugar, encontramos la zona de las DEFINICIONES, en la que se declaran el micro, los includes, las equ's, es muy importante cumplimentar esta parte ya que de ello depender el buen discurrir del programa sin errores, difciles de interpretar luego. En segundo lugar, tenemos la zona de CONFIGURACI N de puertos e inicio de variables [o Set-up]. En esta imprescindible zona, se debe incluir siempre, para acceder a la pagina 1 de la RAM, donde se definen los estados de las lneas de los puertos de forma individual lnea a lnea o general todo el puerto y terminar con la vuelta a la pgina 0 para seguir con el programa. Y en tercer lugar, el cuerpo del programa que en cada caso tendr sus particularidades exclusivas y subrutinas que hemos recopilado y adecuado a nuestro gusto, que deben ir despus de la configuracin, luego la parte principal que hemos desarrollado. Pero, qu quieren decir las instrucciones que aparecen en lo que hemos escrito en esta plantilla. Para los que empiezan, voy a describir aqu, estas pocas lneas; en especial las referentes a la configuracin de puertos que puede ser algo ms confusa. Los que tengan esto por conocido pueden seguir avanzando a su ritmo. Conviene que el lector se haga una copia en papel del juego de instrucciones, tambin se puede ver la descripci n de instrucciones correspondientes al PIC y en este caso con las del 'F84A que se describe, para una mejor comprensin de lo que se indica en este artculo y sobre todo como ayuda cuando se proceda a hacer un programa (cdigo). En las definiciones de igualdades o equ's, denominado mapa de memoria, lo que hacemos es asignar unas localizaciones de memoria a unos registros intrnsecos del propio PIC como son: pcl, status, porta, portb, trisa, trisb, option_reg que ya estn definidos (en el archivo .inc) en el include y por otra parte ciertas variables que el analista considere necesarias, pueden distinguirse las asignadas por el analista: conta, pausa, etc. Todas ellas como se ha dicho ocupan una celda de memoria numerada en la cual se deposita un valor que puede ser variable o fijo.
www.hispavila.com/3ds/chipspic/trespulsadores.html 3/8

21/04/13

Practicas con PIC. Controlar 3 pulsadores con PIC,controladores pic

En unas ocasiones el programa se refiere a la direccin de memoria y en otras al valor depositado en dicha direccin. Esto puede llevar a confusin y hay que tener muy en cuenta lo que se esta haciendo en cada momento para poder seguir el hilo del programa. No se preocupe por el momento, si le cuesta entender el concepto, ver que a medida que haga sus prcticas ir adquiriendo habilidad y experiencia y pronto dominar en cierta medida esta faceta de la programacin. Acrquese a algn foro de la red si tiene ocasin y les consulta sus dudas, las respuestas le servirn de inestimable ayuda. En las siguientes lneas del programa se accede a la parte alta de la memoria los bancos revise las hojas de caractersticas y podr comprender mejor lo que se describe a continuacin: BSF STATUS,RP0 (03,5); Esto quiere decir: Bit Set File, poner a 1 el bit 5 en el archivo f (03 en el ejemplo), por eso es comn encontrar en algunos casos en los equ's la expresin: STATUS equ 0x03h. As pues, este es el modo de desplazarnos a la pgina 1, parte alta de la memoria. En ese momento se opera en el espacio de memoria alta y vamos a seguir en ella unos pasos ms. Acto seguido se encuentra la instruccin: MOVLW 01h ; Esto quiere decir, Mueve el Literal 01h al registro de trabajo W. Debe recordar que no se pueden hacer operaciones directas en los puertos, como es el caso. Algo as: MOVWF PORTA,01H es una incorreccin ya que este tipo de microcontroladores no admite operaciones directas con los registros. La siguiente instruccin es: MOVWF PORTA (05h); Esto quiere decir que el valor del literal anterior se deposita en el archivo 05h que es el puerto A y como el valor depositado en W es 01h, el bit 0 ser tomado como entrada, los dems bits del puerto A sern salidas. Una nueva instruccin: MOVLW FFh que hace lo mismo que la anterior, carga un valor literal FFh en el registro W. La siguiente instruccin es: MOVWF PORTB (06h); Esto quiere decir que todo el puerto B perteneciente al archivo 06h, sern entrada, todas sus lneas por estar a 1, si queremos que una lnea sea salida, el bit correspondiente a esa lnea debe ponerse a 0. Como ya hemos configurado las lneas de E/S de ambos puertos (y otras como en el F628 el puerto A es analgico y por eso dispone de una orden para pasarlo a digital con MOVLW 07 y MOVWF COMM), esto depende del micro, es hora de devolver el control del programa al la parte baja de la memoria que es la llamada pgina 0, por lo que se utiliza la instruccin siguiente: BCF 03,5 ; Esto quiere decir: Bit Clear File e indica que el bit 5 del archivo 03 ser puesto a 1, este archivo 03 contiene la lneas E/S, comnmente se llaman lneas E/S del puerto. Bien, una vez ejecutada esta instruccin como ya se ha indicado el microcontrolador est en condiciones de poder continuar el proceso del programa con sus rutinas y subrutinas. Desde luego que pueden seguir aadindose ms instrucciones en esta seccin, esto es cuestin de lo que el analista considere oportuno cuidando de no superar el espacio de memoria disponible a tal cometido. Las siguientes lneas del programa deben contener subrutinas, tablas si las hubiera y a continuacin poner la rutina principal, en ella se distingue la Etiqueta normalmente le llamamos inicio, principal o [start] en ingls, seguida de dos puntos y una instruccin. Aqu empieza el trabajo del analista o lo que es lo mismo, el programa. El siguiente es el listado del programa que nos permite controlar la accin que puede ejecutarse al oprimir uno de los tres pulsadores que hemos propuesto. Sin duda que el lector puede aadir como respuesta a cada subrutina de cada pulsador una llamada a otra subrutina encargada de realizar el cometido que considere el lector - analista.
; # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ; ; A u t o r :V .G a r c i a ; F e c h a :N o v i e m b r e2 0 0 6 . ; ; F u n c i o n :C o n t r o l a r3p u l s a d o r e sys a l t a ral as u b r u t i n ai n d i c a d a . ;O s c i l a d o rp o rr e dR C .3L E D sam a s a . T I T L E " 3 p u l s 0 2 . a s m " S U B T I T L E " R e v i s i o nN 2 "A c t u a l i z a d o :0 3 0 7 E R R O R L E V E L 3 0 2 ,3 0 6 P R O C E S S O R 1 6 F 8 4 A ;

www.hispavila.com/3ds/chipspic/trespulsadores.html

4/8

21/04/13

; ; ; # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ; D e f i n i c i o n e sd eR e g i s t r o s ; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = L I S TP = P I C 1 6 F 8 4 A # i n c l u d e _ _ C O N F I G _ C P _ O F F&_ W D T _ O F F& _ R C _ O S C ; _ _ C O N F I G h ' 3 F F B ' ; 0 0 1 11 1 1 11 1 1 11 0 1 1 ; D e f i n i c i o noD e c l a r a c i o nd ee q u s( i g u a l d a d e s ) d 1 d 2 d 3 e q u e q u e q u 0 x 0 C 0 x 0 D 0 x 0 E ;s i e m p r es en e c e s i t a nu np a r ;d er e g i s t r o sa u x i l i a r e s

P R O C E S S O R

1 6 F 8 4 A

Practicas con PIC. Controlar 3 pulsadores con PIC,controladores pic

; -F i c h e r o sd eR e g i s t r o; D E F I N I M O SL O SB A N C O S B S FS T A T U S , R P 0 ; M a c r op a r aa b r e v i a re lB A N C O1 B C FS T A T U S , R P 0 ; M a c r op a r aa b r e v i a re lB A N C O0 0 x 0 0 ; P o s i c i o n0d el aM e m o r i ad eP r o g r a m a( a p u n t a d o r )

# d e f i n eb a n k 1 # d e f i n eb a n k 0 O r g ; G O T O ; i n i c i o :C L R F b a n k 1 M O V L W M O V W F C L R F b a n k 0 C L R F

i n i c i o ; V aal ae t i q u e t aI N I C I O S T A T U S 0 x 0 7 P O R T B P O R T A ; V aap a g i n a 1p a r ac o n f i g u r a rp u e r t o s ; p o n ee ll i t e r a l0 7 h=b 0 0 0 00 1 1 1e ne lr e g i s t r oW ; d e f i n eR B 0 R B 2c o m oe n t r a d a ,l o so t r o s ,s a l i d a s ; l i m p i ae lp u e r t oA , s a l i d a s ; d e f i n et o d oe lp u e r t oAc o m os a l i d a ; R e g r e s aap a g i n a 0p a r ac o n t i n u a r ; l i m p i ae lp u e r t oA

P O R T A

; E s c a n e al o s3p u l s a d o r e sh a s t aq u es ep u l s au n o ; s c a n e r :B T F S CP O R T B , 0 ;b i t0d e lp u e r t oBe s t ae nn i v e lb a j o ,s a l t a1l i n e a C A L L l u c e 1 ; s a l t aae n c e n d e rL E D 1 B T F S CP O R T B , 1 ;b i t1d e lp u e r t oBe s t ae nn i v e lb a j o ,s a l t a1l i n e a C A L L l u c e 2 ; s a l t aae n c e n d e rL E D 2 B T F S CP O R T B , 2 ;b i t2d e lp u e r t oBe s t ae nn i v e lb a j o ,s a l t a1l i n e a C A L L l u c e 3 ; s a l t aae n c e n d e rL E D 3 G O T O s c a n e r ; r e p i t es e c u e n c i a l u c e 1 : M O V L W M O V W F C A L L C L R F R E T U R N l u c e 2 : M O V L W M O V W F C A L L C L R F R E T U R N l u c e 3 : M O V L W M O V W F C A L L C L R F R E T U R N ; p a u s a : M O V L W M O V W F M O V W F M O V W F M O V W F M O V W F p a u s a 1 : D E C F S Z G O T O G O T O D E C F S Z G O T O G O T O D E C F S Z G O T O g o t o g o t o g o t o R E T U R N E N D d 1 , 1 ;L a z oi n t e r i o r p a u s a 1 $ + 2 d 2 , 1 p a u s a 1 $ + 2 d 3 , 1 p a u s a 1 $ + 1 $ + 1 $ + 1 0 x 0 1 P O R T A p a u s a P O R T A 0 x 0 2 P O R T A p a u s a P O R T A 0 x 0 4 P O R T A p a u s a P O R T A ;p o n ea1 ; p a r ae n c e n d e rL E D 1 ; s a l t aar u t i n ad er e t a r d o

; p o n ea1 ; p a r ae n c e n d e rL E D 2 ; s a l t aar u t i n ad er e t a r d o

; p o n ea1 ; p a r ae n c e n d e rL E D 3 ; s a l t aar u t i n ad er e t a r d o

R u t i n ad er e t a r d o 0 x 0 7 ;b ' 0 0 0 0 0 1 1 1=7 d d 1 ; 2 A h 0 x 2 F ; b ' 0 0 1 0 1 1 1 1=4 7 d d 2 0 x 0 3 ; b ' 0 0 0 0 0 0 1 1=3 d d 3

www.hispavila.com/3ds/chipspic/trespulsadores.html

Creo que es el momento de describir algunas lneas que, ayuden a comprender mejor el funcionamiento del

5/8

21/04/13

Creo que es el momento de describir algunas lneas que, ayuden a comprender mejor el funcionamiento del programa mostrado. En el que vemos la lnea, con su comentario:
MOVWF PORTB ;define RB0-RB2 como entrada, los otros, salidas

Practicas con PIC. Controlar 3 pulsadores con PIC,controladores pic

Esto quiere decir: Mueve el contenido de W (que es 07) al archivo 06h (que es el puerto B). Ms adelante en la rutina principal.
scaner: BTFSC PORTB,0 ; si bit 0 del puerto B esta en nivel bajo?, salta 1 linea

La etiqueta sirve como punto de referencia nico, es decir para las llamadas (CALL's), ya veremos que ocurre. Le sigue la instruccin: BTFSC PORTB,0 Esto quiere decir: Bit Test, Skip if Clear, se refiere a, comprobar el bit 0 del archivo 06h (puerto B), si es 0 la instruccin CALL luce1, se ignora, se trata como un NOP y contina en la lnea que sigue, si el resultado de comprobar es 1, se ejecuta el CALL luce1, saltando a la nueva etiqueta. En el primer caso, cuando BTFSC es 0, la siguiente instruccin a ejecutar es: BTFSC PORTB,1 lo que significa una nueva comprobacin en este caso se prueba si el (segundo bit) bit1 es 0, en cuyo caso saltar una lnea, para ejecutar BTFSC PORTB,2 para comprobar el bit2 y si su estado es 0, saltar al principio cerrando la rutina, es decir, a scaner: Permanecer en este estado (comprobando el estado de los pulsadores) mientras no se presione alguno de los tres pulsadores. En caso de que BTFSC sea 1, como se ha dicho ejecutar el CALL luce1. Entonces el micro busca la etiqueta llamada luce1, cuando la encuentra ejecuta la primera instruccin que encuentra, en este caso: MOVLW 0x01 que se corresponde con el rastreo del pulsador 1 lo que carga W con el valor 1, la siguiente instruccin carga el puerto B con el valor de W que ahora es 1. Esto hace que el LED1 se encienda. El proceso que sigue es saltar a una subrutina de retardo que mantiene el LED encendido por un tiempo determinado por ese retardo. Digamos que el resto de programa hace lo mismo que lo descrito para el pulsador 1 y naturalmente no vamos a insistir. Es interesante observar en este punto, lo que se ha descrito en este cdigo fuente del programa, ya que si modificamos un poco el cdigo, podemos hacer que el LED encendido permanezca as, hasta que un nuevo pulsador sea presionado. Nota. En referencia al circuito que se muestra ms arriba, se puede observar que requiere unos pocos componentes pasivos alrededor del microcontrolador. Sin embargo, una particularidad de este tipo de microcontrolador consiste en la posibilidad de activar por software las resistencias de drenaje de que dispone el puerto B (en los PIC) son conocidas como resistencias pull-up. Estas resistencias confieren unas posibilidades que, mejoran las opciones de los puertos que las disponen. Cada uno de los pines del PORTB tiene un Pull-up (forzado a alto) dbil interno. Un solo bit de control puede conectar a alto todas las lneas del puerto. Esto se configura al aclarar el bit RBPU del registro OPCI N (bit7=0). El dbil drenaje a alto, se apaga automticamente cuando el pin del puerto es configurado como una salida. Las resistencias de drenaje son inutilizadas con un Power on Reset (al conectar la tensin). Este es el esquema definitivo que se emplea, las referidas resistencias no aparecen.

www.hispavila.com/3ds/chipspic/trespulsadores.html

6/8

21/04/13

Practicas con PIC. Controlar 3 pulsadores con PIC,controladores pic

Esquema final del programa Al activar estas resistencias, mediante la aplicacin de un el nivel de los pines, toma el valor alto (1) si lo tratamos como entrada y si se trata como salida este hecho se debe tener muy en cuenta ya que es motivo de no pocos quebraderos de cabeza, ya que presenta un estado alto en reposo y por este motivo emplazamos al lector a que, revise el circuito esquemtico de los puertos que dispongan de este elemento para comprender su comportamiento y evitar en lo posible efectos no esperados cuando realmente la salida hace lo que se le ha indicado en el cdigo de programa. Esto aplicado a nuestro programa, hace que evitemos el uso de las tres resistencias (R5, R6 y R7 en el esquema) ya que como se ha descrito las entradas de los pulsadores no requieren de las mencionadas resistencias (se han activado por software) y naturalmente estn a nivel positivo (H), esto hace que al presionar un pulsador ingresemos un 0 en dicha entrada y con pocos cambios en el software habremos logrado adaptar el programa. En el ejemplo mostrado, ya est contemplado este hecho. Veamos otra modificacin del programa.

Modificaci n.
La modificacin que se refiere, consiste en cambiar de sitio una lnea del cdigo fuente, nos referimos a la lnea de aclarado del puerto A, para entender mejor lo que se pretende vamos a describir con detalle lo que ocurre al llegar el flujo del programa a la etiqueta luce1:
l u c e 1 :M O V L W0 x 0 1 ;c a r g aa1e lr e g i s t r oW M O V W FP O R T A;c a r g aP O R T Ac o nW ,p a r ae n c e n d e rL E D 1 C A L Lp a u s a ;s a l t aas u b r u t i n ad er e t a r d o C L R FP O R T A ;l i m p i ae lP O R T A ,a p a g at o d oe lp u e r t o R E T U R N ;r e g r e s aa lp u n t oq u es i g u ea lC A L Ll u c e 1

Considerando los comentarios, parece bastante claro que hace cada lnea, por lo tanto a continuacin se muestra la misma subrutina modificada.
l u c e 1 :C L R FP O R T A ;l i m p i ae lP O R T A ,a p a g at o d oe lp u e r t o M O V L W0 x 0 1 ;c a r g aa1e lr e g i s t r oW M O V W FP O R T A;c a r g aP O R T Ac o nW ,p a r ae n c e n d e rL E D 1 C A L Lp a u s a ;s a l t aas u b r u t i n ad er e t a r d o R E T U R N ;r e g r e s aa lp u n t oq u es i g u ea lC A L Ll u c e 1

Se aprecia que se ha puesto la instruccin CLRF PORTA al entrar en la subrutina y se ha eliminado esta misma instruccin de la cuarta lnea donde se encontraba. Esto hace que se pongan a cero todas las salidas del puerto, apagando los LEDs que hubiera, lo que sigue ya est descrito anteriormente y sin embargo, al salir de la subrutina con el RETURN, el LED permanecer encendido mientras no se pulse otro pulsador. Esta rutina muestra cmo conseguir un testigo del ltimo pulsador presionado. Se aprovechan las rutinas principal, la de rastreo de pulsadores y las subrutinas que se encargaran de cada funcin. Lea y estudie las rutinas de las 'Libreras de Rutinas', estas ya sabe que funcionan, aproveche las que le interesen, puede dar por seguro que funcionan. Copie y pegue lo que le interese de cada una de las subrutinas y nala a su programa. Preste atencin a las etiquetas, lazos, etc. En ocasiones una subrutina puede causar verdaderos quebraderos de cabeza y nos resultan difciles de depurar, debido a que tienen todo el aspecto de estar bien concebidas y sin embargo, no producen lo que esperbamos, en prximos artculos, veremos algn pequeo ejemplo o 'truco' de este tipo de 'fallos' y cmo corregirlos. Volver al ndice de artculos PIC.
www.hispavila.com/3ds/chipspic/trespulsadores.html 7/8

21/04/13

Practicas con PIC. Controlar 3 pulsadores con PIC,controladores pic

Creada el: 16-10-07 Actualizada el: 31-10-07

www.hispavila.com/3ds/chipspic/trespulsadores.html

8/8

Вам также может понравиться