;---------------Encabezado-----------

	__CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC
	LIST	   P=16F84A
	INCLUDE  <P16F84A.INC>

;-------Configuración de puertos-------

    cblock  0x0c
	PDel0
	PDel1
	Veces
	Alto
	Bajo
	Alto_T
	Bajo_T
	ContadorD
    endc

	ORG	0x00
	GOTO	Inicio
	;ORG	0X04		; Atiendo la interrupción

Inicio	
    BSF	    STATUS,5                  ; configurando puertos
	MOVLW   B'00011111'
    MOVWF   TRISA
    CLRF	TRISB	                ; puerto B es salida
	BCF	    STATUS,5
	CLRF	PORTB		; limpiamos PORTB
    
Cargar  
    BCF     PORTB,3   ; Va a pin 7 del L293D
    MOVLW   d'100'
    MOVWF   Veces    ; numero de veces que se repite el pulso
    MOVLW	d'0'   
    MOVWF   Alto
    MOVWF   Alto_T
    MOVLW	d'10'   
    MOVWF   Bajo
    MOVWF   Bajo_T
     
Periodo   
    MOVF    Bajo_T,W
    SUBLW	D'10'
    BTFSS   STATUS,Z        ; Si Bajo_t=0 salta y ejecuta Periodo_Bajo
    CALL    Periodo_Alto
    
    MOVF    Alto_T,W
    SUBLW	D'10'
    BTFSS  STATUS,Z        ; Si Bajo_t=0 salta y ejecuta Periodo_Alto 
    CALL    Periodo_Bajo   
    
    DECFSZ  Veces
    Goto    Periodo
    Goto    Incr_Decr
Periodo_Alto
    BSF     PORTB,1      ; Va a pin 1 del L293D Enable
    BSF     PORTB,2      ; Va a pin 2 del L293D
    MOVF    Alto_T,w
    MOVWF   ContadorD
    CALL    DEMORA1000X?
    RETURN
Periodo_Bajo
    BCF     PORTB,1      ; Va a pin 1 del L293D Enable
    BCF     PORTB,2      ; Va a pin 2 del L293D
    MOVF    Bajo_T,w
    MOVWF   ContadorD
    CALL    DEMORA1000X?
    RETURN
Incr_Decr    
    MOVLW   d'100'
    MOVWF   Veces
    INCF    Alto_T,F
    DECFSZ  Bajo_T
    MOVF    Alto_T,W
    SUBLW	D'11'
    BTFSS   STATUS,Z
    Goto    Periodo
    Goto    Cargar
    
 
;esta demora originamente es de 1000 ciclos pero al enviar por ej. 2
;seria de 2000 ciclo,  la variable contadorD hace esto
DEMORA1000X?	
        MOVLW	.74
	    MOVWF	PDel0
	    MOVLW	.2
	    MOVWF	PDel1
LOOP	
        DECFSZ	PDel0,F
	    GOTO	LOOP
	    DECFSZ	PDel1,F
	    GOTO	LOOP
	    decfsz	ContadorD		; decrementa cantidad de veces
        goto	DEMORA1000X?
	    Return  

        END

