         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
tempdeci equ      24
tempente equ      25
humdeci  equ      26
humente  equ      27
ckm      equ      28
reg3     equ      29
cantidadbit       equ      30
;----------------------------------------------------------------------------
		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'    ;todo salidas
                  movwf    0X08
                  movlw    b'000000'     ;todo salidas
                  movwf    0x05
                  movlw    b'00000000'    ;todo salidas
                  movwf    0x06
                  movlw    b'00000000'    ;todo salidas
                  movwf    0x07
                  bcf      3,5
                  call     segund        ;tiempo para pasarlo a entradas
                  clrf     0X05            
                  clrf     0X06           
                  clrf     0X07
                  clrf     0x08
                  clrf     reg1
                  clrf     reg3
                  clrf     tempdeci 
                  clrf     tempente 
                  clrf     humdeci  
                  clrf     humente  
                  clrf     ckm
                  movlw    .40
                  movwf    cantidadbit
         
                  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
loop
                  btfsc    0x05,0     ;espero que llegue el 0
                  goto     $-1
                  btfss    0x05,0     ;espero que llegue el 1
                  goto     $-1

                  call     us40     ;retardo 40us
                  btfss    0x05,0
                  goto     escero

                  bsf      ckm,0
                  goto     rotar
escero            bcf      ckm,0

rotar             decf     cantidadbit,1
                  btfsc    3,2
                  goto     rotar    ;aqui va un return no se de donde lo llamas
                  rlf      tempdeci,1
                  rlf      tempente,1 
                  rlf      humdeci,1  
                  rlf      humente,1 
                  rlf      ckm ,1
                  movf     tempente,1
                  movwf    0x08
                  movf     humente,1
                  movwf    0x07
                  goto     loop

;-------------------------------------------------------------------
segund    movlw    .255
         movwf    d1
qq       movlw    .240
         movwf    d2
tt       movlw    .4
         movwf    d3             ;retardo 1 segundo
dat       decfsz   d3,1
         goto     dat
         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
;-------------------------------------------------------------------
us40     movlw    0x0d
         movwf    d1
l7       decfsz   d1,1          ;retardo de 40us
         goto     l7
         return   
;------------------------------------------------------------------------
us70     movlw    0x15
         movwf    d1
l3       decfsz   d1,1          ;retardo de 70us
         goto     l3
         goto     $+1
         return   

         end
                       



                  
		
