.: Los efectos - Sección V
En este caso también haremos uso de la rotación mediante el carry, pero guardaremos el resultado de la rotación en W para no perderlo y luego lo enviaremos repetidas veces a portb...
Monitor de LED's |
switch en 0100 |
|
|
|
.: El código completo te debería quedar así...
efect5 CLRF portb ; limpia el puerto B
MOVLW 0x01 ; comienza con (00000001)
MOVWF portb ; lo envía a la salida
cinco BSF estado,0 ; pone a 0 el bit C de status (carry)
CALL clokon
MOVWF portb ; lo envía a la salida
RLF portb,0 ; rota a la izquierda y pasa el valor a W
MOVWF portb ; lo envía a la salida
CALL clokon
CLRF portb ; (00000000)
CALL clokon
MOVWF portb ; repite
CALL clokon
CLRF portb ; (00000000)
CALL clokon
MOVWF portb ; lo envía a la salida
BTFSS portb,7 ; ve si terminó de rotar
GOTO cinco
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
RETURN
|
|
Aquí hay una pequeña diferencia, ya que ponemos un 1 en el carry y no un 0 como lo hicimos anteriormente, y desde allí vamos cargando el puerto B hasta que se active el último bit de portb.
Veamos, hacemos una rotación, lo enviamos a portb, llamamos al timer, borramos portb, llamamos al timer, hacemos una repetición , llamamos nuevamente al timer, y así, luego de las repeticiones, verificamos si se terminó de rotar, sino hacemos una nueva rotación, finalmente terminaremos con el portb lleno.
Luego de terminada la rotación iremos poniendo a 0 todos los bits, desde el bit7 al bit0...(es como hacer un barrido limpiando todo el puerto)
Analiza el código, que no es tan complicado como parece, si lograste comprender como se hace la rotación esto ya te resultará más fácil.
R-Luis...
<--Anterior
Introducción
Siguiente -->
Tabla de Referencias
|