16 Efectos
16 Efectos
16 Efectos
========================
;
; Ero-Pic // De Rueda Luis
; Secuenciador de 8 Canales y 16 efectos.
;
;
===============================================
===========
LIST
P=16F84
include "P16F84.inc"
;=================== Mapa de Memoria
======================
estado
trisa equ
trisb equ
porta equ
portb equ
llaves equ
;
;
;
;
;
;
;
XORLW 0x03
BTFSC estado,2
CALL efect4
MOVF llaves,0
XORLW 0x04
BTFSC estado,2
CALL efect5
MOVF llaves,0
XORLW 0x05
BTFSC estado,2
CALL efect6
MOVF llaves,0
XORLW 0x06
BTFSC estado,2
CALL efect7
MOVF llaves,0
XORLW 0x07
BTFSC estado,2
CALL efect8
MOVF llaves,0
XORLW 0x08
BTFSC estado,2
CALL efect9
MOVF llaves,0
XORLW 0x09
BTFSC estado,2
CALL efect10
MOVF llaves,0
XORLW 0x0A
BTFSC estado,2
CALL efect11
MOVF llaves,0
XORLW 0x0B
BTFSC estado,2
CALL efect12
MOVF llaves,0
XORLW 0x0C
BTFSC estado,2
CALL efect13
MOVF llaves,0
XORLW 0x0D
BTFSC estado,2
CALL efect14
MOVF llaves,0
XORLW 0x0E
BTFSC estado,2
CALL efect15
MOVF llaves,0
XORLW 0x0F
BTFSC estado,2
CALL efect16
GOTO switch
;======================== Efectos
=========================
efect1CLRF
portb
; limpia el puerto B
BSF
CALL
BSF
CALL
BSF
CALL
BSF
CALL
BSF
CALL
BSF
CALL
BSF
CALL
BSF
CALL
BCF
CALL
BCF
CALL
BCF
CALL
BCF
CALL
BCF
CALL
BCF
CALL
BCF
CALL
CLRF
CALL
trece BSF
CALL
BSF
CALL
BSF
CALL
BSF
CALL
BSF
CALL
BSF
CALL
BSF
CALL
BSF
CALL
BCF
CALL
BCF
CALL
BCF
CALL
BCF
CALL
BCF
portb,7
clokon
portb,6
clokon
portb,5
clokon
portb,4
clokon
portb,3
clokon
portb,2
clokon
portb,1
clokon
portb,0
clokon
portb,7
clokon
portb,6
clokon
portb,5
clokon
portb,4
clokon
portb,3
clokon
portb,2
clokon
portb,1
clokon
portb
clokon
portb,0
clokon
portb,1
clokon
portb,2
clokon
portb,3
clokon
portb,4
clokon
portb,5
clokon
portb,6
clokon
portb,7
clokon
portb,0
clokon
portb,1
clokon
portb,2
clokon
portb,3
clokon
portb,4
; (10000000)
; (11000000)
; (11100000)
; (11110000)
; (11111000)
; (11111100)
; (11111110)
; (11111111)
; (01111111)
; (00111111)
; (00011111)
; (00001111)
; (00000111)
; (00000011)
; (00000001)
; (00000000)
; (00000001)
; (00000011)
; (00000111)
; (00001111)
; (00011111)
; (00111111)
; (01111111)
; (11111111)
; (11111110)
; (11111100)
; (11111000)
; (11110000)
; (11100000)
CALL clokon
BCF
portb,5
CALL clokon
BCF
portb,6
CALL clokon
RETURN
efect2CLRF portb
BSF
portb,7
ACUMULATIVO EN "0"
CALL clokon
BCF
portb,7
BSF
portb,6
CALL clokon
BCF
portb,6
BSF
portb,5
CALL clokon
BCF
portb,5
BSF
portb,4
CALL clokon
BCF
portb,4
BSF
portb,3
CALL clokon
BCF
portb,3
BSF
portb,2
CALL clokon
BCF
portb,2
BSF
portb,1
CALL clokon
BCF
portb,1
BSF
portb,0
CALL clokon
BSF
portb,7
CALL clokon
BCF
portb,7
BSF
portb,6
CALL clokon
BCF
portb,6
BSF
portb,5
CALL clokon
BCF
portb,5
BSF
portb,4
CALL clokon
BCF
portb,4
BSF
portb,3
CALL clokon
BCF
portb,3
BSF
portb,2
CALL clokon
BCF
portb,2
BSF
portb,1
CALL clokon
BSF
portb,7
CALL clokon
BCF
portb,7
BSF
portb,6
CALL clokon
; (11000000)
; (10000000)
; a revisar nuevamente las llaves
; limpia el puerto B
; (10000000)
; (00000000)
; (01000000)
; (00000000)
; (00100000)
; (00000000)
; (00010000)
; (00000000)
; (00001000)
; (00000000)
; (00000100)
; (00000000)
; (00000010)
; (00000000)
; (00000001)
; (10000001)
; (00000001)
; (01000001)
; (00000001)
; (00100001)
; (00000001)
; (00010001)
; (00000001)
; (00001001)
; (00000001)
; (00000101)
; (00000001)
; (00000011)
; (10000011)
; (00000011)
; (01000011)
EFECTO
BCF
portb,6
BSF
portb,5
CALL clokon
BCF
portb,5
BSF
portb,4
CALL clokon
BCF
portb,4
BSF
portb,3
CALL clokon
BCF
portb,3
BSF
portb,2
CALL clokon
BSF
portb,7
CALL clokon
BCF
portb,7
BSF
portb,6
CALL clokon
BCF
portb,6
BSF
portb,5
CALL clokon
BCF
portb,5
BSF
portb,4
CALL clokon
BCF
portb,4
BSF
portb,3
CALL clokon
BSF
portb,7
CALL clokon
BCF
portb,7
BSF
portb,6
CALL clokon
BCF
portb,6
BSF
portb,5
CALL clokon
BCF
portb,5
BSF
portb,4
CALL clokon
BSF
portb,7
CALL clokon
BCF
portb,7
BSF
portb,6
CALL clokon
BCF
portb,6
BSF
portb,5
CALL clokon
BSF
portb,7
CALL clokon
BCF
portb,7
BSF
portb,6
CALL clokon
BSF
portb,7
CALL clokon
RETURN
efect3CLRF portb
CALL clokon
BSF
portb,0
; (00000011)
; (00100011)
; (00000011)
; (00010011)
; (00000011)
; (00001011)
; (00000011)
; (00000111)
; (10000111)
; (00000111)
; (01000111)
; (00000111)
; (00100111)
; (00000111)
; (00010111)
; (00000111)
; (00001111)
; (10001111)
; (00001111)
; (01001111)
; (00001111)
; (00101111)
; (00001111)
; (00011111)
; (10011111)
; (00011111)
; (01011111)
; (00011111)
; (00111111)
; (10111111)
; (00111111)
; (01111111)
; (11111111)
; limpia el puerto B
; (00000001)
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BSF
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BSF
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BCF
clokon
portb,0
portb,1
clokon
portb,1
portb,2
clokon
portb,2
portb,3
clokon
portb,3
portb,4
clokon
portb,4
portb,5
clokon
portb,5
portb,6
clokon
portb,6
portb,7
clokon
portb,0
clokon
portb,0
portb,1
clokon
portb,1
portb,2
clokon
portb,2
portb,3
clokon
portb,3
portb,4
clokon
portb,4
portb,5
clokon
portb,5
portb,6
clokon
portb,0
clokon
portb,0
portb,1
clokon
portb,1
portb,2
clokon
portb,2
portb,3
clokon
portb,3
portb,4
clokon
portb,4
; (00000000)
; (00000010)
; (00000000)
; (00000100)
; (00000000)
; (00001000)
; (00000000)
; (00010000)
; (00000000)
; (00100000)
; (00000000)
; (01000000)
; (00000000)
; (10000000)
; (10000001)
; (10000000)
; (10000010)
; (10000000)
; (10000100)
; (10000000)
; (10001000)
; (10000000)
; (10010000)
; (10000000)
; (10100000)
; (10000000)
; (11000000)
; (11000001)
; (11000000)
; (11000010)
; (11000000)
; (11000100)
; (11000000)
; (11001000)
; (11000000)
; (11010000)
; (11000000)
BSF
portb,5
CALL clokon
BSF
portb,0
CALL clokon
BCF
portb,0
BSF
portb,1
CALL clokon
BCF
portb,1
BSF
portb,2
CALL clokon
BCF
portb,2
BSF
portb,3
CALL clokon
BCF
portb,3
BSF
portb,4
CALL clokon
BSF
portb,0
CALL clokon
BCF
portb,0
BSF
portb,1
CALL clokon
BCF
portb,1
BSF
portb,2
CALL clokon
BCF
portb,2
BSF
portb,3
CALL clokon
BSF
portb,0
CALL clokon
BCF
portb,0
BSF
portb,1
CALL clokon
BCF
portb,1
BSF
portb,2
CALL clokon
BSF
portb,0
CALL clokon
BCF
portb,0
BSF
portb,1
CALL clokon
BSF
portb,0
CALL clokon
RETURN
efect4CLRF portb
BSF
portb,7
BSF
portb,0
CALL clokon
BSF
portb,6
BSF
portb,1
CALL clokon
BSF
portb,5
BSF
portb,2
CALL clokon
BSF
portb,4
BSF
portb,3
CALL clokon
; (11100000)
; (11100001)
; (11100000)
; (11100010)
; (11100000)
; (11100100)
; (11100000)
; (11101000)
; (11100000)
; (11110000)
; (11110001)
; (11110000)
; (11110010)
; (11110000)
; (11110100)
; (11110000)
; (11111000)
; (11111001)
; (11111000)
; (11111010)
; (11111000)
; (11111100)
; (11111101)
; (11111100)
; (11111110)
; (11111111)
; limpia el puerto B
; (10000000)
; (10000001)
; (11000001)
; (11000011)
; (11100011)
; (11100111)
; (11110111)
; (11111111)
BCF
portb,7
BCF
portb,0
CALL clokon
BCF
portb,6
BCF
portb,1
CALL clokon
BCF
portb,5
BCF
portb,2
CALL clokon
BCF
portb,4
BCF
portb,3
CALL clokon
CALL clokon
BSF
portb,3
BSF
portb,4
CALL clokon
BSF
portb,5
BSF
portb,2
CALL clokon
BSF
portb,6
BSF
portb,1
CALL clokon
BSF
portb,7
BSF
portb,0
CALL clokon
BCF
portb,3
BCF
portb,4
CALL clokon
BCF
portb,5
BCF
portb,2
CALL clokon
BCF
portb,6
BCF
portb,1
CALL clokon
BCF
portb,7
BCF
portb,0
CALL clokon
RETURN
efect5CLRF portb
MOVLW
0x01
MOVWF
portb
cinco BSF
estado,0
CALL clokon
MOVWF
portb
RLF
portb,0
MOVWF
portb
CALL clokon
CLRF portb
CALL clokon
MOVWF
portb
CALL clokon
CLRF portb
CALL clokon
MOVWF
portb
BTFSS portb,7
GOTO cinco
; (01111111)
; (01111110)
; (00111110)
; (00111100)
; (00011100)
; (00011000)
; (00001000)
; (00000000)
; (00001000)
; (00011000)
; (00111000)
; (00111100)
; (01111100)
; (01111110)
; (11111110)
; (11111111)
; (11110111)
; (11100111)
; (11000111)
; (11000011)
; (10000011)
; (10000001)
; (00000001)
; (00000000)
; limpia el puerto B
; comienza con (00000001)
; lo enva a la salida
; pone a 0 el bit C de status (carry)
; lo enva a la salida
; rota a la izquierda y pasa el valor a W
; lo enva a la salida
; (00000000)
; repite
; (00000000)
; lo enva a la salida
; ve si termin de rotar
CALL clokon
BCF
portb,7
CALL clokon
BCF
portb,6
CALL clokon
BCF
portb,5
CALL clokon
BCF
portb,4
CALL clokon
BCF
portb,3
CALL clokon
BCF
portb,2
CALL clokon
BCF
portb,1
CALL clokon
RETURN
efect6CLRF portb
MOVLW
0x01
MOVWF
portb
tres BCF
estado,0
CALL clokon
MOVWF
portb
RLF
portb,0
MOVWF
portb
CALL clokon
CLRF portb
CALL clokon
MOVWF
portb
CALL clokon
CLRF portb
CALL clokon
MOVWF
portb
BTFSS portb,7
GOTO tres
CALL clokon
RETURN
efect7CLRF portb
CALL clokon
BSF
portb,0
CALL clokon
BCF
portb,0
BSF
portb,1
CALL clokon
BCF
portb,1
BSF
portb,2
CALL clokon
BCF
portb,2
BSF
portb,3
CALL clokon
BCF
portb,3
BSF
portb,4
CALL clokon
BCF
portb,4
BSF
portb,5
; (01111111)
; (00111111)
; (00011111)
; (00001111)
; (00000111)
; (00000011)
; (00000001)
; limpia el puerto B
; comienza con (00000001)
; lo enva a la salida
; pone a 0 el bit C de status (carry)
; lo enva a la salida
; rota a la derecha y pasa el valor a W
; lo enva a la salida
; (00000000)
; repite
; (00000000)
; lo enva a la salida
; ve si termin de rotar
; limpia el puerto B
; (00000001)
; (00000000)
; (00000010)
; (00000000)
; (00000100)
; (00000000)
; (00001000)
; (00000000)
; (00010000)
; (00000000)
; (00100000)
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BSF
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BSF
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BSF
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BCF
BSF
CALL
BCF
BSF
clokon
portb,5
portb,6
clokon
portb,6
portb,7
clokon
portb,6
clokon
portb,6
portb,5
clokon
portb,5
portb,4
clokon
portb,4
portb,3
clokon
portb,3
portb,2
clokon
portb,2
portb,1
clokon
portb,1
portb,0
clokon
portb,1
clokon
portb,1
portb,2
clokon
portb,2
portb,3
clokon
portb,3
portb,4
clokon
portb,4
portb,5
clokon
portb,5
portb,6
clokon
portb,5
clokon
portb,5
portb,4
clokon
portb,4
portb,3
clokon
portb,3
portb,2
clokon
portb,2
portb,1
; (00000000)
; (01000000)
; (00000000)
; (10000000)
; (11000000)
; (10000000)
; (10100000)
; (10000000)
; (10010000)
; (10000000)
; (10001000)
; (10000000)
; (10000100)
; (10000000)
; (10000010)
; (10000000)
; (10000001)
; (10000011)
; (10000001)
; (10000101)
; (10000001)
; (10001001)
; (10000001)
; (10010001)
; (10000001)
; (10100001)
; (10000001)
; (11000001)
; (11100001)
; (11000001)
; (11010001)
; (11000001)
; (11001001)
; (11000001)
; (11000101)
; (11000001)
; (11000011)
CALL clokon
BSF
portb,2
CALL clokon
BCF
portb,2
BSF
portb,3
CALL clokon
BCF
portb,3
BSF
portb,4
CALL clokon
BCF
portb,4
BSF
portb,5
CALL clokon
BSF
portb,4
CALL clokon
BCF
portb,4
BSF
portb,3
CALL clokon
BCF
portb,3
BSF
portb,2
CALL clokon
BSF
portb,3
CALL clokon
BCF
portb,3
BSF
portb,4
CALL clokon
BSF
portb,3
CALL clokon
BCF
portb,2
CALL clokon
BSF
portb,2
CALL clokon
BCF
portb,1
CALL clokon
BSF
portb,1
CALL clokon
BCF
portb,0
CALL clokon
BSF
portb,0
CALL clokon
BCF
portb,0
CALL clokon
BCF
portb,1
CALL clokon
BCF
portb,2
CALL clokon
BCF
portb,3
CALL clokon
BCF
portb,4
CALL clokon
BCF
portb,5
CALL clokon
BCF
portb,6
CALL clokon
BCF
portb,7
CALL clokon
RETURN
; (11000111)
; (11000011)
; (11001011)
; (11000011)
; (11010011)
; (11000011)
; (11100011)
; (11110011)
; (11100011)
; (11101011)
; (11100011)
; (11100111)
; (11101111)
; (11100111)
; (11110111)
; (11111111)
; (11111011)
; (11111111)
; (11111101)
; (11111111)
; (11111110)
; (11111111)
; (11111110)
; (11111100)
; (11111000)
; (11110000)
; (11100000)
; (11000000)
; (10000000)
; (00000000)
efect8CALL efect3
CALL efect2
RETURN
; combinan el efecto 3
; con el efecto 2
efect9CLRF portb
; limpia el puerto B
MOVLW
0xEE
; comienza con (11101110)
MOVWF
portb
; lo pasa a portb
BSF estado,0
; pone el carry a 1
rotar CALL clokon
RLF portb,1
; inicia la rotacin
BTFSCportb,7
; ve si termin de rotar
GOTO
rotar
; sino contina
CALL clokon
RETURN
; termin, ver si cambi efecto
efect10
CLRF portb
; limpia el puerto B
MOVLW
0xFE
; comienza con (11111110)
MOVWF
portb
; lo pasa a portb
BSF estado,0
; pone el carry a 1
rotar1 CALL clokon
RLF portb,1
; inicia la rotacin
BTFSCportb,7
; ve si termin de rotar
GOTO
rotar1
; sino contina
rotar2 CALL clokon
RRF portb,1
; ahora rota al revs
BTFSCportb,0
; ve si termin de rotar
GOTO
rotar2
; sino contina
CALL clokon
RETURN
; termin, ver si cambi efecto
efect11
CLRF portb
; limpia el puerto B
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)
BCF estado,0
; pone el carry a 0
uno CALL clokon
RRF portb,1
; rotar uno apagado
BTFSCportb,0
; ve si es (11111110)
GOTO
uno
; sino contina
CALL clokon
BCF portb,1
; (11111100)
CALL clokon
BCF portb,2
; (11111000)
CALL clokon
BCF portb,3
; (11110000)
CALL clokon
BCF portb,4
CALL clokon
BCF portb,5
CALL clokon
BCF portb,6
BCF estado,0
dos CALL clokon
RRF portb,1
BTFSSportb,0
GOTO
dos
CALL clokon
RETURN
; (11100000)
; (11000000)
; (10000000)
; pone el carry a 0
efect12
CLRF portb
BSF portb,0
CALL clokon
BSF portb,1
CALL clokon
BSF portb,2
CALL clokon
BSF portb,3
CALL clokon
BSF portb,4
CALL clokon
BSF portb,5
CALL clokon
BSF portb,6
CALL clokon
BSF portb,7
CALL clokon
CLRF portb
;
CALL clokon
MOVLW
0xFF
MOVWF
portb
CALL clokon
CLRF portb
;
CALL clokon
MOVLW
0xFF
MOVWF
portb
CALL clokon
CLRF portb
;
CALL clokon
MOVLW
0xFF
MOVWF
portb
CALL clokon
CLRF portb
;
CALL clokon
MOVLW
0xFF
MOVWF
portb
CALL clokon
BCF
portb,7
CALL clokon
BCF
portb,6
CALL clokon
BCF
portb,5
CALL clokon
BCF
portb,4
CALL clokon
BCF
portb,3
CALL clokon
BCF
portb,2
CALL clokon
BCF
portb,1
CALL clokon
RETURN
efect13
CLRF
CALL trece
RETURN
; (00001111)
; (00000111)
; (00000011)
; (00000001)
portb
; limpia el puerto B
; ejecuta parte del efecto 1
efect14
CLRF portb
BSF
portb,7
AFUERA AL CENTRO
BSF
portb,0
CALL clokon
CLRF portb
BSF
portb,6
BSF
portb,1
CALL clokon
CLRF portb
BSF
portb,5
BSF
portb,2
CALL clokon
CLRF portb
BSF
portb,4
BSF
portb,3
CALL clokon
BSF
portb,5
BSF
portb,2
CALL clokon
BSF
portb,6
BSF
portb,1
CALL clokon
BSF
portb,7
BSF
portb,0
CALL clokon
BCF
portb,3
BCF
portb,4
CALL clokon
BCF
portb,5
BCF
portb,2
CALL clokon
BCF
portb,6
BCF
portb,1
CALL clokon
BCF
portb,7
BCF
portb,0
CALL clokon
RETURN
; limpia el puerto B
; (10000000)
EFECTO ENCIENDE DE
efect15
CLRF portb
MOVLW
0x80
MOVWF
portb
; limpia el puerto B
; comienza con (10000000)
; lo enva a la salida
; (10000001)----; (01000000)
; (01000010)----; (00100000)
; (00100100)----; (00010000)
; (00011000)----; (00111000)
; (00111100)
; (01111100)
; (01111110)
; (11111110)
; (11111111)
; (11110111)
; (11100111)
; (11000111)
; (11000011)
; (10000011)
; (10000001)
; (00000001)
; (00000000)
cuatro BCF
estado,0 ; pone a 0 el bit C de status (carry)
CALL clokon
MOVWF
portb
; lo enva a la salida
RRF
portb,0
; rota a la izquierda y pasa el valor a W
MOVWF
portb
; lo enva a la salida
CALL clokon
CLRF portb
; (00000000)
CALL clokon
MOVWF
portb
; repite
CALL clokon
CLRF portb
; (00000000)
CALL clokon
MOVWF
portb
; lo enva a la salida
BTFSS portb,0
; ve si termin de rotar
GOTO cuatro
CALL clokon
RETURN
efect16
CLRF portb
; limpia el puerto B
BSF
portb,7
; (10000000)
BCF
estado,0
; pone a 0 el bit C de status (el 1 bit)
seis CALL clokon
RRF
portb,1
; rota a la derecha
BTFSS portb,0
; ve si termin de rotar
GOTO seis
CLRF portb
; (00000000)
BSF
portb,0
; (00000001)
BCF
estado,0
; pone el carry a 0
siete CALL clokon
RLF
portb,1
; rota a la izquierda
BTFSS portb,7
; ve si termin de rotar
GOTO siete
CALL clokon
RETURN
;============ control de pulsos de clock ==================
clokon
BTFSS PORTA,4
GOTO clokon
clokoff BTFSC PORTA,4
GOTO clokoff
RETURN
;
;
;
;
; prueba si es 1
sino espera
prueba si termina el pulso
sino espera que termine
regresa y contina
;========================= final
==========================
END