.: Los efectos - Primera Sección
Al fin lo que estabas esperando, es hora de codificar los efectos, como dije anteriormente, en los comentarios del código utilicé la numeración en binario para orientarte un poco más y así sabes que salida esta activa.
Bien, ahora vamos por el primer efecto que sería este...
Monitor de LED's |
switch en 0000 |
|
|
|
El código para obtener este efecto es muy sencillo, y se trata de ir activando cada uno de los bits del puerto B por cada nuevo pulso de reloj. Aquí tienes los detalles...
;======================== Efectos =========================
efect1 CLRF portb ; limpia el puerto B
BSF portb,7 ; (10000000)
CALL clokon
BSF portb,6 ; (11000000)
CALL clokon
BSF portb,5 ; (11100000)
CALL clokon
BSF portb,4 ; (11110000)
CALL clokon
BSF portb,3 ; (11111000)
CALL clokon
BSF portb,2 ; (11111100)
CALL clokon
BSF portb,1 ; (11111110)
CALL clokon
BSF portb,0 ; (11111111)
CALL clokon
BCF portb,7 ; (01111111)
CALL clokon
BCF portb,6 ; (00111111)
CALL clokon
BCF portb,5 ; (00011111)
CALL clokon
BCF portb,4 ; (00001111)
CALL clokon
BCF portb,3 ; (00000111)
CALL clokon
BCF portb,2 ; (00000011)
CALL clokon
BCF portb,1 ; (00000001)
CALL clokon
CLRF portb ; (00000000)
CALL clokon
trece BSF portb,0 ; (00000001)
CALL clokon
BSF portb,1 ; (00000011)
CALL clokon
BSF portb,2 ; (00000111)
CALL clokon
BSF portb,3 ; (00001111)
CALL clokon
BSF portb,4 ; (00011111)
CALL clokon
BSF portb,5 ; (00111111)
CALL clokon
BSF portb,6 ; (01111111)
CALL clokon
BSF portb,7 ; (11111111)
CALL clokon
BCF portb,0 ; (11111110)
CALL clokon
BCF portb,1 ; (11111100)
CALL clokon
BCF portb,2 ; (11111000)
CALL clokon
BCF portb,3 ; (11110000)
CALL clokon
BCF portb,4 ; (11100000)
CALL clokon
BCF portb,5 ; (11000000)
CALL clokon
BCF portb,6 ; (10000000)
CALL clokon
RETURN ; a revisar nuevamente las llaves
|
|
No se si es necesario explicarlo pero ahí va, efect1 es la etiqueta para este efecto, y en la primera línea, me aseguro de que no hay señal en la salida haciendo un CLRF portb, es decir dejo todo el puerto B en (00000000).
;======================== Efectos =========================
efect1 CLRF portb ; limpia el puerto B
BSF portb,7 ; (10000000)
CALL clokon
BSF portb,6 ; (11000000)
CALL clokon
BSF portb,5 ; (11100000)
CALL clokon
BSF portb,4 ; (11110000)
|
|
Ahora paso a la siguiente instrucción...
BSF portb,7
BSF es poner a 1 el bit del registro F, es decir... poner a 1 el bit7 del registro portb. el resultado es (10000000)
CALL clokon
Esto es fácil, sólo llama a la etiqueta clokon, la ejecuta y regresa, ya se que debería ser clockon, pero es muy largo, imagínate como quedaría clockoff, peor aún...!!!, así que lo dejemos así.
clokon es la rutina que verifica el estado del timer. Entonces si hay un pulso regresa y hace...
BSF portb,6
Pone a 1 el bit6 de portb, y el resultado es (11000000), (fíjate que el bit7 aún esta activo, bueno, estará así hasta que le pongas un 0), luego de eso va a verificar si hay un nuevo pulso...
CALL clokon
si lo hay regresa y activa el bit5 de portb, y así hasta que estén todos encendidos o sea (11111111) observa el código más arriba...
Cuando eso ocurra haré un...
BCF portb,7
Es decir poner a 0 el bit7 de portb, y el resultado es (01111111), luego de eso va a verificar si hay un nuevo pulso, y si lo hay pondré a cero el siguiente bit y quedará (00111111), y así hasta que portb sea (00000000) y luego haré lo mismo, pero al revés.
Como ves es muy sencillo...
En cada instrucción no apunto a todo el puerto B sino a uno de los bits de ese puerto, activándolo a desactivándolo.
Pasemos a lo siguiente...
Perdón, pero antes de que lo olvide... En cierto lugar de este código incluí una etiqueta llamada trece, cuando llegue el momento hablaremos de ella, por ahora haz de cuenta que no existe de acuerdo...??
Ahora si sigamos...
R-Luis...
<--Anterior
Introducción
Siguiente -->
Tabla de Referencias
|