Por favor, echarme una mano que soy incapaz de hacer que funcione. Y lo tengo que entregar ya.
Ya se que es mucho pedir, pero es que estoy en un aprieto.
Me podrías decir si esta rutina esta bien para mandar un comando, porque proteus me está diciendo que el comando que llega al sht11 no se puede implementar o está reserbado:
;--------------------- Manda comando AL SHT11 ------------------------------
SHT11_CMD movwf CMData ;guarda el comando en variable
bsf STATUS,5 ;banco 1
bcf TRISA,2 ;puertos como salida
bcf TRISA,1
bcf STATUS,5 ;banco 0
bSf PORTA,1 ;DATA a 1 (por defecto)
bCf PORTA,2 ;CLK
nop ;espera un poco
nop
nop
nop
nop
bsf PORTA,2 ;CLK
bcf PORTA,1 ;DATA (pulso bajo)
bcf PORTA,2 ;CLK
nop
bsf PORTA,2 ;CLK
bsf PORTA,1 ;DATA (por defecto alto)
bcf PORTA,2 ;CLK
clrf sincbit
bcf STATUS,C ;borra carry
bsf STATUS,5 ;banco 1
bcf TRISA,1 ;pone DATA port,0 como salida
bcf STATUS,5 ;banco 0
bcf STATUS,5 ;banco 0
movlw 0x00
MOVWF sincbit
cont_send rlf CMData,F ;rota a la izquierda, bit alto en carry
;envio de datos segun el protocolo del sht11
send_data btfsc CMData,7 ;comprueba si es 1 o 0
goto uno ;
cero bcf PORTA,2 ;SCK falling edge -_
bcf PORTA,1 ;DATA change
bsf PORTA,2 ;SCK rising edge _-
goto sht11_compTX ;salta
uno bcf PORTA,2 ;SCK falling edge -_
bsf PORTA,1 ;DATA change
bsf PORTA,2 ;SCK rising edge _-
;Comprobacion para 8 rotaciones, una por bit del comando.
sht11_compTX movlw 0x07 ;comprobacion 8 bits
subwf sincbit,W ;Compara
btfsc STATUS,Z ;Es el ultimo?
goto waitACK ;Si,
incf sincbit,f ;Incrementa numero de sincbit
goto cont_send ;Vuelve a escribir
;///////////////////////////////////////////////////////////////////////////
;---------------- Espera la llegada de ACK desde el sensor -----------------
waitACK bsf STATUS,5 ;banco 1
bsf TRISA,1 ;pone DATA port,0 como entrada
bcf STATUS,5 ;banco 0
nop
nop
nop
nop
nop
ACKrx bcf PORTA,2 ;SCK falling edge
nop
nop
nop
nop
nop ;5uS de retardo
bsf PORTA,2 ;SCK rising edge
btfsc PORTA,1 ;comprueba data
goto ACKrx ;NO, bucle
bcf PORTA,2 ;SCK falling edge estado bajo por defecto
;ack desde SHT11 detectado y llegada de datos
adqtime btfsc PORTA,1 ;comprueba data
goto adqtime ;NO, bucle
return