Forum: Mikrocontroller und Digitale Elektronik Jal Code abändern und combilieren in HEX


von Peter S. (digitalus3)


Angehängte Dateien:

Lesenswert?

Sehr geehrte Forumsmitglieder und Innen.
Ich habe im Internet jene Schaltung gefunden die ich gerne abändern 
würde leider reicht mein wissen dafür nicht aus.
Vielleicht gibt es Forumsmitglieder/Innen die mich hier unterstützen 
können,
ich hätte gerne den JAL Code so abgeändert das die Funktion
"Standby & Auto" mit der Funktion "Lamp on/off" ausgetauscht wird.
die Funktion "Lamp on/off" funktioniert wird aber nicht benötigt,
die Funktion "Standby & Auto" würde zwar funktionieren, da aber die 
beiden Schalter Hardwaremäßig nicht vorhanden sind müsste diese Funktion 
eben mit der nicht benötigten "Lamp on/off" getauscht werden.

Die Schaltung wurde von mir nachgebaut sowie programmiert und getestet,
da in meiner Schaltung Hardwaremäßig aber nur 4 Schalter zum Einsatz 
kommen möchte ich mich im vorhinein für Lösungen meines Problems recht 
Herzlich bedanken.

1
-- ***********************************************
2
-- P R O G R A M    S T A R T S    H E R E
3
-- ***********************************************
4
5
var byte x1, x2, x3
6
7
Bank_1
8
option = 0x0f -- Prescaler to WDT and 1:128 rate
9
Bank_0
10
11
delay_1ms( 100 )
12
StartBeep
13
delay_1ms( 100 )
14
15
forever loop
16
17
  x1 = ReadKeyb 
18
  while ( x1 == 0 ) loop
19
    x1 = ReadKeyb 
20
  end loop
21
  delay_1ms( 100 )
22
  x2 = ReadKeyb -- Read two times with x ms interval, if not same keys pressed - skip
23
  
24
  if ( x1 == x2 ) then -- same keys still pressed?
25
    if    ( x1 == 0x40 ) then  -- "-1"
26
       SendKey( 0x05 )
27
    elsif ( x1 == 0x04 ) then  -- "+1"
28
       SendKey( 0x07 )
29
    elsif ( x1 == 0x20 ) then  -- "-10"
30
       SendKey( 0x06 )
31
    elsif ( x1 == 0x02 ) then  -- "+10"
32
       SendKey( 0x08 )
33
    elsif ( x1 == 0x60 ) then  -- "-1" & "-10"
34
       SendKey( 0x21 )
35
    elsif ( x1 == 0x06 ) then  -- "+1" & "+10"
36
       SendKey( 0x22 )
37
    elsif ( x1 == 0x22 ) then  -- "-10" & "+10"
38
       SendKey( 0x28 )
39
    elsif ( x1 == 0x11 ) then  -- "Standby & Auto"
40
       SendKey( 0x23 )
41
    elsif ( x1 == 0x01 ) then  -- "Auto"
42
      x3 = seatalk_send ( 0x86, Yes )
43
      x3 = seatalk_send ( 0x11, no )
44
      x3 = seatalk_send ( 0x01, no )
45
      x3 = seatalk_send ( 0xfe, no )
46
      beep
47
    elsif ( x1 == 0x10 ) then  -- "standby"
48
      x3 = seatalk_send ( 0x86, Yes )
49
      x3 = seatalk_send ( 0x11, no )
50
      x3 = seatalk_send ( 0x02, no )
51
      x3 = seatalk_send ( 0xfd, no )
52
      beep
53
    elsif ( x1 == 0x44 ) then  -- "-1 & +1" Lamp on/off
54
      if light then
55
        x3 = seatalk_send ( 0x30, Yes)
56
        x3 = seatalk_send ( 0x00, No )
57
        x3 = seatalk_send ( 0x00, no )
58
      else
59
        x3 = seatalk_send ( 0x30, Yes)
60
        x3 = seatalk_send ( 0x00, No )
61
        x3 = seatalk_send ( 0x04, no )
62
      end if
63
      light = ! light
64
      beep
65
    end if
66
67
    while ( x1 == x2 ) loop
68
      x2 = ReadKeyb 
69
    end loop
70
    delay_1ms( 70 )
71
  end if
72
73
end loop

: Bearbeitet durch User
von Holger (Gast)


Lesenswert?

Peter Schmidt schrieb:
> leider reicht mein wissen dafür nicht aus
Ganz ehrlich, wie viel Wissen zu diesem Thema hast du?

von Peter S. (digitalus3)


Lesenswert?

