Autor Tema: sht11 programa  (Leído 1574 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado judex

  • PIC10
  • *
  • Mensajes: 7
sht11 programa
« en: 27 de Enero de 2012, 14:42:08 »
hola amigos, he conseguido este programa de un libro de basic, pero no comprendo unas pocas cosas de el y me gustaria saber si podriais ayudarme a comprenderlas. el programa funciona bien pero como dije no entiende esas cositas.lo pongo y os comento mis dudas
1 DEFINE OSC 8
2 DEFINE LCD_DREG PORTB   
3 DEFINE LCD_DBIT 4   
4 DEFINE LCD_RSREG PORTB
5 DEFINE LCD_RSBIT 0      
6 DEFINE LCD_EREG PORTB   
 7 DEFINE LCD_EBIT 1   
 8 CONTROL VAR BYTE             
 9 ISI1    VAR BYTE      
 10 ISI2    VAR BYTE      
 11 U1      VAR BYTE        
 12 U2      VAR BYTE
 13 H0      VAR HAM.BYTE0
 14 H1      VAR HAM.BYTE1
 15 HAM     VAR WORD
 16 RAI    var word
 17 ISI     VAR WORD
 18 P1      VAR WORD
 19 P2      VAR WORD
20 P3      VAR WORD            
 21 W       VAR WORD
 22 DTA     VAR PORTC.4
 23 CLK     VAR PORTC.5    
 24 ISARET  VAR BIT  
 25 HATA    var BIT
 26 PORTC=0
 27 PORTB=0
 28 TRISC=0
 29 TRISB=0
 30 INICIO:
     31   CONTROL=%00000101
       32 HAM=0
      33 GOSUB CONTROL_PULSO
   34     GOSUB DATO_HUMEDAD
      35  GOSUB HUMEDAD      
      36  PAUSE 50
       37 CONTROL=%00000011
       38 HAM=0
       39 RAI=HAM  
      40  GOSUB CONTROL_PULSO
        41 Gosub DATO_TEMPERATURA
     42   GOSUB TEMPERATURA          
43 HUMEDAD:    
   44     LCDOut $FE,2
    45    LCDOut "    HUME = ",DEC U1 , "," , DEC1 U2," % "
   46   RETURN           
 47 TEMPERATURA:    
     48   LCDOut $FE,$C0  
   49     if ISARET=1 THEN  
      50    LCDOut "    TEMP =-",DEC ISI1 , "," , DEC1 ISI," C "
       51   RETURN  
       52 endIF  
     53   LCDOut "    TEMP = ",DEC ISI1 , "," , DEC1 ISI2," C "
     54   RETURN          
55 EMPEZAR:
   56     OUTPUT DTA
      57  OUTPUT CLK
    58    HIGH DTA
   59     LOW CLK
   60     PAUSE 1
   61     HIGH CLK
      62  LOW DTA
     63   PAUSE 1
    64    LOW CLK
     65   PAUSE 1
     66   HIGH CLK
     67   PAUSE 1
     68   HIGH DTA
   69     LOW CLK
     70   RETURN
71 RESET:  
   72     OUTPUT DTA
     73   OUTPUT CLK
     74   high DTA=1
     75   FOR W=0 TO 9
   76     HIGH CLK
    77    pause 1
     78   LOW CLK
      79  Next W
      80  Return
81 CONTROL_PULSO:
   81     GOSUB EMPEZAR
      83  SHIFTOUT DTA,CLK,1,[CONTROL]
    84    INPUT DTA
    85    PULSOUT CLK,10
    86    HATA=0
   87     FOR W=0 to 65500
      88     IF DTA=0 then SALIR
    89    NEXT W
     90   HATA=1        
 91 SALIR:  
     92   SHIFTIN DTA,CLK,0,[H1]
    93    OUTPUT DTA
      94  LOW DTA
      95  PULSOUT CLK,10
     96   INPUT DTA
    97    SHIFTIN DTA,CLK,0,[H0]
       98  PULSOUT CLK,10
      99  RETURN
100 DATO_TEMPERATURA:
     101   if ham<4200 then
       102   ISARET=1
       103   ISI1=(4200-HAM)/100
      104    ISI2=((4200-ham)//100)/10
     105     goto EXCESO
      106  endif
    107    ISI1=(HAM-3850)/100
    108    ISI2=((HAM-3850)//100)/10
109 EXCESO:
     110   if HAM>16384 then
       111   ISI1=0
    112      ISI2=0
   113     endif  
    114    RETURN          
115 DATO_HUMEDAD:
    116    p1=(28542-(54722**ham+ham))**ham-80    
   117     P2=655+(HAM*5)+(HAM**15917)         
   118     P3=(P2**2480)-(P2**2730)+P1  
   119     U1=p3/10
    120    U2=p3//10
 121       IF ham>3710 THEN
  122        u1=0
   123       U2=0
   124     ENDIF  
   125     return      

1. en la linea 13,14, pone var ham.byte0, hambyte1, que significa esto?
2. en la linea 87 que funcion tiene este for?
3. cuando llega a la subrutina dato  humedad y dato temperatura, no entiendo de donde toma valor el ham y porque se mueve de valor.
gracias por su atencion, saludos
« Última modificación: 27 de Enero de 2012, 14:55:47 por judex »


 

anything