Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - kal23

#1
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
te envie un MP por si podia modificar el metodo con un bin propio :D

Si amigo, obvio que podria modificar el bot con tu bin. Te respondi el mensaje. Saludos :D
#2
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Yo junto con un amigo realizamos uno parecido pero genera usuarios y contraseñas aleatorias, pero no lo compartimos por no querer quemar los metodos pero al igual se agradece y es algo muy sencillo solo con un click se ahorran esos pasos.

Eso es lo bueno de programar bot, facilita bastante tareas :) tambien llevo tiempo programando bot y cambiando por bin jajaja tenia unos cuantos de spotify, netflix, paypal, etc. Saludos amigo :)

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Muchas gracias por el BOT, lo voy a investigar, pues el método que utiliza parece sencillo pero a la vez muy eficaz.

Gracias,

Saludos.

Si amigo, el metodo es sencillo y eficaz. Por eso realice el bot :D saludos y gracias por comentar
#3
BOT realizada con UbotStudio 4. Es necesario contar con .Net Framework 3.5.  En el link del video se puede ver un tutorial para utilizar el BOT. Básicamente consiste en ingresar un usuario y contraseña nuevo, luego presionar PLAY y esperar a que genere la cuenta spotify premium por 1 mes. Se guarda en un txt ubicada en Desktop.

Método no esta trabajando, por esa razón el bot dejo de funcionar. Buscare métodos nuevos para actualizar el bot.

Video tutorial:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

download link:

Scan:



Link scan: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Código: text
Date:

11-08-15, 08:07:39

File:

SpotifyPremiumBot.exe

Size:

3814.222 kb

MD5:

6f3bff3a216ea338f704b4df1c05f873

SHA1:

a0007e3198d4887e26b8fb5adce035cad35b9704


Cuenta Spotify Premium de regalo.


Código: text
User: 51VNyUk
Pass: 9823775319
Date: 08/11/2015 19:17:19

User: 953Lcz3
Pass: 5715704972
Date: 08/11/2015 19:26:05

User: 21eX7Ac
Pass: 8063279169
Date: 08/11/2015 19:40:39

User: 31Ndpau
Pass: 5178772771
Date: 08/11/2015 20:09:58

User: 69rc246
Pass: 2671265280
Date: 08/12/2015 15:44:06

User: 32IsNyO
Pass: 1883632069
Date: 08/12/2015 15:56:23


Se utilizo un método paypal Aleman.
#4
Programa desarrollado en CCS PCWH Compiler. Consiste en demostrar en funcionamiento de básico de entradas y salidas. Se demostrara mediante un pulsador. Almacenaremos las veces que se ha pulsado en una variable y luego usaremos esa variable para encender dos led de acuerdo a la cantidad de pulsos, con el tercer pulso la variable volverá a 0.

Código: c

#include <16f690.h>  //librería de microcontrolador 16f690
#fuses HS, NOWDT, INTRC_IO //Configuración de fusibles, al final dejaré una tabla con los fusibles validos para este micro y para que son.
#USE delay(Clock=4000000)  //velocidad del cristal que usaremos.
#byte portc=0x07 //Uso de puerto C
#byte porta=0x05 //Uso de puerto A


void main()

   
   set_tris_c(0x00); //Puerto C como Salidas en Hexadecimal
   set_tris_a(0b00011111); //Puerto A como entradas y salidas en Hexdecimal es 0x1F
   porta=0x00; //Inicializamos el puerto A en 0
   portc=0x00; //Inicializamos el puerto C en 0
   int a; //Variable unsigned "a" de 8 bits donde almacenaremos los pulsos.
   a=0; //Le asignamos el valor 0 para iniciar.
   
 
   for(;;) //Bucle infinito, estaremos leyendo constantemente el bucle.
   { 
     
      if (input(pin_a4)==1) //Si presionamos el pulsador, que estará conectado en el Pin A4.
      {
         a=a+1; //Sumaremos 1 a la variable "a"
      }

      switch(a)  //sentencia de selección
      {
         case 1:  //en caso que "a" sea 1
                  delay_ms(200); //Esperamos 200 milisegundos (Anti rebote del pulsador)
                  portc=0x01; //Daremos un High en el Pin C0 (1 lógico = 5 Volt)
                  break;  //continúa la ejecución de las instrucciones que le sigue
         case 2:  //en caso que "a" sea 2
                  portc=0x02; //Daremos un High en el Pin C1 (1 lógico = 5 Volt)
                  delay_ms(200); //Esperamos 200 milisegundos (Anti rebote del pulsador)
                  break; //continúa la ejecución de las instrucciones que le sigue
         case 3: //en caso que "a" sea 3
                  portc=0x00; //Volvemos a 0 todo el puerto C (0 lógico = 0 Volt)
                  delay_ms(200); //Esperamos 200 milisegundos (Anti rebote del pulsador)
                  break;  //continúa la ejecución de las instrucciones que le sigue
         default: //Si el valor que toma "a" no coincide con los valores especificados, se realizarán las acciones definidas en la etiqueta default
                  a=0; // la variable "a" vuelve a 0.
                 
      }
     
   }
 
}


