Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: drehimpulsgeber Kategorie: C-Control I V1.2/2.0 (von chuckie - 17.01.2008 9:45)
 Als Antwort auf Re: drehimpulsgeber von ManfredW - 17.01.2008 0:11
chuckie nutzt:  CC1-M-Unit V1.2/2.0
> > also ich hab ein neues programm geschrieben jedoch bleib die unit wenn ich etwas schneller drehe hängen woran liegt des kann mir des jmd sagen...
> >
> > #set
> >
> > if (a xor b) then
> > goto set
> > else
> > aset=a
> > bset=b
> > goto loop
> > end if
> >
> > goto set
>
> Hallo,
>
> Du hast das Programm geschrieben und dadurch ist Dir die Funktion in jeder Zeile bekannt.
> Diese Information gibst Du uns nicht. Wir sollen uns zeitaufwändig abmühen.
> Wenn Du die Zeilen kommentierst, wird es auch fĂĽr Dich klarer und oft findet man so Fehler.
>
ne diesen schritt machen ich um den zustand zu speichern 00 oder 11

> Mir scheinen die Rücksprünge (Schleifen) "goto set" verdächtig.
> Wenn a und b beide ON sind oder beide OFF sind, bleibt das Programm inder Schleife.(?)
>
> MfG ManfredW

                                                                                               
als link hab ich mal das datenblatt eingefĂĽhgt

also hier ist es was besser beschrieben


define taste1      port[5]
define a      port[4]
define b      port[3]
define set       byte[3]
define aset        bit[4]
define bset        bit[5]


nu=0

aset=a
bset=b

lcd.init
#loop



lcd.pos 1,4
lcd.print nu

if (a xor aset) xor (b xor bset) then     'vergleich den eingängen a/b und den gesetzten zuständen
goto wahl                                 'wenn ungleich dann gehe zu wahl
else
goto loop
end if


goto loop

#wahl                                      ' von welchen zustand gewechselt ( 11 oder 00)
if (aset=on) and (bset=on) then            'wenn gesetzte zustand 11 war gehe zu eins
'goto set
goto eins
end if

if (aset=off) and (bset=off) then             'wenn gesetzte zustand 00 war gehe zu null
'goto set
goto null
end if

goto loop



#null
if (a=off)and(b=on) then                    'erkennen in welche richtung in dem fall ccw (links)
nu=nu-1                                    ' nu wert um ein verinngern
goto set
end if

if (a=on)and(b=off) then                    'erkennen in welche richtung in dem fall cw (rechts)
nu=nu+1                                    ' nu wert um eins erhöhen
goto set
end if
goto null

#eins
if (a=off)and(b=on) then            'erkennen in welche richtung in dem fall cw (rechts)
nu=nu+1                                ' nu wert um eins erhöhen
goto set
end if

if (a=on)and(b=off) then            'erkennen in welche richtung in dem fall ccw (links)
nu=nu-1                                ' nu wert um ein verinngern
goto set
end if
goto eins

#set

if (a xor b) then                    'wenn eingang a und b nicht gleichsind gehe zu set
goto set
else                                    'wenn gleich sind die zustände speichern ( 00  oder 11)
aset=a
bset=b
goto loop
end if

goto set

Passender Link: das datenblatt des drehimpulsreglers

 Antwort schreiben

Bisherige Antworten:

Re: drehimpulsgeber (von chuckie - 17.01.2008 9:48)
    Re: drehimpulsgeber (von ManfredW - 17.01.2008 15:32)
    Re: drehimpulsgeber (von ManfredW - 17.01.2008 15:12)
        Re: drehimpulsgeber (von chuckie - 18.01.2008 15:56)