que usted pueda entender el tema con m s facilidad. Pero todo lo que veremos puede aplicarse a un secuenciador de 8 leds. Nuestro dispositivo enciende cuatro leds en secuencia de manera que nunca est n encendidos todos al mismo tiempo.
En el ejemplo anterior vimos primero el programa y luego el diagrama de flujo. En realidad el m todo es el inverso. Un dia- grama de flujo permite visualizar el funcio- namiento de un programa y por lo tanto debe efectuarse previamente.
Por ejemplo, en la figura 7 puede ver el diagrama de flujo correspondiente a la ru- tina demora del programa que permite el encendido intermitente de un led.
El programa es la interpretaci n del diagrama de flujo; en el programa se plas- man los detalles que no tiene el diagrama de flujo. Para construir el programa de nuestro secuencial, nos basamos en el diagrama de flujo de la figura 8.
Observe que luego de iniciado, el pro- ceso no se detiene jam s, ya que termina- da la secuencia, vuelve a comenzar. Ob- viamente, la aplicaci n de un reset apaga- r todos los leds mientras se mantenga el reset pulsado.
En este programa se van a utilizar nue- vas instrucciones que debemos detallar. Entre otras utilizamos la instrucci n movf que se acompa a con un doble operando. Es una sentencia que sirve para realizar transferencias en el contenido de cual- quier registro nombrado como primer ope- rando al registro W.
Otra instrucci n nueva es rlf, cuya fun-
Fig. 7 Fig. 7
Fig. 8 Fig. 8
ci n es desplazar el contenido de un registro nombrado como operando. El con- tenido se desplaza hacia la izquierda y el primer bit vuelve a ingresar como l- timo.
Finalmente se utiliza tambi n la instrucci n btfss que incluye dos operan- dos; el primer operando indica en qu registro se realiza la operaci n y el se- gundo que posici n del registro se analiza (en que bit, del bit 0 al bit 7). La ope- raci n consiste en analizar la posici n siguiente a la nombrada como segundo operando. Por ejemplo:
btfss rot,4
Aqu se analiza el estado de 5 bit (bit 4, dado que el primer bit o bit menos significativo es el bit 0), si ste es cero se continua con la sentencia siguiente , si es 1 se saltea en la siguiente secuencia. En la figura 9 se realiza un dibujo que explica estas ltimas instrucciones.
Fig. 9 Fig. 9
Imag nese a movf como si volcara el contenido de un balde en otro, se lo asimila a un transvasamiento. La sentencia rlf la puede imaginar como si apre- tara un registro con el dedo puesto por la derecha del mismo; el bit que se cae por la izquierda lo toma con la mano y lo pone por la derecha donde qued un espacio vac o.
Vea a btfss como si estuviera con la mano sobre el quinto bit. Si esa posi- ci n esta fr a, mande el control de programa al rengl n siguiente. Si est calien- te, saltee el que sigue y mande el control al posterior a ste.
Bien, el programa del secuenciador es en realidad una modificaci n del pro- grama de encendido y apagado de un led. Como vemos, los programas dif cil- mente se inicien desde cero siempre se utilizan otros programas que se modi- fican y adem s se utilizan subrutinas completas como la "demora":
; SECUENCIADOR
list P=16C84 ;el dispositivo usa el 16C84
;--- ptob equ 06 ;el puerto f se ubica en 06 de la RAM. Rot equ 0d ;al registro ubicado 0d se lo llama est. Reg1 equ 0e ;al registro ubicado en 0e se lo llama reg1 reg2 equ 0f ;al registro ubicado en 0f se lo llama reg1 reg3 equ 10 ;al registro ubicado en 10 se lo llama reg3 grueso equ 00 ;se asignan nombres a los literales. medio equ 40 ;se asignan nombres a los literales. fino equ 50 ;se asignan nombres a los literales.
;--- reset org 0 ;reset en dirección 00h
goto comenzar ;se lleva el control a comienzo comenzar movlw 00 ;se carga w con 00h
tris ptob ;se programa el puerto "b" como salida. ppal movlw 01 se carga w con 01h
movwf rot ;se descarga w en el registro rot ;preparándolo para la rotación. sec movf rot,0 ;el contenido de rot pasa a w
movwf ptob ;enciende el led conectado donde indica w call demora ;se mantiene encendido el led.
rlf rot ;se mueven los bits de "rot". btfss rot,4 ;se comprueba el 5º bit.
goto sec ;si el 5º bit es cero se reenvía a sec. goto ppal ;si el 5º bit es uno se reenvía a ppal para
demora movlw grueso ;recarga w con el número hexadecimal ;“grueso” es decir, con 30
movwf reg1 ;se vuelca “grueso” en el registro ;reg 1
dem3 movlw medio ;se carga w con el número hexadecimal ;“medio” es decir con 40
movwf reg2 ;se vuelca "medio" en el registro ;reg2.
dem2 movlw fino ;se carga w con el número hexadecimal ;"fino" es decir con 50.
movwf reg3 ;se vuelca "fino" en el registro reg3. dem1 decfsz reg3 ;se decrementa el registro reg3 en una
;unidad y si el resultado es cero se salta a ;la siguiente instrucción, si no se sigue ;decrementando.
goto dem1 ;retorno a la frecuencia etiqueta dem1. decfsz reg2 ;idem con reg2.
goto dem2 ;retorno a la etiqueta dem2. decfsz reg3 ;idem con reg1.
goto dem1 ;retorno a la etiqueta dem3. retlw 0 ;se carga w con 0 y se retorna al
;programa principal. end
Todo comienza cargando el registro w con el hexadecimal 01, es decir que el registro se llenar con el binario correspondiente 00000001. Este contenido se transvasa a "rot" y luego devuelta a "w", desde donde se lo env a al puerto "b" para encender el ltimo led. Ahora el control del programa se env a a demo- ra para que el led permanezca encendido cerca de 1 segundo. A continuaci n se produce la rotaci n de los bits de "rot" con lo cual queda cargado con el bi- nario 00000010. Ahora se comprueba el estado del quinto bit; como es 0 se reenv a el control a "sec , se carga "w" con el contenido de "rot" se transvasa "rot" a "w" y luego se env a "w" al "ptob", entonces el segundo led se enciende y as sucesivamente, hasta que se enciende el cuarto led. En ese momento, al hacer la rotaci n se lleva el quinto bit a 1, momento en que se saltea el goto "sec", se hace un goto a ppal y comienza una nueva secuencia.
Si lo analizamos globalmente, lo nico que hace el programa es cargar el puerto w con los binarios 00000001; 00000010; 00000100; 00001000 y realizar un cambio cada segundo aproximadamente.
Sugerimos que cambie inicialmente la subrutina demora para que la se- cuencia sea m s r pida. Luego lo invitamos a realizar un cambio mayor, que
implique secuenciar 8 leds en lugar de 4, y por ltimo lo invitamos a construir una guirnalda para un arbolito de navidad. Lo nico que se modifica en este ca- so es que con el sistema simplificado, se requiere manejar un solo led. Para manejar una cantidad mayor, le sugerimos el circuito de la figura 10.