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

Pomoc przy pisaniu programu w Bascomie

culkq 31 Sie 2010 15:06 1403 6
  • #1 8460252
    culkq
    Poziom 11  
    Przeniosłem temat. Chcę zbudować urządzenie, które będzie sterowane przez RC5, lecz nie mogę sobie z tym poradzić. Poniżej umieszczam kod:

    $regfile = "m32def.dat"
    $crystal = 10000000

    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.6 , E = Portd.1 , Rs = Portd.0

    Config Timer0 = Timer , Prescale = 1024

    Config Pinc.3 = Input
    Set Portc.3
    Config Pind.5 = Input
    Set Portd.5

    Config Pinc.2 = Output

    Config Pind.7 = Output
    Set Portd.7

    Config Sda = Portc.5
    Config Scl = Portc.4

    Const Adres_write = 174
    Const Adres_read = 175

    Declare Sub Odczyt_suma
    Declare Sub Odczyt_szereg

    Dim Kodklaw As Byte
    Dim Q As Long
    Dim Suma As Byte
    Dim Przep As Byte
    Dim Policzlcd As Long
    Dim Krok As Long

    Enable Interrupts

    Enable Timer0

    Config Keyboard = Pinc.0 , Data = Pinc.1 , Keydata = Keydata

    On Timer0 Mig

    Cls



    Config Rc5 = Pinc.3

    Getrc5(address , Command)
    Address = 1
    If Address = 0 Then
    Command = Command And &B01111111
    Gosub Druga
    Else
    Gosub Odczyt

    End If
    Loop
    End

    Druga:

    Do

    Kodklaw = Getatkbd()
    If Kodklaw > 0 And Kodklaw < 127 Then
    Incr Q
    Suma = Kodklaw
    If Q <= 900 Then
    Writeeeprom Suma , Q
    End If

    If Q > 900 Then
    I2cstart
    I2cwbyte Adres_write
    I2cwbyte Q
    I2cwbyte Suma
    I2cstop
    End If

    Lcd Chr(kodklaw)

    Incr Policzlcd

    Select Case Policzlcd

    Case 16 : Locate 2 , 1

    Case 32 : Locate 1 , 1

    Cls

    Case 48 : Locate 2 , 1 '

    Case 64 : Locate 1 , 1 '

    Cls '

    Case 80 : Locate 2 , 1 '

    Case 96 : Locate 1 , 1 '

    Cls '

    Case 112 : Locate 2 , 1 '

    Case 128 : Locate 1 , 1 '

    Cls '

    Case 144 : Locate 2 , 1 '

    Case 160 : Locate 1 , 1 '

    Cls '

    Case 176 : Locate 2 , 1 '

    Case 192 : Locate 1 , 1 '

    Cls '

    Case 208 : Locate 2 , 1 '

    Case 224 : Locate 1 , 1 '

    Cls '

    Case 240 : Locate 2 , 1 '

    Case 256 : Locate 1 , 1 '

    Cls '

    Case 272 : Locate 2 , 1 '

    Case 288 : Locate 1 , 1 '

    Cls '

    Case 304 : Locate 2 , 1 '

    Case 320 : Locate 1 , 1 '

    Cls '

    Case 336 : Locate 2 , 1 '

    Case 352 : Locate 1 , 1 '

    Cls '

    Case 368 : Locate 2 , 1 '

    Case 384 : Locate 1 , 1 '

    Cls '

    Case 400 : Locate 2 , 1 '

    Case 416 : Locate 1 , 1 '

    Cls '

    Case 432 : Locate 2 , 1 '

    Case 448 : Locate 1 , 1 '

    Cls '

    Case 464 : Locate 2 , 1 '

    Case 480 : Locate 1 , 1 '

    Cls '

    Case 496 : Locate 2 , 1 '

    Case 512 : Locate 1 , 1 ' ' ' '

    Cls '

    Case 528 : Locate 2 , 1 '

    Case 544 : Locate 1 , 1 '

    Cls '

    Case 560 : Locate 2 , 1

    Case 576 : Locate 1 , 1 '

    Cls '

    Case 592 : Locate 2 , 1

    Case 608 : Locate 1 , 1

    Cls '

    Case 624 : Locate 2 , 1 '

    Case 640 : Locate 1 , 1 '

    Cls '

    Case 656 : Locate 2 , 1

    Case 672 : Locate 1 , 1

    Cls

    Case 688 : Locate 2 , 1

    Case 704 : Locate 1 , 1

    Cls

    Case 720 : Locate 2 , 1

    Case 736 : Locate 1 , 1

    Cls

    Case 752 : Locate 2 , 1

    Case 768 : Locate 1 , 1

    Cls

    Case 784 : Locate 2 , 1

    Case 800 : Locate 1 , 1

    Cls

    Case 816 : Locate 2 , 1

    Case 832 : Locate 1 , 1

    Cls

    Case 848 : Locate 2 , 1

    Case 864 : Locate 1 , 1

    Cls

    Case 882 : Locate 2 , 1

    Case 898 : Locate 1 , 1

    Cls

    Case 914 : Locate 2 , 1

    Case 930 : Locate 1 , 1

    Cls

    Case 946 : Locate 2 , 1

    Case 962 : Locate 1 , 1

    End Select


    If Kodklaw = 1 Then

    Gosub Kasuj

    End If

    If Q = 962 Then

    Gosub Alarm

    End If

    End If

    Loop

    End

    Return
    [/tex]

    Chodzi mi o to, że jak jest getrc5(address, command) to w tym nawiasie trzeba umieścić jakieś zmienne. Niestety sam nie dojdę o, co tu chodzi.
  • #2 8460298
    Kuniarz
    Moderator Projektowanie
    Tutaj masz fragmencik kodu wyjaśniający działanie zmiennej adres i command:


    Dim Address As Byte , Command As Byte 
       Getrc5(address , Command) 
       if Address <> 255 then 
         Command = Command And &B01111111 
         Cls 
         Lcd "Adres: " ; Address 
         Lowerline 
         Lcd "Komenda: " ; Command 
       end if
    


    Powinno to Ci trochę rozjaśnić o co tu biega ;-)


    P.S. Strasznie masz Kolego chaotyczny ten kod, tak czytam czytam i nie mogę zajarzyć co to właściwie ma robić.
    Pomogłem? Kup mi kawę.
  • #3 8460317
    culkq
    Poziom 11  
    Hmm dziękuję za odpowiedź, ale chce zbudować urządzenie, do którego tekst będzie wprowadzany z klawiatury AT i tekst będzie się przesuwał za pomocą guzików na pilocie RC5. Nie wiem czy dobrze piszę ten program, ale jestem dopiero początkującym.
  • #4 8460354
    Kuniarz
    Moderator Projektowanie
    Ech... kod wygląda raczej jak robiony metodą Copy'ego Paste'a więc wątpię żeby była to dobra droga...
    Jeśli Kolega jest początkującym, to proponuję zacząć od czegoś prostszego ;-)
    Pomogłem? Kup mi kawę.
  • #5 8460355
    culkq
    Poziom 11  
    Jeszcze jednej rzeczy nie rozumiem. Co to jest &B01111111 ? I jak to się czyta?
  • #6 8460388
    Kuniarz
    Moderator Projektowanie
    To 127, jeśli nie rozumiesz, zakończ temat.
    Pomogłem? Kup mi kawę.
  • #7 8460407
    culkq
    Poziom 11  
    System binarny. Niestety nie rozumiem dlaczego i po co więc zamykam temat. Wezmę się za coś innego i sprzedam programatory i zestawy uruchomieniowe.
    Pozdrawiam!
REKLAMA