Lista de fusibles validos para PIC 16f690

1.00   LP   Low power osc < 200 khz
1.00   XT   Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
1.00   HS   High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
1.00   EC_IO   External clock
1.00   INTRC_IO   Internal RC Osc, no CLKOUT
1.00   INTRC   Internal RC Osc
1.00   RC_IO   Resistor/Capacitor Osc
1.00   RC   Resistor/Capacitor Osc with CLKOUT
1.03   WDT   Watch Dog Timer
1.03   NOWDT   No Watch Dog Timer
1.04   PUT   Power Up Timer
1.04   NOPUT   No Power Up Timer
1.05   MCLR   Master Clear pin enabled
1.05   NOMCLR   Master Clear pin used for I/O
1.06   PROTECT   Code protected from reads
1.06   NOPROTECT   Code not protected from reading
1.07   CPD   Data EEPROM Code Protected
1.07   NOCPD   No EE protection
1.08   NOBROWNOUT   No brownout reset
1.08   BROWNOUT   Reset when brownout detected
1.08   BROWNOUT_NOSL   Brownout enabled during operation, disabled during SLEEP
1.08   BROWNOUT_SW   Brownout controlled by configuration bit in special file register
1.10   IESO   Internal External Switch Over mode enabled
1.10   NOIESO   Internal External Switch Over mode disabled
1.11   NOFCMEN   Fail-safe clock monitor disabled
1.11   FCMEN   Fail-safe clock monitor enabled

Diagrama electrónico en proteus.

.

link de descarga del proyecto: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#5
Programa donde se muestra el funcionamiento y configuración de Timer0, y se demuestra el funcionamiento con led.

Código: asm

;**********************************************************************
;    Timer0                                                           *
;**********************************************************************
;    Requiere archivos: P16F690.INC
;
;**********************************************************************
;    Notas:
;    Ejercicio para instrucciones para uso de Timer0                  *
;**********************************************************************


#include <p16F690.inc>
     __config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)

     cblock     0x20
    Display
     endc

     org 0

Inicio:
     bsf       STATUS,RP0
     movlw     b'00000111'    ; Configura Timer0.
               ; --0-----       T0CS = 0, Reloj interno
               ; ---0----       T0SE = 0, Incremento por flanco de subida
               ; ----0---       PSA = 0, Prescaler a Tomer0
               ; -----111       Prescaler 1/256
     movwf     OPTION_REG
     clrf      TRISC          ; Todo PORTC será salida
     clrf      Display        ; Display comienza en cero
     bcf       STATUS,RP0


Principal:
     btfss     INTCON,T0IF    ; Espera hasta que el Timer0 desborde
     goto      Principal
     bcf       INTCON,T0IF    ; La bandera debe ser puesta a cero por software
     incf      Display,f      ; Incrementa Display
     movf      Display,w      ; Envía a los LEDs
     movwf     PORTC
     goto      Principal

     end          ;Fin del programa



descargar programa: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#6
Consiste en un programa básico desarrollado en ASM. para microcontrolador PIC 16f690. La función es entender y demostrar el funcionamiento de la conversión A/D. La señal análoga es proporcionada por un potenciometro, la cual es transformada en digital y se puede ver por el puerto C del microcontrolador.

Código: asm

;**********************************************************************
;    Conversión Análogo/Digital                                       *
;**********************************************************************
;    Requiere archivos: P16F690.INC
;                       RETARDOS.INC
;**********************************************************************
;    Notas:
;    Ejercicio para instrucciones básicas de conversión A/D           *
;**********************************************************************

