Anda di halaman 1dari 32

Prcticas

Prctica 0010. Suma


1. Sumar dos nmeros y depositar el resultado en una posicin de memoria. A partir de la informacin en MPLAB escribir un programa en lenguaje ensamblado, E001.ASM, compilarlo y simularlo.

Ver simulacin en la arquitectura del PIC

Prctica 0020. Operador programable


1. PRACTICA.ASM: Operador programable de 4 bits mediante el PIC:

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 Suma binaria en Y2Y1Y0 de DC y BA 1 1 0 Y2Y1Y0 = DC + BA (Ejemplo: 11 + 11 = 110)

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'.

DISPOSITIVOS LGICOS MICROPROGRAMABLES

Dispositivos lgicos microprogramables Prctica de microcontroladores PIC

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.

Prctica 0030. Secuenciador de luces


La prctica trata de un secuenciador de luces controlado mediante un PIC16f84. El secuenciador dispone de 8 canales, esto es 8 salidas distintas que pueden controlar 8 luces o grupos de ellas. El juego de luces del secuenciador permite mostrar 16 efectos distintos segn se establezca la posicin de 4 interruptores. La velocidad a la que se muestran los movimientos se estavlecen mediante un potencimetro. Nota: La practica est basada en un proyecto de 2001 traido desde http://perso.wanadoo.es/luis_ju/proyect/cqpic.html de Rueda Luis 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.

Efectos del secuenciador de luces


A continuacin se muestran los 16 efectos del secuenciador y la posicin de los interruptores. Tambin se indica el nmero en binario y en hexadecimal que se obtiene con los interruptores:

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

Simplificacin del circuito


Para simplificar el montaje se puede prescindir del circuito integrado 555 y que sea el PIC quien genere la temporizacin. Tambin se sustituye el oscilador a cristal por uno RC de manera que colocando una resistencia variable en la red RC se consigue un control de velocidad.

Programa: jluzpic2.asm jluzpic2.hex

Seal de reloj en el osciloscopio

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

Prctica 0010. Suma


1. Sumar dos nmeros y depositar el resultado en una posicin de memoria. A partir de la informacin en MPLAB escribir un programa en lenguaje ensamblado, E001.ASM, compilarlo y simularlo.

Ver simulacin en la arquitectura del PIC

Prctica 0020. Operador programable


1. PRACTICA.ASM: Operador programable de 4 bits mediante el PIC:

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

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 Suma binaria en Y2Y1Y0 de DC y BA 1 1 0 Y2Y1Y0 = DC + BA (Ejemplo: 11 + 11 = 110)

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'.

DISPOSITIVOS LGICOS MICROPROGRAMABLES

Dispositivos lgicos microprogramables Prctica de microcontroladores PIC

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.

Prctica 0030. Secuenciador de luces


La prctica trata de un secuenciador de luces controlado mediante un PIC16f84. El secuenciador dispone de 8 canales, esto es 8 salidas distintas que pueden controlar 8 luces o grupos de ellas. El juego de luces del secuenciador permite mostrar 16 efectos distintos segn se establezca la posicin de 4 interruptores. La velocidad a la que se muestran los movimientos se estavlecen mediante un potencimetro. Nota: La practica est basada en un proyecto de 2001 traido desde http://perso.wanadoo.es/luis_ju/proyect/cqpic.html de Rueda Luis 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.

Efectos del secuenciador de luces


A continuacin se muestran los 16 efectos del secuenciador y la posicin de los interruptores. Tambin se indica el nmero en binario y en hexadecimal que se obtiene con los interruptores:

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

Simplificacin del circuito


Para simplificar el montaje se puede prescindir del circuito integrado 555 y que sea el PIC quien genere la temporizacin. Tambin se sustituye el oscilador a cristal por uno RC de manera que colocando una resistencia variable en la red RC se consigue un control de velocidad.

Programa: jluzpic2.asm jluzpic2.hex

Seal de reloj en el osciloscopio

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

; almacenara el STATUS de las llaves

;============== 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

; Comienza a revisar de nuevo

;======================== Efectos =========================

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)

CALL BCF CALL RETURN

clokon PORTB,6 clokon

; (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)

; limpia el puerto B ; (00000001) ; (00000000) ; (00000010) ; (00000000) ; (00000100) ; (00000000) ; (00001000)

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)

PORTB 0x01 PORTB

; limpia el puerto B ; comienza con (00000001) ; lo enva a la salida

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

; limpia el puerto B ; ejecuta parte del efecto 1 ; limpia el puerto B ; (10000000)

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

; (11110111) ; (11100111) ; (11000111) ; (11000011) ; (10000011) ; (10000001) ; (00000001) ; (00000000)

; ; ; ;

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

;========================= final ========================== END

Anda mungkin juga menyukai