Página de inicio Mi Correo






   » Foro
   » Nuevo Foro
   » Mi Correo
   » Mis Actividades...


--- Novedades ---



    
  » Microcontroladores » Tutor de MPLAB (10 de 19)  

.: Los efectos - Sección II

Si en el primer efecto ibas activando los bits uno a uno con cada pulso de reloj y dejando el anterior activo y al final llegabas con todos llenos, lo que haremos aquí será llevar uno activo pero quitando el anterior y una vez lleguemos al extremo lo dejaremos a ese en nivel alto y comenzaremos de nuevo para obtener este efecto...

Monitor de LED's switch en 0001
     
.: Aquí tienes el código para lograrlo...
efect2	CLRF	portb	; limpia el puerto B
	BSF	portb,7	; (10000000)	EFECTO ACUMULATIVO EN "0"
	CALL	clokon
	BCF	portb,7 	; (00000000)
	BSF	portb,6	; (01000000)
	CALL	clokon
	BCF	portb,6	; (00000000)
	BSF	portb,5	; (00100000)
	CALL	clokon
	BCF	portb,5	; (00000000)
	BSF	portb,4	; (00010000)
	CALL	clokon
	BCF	portb,4	; (00000000)
	BSF	portb,3	; (00001000)
	CALL	clokon
	BCF	portb,3	; (00000000)
	BSF	portb,2	; (00000100)
	CALL	clokon
	BCF	portb,2	; (00000000)
	BSF	portb,1	; (00000010)
	CALL	clokon
	BCF	portb,1	; (00000000)
	BSF	portb,0	; (00000001)
	CALL	clokon
	BSF	portb,7	; (10000001)
	CALL	clokon
	BCF	portb,7	; (00000001)
	BSF	portb,6	; (01000001)
	.	.	.
	.	.	.
	RETURN

Perdona, pasa que es muy extenso, pero no te preocupes que luego te daré el código completo, por ahora sólo trata de comprender como se hicieron todos estos efectos...

Bien, veamos parte de las instrucciones...

efect2	CLRF	portb	; limpia el puerto B
	BSF	portb,7	; (10000000)	EFECTO ACUMULATIVO EN "0"
	CALL	clokon
	BCF	portb,7 	; (00000000)
	BSF	portb,6	; (01000000)
	CALL	clokon
	BCF	portb,6	; (00000000)
	BSF	portb,5	; (00100000)
	CALL	clokon

Como siempre, lo primero que hacemos es borrar el puerto para comenzar desde cero así que...

CLRF   portb

luego ponemos un 1 en el bit7 del puerto B y vamos a verificar si hay un nuevo pulso...

BSF     portb,7
CALL   clokon

Ahora viene lo nuevo ya que son como dos instrucciones en una...

BCF     portb,7    ; (00000000)
BSF     portb,6    ; (01000000)

En la primer línea borro el bit que activé anteriormente y en la segunda pongo a 1 el bit que sigue (6) (eso es lo que genera el desplazamiento...!!!), luego llama al timer para recién hacer otro cambio, esta es una de las formas de mover un bit de un extremo a otro.

Saltemos un par de líneas más abajo y supongamos que logramos llegar al otro extremo de portb, entonces verás este trozo de código...

BSF     portb,0     ; (00000001)
CALL   clokon
BSF     portb,7     ; (10000001)
CALL   clokon
BCF     portb,7     ; (00000001)
BSF     portb,6     ; (01000001)
CALL   clokon

En la primer línea llegamos al bit0 de portb el cual ya no tocaremos, y comenzaremos nuestro recorrido nuevamente desde el bit7 al bit1, luego será del 7 al 2, luego del 7 al 3, etc. Una vez esté todo lleno haremos un RETURN.

El efecto 3, es lo mismo, pero al revés... veamos el que sigue...



R-Luis...


<--Anterior   Introducción   Siguiente -->
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19
Tabla de Referencias


    
--| |--