#include <p16F690.inc>
     __config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)

     cblock 0x20
     ;no se requieren variables auxiliares
     endc

     org 0
Start:
     bsf       STATUS,RP0     ; Abre página de registro 1
     movlw     0xFF
     movwf     TRISA          ; PORTA será sólo entradas
     clrf      TRISC          ; PORTC será sólo salidas
     movlw     0x10           ; Frecuencia de conversión = Fosc/8
     movwf     ADCON1

     bcf       STATUS,RP0     ; Abre página de registro 2
     bsf       STATUS,RP1
     movlw     0xFF           ; Todos los pines de PORTA serán entradas analógicas
     movwf     ANSEL
     bcf       STATUS,RP0     ; Regresa a página de registro 0
     bcf       STATUS,RP1

     movlw     b'00000001'    ; Configura conversión A/D
     movwf     ADCON0
               ; 0-------       Justificación izquierda
               ; -0------       Referencia a Vdd
               ; --0000--       Selecciona Canal 00 (AN0)
               ; -------1       Habilita conversor A/D

Principal:
     call      Retardo_5micros ; Retardo de 5 us para inicializar conversor
     bsf       ADCON0,GO       ; Inicia conversión
     btfss     ADCON0,GO       ; el bit cambiará a cero cuando la conversión se complete
     goto      $-1

     movf      ADRESH,w        ; Lee el resultado de la conversión
     movwf     PORTC           ; y lo envía a los leds.
     goto      Principal

     Include     <RETARDOS.INC>
     end                            ;Fin del programa



Video de funcionamiento del conversor, solo habia 4 led en la placa entrenadora del pickit 2, asi que no se ven los 8 bits de conversión, pero sirve para entender el funcionamiento.


Link de descarga del proyecto:No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#7
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Que buenos aportes has dejado!
Muchisimas gracias bro!!

Saludos!
ANTRAX

ANTRAX?? ;D soy tu admirador!!! un genio en malwares y seguridad informática. jajaja

Saludos.
#8
Puedes usar el circuito de esta web "minifuente de 5V que los obtiene directamente de la red de 220V sin necesidad de transformador." No tienes permitido ver los links. Registrarse o Entrar a mi cuenta .Es super reducito  si sabes como diseñar pcb con componentes SMD.

Ahora el asunto para la comparaciones lógicas es bastante sencillo si estas usando el integrado ht12d. Con un microcontrolador de gama baja podrías hacer todo en una placa 5x5cm , desarrolle un proyecto parecido pero controlaba de manera inalambrica el paso por 0 de la corriente alterna para manejar las tensiones de un motor alterno. 

Supongo que sabes programar algun tipo de microcotrolador (PIC, AVR, etc) si estas desarrollando un sistema domótico. Ahora si no sabes seria recomendable que aprendieras y reducirías bastante el tamaño de la PCB y podrías desarrollar sistemas embebidos complejos para un sistema inteligente.

Saludos
#9
Dudas y pedidos generales / Re:Protoboard
Enero 23, 2014, 07:07:43 PM
Si haces un corto circuito por un tiempo prologando es posible que el puerto usb se queme. te recomiendo poner unos diodos rectificadores para evitar que la corriente se retorne en caso de un corto circuito.









PinNombreColor del cableDescripción
1VCCRojo+5v
2D−Blanco Data −
3D+VerdeData +
4GNDNegroMasa

Pin 1  ------|>|-------- |
                  D1       __|__
                            |carga|
                             ---|---           
Pin 4   -----|>|-------- |
                  D2

Aunque la placa del Puerto USB debe tener algún sistema de protección.

Saludos
#10
Consiste en un contador desde 000 hasta 999 y después de terminar el conteo, comienza automáticamente desde 000.

Código: asm

;**********************************************************************
;    Contador binario                                       
;**********************************************************************
;    Requiere archivos: P16F690.INC
;                       RETARDOS.INC                               
;**********************************************************************

;**********************************************************************

list p=16f690 ;Especifica microcontrolador
#include <P16F690.inc>

;Fusibles de configuración
     __config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)

;ZONA DE DECLARACIÓN DE VARIABLES
;********************************
    cblock 0x20
    Cuenta        ;Registro para llevar el conteo
    Unidad        ;Variable que lleva el conteo de unidades
    Decena        ;Variable que lleva el conteo de Decenas
    Centena       ;Variable que lleva el conteo de Centenas
    Digito
    endc

