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] komunikacja pomiędzy mikrokontrolerami- kontynuacja

LemuRR 11 10 Wrz 2011 15:55 1582 2
REKLAMA
  • #1 9913566
    LemuRR 11
    Poziom 26  
    Po wczorajszym, (zamknięcie tematu, i itp) Postanowiłem że postaram się coś samodzielnie wyklecić w bascomie (w końcu to mój projekt)
    narazie to tylko przykładowy kod, w którym chodzi tylko o wyjaśnienie zagadnienia, i ewentualne poprawki.
    MASTER :
    $regfile = "attiny2313.dat"
    $crystal = 4000000
    
       Config Serialin = Buffered , Size = 15
    
    Const A = 3 'stała adresu slave
    Const A2 = 5 ' stała adresu slave2
    
    Dim B As Byte 'zmienna licznika
    B = 0
    Do 'początek pętli
    B = B + 1
    
     Print A ; B 'wyślij adres slave i zmienną licznika
    Waitms 100
    B = B + 1
     Waitms 100
    Print A2 ; B `wyślij adres slave2 i zmienną 
    If B = 50 Then
    B = 0
    End If
    
     Loop ' koniec pętli

    Slave
    $regfile = "m16def.dat"
    $crystal = 4000000
     $sim
       Config Serialin = Buffered , Size = 15
        Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Portb.4 , Rs = Portb.5
    
    Dim Ad As Byte 'zmienna przechowująca adres
    Dim B As Byte  ' zmienna do wyświetlenia
    Ad = 0
    B = 0
    
    Do
    
    Ad = Inkey() ' odebranie adresu
    B = Inkey()  ' odebranie zmiennej licznika
    If Ad = 5 Then ' jeżeli zmienna adresowa to 5 to
    Cls ' czyść lcd
     Lcd "odebrano" ; B ' wyświetl na lcd tą zmienną
      End If
    
    
      Loop

    Slave2
    $regfile = "m16def.dat"
    $crystal = 4000000
     $sim
       Config Serialin = Buffered , Size = 15
        Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Portb.4 , Rs = Portb.5
    
    Dim Ad As Byte 'zmienna przechowująca adres
    Dim B As Byte  ' zmienna do wyświetlenia
    Ad = 0
    B = 0
    
    Do
    
    Ad = Inkey() ' odebranie adresu
    B = Inkey()  ' odebranie zmiennej licznika
    If Ad = 3 Then ' jeżeli zmienna adresowa to 3 to
    Cls ' czyść lcd
     Lcd "odebrano" ; B ' wyświetl na lcd tą zmienną
      End If
    
    
      Loop


    Komunikacja narazie po RS232
    Czy to ma prawo działać, ?
    na razie nie chce pisać głównego programu, bo może się okazać że zrobię to źle.

    Dodano po 5 [godziny] 3 [minuty]:

    Zauważyłem jeszcze że jeżeli zamiast inkey użyję input to bascom wykazuje błędy.
  • REKLAMA
  • #2 9930954
    arktik1
    Poziom 27  
    Jeszcze bym to uprościł, po co wysyłać:
    
    Const A = 3 'stała adresu slave
    Const A2 = 5 ' stała adresu slave2 
    

    Nie lepiej wysyłać inne zmienne?.
    Do slave np: a,b,c, a do slawe2, 1,2,3.
    jeden i drugi będzie odbierał to samo , ale inaczej na to reagował.
    Wystarczy to uwzględnić w warunkach.
REKLAMA