este es un pequeño proyecto que hice espero lo disfruten y les sirva. aparte quisiera un auxilio porque quiero mejorarlo haciendo que estas secuencias puedan causar el efecto estroboscopico pero con leds de alta luminosidad, si alguien gusta o puede prestarme ayuda se lo agradezco.
LIST P=16F628A
INCLUDE <P16F628A.INC>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
;_CONFIG 3ff9H ; CP OFF, PWRTE DISABLED, WDTE DISABLED, XT OSCILLATOR
CBLOCK 0CH; UTILIZAMOS EL CBLOCK PARA CREAR UNA LISTA DE VARIABLES A PARTIR DE LA DIRECCIÓN 0X0C.SE IRÁN INCREMENTANDO DE 1 EN 1
R0;
R1;
R2;
CONT;
CONT1;
ENDC
;#DEFINE Z STATUS,2
;#DEFINE RP0 STATUS,5
;#DEFINE C STATUS,0
ORG 00H ; COMIENZO DEL PROGRAMA
GOTO START
ORG 0100H;
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; RETARDOS <
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
RETARDO; RETARDO DE APROX 1,18 SEG
MOVLW .6
MOVWF R2
MOVLW .255
MOVWF R1
MOVLW .255
MOVWF R0
DECFSZ R0,1
GOTO $-1
DECFSZ R1,1
GOTO $-5
DECFSZ R2,1
GOTO $-9
RETURN
RETARDO1; RETARDO DE APROX 1,57 SEG
MOVLW .8
MOVWF R2
LOOP2 MOVLW .255
MOVWF R1
LOOP1 MOVLW .255
MOVWF R0
LOOP DECFSZ R0,1
GOTO LOOP
DECFSZ R1,1
GOTO LOOP1
DECFSZ R2,1
GOTO LOOP2
CALL VERIFICAR
RETURN
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; CONFIGURACIÓN DE LOS PUERTOS I/O <
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
PORTS
CLRF PORTA; INICIALIZACIÓN DE LOS PUERTOS
CLRF PORTB
BSF STATUS,RP0 ; SE ACCEDE AL BANCO 1
MOVLW B'00011100';
MOVWF TRISA; SE CONFIGURA EL PUERTOA HACIENDO RA2, RA3 Y RA4 COMO ENTRADAS
;CLRF TRISB; COLOCA EL TRISB HACIENDO EL PUERTO B DE SALIDA
MOVLW B'00000000'
MOVWF TRISB; SE CONFIGURA EL PUERTOB HACIENDO TODOS SUS PINES DE SALIDA
BCF STATUS,RP0; NOS DEVOLVEMOS AL BANCO 0
GOTO PROGRAM
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; ¡AQUÍ COMIENZA LO BUENO! =) <
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
START
CALL RETARDO; VERIFICAR SI ESTÁ BIEN UBICADO ESTE RETARDO , POWER ON TIMER ?
CLRF CONT; INICIALIZAMOS EL CONTADOR
MOVLW .40
MOVFW CONT1
GOTO PORTS
PROGRAM
BTFSc PORTA,2; VERIFICAMOS SI ESTÁ EN AUTOMÁTICO (0) Ó MANUAL (1)
GOTO AUTO;
GOTO MANU;
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; FUNCIONAMIENTO MANUAL <
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
MANU
BTFSC PORTA,3 ; SE VERIFICA SI HAY UN "1" EN EL PULSADOR INCREMENTAR
GOTO SUBIR;
BTFSC PORTA,4 ; SE VERIFICA SI HAY UN "1" EN EL PULSADOR DECREMENTAR
GOTO BAJAR;
GOTO PROGRAM
VERIFICAR; VERIFICA SI HAN PULSADO EL PULSADOR MIENTRAS ESTÁ EN LAS SECUENCIAS
BTFSC PORTA,3 ; SE VERIFICA SI HAY UN "1" EN EL PULSADOR INCREMENTAR
INCF CONT,1
BTFSC PORTA,4 ; SE VERIFICA SI HAY UN "1" EN EL PULSADOR DECREMENTAR
DECF CONT,1
RETURN
;****************************************************************
BAJAR
DECF CONT,1
CALL SECUENCIAS
GOTO PROGRAM
SUBIR
INCF CONT,1
CALL SECUENCIAS
GOTO PROGRAM
SECUENCIAS
MOVLW .10
XORWF CONT,0
BTFSC STATUS,Z; SE VERIFICA SI EL VALOR OBTENIDO DE LA XOR DA = 0 ó <> 0
CALL SECUENCIA10
;
MOVLW .9
XORWF CONT,0
BTFSC STATUS,Z;
CALL SECUENCIA9
;
MOVLW .8
XORWF CONT,0
BTFSC STATUS,Z
CALL SECUENCIA8
;
MOVLW .7
XORWF CONT,0
BTFSC STATUS,Z;
CALL SECUENCIA7
;
MOVLW .6
XORWF CONT,0
BTFSC STATUS,Z
CALL SECUENCIA6
;
MOVLW .5
XORWF CONT,0
BTFSC STATUS,Z;
CALL SECUENCIA5
;
MOVLW .4
XORWF CONT,0
BTFSC STATUS,Z
CALL SECUENCIA4
;
MOVLW .3
XORWF CONT,0
BTFSC STATUS,Z;
CALL SECUENCIA3
;
MOVLW .2
XORWF CONT,0
BTFSC STATUS,Z
CALL SECUENCIA2
;
MOVLW .1
XORWF CONT,0
BTFSC STATUS,Z
CALL SECUENCIA1
RETURN
;*******************************************************************
SECUENCIA10; CONTEO DESDE 0 HASTA 15
MOVLW .0;
MOVFW PORTB
CALL RETARDO1
MOVLW .1;
MOVFW PORTB
CALL RETARDO1
MOVLW .2;
MOVFW PORTB
CALL RETARDO1
MOVLW .3;
MOVFW PORTB
CALL RETARDO1
MOVLW .4;
MOVFW PORTB
CALL RETARDO1
MOVLW .5;
MOVFW PORTB
CALL RETARDO1
MOVLW .6;
MOVFW PORTB
CALL RETARDO1
MOVLW .7;
MOVFW PORTB
CALL RETARDO1
MOVLW .8;
MOVFW PORTB
CALL RETARDO1
MOVLW .9;
MOVFW PORTB
CALL RETARDO1
MOVLW .10;
MOVFW PORTB
CALL RETARDO1
MOVLW .11;
MOVFW PORTB
CALL RETARDO1
MOVLW .12;
MOVFW PORTB
CALL RETARDO1
MOVLW .13;
MOVFW PORTB
CALL RETARDO1
MOVLW .14;
MOVFW PORTB
CALL RETARDO1
MOVLW .15;
MOVFW PORTB
CALL RETARDO1
CLRF CONT
RETURN
SECUENCIA9; NúMEROS PARES
MOVLW .2;
MOVFW PORTB
CALL RETARDO1
MOVLW .4;
MOVFW PORTB
CALL RETARDO1
MOVLW .6;
MOVFW PORTB
CALL RETARDO1
MOVLW .8;
MOVFW PORTB
CALL RETARDO1
MOVLW .10;
MOVFW PORTB
CALL RETARDO1
MOVLW .12;
MOVFW PORTB
CALL RETARDO1
MOVLW .14;
MOVFW PORTB
CALL RETARDO1
MOVLW .16;
MOVFW PORTB
CALL RETARDO1
MOVLW .18;
MOVFW PORTB
CALL RETARDO1
MOVLW .20;
MOVFW PORTB
CALL RETARDO1
MOVLW .22;
MOVFW PORTB
CALL RETARDO1
MOVLW .24;
MOVFW PORTB
CALL RETARDO1
MOVLW .26;
MOVFW PORTB
CALL RETARDO1
MOVLW .28;
MOVFW PORTB
CALL RETARDO1
MOVLW .30;
MOVFW PORTB
CALL RETARDO1
MOVLW .0;
MOVFW PORTB
CALL RETARDO1
RETURN
SECUENCIA8; NÚMEROS IMPARES
MOVLW .1;
MOVFW PORTB
CALL RETARDO1
MOVLW .3;
MOVFW PORTB
CALL RETARDO1
MOVLW .5;
MOVFW PORTB
CALL RETARDO1
MOVLW .7;
MOVFW PORTB
CALL RETARDO1
MOVLW .9;
MOVFW PORTB
CALL RETARDO1
MOVLW .11;
MOVFW PORTB
CALL RETARDO1
MOVLW .13;
MOVFW PORTB
CALL RETARDO1
MOVLW .15;
MOVFW PORTB
CALL RETARDO1
MOVLW .17;
MOVFW PORTB
CALL RETARDO1
MOVLW .19;
MOVFW PORTB
CALL RETARDO1
MOVLW .21;
MOVFW PORTB
CALL RETARDO1
MOVLW .23;
MOVFW PORTB
CALL RETARDO1
MOVLW .25;
MOVFW PORTB
CALL RETARDO1
MOVLW .27;
MOVFW PORTB
CALL RETARDO1
MOVLW .29;
MOVFW PORTB
CALL RETARDO1
MOVLW .31;
MOVFW PORTB
CALL RETARDO1
RETURN
SECUENCIA7; DESDE 31 AL 16
MOVLW .31;
MOVFW PORTB
CALL RETARDO1
MOVLW .30;
MOVFW PORTB
CALL RETARDO1
MOVLW .29;
MOVFW PORTB
CALL RETARDO1
MOVLW .28;
MOVFW PORTB
CALL RETARDO1
MOVLW .27;
MOVFW PORTB
CALL RETARDO1
MOVLW .26;
MOVFW PORTB
CALL RETARDO1
MOVLW .25;
MOVFW PORTB
CALL RETARDO1
MOVLW .24;
MOVFW PORTB
CALL RETARDO1
MOVLW .23;
MOVFW PORTB
CALL RETARDO1
MOVLW .22;
MOVFW PORTB
CALL RETARDO1
MOVLW .21;
MOVFW PORTB
CALL RETARDO1
MOVLW .20;
MOVFW PORTB
CALL RETARDO1
MOVLW .19;
MOVFW PORTB
CALL RETARDO1
MOVLW .18;
MOVFW PORTB
CALL RETARDO1
MOVLW .17;
MOVFW PORTB
CALL RETARDO1
MOVLW .16;
MOVFW PORTB
CALL RETARDO1
RETURN
SECUENCIA6; INCREMENTA Y DECREMENTA
MOVLW .31;
MOVFW PORTB
CALL RETARDO1
MOVLW .1;
MOVFW PORTB
CALL RETARDO1
MOVLW .30;
MOVFW PORTB
CALL RETARDO1
MOVLW .2;
MOVFW PORTB
CALL RETARDO1
MOVLW .29;
MOVFW PORTB
CALL RETARDO1
MOVLW .3;
MOVFW PORTB
CALL RETARDO1
MOVLW .28;
MOVFW PORTB
CALL RETARDO1
MOVLW .4;
MOVFW PORTB
CALL RETARDO1
MOVLW .27;
MOVFW PORTB
CALL RETARDO1
MOVLW .5;
MOVFW PORTB
CALL RETARDO1
MOVLW .26;
MOVFW PORTB
CALL RETARDO1
MOVLW .4;
MOVFW PORTB
CALL RETARDO1
MOVLW .25;
MOVFW PORTB
CALL RETARDO1
MOVLW .5;
MOVFW PORTB
CALL RETARDO1
MOVLW .24;
MOVFW PORTB
CALL RETARDO1
MOVLW .6;
MOVFW PORTB
CALL RETARDO1
RETURN
SECUENCIA5; PRIMOS + OTROS
MOVLW .1;
MOVFW PORTB
CALL RETARDO1
MOVLW .2;
MOVFW PORTB
CALL RETARDO1
MOVLW .3;
MOVFW PORTB
CALL RETARDO1
MOVLW .5;
MOVFW PORTB
CALL RETARDO1
MOVLW .7;
MOVFW PORTB
CALL RETARDO1
MOVLW .11;
MOVFW PORTB
CALL RETARDO1
MOVLW .13;
MOVFW PORTB
CALL RETARDO1
MOVLW .17;
MOVFW PORTB
CALL RETARDO1
MOVLW .19;
MOVFW PORTB
CALL RETARDO1
MOVLW .23;
MOVFW PORTB
CALL RETARDO1
MOVLW .29;
MOVFW PORTB
CALL RETARDO1
MOVLW .31;
MOVFW PORTB
CALL RETARDO1
MOVLW .25;
MOVFW PORTB
CALL RETARDO1
MOVLW .9;
MOVFW PORTB
CALL RETARDO1
MOVLW .12;
MOVFW PORTB
CALL RETARDO1
MOVLW .6;
MOVFW PORTB
CALL RETARDO1
RETURN
SECUENCIA4; ALEATORIO
MOVLW .24;
MOVFW PORTB
CALL RETARDO1
MOVLW .10;
MOVFW PORTB
CALL RETARDO1
MOVLW .19;
MOVFW PORTB
CALL RETARDO1
MOVLW .2;
MOVFW PORTB
CALL RETARDO1
MOVLW .25;
MOVFW PORTB
CALL RETARDO1
MOVLW .14;
MOVFW PORTB
CALL RETARDO1
MOVLW .8;
MOVFW PORTB
CALL RETARDO1
MOVLW .17;
MOVFW PORTB
CALL RETARDO1
MOVLW .0;
MOVFW PORTB
CALL RETARDO1
MOVLW .30;
MOVFW PORTB
CALL RETARDO1
MOVLW .13;
MOVFW PORTB
CALL RETARDO1
MOVLW .28;
MOVFW PORTB
CALL RETARDO1
MOVLW .5;
MOVFW PORTB
CALL RETARDO1
MOVLW .9;
MOVFW PORTB
CALL RETARDO1
MOVLW .15;
MOVFW PORTB
CALL RETARDO1
MOVLW .1;
MOVFW PORTB
CALL RETARDO1
RETURN
SECUENCIA3; NO SÉ QUÉ MÁS INVENTAR xD decrementa de 5 en 5 y luego de 3 en 3
MOVLW .30;
MOVFW PORTB
CALL RETARDO1
MOVLW .25;
MOVFW PORTB
CALL RETARDO1
MOVLW .20;
MOVFW PORTB
CALL RETARDO1
MOVLW .15;
MOVFW PORTB
CALL RETARDO1
MOVLW .5;
MOVFW PORTB
CALL RETARDO1
MOVLW .0;
MOVFW PORTB
CALL RETARDO1
MOVLW .30;
MOVFW PORTB
CALL RETARDO1
MOVLW .3;
MOVFW PORTB
CALL RETARDO1
MOVLW .6;
MOVFW PORTB
CALL RETARDO1
MOVLW .9;
MOVFW PORTB
CALL RETARDO1
MOVLW .12;
MOVFW PORTB
CALL RETARDO1
MOVLW .18;
MOVFW PORTB
CALL RETARDO1
MOVLW .21;
MOVFW PORTB
CALL RETARDO1
MOVLW .24;
MOVFW PORTB
CALL RETARDO1
MOVLW .27;
MOVFW PORTB
CALL RETARDO1
MOVLW .31;
MOVFW PORTB
CALL RETARDO1
RETURN
SECUENCIA2; CANCION 2 Y 2 SON 4 4 Y NADA SON 6 Y MULTIPLICAR POR 3 CON SUS RESULTADOS
MOVLW .0;
MOVFW PORTB
CALL RETARDO1
MOVLW .2;
MOVFW PORTB
CALL RETARDO1
MOVLW .4;
MOVFW PORTB
CALL RETARDO1
MOVLW .6;
MOVFW PORTB
CALL RETARDO1
MOVLW .8;
MOVFW PORTB
CALL RETARDO1
MOVLW .16;
MOVFW PORTB
CALL RETARDO1
MOVLW .3;
MOVFW PORTB
CALL RETARDO1
MOVLW .5;
MOVFW PORTB
CALL RETARDO1
MOVLW .15;
MOVFW PORTB
CALL RETARDO1
MOVLW .9;
MOVFW PORTB
CALL RETARDO1
MOVLW .27;
MOVFW PORTB
CALL RETARDO1
MOVLW .18;
MOVFW PORTB
CALL RETARDO1
MOVLW .7;
MOVFW PORTB
CALL RETARDO1
MOVLW .21;
MOVFW PORTB
CALL RETARDO1
MOVLW .10;
MOVFW PORTB
CALL RETARDO1
MOVLW .30;
MOVFW PORTB
CALL RETARDO1
RETURN
SECUENCIA1; RESTAR MIS NUMEROS FAVORITOS
MOVLW .29;
MOVFW PORTB
CALL RETARDO1
MOVLW .9;
MOVFW PORTB
CALL RETARDO1
MOVLW .20;
MOVFW PORTB
CALL RETARDO1
MOVLW .28;
MOVFW PORTB
CALL RETARDO1
MOVLW .4;
MOVFW PORTB
CALL RETARDO1
MOVLW .24;
MOVFW PORTB
CALL RETARDO1
MOVLW .27;
MOVFW PORTB
CALL RETARDO1
MOVLW .22;
MOVFW PORTB
CALL RETARDO1
MOVLW .5;
MOVFW PORTB
CALL RETARDO1
MOVLW .19;
MOVFW PORTB
CALL RETARDO1
MOVLW .11;
MOVFW PORTB
CALL RETARDO1
MOVLW .8;
MOVFW PORTB
CALL RETARDO1
MOVLW .0;
MOVFW PORTB
CALL RETARDO1
MOVLW .13;
MOVFW PORTB
CALL RETARDO1
MOVLW .10;
MOVFW PORTB
CALL RETARDO1
MOVLW .3;
MOVFW PORTB
CALL RETARDO1
RETURN
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; FUNCIONAMIENTO AUTOMÁTICO <
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
AUTO
CALL AUTO_SEC
DECF CONT1,1
GOTO PROGRAM
CONT1_INI
MOVLW .40
MOVWF CONT1
RETURN
AUTO_SEC
MOVLW .40
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA4
;
MOVLW .39
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA7
;
MOVLW .38
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA9
;
MOVLW .37
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA1
;
MOVLW .36
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA5
;
MOVLW .35
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA3
;
MOVLW .34
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA6
;
MOVLW .33
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA2
;
MOVLW .32
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA10
;
MOVLW .31
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA8
;
MOVLW .30
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA5
;
MOVLW .29
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA3
;
MOVLW .28
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA9
;
MOVLW .27
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA2
;
MOVLW .26
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA1
;
MOVLW .25
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA8
;
MOVLW .24
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA4
;
MOVLW .23
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA6
;
MOVLW .22
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA7
;
MOVLW .21
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA10
;
MOVLW .20
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA8
;
MOVLW .19
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA10
;
MOVLW .18
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA5
;
MOVLW .17
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA4
;
MOVLW .16
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA7
;
MOVLW .15
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA1
;
MOVLW .14
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA3
;
MOVLW .13
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA9
;
MOVLW .12
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA2
;
MOVLW .11
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA6
;
MOVLW .10
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA2
;
MOVLW .9
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA7
;
MOVLW .8
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA5
;
MOVLW .7
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA10
;
MOVLW .6
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA3
;
MOVLW .5
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA9
;
MOVLW .4
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA4
;
MOVLW .3
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA1
;
MOVLW .2
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA6
;
MOVLW .1
XORWF CONT1,0
BTFSC STATUS,Z
CALL SECUENCIA8
;
MOVLW .0
XORWF CONT1,0
BTFSC STATUS,Z
CALL CONT1_INI
RETURN
END