;Define nombres descriptivos para constantes y puertos
#define DISPLAY PORTC


;INICIALIZACION
;********************************
ORG 0x00 ;vector de reset

;Registros de configuración
bsf     STATUS,RP0  ;Selecciona página #1
    clrf    TRISC       ;PORTC será salida
    clrf    TRISA       ;PORTA será salida
bcf     STATUS,RP0 ;Regresa a página #0
;Inicialización de variables
    clrf    Cuenta      ;Cuenta comienza en cero
    clrf    Unidad      ;comienza en cero
    clrf    Decena      ;comienza en cero
    clrf    Centena     ;comienza en cero

;INSTRUCCIONES
;------------------------------------------------
Inicio
    incf    Cuenta,f        ;Incrementa el contador
                            ;(Para el resto de instrucciones no estamos
                            ;usando este registro aún)
ComparaUnidad
    movf    Unidad,w        ;Carga el registro Unidad en W
    sublw   .9             ;Compara con 9 (9 - Unidad)
    btfsc   STATUS,Z        ;¿Unidad = 9?
    goto    IncrementaDecena ;Sí, incrementa decena
    goto    IncrementaUnidad ;No, incrementa unidad
IncrementaUnidad
    incf    Unidad          ;Incrementa Unidad
    goto    ComparaCentena   ;Salta a ComparaCentena
IncrementaDecena
    incf    Decena          ;Incrementa Decena
    clrf    Unidad          ;Vuelve unidad a Cero
    goto    ComparaCentena   ;Salta a ComparaCentena

ComparaCentena
    movf    Decena,w        ;Carga el registro Unidad en W
    sublw   .10            ;Compara con 9 (9 - Decena)
    btfsc   STATUS,Z        ;¿Decena = 9?
    goto    IncrementaCentena ;Sí, incrementa decena
    goto    MuestraValores ;No, hace un salto a la etiqueta "MuestraValores"

IncrementaCentena
    incf    Centena        ;Incrementa Centena
    ;con esta parte del progrma vuelvo a 0 la variable centena cuando llega a 9
    ;para iniciar nuevamente el ciclo de conteo
    movf    Centena,w        ;Carga el registro Centena en W
    sublw   .1,5            ;Compara con 10 (10 - Centena)
    btfsc   STATUS,Z        ;¿Centena = 10?
    clrf    Centena ;Sí, Deja en 0 la variable Centena
    clrf    Decena ;No, Deja en 0 la variable Decena




MuestraValores
    call    EnviaUnidad     ;Activa el display de unidades
    movf    Unidad,W        ;Carga en W el valor guardado en Unidad
    call    MuestraDigito   ;lo envía al display
    call    Retardo_10ms

    call    EnviaDecena     ;Activa el display de decenas
    movf    Decena,W        ;Carga en W el valor guardado en Decena
    call    MuestraDigito   ;lo envía al display
    call    Retardo_10ms

    call    EnviaCentena     ;Activa el display de Centenas
    movf    Centena,W        ;Carga en W el valor guardado en Centena
    call    MuestraDigito   ;lo envía al display
    call    Retardo_10ms

goto    Inicio

;SUBRUTINAS
;------------------------------------------------
;MuestraDigito selecciona el dígito a mostrar en display.
;Subrutinas Envia0 - Envia9 dibujan el dígito correspondiente
;en un display de 7 segmentos. EnviaE dibuja el caracter "E".
;La subrutina activa los segmentos de un display de cátodo común
;según la siguiente configuración:
;DISPLAY CATODO COMUN:       g   f   e   d   c   b   a
;PUERTO "DISPLAY" (PORTC):   RC6 RC5 RC4 RC3 RC2 RC1 RC0