Servus,
also nachbauen war kein Problem, nur vom programmieren oder Code 
schreiben habe ich keine Ahnung, deswegen ja auch die Frage und Bitte 
nach Hilfe.

von Max H. (hartl192)


Lesenswert?

Das passt eigentlich gar nicht in "Projekte & Code".

>Forum: Projekte & Code

>Hier könnt ihr eure Projekte, Schaltungen oder Codeschnipsel vorstellen und 
>diskutieren. Bitte hier keine Fragen posten!

von Peter S. (digitalus3)


Lesenswert?

Servus Max,
ich habe es verschoben, könnte passen,
Danke für den Hinweis.
LG

von Peter S. (digitalus3)


Lesenswert?

Gibt es Bitte jemanden der mir hier weiterhelfen kann, Danke

von oldmax (Gast)


Lesenswert?

Hi
Na ja, helfen kannich in BASCOM nicht wirklich, aber einen Tip kann ich 
dir geben. SChau dir mal deine (endlos) lange IF-Anweisung an. SChwer zu 
erkennen, wie sie überhaupt arbeitet, deswegen darf auch ruhig ein 
weiteres Stück eingerückt werden und schon erkennst du die Bereiche, die 
für dich interessant sind.
1
    if ( x1 == x2 ) then -- same keys still pressed?
2
       if    ( x1 == 0x40 ) then  -- "-1"        ---> einrücken
3
          SendKey( 0x05 )                        ---> enrücken
4
       elsif ( x1 == 0x04 ) then  -- "+1"        <--- ausrücken 
5
            SendKey( 0x07 )   wg. if             ---> einrücken
6
           elsif ( x1 == 0x20 ) then  -- "-10"   <--- ausrücken
7
                SendKey( 0x06 )                  ---> etc.
8
             elsif ( x1 == 0x02 ) then  -- "+10"
9
                   SendKey( 0x08 )
10
                 elsif ( x1 == 0x60 ) then  -- "-1" & "-10"
11
                     SendKey( 0x21 )
12
                   elsif ( x1 == 0x06 ) then  -- "+1" & "+10"
13
                        SendKey( 0x22 )
14
                      elsif ( x1 == 0x22 ) then  -- "-10" & "+10"
15
                           SendKey( 0x28 )
16
                         elsif ( x1 == 0x11 ) then  -- "Standby & Auto"
17
                              SendKey( 0x23 )
18
                             elsif ( x1 == 0x01 ) then  -- "Auto"
19
                                  x3 = seatalk_send ( 0x86, Yes )
20
                                  x3 = seatalk_send ( 0x11, no )
21
                                  x3 = seatalk_send ( 0x01, no )
22
                                  x3 = seatalk_send ( 0xfe, no )
23
                                  beep
24
                                elsif ( x1 == 0x10 ) then  -- "standby"
25
                                      x3 = seatalk_send ( 0x86, Yes )
26
                                      x3 = seatalk_send ( 0x11, no )
27
                                      x3 = seatalk_send ( 0x02, no )
28
                                      x3 = seatalk_send ( 0xfd, no )
29
                                      beep
30
                                  elsif ( x1 == 0x44 ) then  -- "-1 & +1" Lamp on/off
31
                                     if light then
32
                                          x3 = seatalk_send ( 0x30, Yes)
33
                                          x3 = seatalk_send ( 0x00, No )
34
                                          x3 = seatalk_send ( 0x00, no )
35
                                        else
36
                                          x3 = seatalk_send ( 0x30, Yes)
37
                                          x3 = seatalk_send ( 0x00, No )
38
                                          x3 = seatalk_send ( 0x04, no )
39
                                      end if
40
                                      light = ! light
41
                                      beep
42
    end if

Dieser Code ist kaum lesbar. Sag mir mal auf Anhieb, was x1 mit 0x11 
anfängt...
Eine "Case" wäre sicher viel chicker, besser lesbar und zudem auch 
leichter pflegbar. Und das ist ja dein Problem, das du die Zeilen nicht 
lesen kannst. Mehr ist das doch nicht. Also, wenn du dich mit der 
Programmierung von Controllern beschäftigen willst, dann setz erst mal 
diese If's in eine Case um.  Dazu Handbuch, Online-Hilfe, Beispiele zu 
Rate ziehen. So schwer ist es nicht.
Gruß oldmax

von Chris S. (schris)


Lesenswert?

x1 == 0x11 mit  x1 == 0x44 ersetzen .
Optional kannst du dann das spàtere  x1 == 0x44 mit  x1 == 0x11 auch
austauschen, solltest du spàter die HW verfollstàndigen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.