         list     p=16F877 ;Se indica el modo de procesador
         errorlevel-302
          radix   hex
ADCON1   EQU      0X9F
d1       equ      20            
d2       equ      21
d3       equ      22
reg1     equ      23
;----------------------------------------------------------------------------
		org 	0x00		;vector de inicio
                  goto     inicio
		org 	0x05		;despues del vector de interrupcion
         
inicio            clrf     0x08
                  bsf      3,5
                  movlw    0x06              ;Puerto A en modo digital
                  movwf    ADCON1
                  movlw    B'00000000'
                  movwf    0X08
                  movlw    b'000000'   ;todo salidas
                  movwf    0x05
                  movlw    b'00000000'
                  movwf    0x06
                  movlw    b'00000000'
                  movwf    0x07
                  bcf      3,5
		
                  clrf     0X05            
                  clrf     0X06           
                  clrf     0X07
                  clrf     0x08
                  clrf     reg1
                  call     segund
         
                  bsf      0x05,0     ;si quito esta linea no funciona
                  call     us27
                  bsf      3,5        ;banco 1
                  movlw    b'000001'  ;ra,0 como entrada
                  movwf    0x05
                  bcf      3,5        ;banco 0

pasa              btfss    0x5,0
                  goto     $-1
                  btfsc    0x05,0    ;2 pulsos iniciales
                  goto     $-1
as                btfss    0x05,0
                  goto     $-1
                  btfsc    0x05,0    ;espera a que de ponga bajo ra,0
                  goto     $-1
                  incf     reg1,0
                  movwf    reg1
                  xorlw    .40  ;no llega a 41
                  btfsc    3,2
                  goto     pp
                  goto     as
pp                movf     reg1,0
                  movwf    reg1
                  movwf    0x08      ;lo visualizo en rd
                  call     segund
                  clrf      0x08
                  call     segund
                  call     aqui
                  clrf     reg1
                  goto     pasa

aqui              clrf     0x08
                  clrf     0x05
                  clrf     reg1
                  bsf      3,5
                  movlw    b'000000'   ;todo salidas
                  movwf    0x05
                  bcf      3,5
                  call     segund
         
                  bsf      0x05,0     ;si quito esta linea no funciona
                  call     us27
                  bsf      3,5        ;banco 1
                  movlw    b'000001'  ;ra,0 como entrada
                  movwf    0x05
                  bcf      3,5        ;banco 0
                  return
;-------------------------------------------------------------------
segund    movlw    .255
         movwf    d1
qq       movlw    .240
         movwf    d2
tt       movlw    .4
         movwf    d3             ;1 segundo
dd       decfsz   d3,1
         goto     dd
         decfsz   d2,1
         goto     tt
         decfsz   d1,1
         goto     qq
         return
;--------------------------------------------------------------------       
us27     movlw    0x07
         movwf    d1
l1       decfsz   d1,1     ;retardo de 27us
         goto     l1
         nop
         return
;----------------------------------------------------------------------
         end
                       



                  
		