MuestraDigito
    movwf   Digito      ;Carga el valor de W en Dígito
    movlw   .0          ;Compara con 0
    xorwf   Digito,W
    btfsc   STATUS,Z    ;Cuenta = 0?
    goto    Envia0      ;Sí: Envia Dígito
    movlw   .1          ;No: Compara con 1
    xorwf   Digito,W
    btfsc   STATUS,Z    ;Cuenta = 1?
    goto    Envia1      ;Sí: Envia Dígito
    movlw   .2          ;No: Compara con 2
    xorwf   Digito,W
    btfsc   STATUS,Z    ;Cuenta = 2?
    goto    Envia2      ;Sí: Envia Dígito
    movlw   .3          ;No: Compara con 3
    xorwf   Digito,W
    btfsc   STATUS,Z    ;Cuenta = 3?
    goto    Envia3      ;Sí: Envia Dígito
    movlw   .4          ;No: Compara con 4
    xorwf   Digito,W
    btfsc   STATUS,Z    ;Cuenta = 4?
    goto    Envia4      ;Sí: Envia Dígito
    movlw   .5          ;No: Compara con 5
    xorwf   Digito,W
    btfsc   STATUS,Z    ;Cuenta = 5?
    goto    Envia5      ;Sí: Envia Dígito
    movlw   .6          ;No: Compara con 6
    xorwf   Digito,W
    btfsc   STATUS,Z    ;Cuenta = 6?
    goto    Envia6      ;Sí: Envia Dígito
    movlw   .7          ;No: Compara con 7
    xorwf   Digito,W
    btfsc   STATUS,Z    ;Cuenta = 7?
    goto    Envia7      ;Sí: Envia Dígito
    movlw   .8          ;No: Compara con 8
    xorwf   Digito,W
    btfsc   STATUS,Z    ;Cuenta = 8?
    goto    Envia8      ;Sí: Envia Dígito
    movlw   .9          ;No: Compara con 9
    xorwf   Digito,W
    btfsc   STATUS,Z    ;Cuenta = 9?
    goto    Envia9      ;Sí: Envia Dígito


Envia0
    movlw   b'00111111'
    movwf   DISPLAY
    return
Envia1
    movlw   b'00000110'
    movwf   DISPLAY
    return
Envia2
    movlw   b'01011011'
    movwf   DISPLAY
    return
Envia3
    movlw   b'01001111'
    movwf   DISPLAY
    return
Envia4
    movlw   b'01100110'
    movwf   DISPLAY
    return
Envia5
    movlw   b'01101101'
    movwf   DISPLAY
    return
Envia6
    movlw   b'01111100'
    movwf   DISPLAY
    return
Envia7
    movlw   b'00000111'
    movwf   DISPLAY
    return
Envia8
    movlw   b'01111111'
    movwf   DISPLAY
    return
Envia9
    movlw   b'01100111'
    movwf   DISPLAY
    return


EnviaUnidad
    movlw   b'00000110'
    movwf   PORTA
    return
EnviaDecena
    movlw   b'00000101'
    movwf   PORTA
    return
EnviaCentena
    movlw   b'00000011'
    movwf   PORTA
    return

    INCLUDE  <RETARDOS.INC> ;Libreria de retardos
    END ;Fiin del programa.



Esquemático en Proteus:



Link de descarga del proyecto: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#11
Viendo el post que hizo "mr.blood" sobre programación ASM para PIC, quise colaborar aportando algunos programas sencillos.

Este proyecto consiste en controlar 2 motores paso a paso desde un pic 16f690, El sistema de control consiste en pulsadores para mover los motores en diferentes sentidos y sensores para no sobrepasar el limite del eje. Lo hice de esta manera porque use este programa para controlar el brazo de una CNC. También tiene una modalidad de prueba automática, que se activa presionando los 4 pulsadores al mismo tiempo.

Espero que sea de su utilidad.

Código: asm


list p=16f690 ;Especifica microcontrolador
#include <P16F690.inc>

;Opciones de configuración
     __config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)

; '__CONFIG' se utiliza para acceder a opciones de configuración desde un archivo .asm
; Las etiquetas a que se hace referencia están definidas en el archivo .inc correspondiente
; Refiérase a la hoja de datos para conocer la función de casa etiqueta

;ZONA DE DECLARACIÓN DE VARIABLES
;********************************
    cblock 0x20
Delay1                   ;Define 2 variables para retardo
Delay2                   ;en las posiciones 0x20 y 0x21
     endc

