El dispositivo dispone de 4 entradas de datos, D, C, B, A, 3 salidas Y2, Y1, Y0 y 3 seales de control C2, C1, C0.
Segn el estado de las entradas de control C2, C1, C0, en las salidas Y2, Y1, Y0 aparecer el estado que corresponder a una funcin predefinida para las variables de entrada D, C, B, A: C2 C1 C0 Funcin lgica en Y0 0 0 0 0 1 1 0 0 1 1 0 0 0 1 0 1 0 1 Y=A+B+C+D OR Y=A*B*C*D AND Y=/[A+B+C+D] NOR Y=/[A*B*C*D] NAND Y=A(+)B(+)C(+)D OR-Exclusiva Y=/[A(+)B(+)C(+)D] NOR-Exclusiva
C2 C1 C0 Contador cclico programable 'Y0'= 1 si se alcanza un nmero de pulsos en la entrada 'D' igual al valor numrico en 'CBA' multiplicado por 10. (la combinacin '000' en 'CBA' pone 'Y0' a 1 permanentemente.) Ejemplo: 'CBA' = 101 (binario) = 5 (decimal); 'Y' = 1 cuando se introduzca el pulso 50 en 'D'.
15.13
Cada vez que se termine una operacion y se quiera ejecutar otra primero colocamos los interruptores C2, C1, C0, A, B, C, D en la posicin deseada y despues activamos el pulsador de reset. 2. Estudiar someramente el programa en cdigo fuente ayudndose de la lista de instrucciones del PIC. 3. Compilar el programa para obtener PRACTICA.HEX. 4. Montar el PIC en el programador JDMD y transferirle el programa con ic-prog. 5. Montar el PIC en placa protoboard y comprobar su funcionamiento.
Resultados
Notas
1. En el montaje de la prctica se vi necesario incluir un condensador para evitar rebotes en el pulsador de reset.
Efecto 01
0000, 0x00
Efecto 02
0001, 0x01
Efecto 03
0010, 0x02
Efecto 04
0011, 0x03
Efecto 05
0100, 0x04
Efecto 06
0101, 0x05
Efecto 07
0110, 0x06
Efecto 08
0111, 0x07
Efecto 09
1000, 0x08
Efecto 10
1001, 0x09
Efecto 11
1010, 0x0A
Efecto 12
1011, 0x0B
Efecto 13
1100, 0x0C
Efecto 14
1101, 0x0D
Efecto 15
1110, 0x0E
Efecto 16
1111, 0x0F
Esquema y funcionamiento
Montaje en Programador-Placa de desarrollo bsico, indicado en la siguiente figura dentro del recuadro. El resto de componentes se montan en la placa protoboard del programador.
Un circuito 555 como generador de onda cuadrada proporciona el control de velocidad regulable mediante un potencimetro. Si se requiere ms velocidad se puede cambiar el condensador de 10 uf por otro mas pequeo. La salida (patilla 3) se conecta al terminal RA4 del PIC.
Los interruptores se conectan a las patillas RA0, RA1, RA2 y RA3, con su correspondiente resistencia de 10k a positivo. Las patillas RB0 a RB7 son las salidas que atacan a los LED a travs de sus correspondientes resistencias. Programa: jluzpic.asm jluzpic.hex
La perturbacin que aparece como una oscilacin amortiguada cuando la seal est a nivel alto puede reducirse colocando un condensador de 100 nF entre las patillas de alimentacin del PIC.
;************************************************************** ;Programa E001.asm Fecha: 3 Diciembre 2004 ;Este programa suma dos valores inmediatos (7+8) y el resultado ;lo deposita en la posicin 0x10 ;Revisin: 0.0 Programa para PIC16F84 ;Velocidad de reloj: 4 MHz Instruccin: 1Mz=1 us ;Perro Guardin: deshabilitado Tipo de Reloj: XT ;Proteccin de cdigo: OFF ;************************************************************** LIST p=16F84 ;Tipo de PIC ;************************************************************** RESULTADO EQU 0x10 ;Define la posicin del resultado ;************************************************************** ORG 0 ;Comando que indica al Ensamblador ;la direccin de la memoria de programa ;donde situar la siguiente instruccin ;************************************************************** INICIO movlw 0x07 ;Carga primer sumando en W addlw 0x08 ;Suma W con segundo sumando movwf RESULTADO ;Almacena el resultado programa fuente END ;Fin del
El dispositivo dispone de 4 entradas de datos, D, C, B, A, 3 salidas Y2, Y1, Y0 y 3 seales de control C2, C1, C0.
Segn el estado de las entradas de control C2, C1, C0, en las salidas Y2, Y1, Y0 aparecer el estado que corresponder a una funcin predefinida para las variables de entrada D, C, B, A: C2 C1 C0 Funcin lgica en Y0 0 0 0 0 0 1 Y=A+B+C+D OR Y=A*B*C*D AND
0 0 1 1
1 1 0 0
0 1 0 1
C2 C1 C0 Contador cclico programable 'Y0'= 1 si se alcanza un nmero de pulsos en la entrada 'D' igual al valor numrico en 'CBA' multiplicado por 10. (la combinacin '000' en 'CBA' pone 'Y0' a 1 permanentemente.) Ejemplo: 'CBA' = 101 (binario) = 5 (decimal); 'Y' = 1 cuando se introduzca el pulso 50 en 'D'.
15.13
Cada vez que se termine una operacion y se quiera ejecutar otra primero colocamos los interruptores C2, C1, C0, A, B, C, D en la posicin deseada y despues activamos el pulsador de reset. 2. Estudiar someramente el programa en cdigo fuente ayudndose de la lista de instrucciones del PIC. 3. Compilar el programa para obtener PRACTICA.HEX. 4. Montar el PIC en el programador JDMD y transferirle el programa con ic-prog. 5. Montar el PIC en placa protoboard y comprobar su funcionamiento.
Resultados
Notas
1. En el montaje de la prctica se vi necesario incluir un condensador para evitar rebotes en el pulsador de reset.
Efecto 01
0000, 0x00
Efecto 02
0001, 0x01
Efecto 03
0010, 0x02
Efecto 04
0011, 0x03
Efecto 05
0100, 0x04
Efecto 06
0101, 0x05
Efecto 07
0110, 0x06
Efecto 08
0111, 0x07
Efecto 09
1000, 0x08
Efecto 10
1001, 0x09
Efecto 11
1010, 0x0A
Efecto 12
1011, 0x0B
Efecto 13
1100, 0x0C
Efecto 14
1101, 0x0D
Efecto 15
1110, 0x0E
Efecto 16
1111, 0x0F
Esquema y funcionamiento
Montaje en Programador-Placa de desarrollo bsico, indicado en la siguiente figura dentro del recuadro. El resto de componentes se montan en la placa protoboard del programador.
Un circuito 555 como generador de onda cuadrada proporciona el control de velocidad regulable mediante un potencimetro. Si se requiere ms velocidad se puede cambiar el condensador de 10 uf por otro mas pequeo. La salida (patilla 3) se conecta al terminal RA4 del PIC.
Los interruptores se conectan a las patillas RA0, RA1, RA2 y RA3, con su correspondiente resistencia de 10k a positivo. Las patillas RB0 a RB7 son las salidas que atacan a los LED a travs de sus correspondientes resistencias. Programa: jluzpic.asm jluzpic.hex
La perturbacin que aparece como una oscilacin amortiguada cuando la seal est a nivel alto puede reducirse colocando un condensador de 100 nF entre las patillas de alimentacin del PIC.
;************************************************************** ;Programa E001.asm Fecha: 3 Diciembre 2004 ;Este programa suma dos valores inmediatos (7+8) y el resultado ;lo deposita en la posicin 0x10 ;Revisin: 0.0 Programa para PIC16F84 ;Velocidad de reloj: 4 MHz Instruccin: 1Mz=1 us ;Perro Guardin: deshabilitado Tipo de Reloj: XT ;Proteccin de cdigo: OFF ;************************************************************** LIST p=16F84 ;Tipo de PIC ;************************************************************** RESULTADO EQU 0x10 ;Define la posicin del resultado ;************************************************************** ORG 0 ;Comando que indica al Ensamblador ;la direccin de la memoria de programa ;donde situar la siguiente instruccin ;************************************************************** INICIO movlw 0x07 ;Carga primer sumando en W addlw 0x08 ;Suma W con segundo sumando movwf RESULTADO ;Almacena el resultado programa fuente END ;Fin del
;************************************************************** ;Programa jluzpic.asm Fecha: 15 Diciembre 2005 ;Secuenciador de 8 Canales y 16 efectos. ; ;Revisin: 0.0 Programa para PIC16F84A ;Velocidad de reloj: 4 MHz Instruccin: 1Mz=1 us ;Perro Guardin: deshabilitado Tipo de Reloj: XT ;Basado en: ;cqpic.asm De Rueda Luis de: ;http://perso.wanadoo.es/luis_ju/proyect/cqpic.html ;que a su vez viene de otro proyecto de Jaime Bosch, publicado ;en la edicin n 21 de la revista "Electrnica Prctica actual" ;en septiembre del 2000 ;************************************************************** LIST P=PIC16F84A ; Pic a usar #INCLUDE <P16F84A.INC> ; Lista de etiquetas de microchip
; Fuses, configuran opciones externas de hardware para la programacion __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
;=================== Mapa de Memoria ====================== ;STATUS ;TRISA ;TRISB ;PORTA ;PORTB equ equ equ equ equ 0x03 0x05 0x06 0x05 0x06 0x0C ; Haciendo asignaciones
llaves equ
;============== Configuracin de puertos ================== ORG GOTO ORG inicio BSF MOVLW MOVWF MOVLW MOVWF BCF CLRF CLRF swich llaves) MOVF ANDLW XORLW BTFSC CALL MOVF XORLW 0x0000 inicio 0x0005 STATUS,5 0x1f TRISA 0x00 TRISB STATUS,5 PORTA PORTB PORTA,0 0x0F MOVWF llaves 0x00 STATUS,2 efect1 llaves,0 0x01 ; cambio al banco 1 del pic ; Asigna al puerto A como entrada ; ; ; ; y Al puerto B como salida Regresa al banco 0 limpia el puerto A limpia el puerto B
; carga w con el puerto A ; retiene los 4 bits de interes (las ; ; ; ; ; ; y los guarda en llaves verifica si es el primer efecto si es as lo llama y lo ejecuta sino, carga llaves en w y verifica si es el segundo efecto
BTFSC CALL MOVF XORLW BTFSC CALL MOVF XORLW BTFSC CALL MOVF XORLW BTFSC CALL MOVF XORLW BTFSC CALL MOVF XORLW BTFSC CALL MOVF XORLW BTFSC CALL MOVF XORLW BTFSC CALL MOVF XORLW BTFSC CALL MOVF XORLW BTFSC CALL MOVF XORLW BTFSC CALL MOVF XORLW BTFSC CALL MOVF XORLW BTFSC CALL MOVF XORLW BTFSC CALL MOVF XORLW BTFSC CALL GOTO
STATUS,2 efect2 llaves,0 0x02 STATUS,2 efect3 llaves,0 0x03 STATUS,2 efect4 llaves,0 0x04 STATUS,2 efect5 llaves,0 0x05 STATUS,2 efect6 llaves,0 0x06 STATUS,2 efect7 llaves,0 0x07 STATUS,2 efect8 llaves,0 0x08 STATUS,2 efect9 llaves,0 0x09 STATUS,2 efect10 llaves,0 0x0A STATUS,2 efect11 llaves,0 0x0B STATUS,2 efect12 llaves,0 0x0C STATUS,2 efect13 llaves,0 0x0D STATUS,2 efect14 llaves,0 0x0E STATUS,2 efect15 llaves,0 0x0F STATUS,2 efect16 swich
; ; ; ; ;
si es as lo llama y lo ejecuta y as con los dems ya me aburr como vers el resto es lo mismo
efect1 CLRF 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 CALL BCF
PORTB 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 clokon PORTB,5
; limpia el puerto B ; (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) ; (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) ; (00000011) ; (00100011) ; (00000011) ; (00010011) EFECTO
efect2 CLRF 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 BCF PORTB,6 BSF PORTB,5 CALL clokon BCF PORTB,5 BSF PORTB,4 CALL clokon
BCF BSF CALL BCF BSF CALL 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 BSF CALL BCF BSF CALL BCF BSF CALL BSF CALL BCF BSF CALL BSF CALL RETURN efect3 CLRF CALL BSF CALL BCF BSF CALL BCF BSF CALL BCF BSF CALL
PORTB,4 PORTB,3 clokon PORTB,3 PORTB,2 clokon PORTB,7 clokon PORTB,7 PORTB,6 clokon PORTB,6 PORTB,5 clokon PORTB,5 PORTB,4 clokon PORTB,4 PORTB,3 clokon PORTB,7 clokon PORTB,7 PORTB,6 clokon PORTB,6 PORTB,5 clokon PORTB,5 PORTB,4 clokon PORTB,7 clokon PORTB,7 PORTB,6 clokon PORTB,6 PORTB,5 clokon PORTB,7 clokon PORTB,7 PORTB,6 clokon PORTB,7 clokon PORTB clokon PORTB,0 clokon PORTB,0 PORTB,1 clokon PORTB,1 PORTB,2 clokon PORTB,2 PORTB,3 clokon
; (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)
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 BSF CALL BSF CALL BCF BSF CALL BCF BSF CALL BCF BSF CALL BCF
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 PORTB,5 clokon PORTB,0 clokon PORTB,0 PORTB,1 clokon PORTB,1 PORTB,2 clokon PORTB,2 PORTB,3 clokon PORTB,3
; (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) ; (11100000) ; (11100001) ; (11100000) ; (11100010) ; (11100000) ; (11100100) ; (11100000) ; (11101000) ; (11100000)
BSF CALL BSF CALL BCF BSF CALL BCF BSF CALL BCF BSF CALL BSF CALL BCF BSF CALL BCF BSF CALL BSF CALL BCF BSF CALL BSF CALL RETURN efect4 CLRF BSF BSF CALL BSF BSF CALL BSF BSF CALL BSF BSF CALL BCF BCF CALL BCF BCF CALL BCF BCF CALL BCF BCF CALL CALL BSF BSF CALL BSF BSF
PORTB,4 clokon PORTB,0 clokon PORTB,0 PORTB,1 clokon PORTB,1 PORTB,2 clokon PORTB,2 PORTB,3 clokon PORTB,0 clokon PORTB,0 PORTB,1 clokon PORTB,1 PORTB,2 clokon PORTB,0 clokon PORTB,0 PORTB,1 clokon PORTB,0 clokon PORTB PORTB,7 PORTB,0 clokon PORTB,6 PORTB,1 clokon PORTB,5 PORTB,2 clokon PORTB,4 PORTB,3 clokon PORTB,7 PORTB,0 clokon PORTB,6 PORTB,1 clokon PORTB,5 PORTB,2 clokon PORTB,4 PORTB,3 clokon clokon PORTB,3 PORTB,4 clokon PORTB,5 PORTB,2
; (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) ; (01111111) ; (01111110) ; (00111110) ; (00111100) ; (00011100) ; (00011000) ; (00001000) ; (00000000) ; (00001000) ; (00011000) ; (00111000) ; (00111100)
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 efect5 CLRF MOVLW MOVWF cinco BSF CALL MOVWF RLF valor a W MOVWF CALL CLRF CALL MOVWF CALL CLRF CALL MOVWF BTFSS GOTO CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL RETURN efect6 CLRF MOVLW MOVWF PORTB 0x01 PORTB STATUS,0 clokon PORTB PORTB,0 PORTB clokon PORTB clokon PORTB clokon PORTB clokon PORTB PORTB,7 cinco clokon PORTB,7 clokon PORTB,6 clokon PORTB,5 clokon PORTB,4 clokon PORTB,3 clokon PORTB,2 clokon PORTB,1 clokon
; (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 derecha y pasa el ; lo enva a la salida ; (00000000) ; repite ; (00000000) ; lo enva a la salida ; ve si termin de rotar ; (01111111) ; (00111111) ; (00011111) ; (00001111) ; (00000111) ; (00000011) ; (00000001)
tres
BCF CALL MOVWF RLF valor a W MOVWF CALL CLRF CALL MOVWF CALL CLRF CALL MOVWF BTFSS GOTO CALL RETURN efect7 CLRF CALL BSF 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
STATUS,0 clokon PORTB PORTB,0 PORTB clokon PORTB clokon PORTB clokon PORTB clokon PORTB PORTB,7 tres clokon PORTB 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,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
; pone a 0 el bit C de status (carry) ; lo enva a la salida ; rota a la derecha y pasa el ; 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) ; (00000000) ; (01000000) ; (00000000) ; (10000000) ; (11000000) ; (10000000) ; (10100000) ; (10000000) ; (10010000) ; (10000000) ; (10001000) ; (10000000) ; (10000100) ; (10000000) ; (10000010)
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 CALL BSF CALL BCF BSF CALL BCF BSF CALL BCF BSF CALL BSF CALL BCF BSF CALL BCF BSF CALL BSF CALL BCF BSF CALL BSF CALL BCF
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 clokon PORTB,2 clokon PORTB,2 PORTB,3 clokon PORTB,3 PORTB,4 clokon PORTB,4 PORTB,5 clokon PORTB,4 clokon PORTB,4 PORTB,3 clokon PORTB,3 PORTB,2 clokon PORTB,3 clokon PORTB,3 PORTB,4 clokon PORTB,3 clokon PORTB,2
; (10000000) ; (10000001) ; (10000011) ; (10000001) ; (10000101) ; (10000001) ; (10001001) ; (10000001) ; (10010001) ; (10000001) ; (10100001) ; (10000001) ; (11000001) ; (11100001) ; (11000001) ; (11010001) ; (11000001) ; (11001001) ; (11000001) ; (11000101) ; (11000001) ; (11000011) ; (11000111) ; (11000011) ; (11001011) ; (11000011) ; (11010011) ; (11000011) ; (11100011) ; (11110011) ; (11100011) ; (11101011) ; (11100011) ; (11100111) ; (11101111) ; (11100111) ; (11110111) ; (11111111) ; (11111011)
CALL BSF CALL BCF CALL BSF CALL BCF CALL BSF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL RETURN
clokon PORTB,2 clokon PORTB,1 clokon PORTB,1 clokon PORTB,0 clokon PORTB,0 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
; (11111111) ; (11111101) ; (11111111) ; (11111110) ; (11111111) ; (11111110) ; (11111100) ; (11111000) ; (11110000) ; (11100000) ; (11000000) ; (10000000) ; (00000000)
efect8 CALL efect3 CALL efect2 RETURN efect9 CLRF MOVLW MOVWF BSF rotar CALL RLF BTFSC GOTO CALL RETURN efect10 CLRF MOVLW MOVWF BSF rotar1 CALL RLF BTFSC GOTO rotar2 CALL RRF BTFSC GOTO CALL RETURN efect11 CLRF BSF PORTB 0xEE PORTB STATUS,0 clokon PORTB,1 PORTB,7 rotar clokon PORTB 0xFE PORTB STATUS,0 clokon PORTB,1 PORTB,7 rotar1 clokon PORTB,1 PORTB,0 rotar2 clokon PORTB PORTB,0
; combinan el efecto 3 ; con el efecto 2 ; ; ; ; limpia el puerto B comienza con (11101110) lo pasa a PORTB pone el carry a 1
; inicia la rotacin ; ve si termin de rotar ; sino contina ; termin, ver si cambi efecto ; ; ; ; limpia el puerto B comienza con (11111110) lo pasa a PORTB pone el carry a 1
; inicia la rotacin ; ve si termin de rotar ; sino contina ; ahora rota al revs ; ve si termin de rotar ; sino contina ; termin, ver si cambi efecto ; limpia el puerto B ; (00000001)
uno
dos
CALL BSF CALL BSF CALL BSF CALL BSF CALL BSF CALL BSF CALL BSF BCF CALL RRF BTFSC GOTO CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF BCF CALL RRF BTFSS GOTO CALL RETURN
clokon PORTB,1 clokon PORTB,2 clokon PORTB,3 clokon PORTB,4 clokon PORTB,5 clokon PORTB,6 clokon PORTB,7 STATUS,0 clokon PORTB,1 PORTB,0 uno clokon PORTB,1 clokon PORTB,2 clokon PORTB,3 clokon PORTB,4 clokon PORTB,5 clokon PORTB,6 STATUS,0 clokon PORTB,1 PORTB,0 dos clokon PORTB 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 clokon 0xFF PORTB clokon
; (00000011) ; (00000111) ; (00001111) ; (00011111) ; (00111111) ; (01111111) ; (11111111) ; pone el carry a 0 ; rotar uno apagado ; ve si es (11111110) ; sino contina ; (11111100) ; (11111000) ; (11110000) ; (11100000) ; (11000000) ; (10000000) ; pone el carry a 0 ; rotar uno encendido ; ve si es (00000001) ; sino contina ; termin, ver si cambi efecto ; limpia el puerto B ; (00000001) ; (00000011) ; (00000111) ; (00001111) ; (00011111) ; (00111111) ; (01111111) ; (11111111) ; (00000000) ; (11111111) enciendo todo
efect12 CLRF BSF CALL BSF CALL BSF CALL BSF CALL BSF CALL BSF CALL BSF CALL BSF CALL CLRF CALL MOVLW MOVWF CALL
CLRF CALL MOVLW MOVWF CALL CLRF CALL MOVLW MOVWF CALL CLRF CALL MOVLW MOVWF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL BCF CALL RETURN
PORTB clokon 0xFF PORTB clokon PORTB clokon 0xFF PORTB clokon PORTB clokon 0xFF PORTB clokon PORTB,7 clokon PORTB,6 clokon PORTB,5 clokon PORTB,4 clokon PORTB,3 clokon PORTB,2 clokon PORTB,1 clokon
; (00000000) ; (11111111) enciendo todo ; (00000000) ; (11111111) enciendo todo ; (00000000) ; (11111111) enciendo todo ; (01111111) ; (00111111) ; (00011111) ; (00001111) ; (00000111) ; (00000011) ; (00000001)
efect13 CLRF PORTB CALL trece RETURN efect14 CLRF PORTB BSF PORTB,7 DE 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
EFECTO ENCIENDE
; (10000001)----; (01000000) ; (01000010)----; (00100000) ; (00100100)----; (00010000) ; (00011000)----; (00111000) ; (00111100) ; (01111100) ; (01111110) ; (11111110) ; (11111111)
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 efect15 CLRF MOVLW MOVWF cuatro BCF CALL MOVWF RRF valor a W MOVWF CALL CLRF CALL MOVWF CALL CLRF CALL MOVWF BTFSS GOTO CALL RETURN efect16 CLRF BSF BCF bit) seis CALL RRF BTFSS GOTO CLRF BSF BCF siete CALL RLF BTFSS GOTO CALL RETURN PORTB 0x80 PORTB STATUS,0 clokon PORTB PORTB,0 PORTB clokon PORTB clokon PORTB clokon PORTB clokon PORTB PORTB,0 cuatro clokon PORTB PORTB,7 STATUS,0 clokon PORTB,1 PORTB,0 seis PORTB PORTB,0 STATUS,0 clokon PORTB,1 PORTB,7 siete clokon
; ; ; ;
limpia el puerto B comienza con (10000000) 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 ; lo enva a la salida ; (00000000) ; repite ; (00000000) ; lo enva a la salida ; ve si termin de rotar
; limpia el puerto B ; (10000000) ; pone a 0 el bit C de status (el 1 ; rota a la derecha ; ve si termin de rotar ; (00000000) ; (00000001) ; pone el carry a 0 ; rota a la izquierda ; ve si termin de rotar
;============ 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