logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[bascom] łączenie programów

szymek141414 14 Wrz 2009 18:16 2199 11
REKLAMA
  • #1 7017125
    szymek141414
    Poziom 8  
    Tak jak w temacie mam dwa programy (zegar i termometr) i nie wiem jak je połączyć. Próbowałem wielu rzeczy ale zawsze działa albo jeden albo drugi. Czy zna ktoś rozwiązanie moich problemów. Używam mikrokontrolera atmega8.

    Od razu przepraszam, że nie używam tekstów pomocniczych.
  • REKLAMA
  • #3 7017184
    szymek141414
    Poziom 8  
    Mój błąd, już poprawiłem:D
  • REKLAMA
  • #4 7017445
    wader_669
    Poziom 28  
    no i w czym problem? chetnie pomoge ale calej roboty nie bede robil
  • #5 7017520
    szymek141414
    Poziom 8  
    Właśnie ta pomoc jest mi potrzebna. Nie mam zielonego pojęcia jak je złączyć. Próbowałem między innymi wkleić jeden pod drugim ale zawsze działał albo jeden albo drugi. Mógłby ktoś mi powiedzieć czy jest jakaś funkcja łącząca programy??
  • REKLAMA
  • #6 7017566
    wader_669
    Poziom 28  
    Pokaz mi, ze cos zrobiles to ci pomoge.
    (nie chodzi mi o wklejenie jednego calego kodu pod drugi)
  • #7 7020758
    szymek141414
    Poziom 8  
    Próbowałem tak
    
    $regfile = "m8def.dat"
    $crystal = 8000000
    
    Config Pinb.1 = Input
    Config Pinb.2 = Input
    Config Lcd = 16 * 2
       Config Lcdpin = Pin , Db4 = Portc.2 ,
      Config Lcdpin = Pin , Db5 = Portc.1 , Db6 = Portc.0 ,
      Config Lcdpin = Pin , Db7 = Portc.5 , E = Portc.3 ,
      Config Lcdpin = Pin , Rs = Portc.4
      Config 1wire = Portb.0
    
    
    
    Declare Sub Odcz_temp
    
    Dim Lsb As Byte
    Dim Msb As Byte
    Dim Tempstr As String * 5
    Dim Temp As Single
    Dim Tempa As Integer
    Dim Minus As Bit
    
    
    Dim Bukl As Bit
    
    Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32
      Declare Sub Wysw_czas
    
        Config Timer1 = Timer , Prescale = 256
    
              Locate 1 , 0
    
          On Timer1 Odmierz_1s
    
          Dim Sekundy As Byte
          Dim Minuty As Byte
          Dim Godziny As Byte
          Dim Nowa_w As Byte
          Dim Wart_bcd As Byte
          S1 Alias Pinb.2
          S2 Alias Pinb.1
    
    
          Enable Interrupts
          Enable Timer1
          Counter1 = 34286
          Set Nowa_w
          Set Portb.1
          Set Portb.2
    
    
          Do
    
          Call Wysw_czas
          If S1 = 0 Then
          Waitms 25
          If S1 = 0 Then
          Incr Minuty
          Sekundy = 0
          If Minuty = 60 Then
          Minuty = 0
          End If
    
          Set Nowa_w
          Call Wysw_czas
          Waitms 200
          End If
         End If
         If S2 = 0 Then
         Waitms 25
         If S2 = 0 Then
         Incr Godziny
         If Godziny = 24 Then
         Godziny = 0
         End If
         Set Nowa_w
         Call Wysw_czas
         Waitms 200
         End If
         End If
         Loop
         End
    
        Sub Wysw_czas
         If Nowa_w = 1 Then
         Cls
    
    
         Locate 1 , 0
         Wart_bcd = Makebcd(godziny)
         Lcd Bcd(wart_bcd) ; ":"
         Wart_bcd = Makebcd(minuty)
         Lcd Bcd(wart_bcd) ; ":"
         Wart_bcd = Makebcd(sekundy)
         Lcd Bcd(wart_bcd) ;
    
         Reset Nowa_w
    
         End If
         End Sub
    
         Odmierz_1s:
         Counter1 = Counter1 + 34286
         Incr Sekundy
         Set Nowa_w
    
         If Sekundy = 60 Then
         Sekundy = 0
         Incr Minuty
         If Minuty = 60 Then
         Minuty = 0
         Incr Godziny
         If Godziny = 24 Then
         Godziny = 0
         End If
         End If
         End If
    
    
        Return
    
    
    
        Locate 2 , 0
    
    
        Do
     Call Odcz_temp
    
     Cls
    
    
     If Bukl = 0 Then
    
           If Minus = 0 Then
               'wyświetla temperatury dodatnie
               Lcd "Temp: " ; Tempstr ; Chr(0) ; "C"
           Else
               'wyświetla temperatury ujemne
               Lcd "Temp: -" ; Tempstr ; Chr(0) ; "C"
           End If
         Locate 2 , 0
       Else
           Lcd "Brak ukladu"
       End If
    
    Loop
    End
     Locate 2 , 0
    Sub Odcz_temp
       1wreset
       1wwrite &HCC
       1wwrite &H44                                             '
       Waitms 750
       1wreset
       1wwrite &HCC                                             'opuszczenie zapisu numeru ID
       1wwrite &HBE                                             'komenda odczytu zmierzonej
        Locate 2 , 0
       Lsb = 1wread():
       Msb = 1wread():
    
       1wreset
    
       Reset Bukl
       Reset Minus
            Locate 2 , 0
          If Err = 0 Then
             Tempa = Msb * 256
             Tempa = Tempa + Lsb
    
             If Msb.7 = 0 Then
                Temp = Tempa / 16
             Else
                Set Minus
                Tempa = Not Tempa
                Tempa = Tempa + 1
                Temp = Tempa / 16
             End If
              Locate 2 , 0
             Tempstr = Fusing(temp , "###.##")
          Else
             Set Bukl
          End If
    End Sub
    



    I jeszcze gdzieś znalazłem polecenie include i stworzyłem coś takiego:


    $regfile = "m8def.dat"
    $crystal = 8000000
     $include "termometr 2.bas"
     Lowerline
     $include "noname4.bas"


    Kod umieszczamy w znacznikach [code] , a nie [quote] - poprawiłem.
    [zumek]
  • #8 7021790
    wader_669
    Poziom 28  
    No wiec po prostu skopiowales wszystko 2 razy. Zastanow sie czy jak to wszystko sie powtarza ma sens? Czyli nic nie zrobiles 0 wysilku. Zagladales do jakis materialow pomocniczych?
    Za to include skladam ci gratulacje.
    Poczytaj helpa.
  • #9 7022813
    Madergames9
    Poziom 15  
    Odpowiedz nie jest skomplikowana. W programie może być tylko jedna petla
    Do....
    .....
    Loop
    End

    Czyli petla główna programu. Pierwsza w twoim programie lieci na okrągło, a druga jest po prostu "martwa". Więc reasumując to co program ma wykonać ma być w jednej pętli programu z odwołaniami do podprogramów o ile sa. Reszta należy do ciebie...
  • REKLAMA
  • #10 7024064
    wader_669
    Poziom 28  
    Kolega dobrze mowi.
    Tylko, ze w programie moze byc wiecej niz jedna petla. Moze byc tylko jedna petla glowna. W ten sposob :P
  • #11 7024720
    yokoon
    Poziom 29  
    Witam.
    A co to jest : locate 2 . 0 ?
    Druga linia a 0 ?
  • #12 7027245
    seba_x
    Poziom 31  
    Madergames9 napisał:
    Odpowiedz nie jest skomplikowana. W programie może być tylko jedna petla
    Do....
    .....
    Loop
    End

    Czyli petla główna programu. Pierwsza w twoim programie lieci na okrągło, a druga jest po prostu "martwa". Więc reasumując to co program ma wykonać ma być w jednej pętli programu z odwołaniami do podprogramów o ile sa. Reszta należy do ciebie...


    może być więcej , łatwo się z nich wychodzi poprzez "EXIT DO"
REKLAMA