;INICIALIZACION
;********************************
     ORG 0x00 ;vector de reset

     CLRF    STATUS ;Selecciona página #1

     bsf       STATUS,RP0     ; Abre página de registro 1
     movlw     b'11011111'
     movwf     TRISA          ; A5 salida, el resto entradas

     movlw     0xF0
     movwf     TRISB          ; PORTB será sólo entradas

     clrf      TRISC          ; PORTC será sólo salidas

     bcf       STATUS,RP0     ; Abre página de registro 2
     bsf       STATUS,RP1
     movlw     0x00           ; Todos los pines de PortA serán entradas digitales
     movwf     ANSEL
     movlw     0x00           ; Todos los pines de PortB serán entradas digitales
     movwf     ANSELH
     bcf       STATUS,RP0     ; Regresa a página de registro 0
     bcf       STATUS,RP1


;INSTRUCCIONES
;------------------------------------------------
main:                         ;inicio
    clrf PORTA                ;Iniciar en 0 Puerto A
    clrf PORTB                ;Iniciar en 0 Puerto B
    clrf PORTC                ;Iniciar en 0 Puerto C
test:                   ;En esta subrutina se verificara si los 4 entradas están activas
    BTFSS       PORTA,0 ;Si Port A0 = 0 salta a la etiqueta up, si es 1 verificara el estado de A1
    goto        up
    BTFSS       PORTA,1 ;Si Port A1 = 0 salta a la etiqueta up, si es 1 verificara el estado de A2
    goto        up
    BTFSS       PORTA,2 ;Si Port A2 = 0 salta a la etiqueta up, si es 1 verificara el estado de A4
    goto        up
    BTFSS       PORTA,4 ;Si Port A4 = 0 salta a la etiqueta up, si es 1 verificara salta a la  subrutina Test_Motor
    goto        up
    goto        Test_Motor
up:
    BTFSS       PORTA,0       ;Si PORT A0 es 1 salta una linea, si es 0 lee la siguiente
    goto        down          ;Ir a etiqueta Down
    BTFSS       PORTB,4       ;Si Port B4 esta en 0 leerá linea siguiente
                              ;Sistema de seguridad asociado a Sensor 1
    goto        Motor_Up      ;Ir a subrutina Motor_Up
    goto        main          ;Volver a etiqueta main
down:
    BTFSS       PORTA,1       ;Si PORT A1 es 1 salta una linea
    goto        left
    BTFSS       PORTB,5
    goto        Motor_Down
    goto        main
left:
    BTFSS       PORTA,2       ;Si PORT A2 es 1 salta una linea
    goto        right
    BTFSS       PORTB,6
    goto        Motor_Left
    goto        main
right:
    BTFSS       PORTA,4       ;Si PORT A4 es 1 salta una linea
    goto        main
    BTFSS       PORTB,7
    goto        Motor_Right
    goto        main

;Subrutinas
;--------------------------------------------------

Motor_Up:  ;Con esa subrutina el motor 1 gira hacia la izquierda
    movlw    b'00000011'
    movwf      PORTC
    bsf        PORTA,5        ;Enciende led indicador
    call    Retardo_100ms
    movlw    b'00000110'
    movwf      PORTC
    call    Retardo_100ms
    movlw    b'00001100'
    movwf      PORTC
    call    Retardo_100ms
    movlw    b'00001001'
    movwf      PORTC
    bcf        PORTA,5        ;Apaga led indicador
    call    Retardo_100ms
    goto    main

Motor_Down: ;Con esa subrutina el motor 1 gira hacia la derecha
    movlw    b'00001100'
    movwf      PORTC
    bsf        PORTA,5        ;Enciende led indicador
    call    Retardo_100ms
    movlw    b'00000110'
    movwf      PORTC
    call    Retardo_100ms
    movlw    b'00000011'
    movwf      PORTC
    call    Retardo_100ms
    movlw    b'00001001'
    movwf      PORTC
    bcf        PORTA,5        ;Apaga led indicador
    call    Retardo_100ms
    goto    main

Motor_Left: ;Con esa subrutina el motor 2 gira hacia la izquierda
    movlw    b'00110000'
    movwf      PORTC
    bsf        PORTA,5        ;Enciende led indicador
    call    Retardo_100ms
    movlw    b'01100000'
    movwf      PORTC
    bcf        PORTA,5        ;Apaga led indicador
    call    Retardo_100ms
    movlw    b'11000000'
    movwf      PORTC
    bsf        PORTA,5        ;Enciende led indicador
    call    Retardo_100ms
    movlw    b'10010000'
    movwf      PORTC
    bcf        PORTA,5        ;Apaga led indicador
    call    Retardo_100ms
    goto    main

