Hallo Habe folgenden C-Code für den Drucksensor HP03 gefunden und möchte ihn in Basic(Bascom) übersetzen. http://www.hoperf.com/pdf/hp03_code.pdf Da meine C-Kentnisse gegen Null gehen verstehe ich die folgenden Funktion nicht. //function: calculate power for 2 //************************************* long int Get2_x(unsigned char i) { uiData=2; i=i-1; while(i) { uiData<<=1; i--; } return uiData; } //**************************************** Kann mir das jemand in Basic übersetzen oder den Inhalt erklären. Vielen Danck Humix
Hallo Humix, da hast Du uns auch was unterschlagen, die Variable uiData muß noch deklariert sein als long int. Aber ansosten macht dies Routine nichts anders dir den Wert als 2 hoch Var zurückzugeben. Will heißen: Get2_x(4) ist 16, Get2_x(1) ist 2, Get2_x(0) wird falsch berechnet, sollte nämlich 1 sein. In Basic sähe es so aus: Im Hauptprogramm var = 1 ' ist der Exponent Gosub Get2_x ' Ergebnis steht in nachher in der Variablen erg ... ... 'Unterprogramm Get2_x: erg = 1 i = 0 while i < var erg = erg * 2 i=i+1 wend return Hoffe mein Basic ist nicht eingerostet. Grüße Hans-Josef
Humix wrote: > Hallo Habe folgenden C-Code für den Drucksensor HP03 gefunden und möchte > ihn in Basic(Bascom) übersetzen. > > http://www.hoperf.com/pdf/hp03_code.pdf > > Da meine C-Kentnisse gegen Null gehen Nicht nur die. Was denkst du was CodeSAMMLUNG bedeuten könnte? Thread verschoben > verstehe ich die folgenden > Funktion nicht. > > //function: calculate power for 2 Hmm. Was könnte wohl 'power for 2' heissen? Eventuell das Berechnen einer 2-er Potenz. Du weist schon: 2 hoch 2 ist 4, 2 hoch 3 ist 8, 2 hoch 4 ist 16 etc. > //************************************* > long int Get2_x(unsigned char i) > { > uiData=2; > i=i-1; > while(i) > { > uiData<<=1; > i--; > } > return uiData; > } Jep. Das ist genau das was die Funktion macht. Sie berechnet 2 zur i-ten Potenz, wobei i in die Funktion hineingeht. NB: Hat die Funktion einen Fehler. 2 hoch 0 kann sie nicht berechnen. NB2: Dem original Autor sollte man einen Ausdruck der Funktion so lange um die Ohren schlagen bis er 100 mal geschrieben hat: Ich soll keine globalen Variablen benutzen solange es nicht unbedingt notwendig ist.
@Karl Heinz ätsch war schneller. :-))) Karl heinz Buchegger wrote: > NB: Hat die Funktion einen Fehler. 2 hoch 0 kann sie nicht > berechnen. > NB2: Dem original Autor sollte man einen Ausdruck der > Funktion so lange um die Ohren schlagen bis er 100 mal > geschrieben hat: Ich soll keine globalen Variablen benutzen > solange es nicht unbedingt notwendig ist. Ne die Variable ist nicht Global, wie oben beschrieben fehlt die Deklaration. Im Orginal-Source stehts richtig drin. Grüße Hans-Josef
Danke für die schnelle Hilfe,werd mich gleich an die Arbeit machen.
Humix wrote: > //function: calculate power for 2 > //************************************* > long int Get2_x(unsigned char i) > { > uiData=2; > i=i-1; > while(i) > { > uiData<<=1; > i--; > } > return uiData; > } Das kann aber kein C-Programmierer geschrieben haben. Ein C-Programmierer würde es (ohne den Fehler bei 0) so schreiben:
1 | #define Get2_x(x) (1L<<x)
|
Peter
Sehr interessant ist das Datum Titl HP03 simple example based on 8051 C Current version: v1.0 Function: Calcul Processor STC12LE5410AD(8051 core) Clock: 11.0592MHz Crystal Author: Merrick Company: Hope mi Contact: +86-0755-86106557 E-MAIL: hopefsk@hoperf.com Date: 2007-10-24
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.