Motor_Right: ;Con esa subrutina el motor 1 gira hacia la derecha
    movlw    b'11000000'
    movwf      PORTC
    bsf        PORTA,5        ;Enciende led indicador
    call    Retardo_100ms
    movlw    b'01100000'
    movwf      PORTC
    bcf        PORTA,5        ;Apaga led indicador
    call    Retardo_100ms
    movlw    b'00110000'
    movwf      PORTC
    bsf        PORTA,5        ;Enciende led indicador
    call    Retardo_100ms
    movlw    b'10010000'
    movwf      PORTC
    bcf        PORTA,5        ;Apaga led indicador
    call    Retardo_100ms
    goto    main

Test_Motor:

    bsf        PORTA,5        ;Enciende led indicador
    Motor1_Up:                ;Motor 1 girara hacia la izquierda
    movlw    b'00000011'
    movwf      PORTC
    call    Retardo_100ms
    movlw    b'00000110'
    movwf      PORTC
    call    Retardo_100ms
    movlw    b'00001100'
    movwf      PORTC
    call    Retardo_100ms
    movlw    b'00001001'
    movwf      PORTC
    call    Retardo_100ms
    BTFSS       PORTB,4     ;Si Port B4 = 0, lee la linea siguiente, si es 1 Salta una linea
    goto Motor1_Up   ;Si Port B4 (Sensor1) es 0, vuelve a leer la subrutina Motor1_Up
    goto        Motor1_Down ;Si Port B4 es 1 saltara a la subrutina Motor1_Down
    Motor1_Down:            ;Motor 1 girara hacia la derecha
    movlw    b'00001100'
    movwf      PORTC
    call    Retardo_100ms
    movlw    b'00000110'
    movwf      PORTC
    call    Retardo_100ms
    movlw    b'00000011'
    movwf      PORTC
    call    Retardo_100ms
    movlw    b'00001001'
    movwf      PORTC
    call    Retardo_100ms
    BTFSS       PORTB,5     ;Si Port B5 = 0, lee la linea siguiente, si es 1 Salta una linea
    goto Motor1_Down ;Si Port B5 (Sensor2) es 0, vuelve a leer la subrutina Motor1_Down
    goto        Motor2_Left ;Si Port B5 es 1 saltara a la subrutina Motor1_Left
    Motor2_Left:            ;Motor 2 girara hacia la izquierda
    movlw    b'00110000'
    movwf      PORTC
    call    Retardo_100ms
    movlw    b'01100000'
    movwf      PORTC
    call    Retardo_100ms
    movlw    b'11000000'
    movwf      PORTC
    call    Retardo_100ms
    movlw    b'10010000'
    movwf      PORTC
    call    Retardo_100ms
    BTFSS       PORTB,6      ;Si Port B6 = 0, lee la linea siguiente, si es 1 Salta una linea
    goto Motor2_Left  ;Si Port B6 (Sensor3) es 0, vuelve a leer la subrutina Motor1_Left
    goto        Motor2_Right ;Si Port B6 es 1 saltara a la subrutina Motor1_Right
    Motor2_Right:            ;Motor 2 girara hacia la Derecha
    movlw    b'11000000'
    movwf      PORTC
    call    Retardo_100ms
    movlw    b'01100000'
    movwf      PORTC
    call    Retardo_100ms
    movlw    b'00110000'
    movwf      PORTC
    call    Retardo_100ms
    movlw    b'10010000'
    movwf      PORTC
    call    Retardo_100ms
    BTFSS       PORTB,7       ;Si Port B7 = 0, lee la linea siguiente, si es 1 Salta una linea
    goto Motor2_Right  ;Si Port B7 (Sensor4) es 0, vuelve a leer la subrutina Motor1_Right
    clrf        PORTC         ;Si Port B7 es 1 limpia Port C
    bcf         PORTA,5       ;Si Port B7 es 1 Apaga Led indicador
    goto        main          ;Si Port B7 es 1 Vuelve a la etiqueta main


    Include <RETARDOS.INC>  ;Incluimos la libreria llamada RETARDOS.INC
    END                 ;fin del programa


Adjunto el circuito esquemático para la simulación en proteus, de igual forma dejare al final del post el .DSN, las librerías que utilice y el .ASM



Link de descarga del proyecto completo: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta